我们确实有一个应该翻译成不同语言的网站。一些措辞在消息属性文件中准备好进行翻译。我现在想要将其余文本添加到这些文件中。
命名文本块的好方法是什么?
<view>.<type>.<name>
我们大多数都有网页,有些网站会重复使用某些元素/模块。
答案 0 :(得分:11)
据我所知,不存在“标准”。因此很难说出什么是正确的以及什么是命名资源键的不正确方法。但是,根据我的经验,我可以这样推荐:
property file name: <module>.properties
resource keys: <view or dialog>[.<sub-context>].<control-type>.<name>
我们可以讨论是否将一个模块中的每个字符串放入一个属性文件的正确方法 - 如果更新不经常发生并且没有那么多消息,那么可能是正确的。否则,您可能会考虑每个视图一个文件。
至于关键命名策略:对于译者来说(听起来像是与尊贵的州长阿诺德的电影不是吗?)有一个上下文是很重要的。翻译实际上可能取决于它,即在波兰语中,如果它是页面/对话框/任何标题,您将以不同的方式翻译消息,如果它是按钮上的文本则以完全不同的方式翻译。
此类资源键的一个示例可能是:
preferences.password_area.label.username=User name
它为译者提供了足够的提示,说明它实际上是什么,这可能导致正确的翻译......
答案 1 :(得分:8)
我们使用点符号和驼峰案例提出了以下关键命名约定(Java,btw):
标签键(表单标签,页面/表单/应用程序标题等...即,不是完整的句子;用于多个UI位置):
如果标签代表Java字段(即表单字段)并与表单标签匹配: label.nameOfField
否则: label.sameAsValue
示例:
内容密钥:
<强> projectName.uiPath.messageOrContentType.n。* 强>
其中:
示例:
优点/缺点:
+标签键可以轻松重复使用;位置无关紧要 +对于未重复使用的内容键,在UI上查找页面将是简单而合理的。
- 标签键位于UI上的翻译者可能不太清楚。对于没有浏览页面的翻译人员来说,这可能不是问题,但对于开发人员来说可能仍然是一个问题 - 如果必须在UI上的多个位置使用内容密钥(很有可能),则在其他位置选择密钥名称是没有意义的。在我们的例子中,管理层并不关心内容区域的重复值,因此在这种情况下我们将使用不同的密钥(以在UI上演示位置)。
对此惯例的反馈 - 特别是将改进它的反馈 - 将非常受欢迎,因为我们正在修改我们的资源包! :)
答案 2 :(得分:2)
我个人使用的方法,到目前为止我更喜欢使用句子作为关键词。例如:(请用可靠的语法替换T取决于语言)
例如: print(T(“Hello world”))
在这种情况下,T将搜索关键字“Hello world”。如果未找到,则返回密钥,否则返回密钥的值。
通过这种方式,您不需要编辑消息(使用默认语言)至少需要使用参数....它为我节省了大量的开发时间
答案 3 :(得分:1)
我建议采用以下惯例
functionalcontext.subcontext.key
logicalcontext.subcontext.key
通过这种方式,您可以在超级上下文中对所有常见消息进行逻辑分组(以下示例中为id)。很少有东西不是特定于任何功能上下文(比如lastName等),你可以将它们分组到逻辑上下文中。
order.id=Order Id
order.submission.submit=Submit Order
name.last=Last Name