一、前言
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