在 JSF 中国际化链接的模式
Pattern to internationalize links in JSF
我想将以下内容国际化:
Click here
to view our privacy policy.
here
是超链接。这是我目前的处理方式:
#{msg.footer_privacyPolicy1}
<h:outputLink>
#{msg.footer_privacyPolicy2}
</h:outputLink>
#{msg.footer_privacyPolicy3}
msg
是在faces-config.xml
注册的ResourceBundle
,内容如下:
footer_privacyPolicy1 = Click
footer_privacyPolicy2 = here
footer_privacyPolicy3 = to view our privacy policy.
我认为必须有更好的模式来实现这一目标。以下是我不喜欢我的方法的地方:
- 在实际国际化中失去了灵活性,因为我限制了句子的语义顺序。例如,也许在某些语言中,"click" 的祈使句应该放在句子的 结尾 - 但在我的方法中这是不可能的。
- 演示文稿的机制(即超链接)正在混合到内容中。如果我稍后删除超链接,或使用某种不同的超链接控件,属性 文件也需要更改。
是否有更好的方法来国际化必须按表示标记机制划分的内容?
JSF 实用程序库 OmniFaces offers <o:param>
用于确切目的。
footer.privacyPolicy = Click {0} to view our privacy policy.
footer.privacyPolicy.link = here
<h:outputFormat value="#{i18n['footer.privacyPolicy']}" escape="false">
<o:param><h:link outcome="privacyPolicy" value="#{i18n['footer.privacyPolicy.link']}" /></o:param>
</h:outputFormat>
与<f:param>
相反,它能够将子组件编码为参数值。
我想将以下内容国际化:
Click
here
to view our privacy policy.
here
是超链接。这是我目前的处理方式:
#{msg.footer_privacyPolicy1}
<h:outputLink>
#{msg.footer_privacyPolicy2}
</h:outputLink>
#{msg.footer_privacyPolicy3}
msg
是在faces-config.xml
注册的ResourceBundle
,内容如下:
footer_privacyPolicy1 = Click
footer_privacyPolicy2 = here
footer_privacyPolicy3 = to view our privacy policy.
我认为必须有更好的模式来实现这一目标。以下是我不喜欢我的方法的地方:
- 在实际国际化中失去了灵活性,因为我限制了句子的语义顺序。例如,也许在某些语言中,"click" 的祈使句应该放在句子的 结尾 - 但在我的方法中这是不可能的。
- 演示文稿的机制(即超链接)正在混合到内容中。如果我稍后删除超链接,或使用某种不同的超链接控件,属性 文件也需要更改。
是否有更好的方法来国际化必须按表示标记机制划分的内容?
JSF 实用程序库 OmniFaces offers <o:param>
用于确切目的。
footer.privacyPolicy = Click {0} to view our privacy policy.
footer.privacyPolicy.link = here
<h:outputFormat value="#{i18n['footer.privacyPolicy']}" escape="false">
<o:param><h:link outcome="privacyPolicy" value="#{i18n['footer.privacyPolicy.link']}" /></o:param>
</h:outputFormat>
与<f:param>
相反,它能够将子组件编码为参数值。