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
来源:米瓜的博客
文章版权归作者所有,未经允许请勿转载。
全部评论