博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JFinal 国际化 简单实现 beetl
阅读量:6263 次
发布时间:2019-06-22

本文共 1548 字,大约阅读时间需要 5 分钟。

hot3.png

JFinal自身带有国际化类com.jfinal.i18n.I18N
文档里没有实现的方法,自己实现了一下,在这里分享给大家,哪里有改进的地方请

1、编写properties资源文件

yourfilename_zh_CN.properties     test=您好yourfilename_en_US.properties     test=hello
2、在JFinal配置类,配置常量中
public void configConstant(Constants me) {	...			//后面两个参数根据自己情况添加默认语言国家		I18N.init("youfilename", null, null);		...	}
如果资源文件不在classpath下面那么需要加上包名称,例如 I18N.init("i18n.youfilename", null, null);
3、在页面或者类中调用
页面中调用I18N.getText("key");
在controller建议使用Controller.getText("key");
4、做到这里并不能实现根据用户所用的语言对应显示,这是因为还没有实现自动切换,我们可以通过配置一个拦截器实现
定义一个全局过滤器GlobalInterceptor,并在JFinal配置
/*** *  * @author yinjun622 2013-05-25 */public class GlobalInterceptor implements Interceptor {	@Override	public void intercept(ActionInvocation ai) {		Controller c = ai.getController();		String tmp = c.getCookie(Const.I18N_LOCALE);		String i18n = c.getRequest().getLocale().toString();		if (!i18n.equals(tmp)) {			ai.getController().setCookie(Const.I18N_LOCALE, i18n,					Const.DEFAULT_I18N_MAX_AGE_OF_COOKIE);		}		ai.invoke();	}}
这样我们会在用户的cookie中记录所用语言信息当Controller.getText("key");自动去cookie中查找语言并显示。

我们还可以直接使用I18N.getText("key",locale);

5、让beetl实现国际化

    beetl配置到JFinal在这里就不多说了,beetl自定义一个函数I18n,

    并配置 gt.registerFunction("i18n", new I18n());

public class I18n implements Function {	@Override	public Object call(Object[] obj, Context context) {				HttpServletRequest req = (HttpServletRequest )context.getVar("request");		return I18N.getText((String) obj[0],req.getLocale());	}}

在页面调用

${i18n("test")}
JFinal国际化的实现,简单的介绍到这里,大家可以提出自己想法与实现,谢谢!

转载于:https://my.oschina.net/smile622/blog/135644

你可能感兴趣的文章
scau 17967 大师姐唱K的固有结界
查看>>
spring之<bean>实例化
查看>>
hereim_美句_2
查看>>
蓝桥杯2017国赛JAVAB组 填字母游戏 题解
查看>>
25.安装配置phantomjs
查看>>
解决sublime3 package control显示There are no packages available for installation
查看>>
FastJson反序列化漏洞利用的三个细节 - TemplatesImpl的利用链
查看>>
Python随笔12
查看>>
数组完成约瑟夫环
查看>>
[LeetCode]Letter Combinations of a Phone Number
查看>>
数据结构中的基本排序算法总结
查看>>
np一些基本操作1
查看>>
面试真题-----hashMap原理
查看>>
js阻止事件冒泡 return false / e.stopPropagation() /e.preventDefault()
查看>>
CSS伪类使用
查看>>
哈佛成功金句
查看>>
iview Table表格单选框互斥
查看>>
leetcode278
查看>>
CodeForces-771D-Bear and Company
查看>>
PAT 1032 Sharing
查看>>