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