2017-08-04 47 views
2

在角度i18n文档中,它是recommended来设置唯一的自定义ID。但是我很难理解如何使用它们。如何使用角度i18n自定义ID

我知道ID在您更新源语言时防止翻译更改很有用。这些ID应该是唯一的。当提取器找到重复的ID时,它只保留第一个。
但我在我的应用程序中有很多重复。我是否应该对所有重复的句子使用相同的ID?我不应该为这些论文使用ID吗?我是否应该为所有人使用不同的ID,并分别翻译每个事件?

我想更好的解决方案是不使用重复内容的ID,并保留生成的ID。但是,如果我有一个独特的句子,并且我的申请发生了变化,那么这个句子就不再是唯一的了,我将不得不删除这个ID并再次翻译它,对吗?我将不得不小心什么是独特的,什么不是。看起来好吗?

回答

1

嗯,我只会使用自定义ID,以防您需要更多(不同)的一个字符串的翻译。如果您希望获得更多的人员易读性和一些翻译环境,则文档建议使用它们。如果您使用工具来管理您的翻译,我不会担心维护太多(例如,xliffmerge)。

xi18n工具已经做了字符串相等匹配,所以如果它找到更多相等的字符串,它将它们填充到一个单独的<trans-unit>下。你要为本机提供一个(目标)翻译字符串,它将用来代替所有的源字符串。 ID不应该在本地化工具的多次运行之间更改,因为它们基于字符串本身的内容。

所以我的建议是不要担心身份证和重复使用太多。如果你只写了字符串,它们将会匹配在一起,并且翻译对于所有字符都是一样的。如果您使用自定义ID,则必须记住使用它们并手动维护其翻译。

源字符串发生变化的情况(当然)是您必须注意的事情。

为了完整起见,我们有一个简单的案例研究: 假设您的应用中有两个相同的字符串必须具有相同的翻译。您运行xi18n,生成messages.xlf,将其合并到已翻译的文件中(例如messages.cs.xlf),翻译<trans-unit>并构建和部署您的应用程序。 现在,有人来了,希望你改变其中的一个字符串。这里可能出现两种情况 - 源字符串必须更改(并重新翻译),或者只有翻译必须更改(源字符串保持不变)。 在第一种情况下,您转到您的代码,更新源字符串并再次运行本地化过程。一个新的<trans-unit>将被创建 - 你提供了一个新的翻译,建立应用程序,你就完成了。 在第二种情况下,您转到代码并将自定义ID(描述和含义也建议)放到必须进行新翻译的字符串上。您运行本地化过程 - 将生成一个新的<trans-unit>(使用自定义ID)。您可以按照习惯进行翻译,构建和部署。