开发者社区> 问答> 正文

jfinal 国际化?报错

@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时候,就可以了,这样的话岂不是跟手动设置一样?

展开
收起
爱吃鱼的程序员 2020-06-12 10:59:33 448 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

       做国际化必须要有用于国际化文本的资源文件,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实例化的时候,怎么判断浏览器的语言?
    2020-06-12 10:59:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题) 立即下载
Spring框架入门 立即下载