如何在 Angular 2 应用中翻译 Typescript 字符串?

3
我知道两个与 Angular 2 i18n 相关的主要平台:官方方式ng2-translate。我更倾向于使用官方文档推荐的方式。对我而言,如何翻译 HTML 字符串非常清晰。但是有一件事情我还没有弄明白:如何翻译 TypeScript 字符串?
例如,我有以下组件,使用了内置的 i18n 解决方案:
import { Component } from '@angular/core';

@Component({
    moduleId: module.id,
    selector: 'hello',
    template: `
        <h1 i18n>Hello {{name}}!</h1>
        <button (click)="notify()"></button>
    `
})
export class HelloComponent {

    private name = 'John Doe';

    notify() {
        /* How do I translate this? */
        alert(`Hello ${this.name}!`);
    }
}

放置在HTML中的字符串将被翻译。但是如何翻译警告框中显示的字符串呢?如果没有本地化的方法,那么推荐的实现方式是什么?


1
从文档上看,i18n 似乎是专门用于 组件模板文本 的。 - jonrsharpe
目前还没有官方的方法。https://github.com/angular/angular/issues/11405 点赞以便他们优先考虑! - Simon Briggs
@SimonBriggs 感谢你指出了这个问题。 - Lucas Possatti
1个回答

1
Angular团队非常专注于创建一个核心产品,其中包括一些其他人可以选择使用的服务(路由翻译等)。因此,请不要低估任何社区制作的库,这正是使Angular如此易用的原因!
话虽如此,我强烈推荐您使用ng2-translate来满足您的需求。您可以预加载翻译,同步或异步调用它们,并将其用作模板中的pipe或通过组件类中的服务使用。

1
这还是现状吗?还是有什么变化了吗? - cookya
1
是的,你可以做一些工作,比如创建一个带有字符串的组件,并将它们放在服务中使用作为常量。关于当前状态的更多信息,请参见此处:https://github.com/angular/angular/issues/11405 - titusfx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接