我使用 struts2 属性文件来提供对多种语言的支持,并且效果很好。
总是很容易忘记某些 JSP 中硬编码的文本或未正确翻译的错误。
有没有一种简单的方法来可视化这一点,例如用“ZZZ”替换所有翻译的项目,因此我们只会看到没有提供翻译的地方?
一个想法是以某种方式动态地(在运行时)用“ZZZ”替换属性文件中的所有文本项 - 有没有一种简单的方法可以做到这一点?我的意思是覆盖所有翻译的项目(不触及文件本身,只是在内存中)?
我使用 struts2 属性文件来提供对多种语言的支持,并且效果很好。
总是很容易忘记某些 JSP 中硬编码的文本或未正确翻译的错误。
有没有一种简单的方法来可视化这一点,例如用“ZZZ”替换所有翻译的项目,因此我们只会看到没有提供翻译的地方?
一个想法是以某种方式动态地(在运行时)用“ZZZ”替换属性文件中的所有文本项 - 有没有一种简单的方法可以做到这一点?我的意思是覆盖所有翻译的项目(不触及文件本身,只是在内存中)?
我们只需创建一个属性文件,其值设置为类似 ?es_firstNameLabel 等,并设置语言环境以使用该属性文件。然后你在你的应用程序中查看英语(或任何你的母语)。它很丑,但这很好——它应该很丑,这样你的东西就更容易展示出来。
不幸的是,没有真正简单的方法来自动化检查部分,您只需要一个一个地回归您的页面。
当一切都说完了,你可以回去开始用适当的值替换 ?es_propertyLabel 东西,所以当你开始创建新的语言条目时它工作得很好。
您指的是一个称为伪构建的概念。通常不替换,而是将前缀和后缀添加到资源字符串(属性文件中的值)并测试应用程序是否存在错误。
不幸的是,这只会给你硬编码字符串缺陷的子集,因为几乎没有办法测试所有可能的执行路径。当然,在测试过程中很容易忽略 alt 和 title 属性的内容——你可能很难注意到这个问题。
老实说,没有简单的方法可以发现代码中的 i18n 错误。为此,您可能需要运行一些商业工具,例如 Globylizer,或者开发自己的工具。如果您只关注硬编码字符串(坦率地说,这只是问题的一部分),您可能会破解一些正则表达式来查找开始和结束标记之间的文本,如果它不是类似的东西<s:text>
或您用于翻译的任何东西,则提交缺陷。