概要
项目中有时候会用到多语言的业务场景;
一般来说都是通过后端实现的,将先有内容替换为适用的环境语言;
springboot项目为例
1 新建路径/文件
- 新建路径static/i18n
- 新建文件: messages.properties messages_en_us.properties messages_zh_cn.properties
文件内容如下:
demo=登录demo=login
2 新建两个配置类
localconfig 配置默认语言解析, 指定获取参数名
@configuration public class localconfig { /** * 默认解析器 其中locale表示默认语言 */ @bean public localeresolver localeresolver() { sessionlocaleresolver localeresolver = new sessionlocaleresolver(); localeresolver.setdefaultlocale(locale.china); return localeresolver; } /** * 默认拦截器 其中lang表示切换语言的参数名 */ @bean public webmvcconfigurer localeinterceptor() { return new webmvcconfigurer() { @override public void addinterceptors(interceptorregistry registry) { localechangeinterceptor localeinterceptor = new localechangeinterceptor(); localeinterceptor.setparamname("lang"); //拦截lang参数 registry.addinterceptor(localeinterceptor); } }; } }
localutil 将springbean获取并用于静态方法,方便后续调用
@component public class localutil { private static messagesource messagesource; public localutil(messagesource messagesource) { localutil.messagesource = messagesource; } /** * 获取单个国际化翻译值 */ public static string get(string msgkey) { try { return messagesource.getmessage(msgkey, null, localecontextholder.getlocale()); } catch (exception e) { return msgkey; } } }
搞一个控制器测试
@restcontroller @requestmapping("lang") public class langcontroller { @requestmapping("get") public string get(){ return localutil.get("demo"); } }
咱们直接访问这个接口看效果
- 直接访问,返回登录(默认解析)
- 传参数en_us,返回 login (英文)
- 传参数zh_cn,返回登录(中文)
总结
如此做之后,就可以实现,多语言了,不过要做的事情还很多,相当于你所有页面要展示的词汇,都需要放到这里三个配置文件中搞一遍,才可以
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论