Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 覆盖JSF';s默认的I18N处理_Jsf 2_Internationalization_Resourcebundle - Fatal编程技术网

Jsf 2 覆盖JSF';s默认的I18N处理

Jsf 2 覆盖JSF';s默认的I18N处理,jsf-2,internationalization,resourcebundle,Jsf 2,Internationalization,Resourcebundle,就像这里的提问者一样 我对无法引用消息包中其他属性键的值感到有点吃惊 尽管我看到编写自己的垃圾处理程序[0]是多么容易,它可以在自定义组件中完成我想要的任务,但这将使调用消息包的模板中的表达式仍然使用默认的JSF实现 是否可以覆盖消息包的默认JSF处理 [0]或更好,以使用上述问题的答案之一中引用的代码 您可以将具体的ResourceBundle实现的完全限定名作为“基本名”,而不仅仅是属性文件的路径和文件名 例如 可按如下方式注册 <application> <re

就像这里的提问者一样

我对无法引用消息包中其他属性键的值感到有点吃惊

尽管我看到编写自己的垃圾处理程序[0]是多么容易,它可以在自定义组件中完成我想要的任务,但这将使调用消息包的模板中的表达式仍然使用默认的JSF实现

是否可以覆盖消息包的默认JSF处理

[0]或更好,以使用上述问题的答案之一中引用的代码

您可以将具体的
ResourceBundle
实现的完全限定名作为“基本名”,而不仅仅是属性文件的路径和文件名

例如

可按如下方式注册

<application>
    <resource-bundle>
        <base-name>com.example.YourCustomResourceBundle</base-name>
        <var>text</var>
    </resource-bundle>
</application>
<f:loadBundle baseName="com.example.YourCustomResourceBundle" var="text" />


    • 对于那些尝试的人来说,一切都是可能的。问题不在于这是否可能,而在于你是否应该这样做。这个问题的答案是:可能不是

      引用消息包中的其他消息意味着您希望构建复合消息。因此,您可以多次重复使用部分消息,以节省一小部分磁盘空间或一小部分开发时间。
      如果是这样,我有个口信给你。您计划执行的操作称为连接,这是第二个最常见的I18n缺陷。它的含义和硬编码字符串的含义一样糟糕

      为什么??因为目标语言不遵循英语语法规则。首先,在翻译过程中,经常需要对句子重新排序。通过使用(编号或命名)占位符,这可能很容易修复。但另一方面,根据上下文的不同,翻译可能会有所不同。也就是说,它可能需要以完全不同的方式翻译,或者仅仅是词尾可能需要根据语法情况、语气或性别而有所不同

      我的建议是,不要使用这种快捷方式,它会产生比修复更多的问题。

      现在你应该知道为什么“那些愚蠢的罗马人”没有这样实施它:这违反了I18n最佳实践。

      谢谢你的回答Balus和有用的后续链接谢谢你的回答-我理解别名的缺点,但在现实世界中,无论是使用gettext还是更多自制的解决方案,我都没有发现这是一个问题。
      <f:loadBundle baseName="com.example.YourCustomResourceBundle" var="text" />