jpress网站如何支持多语言支持英语国际化i18n

最近在使用jpress进行二次开发的时候遇到一个问题,需要需要对英语域名进来的做英文的展示,也就是需要支持多语言来进行国际化i18n。场景是这样的,通过 en.xxxx.cn 访问进来页面会表现为英语,而通过 www.xxxx.cn 访问会是中文,也就是通过域名区别来达到国际化多语言的需求。我们直接进入正题。

创建properties文件

首先我们在 starter工程 > src > main > resources 目录下新建 i18n_en_US.properties 和 i18n_en_US.properties 两个文件,如下图(注意没有新建Resource Bundle 'i18n')

然后在i18n_en_US.properties写入如下内容

homeTxt=Home

 

i18n_zh_CN.properties写入如下内容  

homeTxt=首页

 

创建I18nInterceptor

在 starter工程 > src > main > java > io.jpress 包下创建拦截器 MyI18nInterceptor.java,内容如下:

package io.jpress;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Const;
import com.jfinal.core.Controller;
import com.jfinal.i18n.I18n;
import com.jfinal.i18n.I18nInterceptor;
import com.jfinal.i18n.Res;
import com.jfinal.kit.StrKit;
public class MyI18nInterceptor extends I18nInterceptor {
    @Override
    public void intercept(Invocation inv) {
        Controller c = inv.getController();
        if(c.getRequest().getRequestURL().toString().contains("en.ipingfang")){
            Res res = I18n.use(getBaseName(), "en_US");
            c.setAttr(getResName(), res);
            inv.invoke();
        }else{
            super.intercept(inv);
        }
    }
}

 

这个拦截器主要的作用是判断当前网址是否符合英文网址规则,符合则使用英文的配置文件,不符合交给父类方法去处理。

html页面中使用

接下来我们只需要使用 #(_res.get("homeTxt")) 在页面中调用 properties 中的变量就可以了。 

另外可以使用_res.resourceBundle.locale.toString() 来获取当前的国际化语言配置,假如我们需要针对特定的语言来做特殊的配置可以使用下面方法:

#if(_res.resourceBundle.locale.toString() == "zh_CN")
中文则支持使用QQ登录
#else
非中文使用google登录
#end

 

以上是针对jpress国际化i18n支持的研究,留在这里做个备忘。

版权声明:
作者:Miigua
链接:https://www.miigua.com/article/240.html
来源:米瓜的博客
文章版权归作者所有,未经允许请勿转载。

THE END
二维码
打赏
请在后台主题设置处设置打赏图片
< <上一篇
下一篇>>