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>
    

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

    效果截图:

  • 相关阅读:
    经常使用排序算法
    windows和Linux内存的对齐方式
    Oracle实现数据不存在则插入,数据存在则更新(insert or update)
    hysbz 2243 染色(树链剖分)
    HDU 3864 D_num Miller Rabin 质数推断+Pollard Rho大整数分解
    逆序排列
    PHP盛宴——经常使用函数集锦
    怎样 TabHostFragment自己定义 tab键(indicator)
    不是IT圈人的IT创业优劣势!
    2星|汪丁丁《经济的限度》:访谈文字稿+几篇偏专业的文章,不适合无经济学专业背景知识的读者阅读
  • 原文地址:https://www.cnblogs.com/Qi1007/p/9896149.html
Copyright © 2011-2022 走看看