繁体   English   中英

使用 Angular i18n 进行语言翻译

[英]Language Translation using Angular i18n

我在使用 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. 通过 ng serve 使用“配置”选项启动角度服务器。 (此时您还没有翻译)

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

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

这样对吗?

我可能弄错了,但我并不认为这就是翻译的工作方式。 每个 angular.io

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

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

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

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

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

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

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

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

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

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

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

更新:

显然,这种类型的运行时转换是可能的。 看起来ngx-tgraslate是专门为这种类型的场景设计的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM