【发布时间】:2018-08-23 14:51:18
【问题描述】:
问题
我正在为我的 Angular 6 应用程序实现翻译。它需要支持多种语言的应用程序的静态文本。我不需要在运行时进行动态翻译 - 我只需要生成一个应用程序,其中包含在构建期间选择的语言的文本。
Angular 拥有完整的page on internationalization,但它只关注模板中所有文本都被硬编码的情况,如下面的代码:
<p>This is a hard coded text</p>
在我的模板中几乎没有这种情况。此外,在我看来,用模板中硬编码的所有文本编写整个应用程序似乎是不可能或极其肮脏的,所以如果这是唯一可用于翻译的机制,那么它对我来说似乎完全没用。
在我的组件中,我经常将文本绑定到一些 JavaScript 变量(或者准确地说是对象属性),如下面的代码所示:
<li *ngFor="let navigationEntry of navigationEntries">
<a [href]="navigationEntry.url">
{{ navigationEntry.text }}
</a>
</li>
假设变量仍然是静态的,只是存储在组件或服务中,例如:
navigationEntries: Array = [
{
url: "/",
text: "Home",
},
{
url: "/login",
text: "Login",
},
{
url: "/admin",
text: "Admin panel",
},
];
问题
有没有办法在构建期间使用 Angular 原生翻译(国际化)机制来翻译锚文本(或者实际上是 navigationEntries 成员的 text 属性)? JavaScript 数据的结构和模板的 HTML 可以改变。
如果 Angular 原生国际化机制无法处理这个问题(但我想知道它们到底有什么用),那么还有哪些其他解决方案可以帮助实现这种翻译?我找到了ngx-translate 库,但它提供的翻译可以在运行时动态更改,理想情况下,我不想在所有翻译文本上添加动态解决方案的不必要开销。
【问题讨论】:
标签: javascript html angular internationalization angular-i18n