概要
项目中有时候会用到多语言的业务场景;
一般来说都是通过后端实现的,将先有内容替换为适用的环境语言;
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,返回登录(中文)

总结
如此做之后,就可以实现,多语言了,不过要做的事情还很多,相当于你所有页面要展示的词汇,都需要放到这里三个配置文件中搞一遍,才可以
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论