gpt4 book ai didi

javascript - 如何在 ngx-translate 中使用带有服务 url 的 TranslateHttpLoader

转载 作者:行者123 更新时间:2023-11-30 07:54:11 25 4
gpt4 key购买 nike

我正在尝试使用服务 URL 从内容管理系统获取翻译后的文本。当我使用 JSON 文件时它运行良好,但我如何使用服务 URL 来获取翻译后的数据?

这是无效的代码:

export function createTranslateLoader(http: Http) {
return new TranslateHttpLoader(http, 'http://test.test.com/test/test/Translations/{lang}/{SiteId}');
}

最佳答案

昨天我遇到了同样的问题,关于如何使用 ngx-translate 从 API 调用中使用 JSON 响应,我已经确定了解决方案。我知道在这里更新已经很晚了,但我相信有人会从中受益。

如果您不打算使用 .json 文件,Ngx-translate 会提供使用服务。为此,在您的 *.module.ts 文件中,使用“useClass”代替“useFactory”,如下所示。

 @NgModule({
imports: [SharedModule, SharedComponentsModule, routing,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: TranslationService,
//useFactory : HttpLoaderFactory,
deps: [HttpClient]
}

在您的翻译服务中,只需像这样调用 API url。

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { TranslateLoader } from '@ngx-translate/core';

@Injectable()
export class TranslationService implements TranslateLoader {

constructor(private http: HttpClient) { }

getTranslation(lang: string): Observable<any> {
return this.http.get(`http://<someurlreferences>?language=${lang}`)
.map((response: JSON) => {
return response;
});
}
}

请记住:API 响应应为 JSON 格式。否则,ngx-translate 不会翻译。

假设您的 JSON 响应格式如下

{
"Data": {
"First": [{
"key": "FirstKey",
"value": "FirstValue"
}]
}
}

然后,在你的 *.component.ts 文件中

import { Component, OnInit } from '@angular/core'
import { TranslateService } from '@ngx-translate/core';

@Component({
template: `<button (click)="switchLanguage('en')" >English</button>
<button (click)="switchLanguage('cy')" >Welsh</button>
<h1>{{'Data.First.0.value' | translate }} <!--FirstValue-->
</h1>`

export class SomeComponent implements OnInit {
constructor(private translate: TranslateService) {
translate.addLangs(['en', 'cy']);
translate.setDefaultLang('en');

const browserLang = translate.getBrowserLang();
translate.use(browserLang.match(/en|cy/) ? browserLang : 'en');
}
switchLanguage(language: string) {
this.translate.use(language);
}
}

UI 显示两个按钮(英语和威尔士语),单击时,将根据语言参数相应地调用服务 API url。

关于javascript - 如何在 ngx-translate 中使用带有服务 url 的 TranslateHttpLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44671412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com