在jfinal中用i18n如何将整个页面的所有文字由简体转换成繁体问题

想用i18n拦截器把整个页面的所有简体文字转换成繁体或英文,哪位大神有做过这类项目或有相关的例子,求指导,十分感谢。。

评论区

bobwill

2016-10-17 17:58

看了官方文档都是一个一个字,词转换的,但是我的数据内容是动态的,感觉不能自己写一个转换一个,有没有将整个网页拦截,将内容转换的繁体的demo

JFinal

2016-10-17 18:00

建议用工具一次性转换后,做成独立的模板,然后在 jfinal 的 I18nInterceptor 中使用模板切换的形式进行国际化

如果每次请求时才去将简体转成繁体,对性能有损耗,这种需求属于大范围区域性的国际化,使用独立的国际化模板文件为好

bobwill

2016-10-17 18:04

波总,有没有demo或例子也行

JFinal

2016-10-17 18:25

@bobwill 几年前有个项目用了这种方式,代码找不到了,非常简单,按照下面的步骤做:
1:先创建国际化资源文件,假定叫 i18n.properties,里面可以先不写东西,把文件放在资源路径之下,maven项目是 resource 目录

2:在YourJFinalConfig.configConstant(...) 中添加 me.setI18nDefaultBaseName("i18n"),由于第一步中的资源文件的主文件名是 "i18n",这一步可以省略,别的名称则不能省

3:在 YourJFinalConfig.configInterceptor(...) 中添加I18nInterceptor全局拦截器:
me.add(new I18nInterceptor("_locale", "_res", true))

4:假定你在的某个页面叫 index.html,那么在这个页面相同的目录下面再创建一个 "zh_TW" 目录,然后在该子目录下创建繁体版的 index.html 文件,其中的 "zh_TW" 目录就表示繁体版的 locale,通过这种不断创建不同 locale 子目录的方式可以任意扩展多种国际化模板出来

5:在请求的时候,通过在浏览器中的 url 最后面添加 locale 信息就可以切换了,并且会一直保持住这个 locale 到 cookie 中,直到切换成新的 locale,url 例如:
http://yourwebsite.com/user?_locale=zh_TW

以上 url 中最的后面的 ?_locale=zh_TW 参数就是告诉拦截器切换使用这个地区的模板,这个 "_locale" 参数注是在第 3 步中创建 I18nInterceptor 对象时第一个参数指定的,可以修改

本质上,只要看一下 I18nInterceptor 就完全会使用了,搞定后记得回来写篇分享,不枉我写了这么多文字

JFinal

2016-10-17 18:50

补充一下,如果只需要使用切换模板的方式使用国际化功能,前面两步应该可以省略

bobwill

2016-10-17 20:37

热门反馈

扫码入社