我们正在开发一个包含许多小程序包的大型应用程序。每个软件包都有自己的一组资源文件以进行本地化。
组织和命名本地化字符串的最佳方法是什么?
到目前为止,这是我的想法:
处理重复项
同一文本(例如“邮政编码”)在给定的程序包中可能多次出现。编程本能(DRY)告诉我创建一个由所有实例共享的单个字符串资源。
再者,翻译者可能希望在某些地方选择长译本(“ Postleitzahl”),在空间较小的地方选择短译本(“ PLZ”)。或者,我们可能决定在某些情况下添加冒号(“邮政编码:”),而在其他情况下则不添加。或者我们可能在某些地方要求使用不同的大写字母(“邮政编码”)。所有这些参数都指向每种用法创建一个资源,即使它们的内容相同。
命名
如果我们希望消除重复,则可以按内容命名资源,也许可以通过前缀提示使用的种类。因此,我们可能有labelOK
= “ OK”,messageFileTooLarge
= “文件超出了最大文件大小。” 和labelZipCode
= “邮政编码”。
按内容命名具有自然处理格式参数的优势:资源messageFileHas_0_MBWhileMaximumIs_1_MB
显然采用两个格式参数,即实际文件大小和最大文件大小。
但是,如果我们允许重复,则仅按内容命名是没有意义的。为了获得唯一的资源名称,我们必须以某种方式在资源名称中包括使用位置。这适用于图形控件,尽管标识符往往有点长:fileSelectionConfirmationButtonText
= “ OK”,customerDetailsTableColumnZipCode
= “邮政编码”。但是,对于非可视代码文件,它会变得更加困难。如果您不知道字符串的最终显示位置,该如何命名字符串的特定用法?通过代码文件和函数名称?对我来说似乎很笨拙。
总而言之,我倾向于允许重复,但是我一直在努力寻找一个支持此目的的一致命名方案。
编辑:这个问题有两个方面:如何组织资源(DRY与重复项)以及如何命名它们。到目前为止,答案集中在第一方面。非常感谢您提供有关命名约定的反馈!