@JFinal 你好,想跟你请教个问题:是这样的,我现在做国际化demo,但是我有一个疑惑,就是在Config类里这样配置,报错说没有找到bundle,这是为什么?
public void configInterceptor(Interceptors me) {
I18nInterceptor i18n = new I18nInterceptor();
me.add(i18n);
}
还有当我传入locale、basename、switchview这三个参数的时候,不能转换,调试之后才发现获取的locale内容为null,当我使用url?locale=en_US时候,就可以了,这样的话岂不是跟手动设置一样?
做国际化必须要有用于国际化文本的资源文件,bundle对象就是基于资源文件来创建的,资源文件名默认为:i18n_zh_CN.properties、i18n_en_US.properties,可以通过me.setI18nDefaultBaseName("demo")将默认改成了:demo_zh_CN.properties、demo_en_US.properties。
先确保资源文件是正确以后,仔细看一下I18nInterceptor中的执行流程就清楚了,大致逻辑如下:
1:使用getPara(localePara)来取locale值,如果该值存在则直接使用它并将其存放在cookie中以供下次请求使用,本质上来说改变locale就在于这次对cookie的写入
2:如果getPara(localePara)得不到locale值,则尝试从cookie中取,如果取到则使用之,如果取不到则使用默认locale值
isSwitchView是用来决定是否要整体切换模板路径,此前在不同路径中准备了多套模板。
是这样的,我想通过整体切换页面,但是这个locale在I18NInterceptor实例化的时候,怎么判断浏览器的语言?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。