Angular i18n标签 - ids约定

时间:2017-07-04 11:54:56

标签: angular internationalization naming-conventions

由于https://angular.io/guide/i18n中的i18n教程,每条翻译过的消息都应该有唯一的ID。

问题是,如果有人在大型应用程序中遇到一些id字符串约定?什么应该包含这样的id模式,当有很多组件,子组件等时,id重复的风险较低,并且易于维护消息的翻译?

2 个答案:

答案 0 :(得分:1)

此刻,我正在使用以下约定

   @@<modulename|libraryname>.<componentname>.<keyname[-<extension>]> - all lower case.

我避免使用组件名称的“ Component”后缀。 这可以帮助我命名空间,识别,确保整个应用程序中的键的唯一性,甚至当模块/组件作为库部署时在外部应用程序中使用时也是如此。

答案 1 :(得分:0)

我使用意义值作为上下文。所以不要使用

<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作为上下文而不是含义+位置。开发人员将很快发现缺少意义的地方,并可以添加它们。

很容易确保单个文件(模板)中的含义是唯一的,但是当您拥有多个开发人员和数百个模板时,不可能拥有唯一的全局。