好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Spring boot+beetl+i18n国际化处理的方法

国际化(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测试数据/a/1190000018841007

查看更多关于Spring boot+beetl+i18n国际化处理的方法的详细内容...

  阅读:14次