文档章节

使用Rythm插件轻松实现JFinal应用的国际化

罗格林
 罗格林
发布于 2013/06/05 06:15
字数 368
阅读 2511
收藏 29

刚看了@eyelee同学的JFinal 国际化的简单实现的文章,我打算分享一下自己为@紫电清霜JFinal-BBS示例应用添加Rythm模版引擎和国际化功能展示的经验。

在开始之前,大家可以先通过点击这个视频看看效果。

下面是实现步骤:

  1. 下载JFinal Rythm插件。解包后将lib中的jar文件加入到你的JFinal应用项目中

  2. 配置JFinal Rythm插件:

private Properties conf = null;

public void configConstant(Constants me) {
    this.conf = loadPropertyFile("path/to/properties/");
} 

 public void configPlugin(Plugins me) {
    ...
    me.add(new RythmPlugin(conf));
} 
  1. 在你的配置文件中加入以下配置:
# 设置模版根目录到 WEB-INF/rythm
rythm.home.template=../rythm

# 支持国际化
rythm.i18n.enabled=true
  1. 创建你的资源文件:
messages_zh_CN.properties
messages_en_US.properties

并在其中分别加入所需内容,例如:

layout.home=首页 #messages.zh_CN.properties
layout.home=Home #messages.en_US.properties
  1. 在模版中使用国际化:
<a href="/">@i18n("layout.home")</a>

好了,基本上就是这些了。

综上所述,在JFinal/Rythm的开发环境下,国际化主要工作在messages文件上面,完成之后你的国际化通过Rythm引擎内置指令@i18n()来完成。值得一提的是这个国际化机制是比较智能的。根据用户浏览器的语言设置,系统会自动加载所需资源,不需要开发人员在代码中做任何事情。

希望大家能喜欢[smile] 如有反馈可以@greenlaw110。谢谢!

© 著作权归作者所有

共有 人打赏支持
罗格林

罗格林

粉丝 270
博文 43
码字总数 41930
作品 4
其他
架构师
加载中

评论(13)

十月的星空
十月的星空
OK .我去看看
罗格林
罗格林
Properties实现了Map,又便于从文件中加载配置数据,用在这里很合适啊。
十月的星空
十月的星空
me.add(new RythmPlugin(conf)); 源码中conf类型为map,但仁兄使用的是Properties,好奇怪啊
罗格林
罗格林
嗯,谢谢报告错误,估计是因为版本问题吧。我这两天会看看。如果你有具体的错误重现步骤,欢迎到https://github.com/greenlaw110/jfinal-rythm/issues上提错误报告
c
cjane
报错太多,,启动很难25
罗格林
罗格林
JFinal 可以参考一下 https://github.com/playframework/play/blob/master/framework/src/play/i18n/Lang.java。现在的主要问题是框架不提供解析http header和参数来获得当前请求Locale信息的逻辑。JFinal-Rythm使用了https://github.com/greenlaw110/jfinal-rythm/blob/master/src/main/java/org/rythmengine/jfinal/LocaleManager.java来做这个工作,LocaleManager是作为Interceptor实现的,并且在RythmPlugin启动的时候自动注册。LocaleManager的工作完全可以由框架自己来实现,这样在所有的模版中都可以获得当前请求的Locale信息了。
JFinal
JFinal
JFinal 一直未在国际上花费多大功夫,可能这一块的设计不是很好,还请大家多给些建议,先顶起来 :)
紫电清霜
紫电清霜
@罗格林 好的。嘿嘿
罗格林
罗格林
@紫电清霜 不好意思啊,我是今天早上才发现资源文件没有加进去。重新提交了pull请求。麻烦你再上去merge一把
紫电清霜
紫电清霜
我已经及时更新了,接受了合并请求。^O^
JFinal 国际化 简单实现 beetl

JFinal自身带有国际化类com.jfinal.i18n.I18N 文档里没有实现的方法,自己实现了一下,在这里分享给大家,哪里有改进的地方请@eyelee 1、编写properties资源文件 yourfilenamezhCN.propertie...

leon_rock
2013/06/05
0
12
JFinal-Beetl-Shiro(JdbcRealm)-例子

JFinal-Shiro-JDBC-Demo http://git.oschina.net/yinjun622/JFinal-Shiro-JDBC-Demo 简单实现@JFinal与Shiro整合例子 1、工程通过Eclipse直接导入,部署到tomcat中; 2、新建jfinalshiro数据......

leon_rock
2014/02/27
0
12
最近在做的一件事件编写JFinal教程《Jfinal极速开发实战》

从8月1号开始,整整一个月,初稿完成,朋友帮我第一次文字校对完成,现在正在根据波总的意见修改一些jfinal的设计原则说明 Jfinal、JfinalUIB学习交流QQ群:309647612 已经完成,前四章免费阅...

littleant
2015/08/20
0
12
JFinal使用Freemarker作为展示层中的国际化配置使用

最近在使用jfinal,如果使用jsp作为展现层的文件,使用jfinal的国际化很简单,直接 I18N.getText("key")就可以了,如果使用freemarker就没这么简单了,不能所有的国际化文字都通过 Controll...

hulang
2014/04/27
0
0
JFinal 中使用 Dubbo —— 1 改造JFinal Demo

Dubbo Demo概述 此Demo实际在2014年上半年就已经完成了,只是到最近才有时间和心情写完此文。同时,将JFinal升级到了1.9,并采用Maven构建项目。 另外,仔细想了想,Provider其实可以不依托T...

糊搞
2015/04/20
0
16

没有更多内容

加载失败,请刷新页面

加载更多

Bash工作管理详解

Bash工作管理 Bash的工作是对具体任务的一个抽象表述,更确切的说是对管道的应用上的表述。Bash中的工作在形式上表现为一组相关进程或单个进程。工作进程组分为前台和后台,前台进程会对键盘...

小陶小陶
28分钟前
2
0
Qt那些事0.0.1

LIBS += -L$$PWD/lib/ -lStv1QMAKE_POST_LINK += $$QMAKE_COPY $$replace(PWD,"/","\\")\lib\Stv1.dll $$replace(OUT_PWD,"/","\\")\debug\Stv1.dll pro文件里,写起来按理说应该是轻松地......

Ev4n
38分钟前
2
0
如何正确的使用动态VPS(Linux)自动更换IP

背景 现在越来越多的人开始玩网赚项目,蚂蚁再小也是肉,薅羊毛的羊毛党越来越多,一些网赚项目也越来越受欢迎,但是一般的网赚项目都是要求真实用户的,所以要想获得大量的真实ip,一种动态...

bengozhong
44分钟前
2
0
分布式任务系统(LTS)部署学习使用

章节速览 背景介绍 环境部署 LTS架构原理&代码样例 个人心得经验 一、背景介绍 很多公司应该都会遇到job服务部署执行时:定时、并发、分布式这些问题。有的人就是只跑一个job服务,这样会简单...

硅步积千里
54分钟前
31
0
kotlin使用spring data redis(一)

1.引包 #忘记引用这个包的下场就是#nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfigcompile 'org.apache.commons:commons-p......

weidedong
57分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部