jfinal国际化问题

今天写了jfinal的国际化问题,实现了三种语言,中文,英文,繁体字

先介绍下实现步骤

1.应该创建配置文件,所需要语言的配置文件,

配置文件的创建位置应该在resource目录下,命名是有规定的,

如果不按规定则系统无法找到配置文件

a6ad6984a6d1c883a2de243af11c7fd60bb.jpg

配置文件里先写个简单的测试用例

msg="你好"

msg="hello"

msg= "再見"

暂时先按这个命名,以后会详细解释

2.配置拦截器,拦截器是詹波大神已经写好的直接用就可以了

0e13e99d4aec0dc01d80706f2088fc749e3.jpg

编写url,

可以设置默认语言,第一次进入使用的就是默认语言,

要想更改其他语言需要加参数__locale=zh_CN/en_US/zh_TW 格式是 url?__locale=zh_CN/en_US/zh_TW

然后就是页面的取值

${_res.msg}会取出配置文件中的值

 

可以通过

public void configConstant(Constants me) {

    me.setI18nDefaultBaseName("i18n");//设置i18n的默认名字,该名字关系到是否正确取到配置文件

me.setI18nDefaultLocale("zh_CN");设置默认的语言,默认语言只针对第一次登录使用,

当语言发生改变时,会把语言存进cookie,下次取默认语言时会从cookie中取,

}

原理:
 

Res res = I18n.use(getBaseName(), locale);

protected String getBaseName() {
        return I18n.defaultBaseName;
    }

public class I18n {
    
    static String defaultBaseName = "i18n";

 

配置文件的命名改变与  me.setI18nDefaultBaseName("i18n")有关

${_res.msg},url?__locale=zh_CN/en_US/zh_TW

_res,_locale也可以改变,I18nInterceptor()有3种构造方法

I18nInterceptor(String localeParaName, String resName)

I18nInterceptor(String localeParaName, String resName, boolean isSwitchView)
 

当isSwitchView==true时

if (isSwitchView) {
            switchView(locale, c);
        }

/**
     * 在有些 web 系统中,页面需要国际化的文本过多,并且 css 以及 html 也因为际化而大不相同,
     * 对于这种应用场景先直接制做多套同名称的国际化视图,并将这些视图以 locale 为子目录分类存放,
     * 最后使用本拦截器根据 locale 动态切换视图,而不必对视图中的文本逐个进行国际化切换,省时省力。
     */

    public void switchView(String locale, Controller c) {
        Render render = c.getRender();
        if (render != null) {
            String view = render.getView();
            if (view != null) {
                if (view.startsWith("/")) {
                    view = "/" + locale + view;
                } else {
                    view = locale + "/" + view;
                }
                
                render.setView(view);
            }
        }
    }

 

 

转载于:https://my.oschina.net/u/3934006/blog/1931672

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值