Sam*_*amy 4 internationalization angular
在 Angular i18n 文档中,建议设置唯一的自定义 id。但我很难理解如何使用它们。
据我所知,ID 非常有用,可以防止您在更新源语言时更改翻译。并且这些ID应该是唯一的。当提取器发现重复的 ID 时,它只保留第一个。
但我的应用程序中有很多重复。我应该对所有重复的句子使用相同的 ID 吗?我不应该在论文中使用 ID 吗?我应该为所有事件使用不同的 ID,并单独翻译每个事件吗?
我想更好的解决方案是不使用重复内容的 ID,并保留生成的 ID。但是如果我有一个唯一的句子,并且我的应用程序发生了变化,那么这个句子就不再是唯一的,我将不得不删除这个ID并重新翻译它,对吧?我必须小心什么是独特的,什么不是。看起来还可以吗?
好吧,只有当您需要对一个字符串进行更多(不同)翻译时,我才会使用自定义 ID。如果您需要更多的可读性和一些翻译上下文,文档建议使用它们。如果您使用工具来管理翻译(例如xliffmerge ) ,我就不会太担心维护问题。
该xi18n工具已经进行了字符串相等匹配,因此如果它找到更多相等的字符串,会将它们填充到单个<trans-unit>. 然后,您为此单元提供一个(目标)翻译字符串,它将用于代替所有源字符串。ID 在本地化工具的多次运行之间不应更改,因为它们基于字符串本身的内容。
所以我的建议是不要担心 ID 并重复使用太多。如果您只编写字符串,它们将被匹配在一起,并且所有这些字符串的翻译将保持相同。如果您使用自定义 ID,则必须记住使用它们并手动维护它们的翻译。
当然,您必须注意源字符串更改的情况。
为了完整起见,让我们进行一个简单的案例研究:假设您的应用程序中有两个相同的字符串,它们必须具有相同的翻译。您运行xi18n,生成messages.xlf,将其合并到已翻译的文件(例如messages.cs.xlf)中,翻译<trans-unit>并构建和部署您的应用程序。现在,有人过来要你更换其中一根琴弦。这里可能发生两种情况 - 源字符串必须更改(并重新翻译),或者仅需要更改翻译(源字符串保持不变)。在第一种情况下,您转到代码,更新源字符串并再次运行本地化过程。一个新的遗嘱<trans-unit>已经创建 - 您提供新的翻译,构建应用程序,您就完成了。在第二种情况下,您转到代码并将自定义 ID(也推荐描述和含义)添加到必须进行新翻译的字符串上。您运行本地化过程 -<trans-unit>将生成一个新的(带有自定义 ID)。您可以按照习惯进行翻译、构建和部署。
| 归档时间: |
|
| 查看次数: |
3857 次 |
| 最近记录: |