我正在使用 @ngx-translate/core 的 i18n 服务,它在模板文件 (.html) 中的语法如下:
{{'my.i18n.key'|translate}}
现在我想在组件的 TypeScript 文件 (.ts) 中翻译一些内容,但我不知道该怎么做。
我可以在构造函数中创建 TranslateService 实例:
constructor(private translate: TranslateService) {}
那现在如何翻译 'my.i18n.key' 呢?
我正在使用 @ngx-translate/core 的 i18n 服务,它在模板文件 (.html) 中的语法如下:
{{'my.i18n.key'|translate}}
现在我想在组件的 TypeScript 文件 (.ts) 中翻译一些内容,但我不知道该怎么做。
我可以在构造函数中创建 TranslateService 实例:
constructor(private translate: TranslateService) {}
那现在如何翻译 'my.i18n.key' 呢?
要在你的Typescript文件中翻译某些内容,请按照以下步骤进行
constructor(private translate: TranslateService) {}
然后在需要翻译的地方使用它
this.translate.instant('my.i18n.key')
从Github上的文档中得知:
get(key: string|Array, interpolateParams?: Object): Observable: 获取一个键(或一组键)的翻译值,如果未找到该值,则返回键本身
请在您的控制器/类中尝试:
constructor(private translate: TranslateService) {
let foo:string = this.translate.get('myKey');
}
constructor(private translate: TranslateService) {
let foo:string = this.translate.stream('myKey');
}
- netalexstream
对我来说很有效,可以在语言更改时实时更新文本,而 instant
和订阅 get
只会触发一次。 - Qumber要在 TypeScript 文件中进行翻译,请按以下代码进行操作:
在头部导入:
import { TranslateService } from '@ngx-translate/core';
public translate: TranslateService
{
"menu":{
"Home": "Accueil"
}
}
在构造函数中声明以下代码。
注意:Key 代表在 language.json 文件中使用的主键值(这里是 "menu")。
this.translate.get('menu').subscribe((data:any)=> {
console.log(data);
});
我正在使用Angular 8 > 在我的情况下 > 如果您想将TypeScript字符串翻译成另一种语言,则可以使用以下方法:
首先,创建一个服务文件以获取翻译值。以下是我globaltranslate.service.ts文件的代码:
import { Injectable } from '@angular/core';
import {TranslateService} from '@ngx-translate/core';
constructor(public translate: TranslateService) {}
getTranslation(str) {
const currentLang = this.translate.currentLang; // get current language
const returnValue = this.translate.translations[currentLang][str]; // get converted string from current language
if (returnValue === undefined) {
return this.translate.translations.en_merch[str]; // if value is getting undefined then return default language string, en_merch is default english language file here
} else {
return returnValue;
}
}
import {GlobaltranslateService} from '../../../../services/globaltranslate.service';
@Component({
selector: 'app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [GlobaltranslateService] // add service in provider
})
constructor(
private gTranslate: GlobaltranslateService // add service into constructor
) {}
const title = this.gTranslate.getTranslation('Title text'); // get return value by calling function 'getTranslation' in globaltranslateservice.
这个解决方案更适合所有涉及和 的项目。
这也适用于类似下面代码的sweetalert2字符串。
Swal (
this.gTranslate.getTranslation('Warning'),
data.message,
'warning'
);
translate.instant('hello');
如果这个值来自参数或变量,请直接传递该值。
translate.instant(my.i18n.key);
我不知道这篇文章发布时是否有问题,但是将“get”方法分配给一个变量以获取翻译后的字符串是行不通的,因为它返回的是一个可观察对象。
应该像这样使用“get”:
constructor(private translate: TranslateService) { }
:
:
this.translate.get ('KEY_TO_TRANSLATE').subscribe (x=> this.translation = x);
要获取字符串,您可以使用Instant方法:
this.translation = this.translate.instant('KEY_TO_TRANSLATE')
然而,这是一种同步方法,所以如果翻译尚未加载,您将收到键而不是值。在文档中有详细的解释,该文档可以在Github上找到。
这对我有效(我正在使用Angular 7)。 只需在构造函数中导入Translate服务,然后像这样从myfunction内部调用它:
getTranslation(){
let translation = "";
let clientTranslation = this.translate.get('auth.client').subscribe(cliente =>{
translation = cliente;
document.getElementById("clientTest").setAttribute('value', translation);
}
}
我在一个表单上使用了翻译,所以我通过setAttribute将其传递给输入框,希望这个例子能帮到你。
您可以使用 translate.stream,它会根据语言变化改变值。
constructor(private translate: TranslateService) {
this.translate
.stream('my.i18n.key')
.subscribe((res: string) => {
console.log(res);
});
}
请参考https://github.com/ngx-translate/core#methods以获取更详细的解释。
errorMessage:string="";
constructor(
protected translate:TranslateService,
) {
}
ngOnInit(): void {
this.translate.get('PLEASE_ENTER_OTP').subscribe(data=>{
this.errorMessage=data;
})
}
ngOninit
中订阅这个可观察对象。