I18N(国际化) 根据不同国家显示不同语言

Internationalization 的缩写。

Spring 提供了两个接口用于国际化文件处理:

  1. MessageSource,用于加载资源文件
  2. MessageResolver,用于解析用户所处的位置(Locale)

如果想使用资源文件,只需要在容器里注册一个 MessageSource 的实例即可。一般情况下,使用 Spring 内置的 ReloadableResourceBundleMessageSource 实现:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
  <property name="basename" value="classpath:messages" />
  <property name="defaultEncoding" value="GBK" />
</bean>

然后在 classpath 下面创建 messages xxx_zh.properties 文件:

xxx_zh.properties文件代码:

title=这是一个测试
user.id=用户编号
user.name=用户姓名
user.sal=用户工资
page.cl=点击切换语言:
global.greeting={0}近来可好?

在Controller中加上代码

package com.xiaobai.controller;

import com.xiaobai.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.ThemeResolver;

import javax.imageio.ImageIO;
import javax.mail.Multipart;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

@Controller
@RequestMapping("/book")
public class BookController {

    @RequestMapping(method = RequestMethod.GET)
    public String home(Book book) {
        return "book_input";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String add(@Valid Book book, BindingResult result) {
        if (result.hasErrors())
            return "book_input";
        System.out.println("正常业务。。。。");
        return "book_home";
    }

    @Autowired
    private LocaleResolver localeResolver;

    @GetMapping("/cl/{loc}")
    public String changeLocale(@PathVariable("loc") String localeStr, HttpServletRequest req, HttpServletResponse resp) {
        Locale locale = new Locale(localeStr);
        localeResolver.setLocale(req, resp, locale);
        return "redirect: /book";
    }

}

之后我们就可以直接在JSP文件上使用了

JSP网页代码:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style>
        .error {
            color: red;
        }
    </style>
    <link href="<spring:theme code="main.style"/>"/>
</head>
<body  style="color: <spring:theme code="main.color" />; background: <spring:theme code="main.bgcolor" />;">

<div>
    <spring:message code="global.greeting" arguments="兄嘚" />
    <br>
    <a href="/book/cl/zh">中文</a>
    <a href="/book/cl/en">English.</a>
    <a href="/book/cl/jp">小日本</a>
    <br><br>
</div>

<div>
    <br>
    <a href="/book/ct/boy">boy</a>
    <a href="/book/ct/girl">girl</a>
    <a href="/book/ct/default">默认</a>
    <br><br>
</div>

<form:form action="/book" method="post" modelAttribute="book">
    <div>
        <form:input path="name" placeholder="name"/>
        <form:errors path="name"/>
    </div>
    <div>
        <form:input path="price" placeholder="price"/>
        <form:errors path="price"/>
    </div>
    <input type="submit">
</form:form>

</body>
</html>

这样我们就完成了点击切换不同的语言。

效果截图:

 

转载于:https://www.cnblogs.com/Qi1007/p/9896149.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值