java国际化 & js国际化

一、前言

  1、该国际化框架为:Springboot + Freemarker

  2、本来是全英文项目的,最近有需求就改为了中英文版本,改动还是挺耗时间的,最好是在项目规划时就考虑进去,后期改动真的很麻烦。

  实现原理很简单,网上基本找得到。

二、实现过程

  1、pom.xml

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

  2、application.properties(配置文件)

# Internationalzation(MessageSourceAutoConfiguration) i18n(即为Internationalzatoin省略中间的18位,命名可以随你文件名)
spring.messages.basename=i18n/messages
spring.messages.encoding=UTF-8
spring.messages.cacheSeconds=-1

  3、文件路径创建&多语言配置文件properties

    为什么会有三个文件?其中一个为默认语言选择

  4、config.java的编写

  /**
     * ------------------------java 国际化 start------------------------
     */
    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        // 默认语言-英文
        slr.setDefaultLocale(Locale.US);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        // 参数名
        lci.setParamName("lang");
        return lci;
    }/**
     * 配置拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(localeChangeInterceptor()); super.addInterceptors(registry); }

  5、html/ftl页面编写

  

<!--html页面引入spring.ftl后就可以直接使用配置文件里的语言-->
<#import "spring.ftl" as spring/>
<!--例如-->
<@spring.message code="mess.index.title"/>
<a href="/?lang=en_US" style="font-weight: bold">English(US)</a>
<a href="/?lang=zh_CN" style="font-weight: bold">简体中文</a>

  6、通用language.js

  

 1、language.js  

  
这里的i18n可以放置在 语言配置文件properties ,点击<a>标签来实现语言的切换,然后采用获取隐藏标签的i18n的值,赋值给全局变量i18n。子页面只要引入language.js就能够起作用
//语言选择
$(function() {
    var i18n = parent.i18n; //在主页声明一个变量
    if (!i18n) {
        i18n = 'en';
    }
    if (i18n == 'zh') {
        var script = $('<script><\/script>');
        script.attr('src', '/js/common/i18n_zh_common.js');
        $('body').append(script);
    } else if (i18n == 'en') {
        var script = $('<script><\/script>');
        script.attr('src', '/js/common/i18n_en_common.js');
        $('body').append(script);
    }
});

  7、静态js文件编写

  上面的步骤做好,并且在js子页面获取得到可变化得i18n得值后,就可以编写js页面的静态全局变量

  //部分截图

  

三、后记

  1、原理就这样,没有什么新东西,有问题可以一起讨论。

  2、转发请注明出处https://www.cnblogs.com/lrj1009IRET/p/10362496.html 

  

猜你喜欢

转载自www.cnblogs.com/lrj1009IRET/p/10362496.html
今日推荐