我有这个字符串
The [inputText 1] is using for [inputText 2] days
两个inputText
都是h:inputText
,validator
,onfocus
......
value
问题在于翻译。所以说,我想翻译上面的字符串,它会做这样的事情
#{ifn:translate('The')}
<h:inputText value="#{myBean.val1}" validator="#{myBean.validator1}" />
#{ifn:translate('is.using.for')}
<h:inputText value="#{myBean.val2}" validator="#{myBean.validator2}" />
#{ifn:translate('days')}
然而,这些并不适用于日语翻译。首先,在日语中,没有The
。其次,inputText
的位置仅对英语有意义,但对于日语,inputText
需要是其他位置。我看到的一个解决方案是将html组件嵌入.properties
文件中的翻译字符串中,就像这样
label_en.properties
my.String=The <input >{0}</input> is using for <input >{1}</input> days
label_jp.properties
my.String=<input >{0}</input> XXX XXX XXX <input >{1}</input> XXX XXX XXX
但是,此解决方案不适用于h:inputText
等JSF组件,因此任何人都可以为此提出另一种解决方案。谢谢
答案 0 :(得分:3)
我认为只有使用JSF的简单方法(除了创建自己的组件之外)。
在这种情况下,我会使用OmniFaces来解决问题:
<h:outputFormat value="#{label['my.String']}" escape="false">
<o:param><h:inputText value="#{myBean.val1}" validator="#{myBean.validator1}" /></o:param>
<o:param><h:inputText value="#{myBean.val2}" validator="#{myBean.validator2}" /></o:param>
</h:outputFormat>
label_en.properties:
my.String = The {0} is using for {1} days