我正面临ngx-translate的问题!那就是我有2个使用不同语言的sperate API,因此例如类似于此http://example.com/api
和http://example.com/fr/api/
现在在ngx-translate中,我必须使用en/fr.json
文件来翻译我的角度应用程序!正如我从文档中看到的!
但是现在我需要使用来自两个API的数据!它已经在服务器上翻译了!
http://example.com/api
http://example.com/fr/api/
所以我的问题在这里我该怎么做?!并继续使用json files
,因为我的应用中有一些静态词,例如the application menu
如果还有其他选择,请不要犹豫!
答案 0 :(得分:1)
假设:
["en","fr"]
您可以创建一个服务,以构造正确的API端点,如下所示:
@Injectable()
export class EnpointLocalizer {
private readonly tokenMap = {'en': '/', '/fr/'}
constructor(private readonly translate: TranslateService){}
localizeJoin(sections: string[]){
const {currentLang} = this.translate;
return sections.join(this.tokenMap[currentLang] || '/');
}
}
然后您可以在需要的地方注入它,并按以下方式使用它:
@Injectable()
export class FooService {
private endpoint = ["http://example.com","api"];
constructor(private http: HttpClient, private localizer: EnpointLocalizer){}
fetch(){
return this.http.get(this.localizer.localizeJoin(this.endpoint),...);
}
}
当然,您可以采用多种方法来实现“本地化”逻辑(例如,正则表达式模式+替换)。但是对于您的用例,我认为这是一个简单明了的开始。
答案 1 :(得分:0)
仅对(some statics words in my app like the application menu)
个单词使用翻译管道
喜欢
{{'HOME.NAME'|翻译}}
并从api数据中删除转换过滤器