我在i18n(对于Angular2)中找不到任何文档,这些文档不仅仅是在HTML中显示已翻译的文本。 我需要做的是直接在我的代码中获取翻译的文本。在使用ng-translate功能的Angular 1中,使用$ translate服务很容易获得它。我找不到新的i18n for Angular 2中的等价物。我错过了什么吗?
答案 0 :(得分:1)
从 Angular 9 开始,就有了一个实验性且未记录的 $localize 标签函数。它可以应用于模板字符串。
greetings = $localize`Hello ${this.world}!`;
答案 1 :(得分:0)
这是关于i18n计划在github上发布的链接:
https://github.com/angular/angular/issues/9104
于06-11-2016 @ zh99998问:
如何在脚本中获取i18n字符串?例如:
let _THIS_IS_A_I18N_STRING = ??? alert(_THIS_IS_A_I18N_STRING);
和@vicb(angular2成员)说:
@ zh99998 @marcalj目前的impl是不可能的。您能否在问题跟踪器中创建正确的功能请求 填写问题模板并添加用例(并链接到其他 如果适用,实施。)
感谢。
目前似乎没有可能在代码中使用翻译。
虽然,angular2的库类似于$translate
:
https://github.com/ocombe/ng2-translate
类似于$translate
的用法(来自文档):
translate.get('HELLO', {value: 'world'}).subscribe((res: string) => { console.log(res); //=> 'hello world' });
类似于translate
过滤器(来自文档)的用法:
<div>{{ 'HELLO' | translate:param }}</div>
在我的情况下(ng1 / ng2混合应用程序),这是最好的解决方案,因为我能够为两个角度版本使用相同的翻译文件。
答案 2 :(得分:0)
我搜索过相同的主题。看来,Angular i18n不支持使用开箱即用的行为来翻译ts代码中的字符串。
https://github.com/angular/angular/issues/11405
我们已经实现了翻译服务并一起使用管道。还有一些其他的库,例如ngx-translate在源代码中使用翻译。以下是关于i18n的角度设计文档。
https://docs.google.com/document/d/1LH7lJ1GjRgpGUjzNb6Eg4xrPooRdi80QOTYYh8z_JyY/edit#
在章节&#34;现有技术&#34;中,表中列出了一些要比较的库,但它们都不支持AOT。
答案 3 :(得分:0)
也许这已经得到了回答,但以下为我做了。
import { TranslateService } from '@ngx-translate/core';
private translate: TranslateService;
const response= this.translate.instant('HELLO_WORLD');
这似乎有两种方法:
请参阅有关即时方法的文档说明。 https://github.com/ngx-translate/core
这个方法是同步的,默认的文件加载器是异步的。您有责任知道您的翻译何时加载并且使用此方法是安全的。如果您不确定,则应改用 get 方法。