1.application.properties中添加:
spring.messages.basename=messages/messages
2.resources文件夾下新增messages文件夾姜胖,下面放messages_en_US.properties類似的文件:
3.后臺(tái)使用:
@Autowired
private LoginService loginService;Locale locale = LocaleContextHolder.getLocale();//locale是獲取http請(qǐng)求的header中的Accept-Language的值if(locale.getLanguage()=="en"){
?locale = new Locale("en","US");
?}else if(locale.getLanguage()=="zh"){
?locale = new Locale("zh","CN");
?}else if(locale.getLanguage()=="ja"){
?locale = new Locale("ja","JP");
?}
String msg = messageSource.getMessage("test", null, locale);//test是配置文件中的key
其中if else部分可以省略,看前端傳的情況壶熏,前端如果傳送header中的Accept-Language是en欧聘,zh,ja這樣的簡(jiǎn)寫(xiě)躏筏,就需要補(bǔ)全,如果前端傳過(guò)來(lái)的就是en-US,zh-CN,這樣的就不需要if挂签,else轉(zhuǎn)換。
當(dāng)然也可以不用messageSource用ResourceBundle?:
ResourceBundle bundle = ResourceBundle.getBundle("messages/messages", locale?);
?String test = bundle.getString("test");
4.配置文件:
messages.properties中的是默認(rèn)的盼产,如果語(yǔ)言取不到就取默認(rèn)的饵婆。
messages_zh_CN.properties是中文的配置:
test=測(cè)試
messages_en_US.properties是英文配置:
test=test
5.前端部分(vue):
比如切換語(yǔ)言的多選框:
<el-dropdown-menu slot="dropdown">
?????<el-dropdown-item command="en">English</el-dropdown-item>
?????<el-dropdown-item command="zh">中文</el-dropdown-item>
?????<el-dropdown-item command="ja">日本語(yǔ)</el-dropdown-item>
?</el-dropdown-menu>
具體方法:
handleSetLanguage(lang) {
?this.$i18n.locale = lang;
?localStorage.setItem('lang',lang) //保存到localStorage,或者也可以保存到cookies等
?},
則jquery調(diào)用可以是這樣:
export const requestLogin = params => { return
$.ajax({
?type: 'post',
?url: `${base}/login`,
?contentType: "application/json;charset=UTF-8",
?data: JSON.stringify(params),
?headers:{ 'Accept-Language':localStorage.getItem('lang')||'en' },
?xhrFields: { withCredentials: true },
?crossDomain: true,
?dataType: 'json' }).
then(res => res);
?};
其中headers:{ 'Accept-Language':localStorage.getItem('lang')||'en' }, 這個(gè)就是根據(jù)你切換的語(yǔ)言,傳給服務(wù)端對(duì)應(yīng)的語(yǔ)言戏售,這樣就做到前后端同步侨核。