"官方" I18N与简单资源文件

时间:2017-01-18 22:28:48

标签: angular localization internationalization

"official" way to facilitate I18N in Angular看起来很复杂:

  

i18n模板翻译流程分为四个阶段:

     
      
  1. 在组件模板中标记静态文本消息以进行翻译。

  2.   
  3. 有角度的i18n工具将标记的消息提取到行业标准翻译源文件中。

  4.   
  5. 翻译人员编辑该文件,将提取的短信翻译成目标语言,并将文件返回给您。

  6.   
  7. Angular编译器导入已完成的翻译文件,用翻译的文本替换原始消息,并生成一个   目标语言中应用程序的新版本。

  8.         

    您需要为其构建和部署单独版本的应用程序   每种支持的语言。

提到了一些怪癖:

A)

  

翻译复数和选择信息有点棘手。

     

对于复数和选择翻译单元,标签为空   这使得它们很难与原始模板相关联。该   XLIFF格式尚不支持ICU规则;很快就会。

b)中

  

翻译文件维护和ID更改

     

随着应用程序的发展,您将更改i18n标记并重新运行   ng-xi18n提取工具多次。您添加的新标记   不是问题;但对现有标记触发的大多数更改   为受影响的翻译单位生成新的ID。

     

ID更改后,翻译文件不再同步。所有   应用程序的翻译版本将在失败期间失败   重新编译。错误消息标识no的旧ID   更长的有效但他们不会告诉你新的ID应该是什么。

     

将所有翻译消息文件提交给源代码控制,尤其是   英文源message.xlf。旧与的区别   新的messages.xlf文件可帮助您查找和更新您的ID更改   翻译文件。

人工翻译可能需要一些上下文信息才能翻译文本。因此,如果要提供含义和说明,可以在模板中使用以下语法。这些工具会将它传播到提供给翻译者的文件中。

<img [src]="logo" i18n-title="<meaning>|<description>" title="Angular 2 logo" />

我认为这种语法会使标记膨胀很多。

所以,考虑到它的复杂性和怪癖,我想知道为什么你会选择这种方法?为什么不简单地为每种语言设置一个JSON文件,将(通常是稳定的)键映射到文本,将其作为JavaScript对象加载并绑定到模板中的键?可以在附加文件中轻松提供这些键的含义和描述。顺便说一句,按语言特定的文本文件中的键访问文本是how it is done in Java

0 个答案:

没有答案