用翻译值而不是业务逻辑拆分i18n词典是否正确?

时间:2018-10-24 11:44:51

标签: javascript internationalization

例如-我的应用程序具有不同类型的实体:个人和客户。

应用程序具有字典,其中包含几种语言的标签和翻译。

const en = {
  firstName: 'First name',
  lastName: 'Last name',
  address: 'Address'
};

const ru = {
  firstName: 'Имя',
  lastName: 'Фамилия',
  address: 'Адрес'
}

const dictionary = createDictionary({ en, ru });

如您所见,personclient的标签如果翻译相同,则没有区别。

我应该按实体类型分隔标签吗?

1 个答案:

答案 0 :(得分:0)

如果是相同的单词,并且翻译为相同的单词,则无需区分。您的应用程序中可能有很多地方可以翻译按钮上的“ Okay”一词,而无需区分每个“ Okay”按钮即可得到200个完全相同的独立翻译。

已经说过,在某些语言中,单词的翻译会根据上下文而有所不同,尤其是在人们的姓名,名誉和代词方面。因此,您的翻译人员理解翻译的上下文非常重要。这在您选择的格式中有点困难,但是在gettext PO files中,它看起来可能像这样:

#: signup-form.html:42 admin/user-details.html:69
msgid "First name"
msgstr "Имя"

现在,例如,您的日语翻译可能会找您说,在直接与用户打交道的上下文中以及在管理员视图的上下文中,“姓氏”的确应出于礼貌而有所区别。同样,在PO文件中,您可以添加上下文:

#: signup-form.html:42
msgctxt "Label addressing the user in signup form"
msgid "First name"
msgstr "お客様の名"

#: admin/user-details.html:69
msgctxt "Label for user data in admin view"
msgid "First name"
msgstr "名"

现在这是两个可以分别翻译的单独的字符串。

所以,这里重要的是要有一个 a 技术解决方案,以便在必要时消除歧义,为翻译人员提供足够的背景信息和意识,并在翻译人员和程序员之间建立有效的反馈机制以消除歧义在必要时。程序员不应不必要地过分地消除歧义,因为他们常常无法预知真正的必要性。