【问题标题】:Localization in JSF. The messages from a imported jar are always in englishJSF 中的本地化。来自导入 jar 的消息始终是英文的
【发布时间】:2013-06-19 02:31:42
【问题描述】:

我有一个国际化运行良好的 java web 应用程序。 但是我想导入另一个 .jar,它也具有国际化功能,在桌面应用程序中使用时效果很好。

当我将 jar 放在 java war 文件的 lib 文件夹中并运行 webapp 时,所有 webapp 国际化都可以正常工作,除了这个导入的 jar 中的消息。

导入的 jar 正在使用服务器的语言环境,但是在这种情况下如何进行。我想要两者,使用浏览器语言环境进行战争。需要在 faces-config.xml 中配置一些额外的东西吗?

谢谢。

【问题讨论】:

    标签: java jsf jar internationalization locale


    【解决方案1】:

    不应根据每个用户请求切换默认语言环境。也许您必须使用 servlet 上下文修补 Locale.getDefaultLocale() 或重新翻译他们的消息:

    复制他们的包以供您自己翻译。

    保留一个带有根区域设置(“”)的捆绑包,带有

    key1=key1
    key2=key2
    
    # Now a message format:
    key3=key3\u2622{0}\u2622{1}
    

    它将密钥转换为自身,可能带有附加参数。

    【讨论】:

    • 你能给我发一份关于这个翻译的教程吗?当一个罐子来自第三方时,我该如何翻译?
    • 逆向工程。如果 jar 返回要传递的字符串;上述过程将起作用(通过解压缩 jar)。如果它是一个有自己的文本的组件,那么只有 AOP 拦截器或其他黑客可能会起作用。他们没有论坛吗?
    • 我不确定我是否能很好地表达所有这些问题。让我再试一次:如果浏览器请求在德国,为什么 lib 文件夹中的 jar 不像整个应用程序那样在德国抛出消息?这是默认行为吗? lib文件夹中的jar总是会使用服务器语言环境而不是浏览器语言环境?对我来说似乎合乎逻辑,但我想确认一下。
    • 在 JSF 中可以保存一个语言环境,甚至可以设置它:FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("eo");。如果该库不是为 JSF 使用而设计的,则必须以某种方式搜索它们的 API。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多