我正在制作正在翻译的Play 2应用。 Play在幕后使用Java的MessageFormat
,所以我有相当数量的属性值,ala:
my.interface.key={0,choice,0#{0} families|1#1 family|1<{0,number,integer} families}
我刚收到以下表格的翻译:
my.interface.key={0,choix,0#{0} familles|1#1 famille|1<{0,nombre,entier} familles}
如果不是很明显,那么有些内容不应该被翻译,但错误会不时发生。这很公平,但我确信在我的应用程序在运行时因IllegalArgumentException: unknown format type at ...
异常而崩溃之前必须有一种方法来验证这些字符串。最好使用Git提交挂钩,甚至是SBT构建任务。
如果我要自己解决这个问题,我可能会创建一个工具来读取这些属性文件并检查每个值,运行MessageFormat.format(value)
不会爆炸。
理想情况下,我可以通过Perl(或Python)脚本完成此操作。遗憾的是,我在CPAN上找到的唯一非Java库 - Text::MessageFormat - 似乎不支持容易出错的格式,例如复数。
在我潜入之前,有人能建议基于现有工具的更明智的方法吗?
答案 0 :(得分:0)
我们遇到了类似的问题。我们的解决方案是创建对消息格式的结构建模的类,然后使用XML定义消息包中的消息。
如果翻译者使用XML编辑器,那么就有希望他们不会“破坏”消息的结构。
有关详细信息,请参见this answer。