1

我在使用 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>

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

4

1 回答 1

0

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

  1. 通过带有“配置”选项的 ng serve 启动 Angular 服务器。(此时您还没有翻译)

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

  3. 您正在翻译文件中放置对环境变量的引用。
  4. 最后,您正在寻找翻译文件来解决环境参考?

这个对吗?

我可能弄错了,但我不理解这就是翻译的工作原理。每个 angular.io

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

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

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

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

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

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

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

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

据我了解,国际化发生在编译时。构建过程将负责浏览我们所有的“语言环境”文件并使用翻译更新您的各种模板。

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

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

更新:

显然这种类型的运行时翻译是可能的。看起来ngx-tgranslate是专门为这种类型的场景设计的。

于 2020-01-14T21:04:10.243 回答