繁体   English   中英

动态翻译服务Ionic 2 Angular 2 ngx-translate

[英]Translate service dynamically Ionic 2 Angular 2 ngx-translate

我正在使用ionic 2构建一个应用程序,我想从服务器响应中转换一些对象而不将其存储在JSON文件中。

我正在使用ngx-translate

例如,我收到这样的对象:

{
"name": ["Hello", "Hola", "Bon Jour"],
"description": ["This text is in English", "This text is in Spanish", "This text is in French"]
}

我想根据所选语言在我的应用程序中设置字符串的值。 我怎样才能做到这一点?

非常感谢。

您可以使用3个键(en,es,fr)创建一个对象,然后使用它通过'setTranslation'设置每种语言

例:

translate.setTranslation('en', translations['en']);
translate.setTranslation('es', translations['es']);
translate.setTranslation('fr', translations['fr']);

要生成此“翻译”,您可以遍历所拥有的数据,对于每一项,请使用数组中的索引获取每种语言的翻译。

let data = {
  "name": ["Hello", "Hola", "Bon Jour"],
  "description": ["This text is in English", "This text is in Spanish", "This text is in French"]
}

const translations = {en: [], es: [], fr: []};
Object.keys(data).forEach( key => {
  translations['en'][key] = data[key][0];
  translations['es'][key] = data[key][1];
  translations['fr'][key] = data[key][2];
});

console.log(translations); //this will output you object ready to be used in 'setTranslation'

这是此代码的有效方法

更新

您可以使用setTranslation以更动态的方式重写该硬编码的片段

Object.keys(translations).forEach( key => {
  translate.setTranslation(key, translations[key]);
});

因此,您可以有多种(1..n)语言,而无需重复代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM