Maven+SpringMVC+freemarker实现Java国际化对应

资源文件的导入

application-context.xml中追加的配置

    <!-- 定义国际化消息 -->
    <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">

        <!-- 其中basename用来指定properties文件的通用名 如实例中的messages_en.properties,messages_ja.properties通用名都是messages -->
        <property name="basename" value="message" />
        <property name="useCodeAsDefaultMessage" value="true" />

    </bean>

    <!-- 获取本地 -->
    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />

前台对应获取相应值得代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String appContext = request.getContextPath();
    response.setHeader("Cache-Control", "private");
%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html>
<body>
    <spring:message code="main.title" />
    <spring:message code="main.target" />
    <button id="airkissButton1">中文</button>
    <button id="airkissButton2">English</button>
    <button id="airkissButton3">日本语</button>
</body>
<script src="<%=appContext%>/js/jquery-1.11.1.min.js"></script>
<script>
    $(function() {
        var defaultLang = "${locale}";
        if ('zh_CN' == defaultLang) {
            $('#airkissButton1').hide();
            $('#airkissButton2').show();
            $('#airkissButton3').show();
        } else if ('en_US' == defaultLang) {
            $('#airkissButton1').show();
            $('#airkissButton2').hide();
            $('#airkissButton3').show();
        } else if ('ja_JP' == defaultLang) {
            $('#airkissButton1').show();
            $('#airkissButton2').show();
            $('#airkissButton3').hide();
        }

        $('#airkissButton1').click(function() {
            var lang = "zh";
            langSwitch(lang);
        });
        $('#airkissButton2').click(function() {
            var lang = "en";
            langSwitch(lang);
        });
        $('#airkissButton3').click(function() {
            var lang = "ja";
            langSwitch(lang);
        });

        var langSwitch = function langSwitch(lang) {
            var url = "./langSwitch", param = {};
            param.lang = lang;
            // 同意声明
            $.post(url, param, function(data) {
                window.location.reload();
            }, 'json');
        };
    });
</script>
</html>

 Controller端代码

package com.sharp.slc.wechat.controller;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;

/**
 * 设备相关处理对应的Controller
 *
 * @author QinMingrui
 *
 */
@Controller
@RequestMapping("/device")
public class DeviceManagerController {
    static final String RETURN_FLAG_SUCCESS = "success";
    static final String RETURN_FLAG_FAIL = "";

    @Autowired
    CookieLocaleResolver localeResolver;

    /**
     * 设备离线界面
     */
    @RequestMapping(value = "/offline", method = { RequestMethod.GET })
    @ResponseBody
    public ModelAndView offlineInfo(HttpServletRequest request,
            HttpServletResponse response) {
        ModelAndView view = new ModelAndView();
        localeResolver.setCookieName("language");
        localeResolver.setCookieMaxAge(1800);
        view.addObject("locale", localeResolver.resolveLocale(request)
                .toString());
        view.setViewName("Offline");
        return view;
    }

    /**
     * 设备离线界面
     */
    @RequestMapping(value = "/langSwitch", method = { RequestMethod.POST })
    @ResponseBody
    public Map<String, Object> offlineInfo1(HttpServletRequest request,
            HttpServletResponse response) {
        String lang = request.getParameter("lang");
        Map<String, Object> applyList = new HashMap<String, Object>();
        Locale locale = null;
        if ("zh".equals(lang)) {
            locale = new Locale("zh", "CN");
        } else if ("en".equals(lang)) {
            locale = new Locale("en", "US");
        } else {
            locale = new Locale("ja", "JP");
        }

        localeResolver.setLocale(request, response, locale);
        return applyList;
    }

}

设置当前浏览器的语言环境

        Locale locale = new Locale("en", "US");
        LocaleResolver localeResolver = RequestContextUtils
                .getLocaleResolver(request);
        localeResolver.setLocale(request, response, locale);、

posted on 2016-03-21 14:48  全心全意做开发  阅读(461)  评论(0)    收藏  举报

导航