國際化(internationalization)是設計和制造容易適應不同區域要求的產品的一種方式。它要求從產品中抽離所有地域語言,國家/地區和文化相關的元素。換言之,應用程序的功能和代碼設計考慮在不同地區運行的需要,其代碼簡化了不同本地版本的生產。開發這樣的程序的過程,就稱為國際化。
spring boot 搭配慢慢開始火起來的 beetl 模板 配置國際化
首先需要添加webmvcconfigurer配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/** * 設置攔截器 */ @override public void addinterceptors(interceptorregistry registry) { registry.addinterceptor(localechangeinterceptor()); } /** * 國際化切換攔截器 * * @return 國際化切換攔截器 */ @bean public localechangeinterceptor localechangeinterceptor() { localechangeinterceptor interceptor = new localechangeinterceptor(); interceptor.setparamname( "lang" ); return interceptor; } /** * 國際化處理器 * * @return 國際化處理器 */ @bean public localeresolver localeresolver() { sessionlocaleresolver slr = new sessionlocaleresolver(); //設置默認區域, slr.setdefaultlocale(locale.china); return slr; } |
然后自定義配置beetl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
... @autowired private webapplicationcontext wac; @bean public beetltemplatecustomize beetltemplatecustomize() { return new beetltemplatecustomize() { public void customize(grouptemplate grouptemplate) { // 注冊全局共享變量 map<string, object> sharedvars = new hashmap<string, object>(); grouptemplate.setsharedvars(sharedvars); // 注冊國家化函數 grouptemplate.registerfunction( "i18n" , new i18nfunction(wac)); } }; } |
然后配置i18n國際化函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class i18nfunction implements function { private webapplicationcontext wac; public i18nfunction(webapplicationcontext wac) { this .wac = wac; } @override public object call(object[] obj, context context) { httpservletrequest request = (httpservletrequest) context.getglobal(webvariable.request); requestcontext requestcontext = new requestcontext(request); string message = requestcontext.getmessage((string) obj[ 0 ]); return message; } } |
最后配置資源文件
這個資源文件路徑也是配出來的,不多介紹了......
測試:
在模板中添加${i18n('messagecode')} , 在url參數中添加lang=en 或者 lang=zh-cn
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://segmentfault.com/a/1190000018841007