zoukankan      html  css  js  c++  java
  • 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>
    

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

    效果截图:

  • 相关阅读:
    XHTML学习笔记 Part3:核心属性
    XHTML学习笔记 Part2:核心元素
    XHTML学习笔记 part1
    北航非全日制-软件学院考研攻略(经验仅来自于2019年,2020年招生简章有变动,需谨慎)
    为什么能抓到网站https传输的明文密码?------顺便说说“知乎”和“支付宝”的安全性对比
    JetBrain系列学生免费授权
    印象笔记模板推荐使用
    测试用例评审总结与规范
    Django入门
    Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
  • 原文地址:https://www.cnblogs.com/Qi1007/p/9896149.html
Copyright © 2011-2022 走看看