资源文件中命名键的最佳实践

20

有没有关于在资源文件中命名键的建议?例如,您是以需要本地化的文本还是使用该文本的控件为基础来命名键的呢?

假设您在多个屏幕上都有一个编辑按钮(一个用于编辑用户,一个用于编辑组),您可以使用以下键:

  • editUserButton.label=编辑用户...
  • editGroupButton.label=编辑组...

或者

  • editUser=编辑用户...
  • editGroup=编辑组...

或者

  • user.edit=编辑用户...
  • group.edit=编辑组...

您更喜欢哪种方案,为什么?

5个回答

14

我会通过使用用例或操作类名称为字面量添加前缀。例如:

PlaceOrder.invalidId=订单{0}的ID无效
PlaceOrder.success=您的订单{0}已成功
PlaceOrder.fail.visa=您的签证已过期...
PlaceOrder.fail.communications=我们无法进行通信...
PlaceOrder.submit=立即购买
Login=登录 Login.fail=您的凭据不正确... Login.alread=您已经登录
EditStudent=编辑学生 EditClass=编辑班级 EditCourse=编辑课程
Person.id=编号# Person.name=名字 Person.surname=姓氏
这样可以避免冲突: ... 并且也可以更容易地找到所需内容。
另一种分组方式是按实体分组:
这些可以显示为实体表格的表头。这可以在以下情况下节省您的时间:
最后,通过在属性键中提供上下文,您可以避免错误翻译的情况。例如,我曾经有这样一个属性键:
它被用作左上角单元格的id标识符(#), 但是我们的法语翻译者将其翻译为:
...... 他认为它意思是“否定”(yes的反义词) :)
最后(但同样重要)使用类名作为前缀可以帮助您在想要重构/重命名类并快速更新这些属性键时,无需查看模板。


我从未考虑过以用例为基础来确定键。这似乎是一个合理的方法。+1 - Christophe Herreman
当你有一个具有100多个用例、视图和操作的应用程序时,这很有帮助。我还更新了我的答案,提供了更多信息。 - cherouvim

0
我们基于英文版本的术语。例如:EditUser,这样可以方便开发人员阅读,并且可以在应用程序中多个位置重复使用该术语。

0
根据英文文本,在窗口/对话框/其他位置前缀下的单词或短语。至少在布局空间有限时,您可能希望避免陷入到每个地方都完全相同的字符串而难以缩写以获得良好的布局效果,特别是在类似芬兰语这样的多音节语言中。
当然,您仍应努力保持命名一致性。增加字符串数量也会增加商业翻译成本。
不要忽视同音词的危险。提供上下文可以帮助防止这种情况发生。请勇敢地让资源名称比实际的英语术语更长,这可以大大帮助翻译人员。

0

+1 给 @cherouvim 的回答,但最终还是要看文档。

对每个值进行文档化(使用资源源文件格式支持的任何注释机制),包括每个参数的数据类型(如果字符串可格式化)。例如,VS 编辑器针对 .resx 格式公开了一个注释字段,使其非常容易。

因此,像这样的消息:

无法在 {1} 之前安排 {0} 工作。

将被记录为类似以下内容:

已记录错误消息,{0}:工作名称,{1}:ISO 8601 格式的日期/时间。


-1

我认为首先你应该使用某种XML文件来存储这种数据。

类似于:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xml>
    <button>
        <edit>
            <user>***编辑用户*
</user>
            <group>编辑组</group>
        </edit>
    </button>
</xml>**

然后使用“translate”类来获取(和设置/保存)文本。

类似于:

myTranslateClass.load( 'translate.xml' );
myTranslateClass.get( 'button' , 'edit' , 'user' );

这是一个简单的例子。


在我们使用Java和Flex的情况下,属性文件更加方便。 - Christophe Herreman
使用非严格结构化文件来进行此类存储并不是一个好主意(在我看来),因为在存储的数据中很容易迷失自己,而且还会有许多冲突问题。此外,XML或JSON由所有语言处理,这给您带来了更多的灵活性:] - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接