【发布时间】:2017-07-04 11:54:56
【问题描述】:
由于https://angular.io/guide/i18n 中的 i18n 教程,每条翻译的消息都应该有一个唯一的 id。
问题是,如果有人在大型应用程序中遇到某种 id 字符串约定?当有很多组件、子组件等时,什么应该包含这样的 id 模式,以降低 id 重复的风险并易于维护消息翻译?
【问题讨论】:
标签: angular internationalization naming-conventions
由于https://angular.io/guide/i18n 中的 i18n 教程,每条翻译的消息都应该有一个唯一的 id。
问题是,如果有人在大型应用程序中遇到某种 id 字符串约定?当有很多组件、子组件等时,什么应该包含这样的 id 模式,以降低 id 重复的风险并易于维护消息翻译?
【问题讨论】:
标签: angular internationalization naming-conventions
此时我正在使用以下约定
@@<modulename|libraryname>.<componentname>.<keyname[-<extension>]> - all lower case.
我避免使用组件名称的“组件”后缀。 这有助于我命名空间、识别和确保整个应用程序中的键的唯一性,甚至在将模块/组件部署为库时在外部应用程序中使用时也是如此。
【讨论】:
我使用意义值作为上下文。所以不要使用
<p i18n>This is a sample</p>
或
<p i18n="@@sample">This is a sample</p>
我使用意义值。像这样
<p i18n="sample|">This is a sample</p>
记得添加管道字符!否则提取工具会将值作为描述。提取工具会生成 id,但我的本地化工具会忽略它。相反,它使用资源文件中的含义和位置属性的组合来获得唯一的 ID。这使得编写代码变得更加容易,因为我们不必在所有模板(例如数百个文件)中拥有唯一 ID,而只需在一个文件中。
如果由于某种原因模板中缺少含义,我的本地化工具会写入警告并使用生成的 id 作为上下文而不是含义+位置。开发人员将很快发现缺少意义的地方并可以添加它们。
很容易确保单个文件(模板)中的含义是唯一的,但是当您拥有多个开发人员和数百个模板时,就不可能在全局范围内具有唯一性。
【讨论】: