使用Angular i18n进行语言翻译

时间:2020-01-14 12:11:40

标签: angular internationalization

我在使用i18n进行角度语言翻译时遇到了一些问题。为了进行验证,我从REST API中获取了一些错误代码,我将基于错误代码的消息放入环境文件中。我已经在ts文件中导入了文件。 环境文件看起来像

loginErrorMsg01EN:'Invalid Credentails!!',
loginErrorMsg01ES:'Credentails inválidos!!'

html文件中的行

<label align="center" class="error-text" i18n="@@loginErrorMsg">{{environment.loginErrorMsg01EN}}</label>

西班牙语(ES)转换文件如下

<source><x id="INTERPOLATION" equiv-text="{{environment.loginErrorMsg01EN}}"/></source>
<target><x id="INTERPOLATION" equiv-text="{{environment.loginErrorMsg01ES}}"/></target>

但是我没有得到西班牙语翻译文本。仅显示英文翻译。 请帮助我。

1 个答案:

答案 0 :(得分:0)

如果我了解您要正确执行的操作,那么您就是

  1. 通过ng serve使用'configuration'选项启动角度服务器。 (目前您还没有翻译)

  2. 应用程序运行后,您将在前端进行REST调用以获取数据并将其放置在环境文件中

  3. 您要在翻译文件中引用环境变量。
  4. 最后,您正在寻找翻译文件来代替环境参考吗?

这正确吗?

我可能会误会,但这不是我的理解,这就是翻译的工作方式。每个angular.io

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

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

  2. 创建翻译文件:使用Angular CLI xi18n命令将标记的文本>提取到行业标准的翻译源文件中。

  3. 编辑生成的翻译文件:将提取的文本翻译成目标语言。

  4. 将完成的翻译文件合并到应用程序中。为此,请使用Angular CLI build>命令来编译应用程序,选择特定于语言环境的配置,或指定>以下命令选项。

--i18nFile=path to the translation file
--i18nFormat=format of the translation file
--i18nLocale= locale id

该命令将原始消息替换为翻译后的文本,并以目标语言生成该应用的新版本。

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

据我了解,国际化发生在编译时。构建过程将处理所有的“区域设置”文件,并通过翻译来更新您的各种模板。

这意味着您必须先为翻译定义一个翻译文件,然后构建过程将为您选择的特定语言创建分发文件。

很有可能我弄错了,并且支持您尝试执行的操作。在这种情况下,我今天将学到一些新东西。我只是不知道这种方法。

更新:

显然,这种类型的运行时转换是可能的。 ngx-tgranslate似乎是为这种情况专门设计的。