2017-07-04 25 views
0

由于i18n教程https://angular.io/guide/i18n,每个翻译的消息应该有一个唯一的ID。Angular i18n tags - ids convention

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

回答

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用作上下文而不是含义+位置。开发人员会很快看到意思丢失的地方,并可以添加它们。

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

+0

问题是,你应该有一个全球唯一的ID来避免翻译问题。在这一刻我使用惯例'componentName'_'内部id'或global_'id',但我不确定这是否是一个完美的解决方案。 – Krystian

+0

我得到一个全球唯一的id,因为id是文件名和意义值的组合。重点是意义值只能在文件中唯一。 – Jaska