使用百里香时如何设置部分i18n信息的样式

时间:2018-03-14 14:37:16

标签: properties localization internationalization thymeleaf

我不确定这是问这个的合适地方。我想知道如何最好地设置来自l10n属性文件的部分消息的样式。例如,我的客户端在帮助窗口中需要此消息和格式:

  

这是自我评估比较应用程序。

最简单的解决方案是在此标签的messages.properties条目中包含HTML标记。问题在于,处理messages.properties的40个翻译器必然会犯错误,例如删除&lt ;,翻译HTML标记的属性或样式等。此外,它还会使开发人员难以维护标记和样式。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我通常看到的解决方案只是在.properties文件中使用带有HTML标记的th:utext。我认为它确实会引起维护麻烦,如你所说,应该保持最低限度。

一种解决方法是在某些情况下创建单独的字符串,例如:

<span th:text=#{thisIsA}>This is a </span><strong><span th:text="#{selfAssessment}">self-assessment</span></strong>

但是,这很容易出错,因为某些语言可能会改变单词的顺序。所以这不是一个很好的选择。

如果HTML标签特别是一个问题,另一种方式虽然有点丑陋可能是:

thisIsASelfAssessment=This is a {0}self-assessment{1}.

甚至

thisIsA=This is a {0}.
selfAssessment=self-assessment

但是对于下一位阅读它的开发人员而言,这可能会让人感到困惑,并且可能会引入与40名翻译人员相同的问题,因为你有花括号。它也变得非常乏味,并产生更多的线条。

所以最后,你最好选择最简单的utext解决方案。

项目方面,您可以在没有标记的情况下完成初始翻译,并在翻译完第一遍后添加标记。当您需要更改字符串时,将来可能会出现此问题,但这样做可以最大限度地减少一些问题。将这些字符串保存在.properties文件中的单独块中是有意义的,这样您以后可以将它们作为目标。

好问题,因为我自己有这个问题。