Javascript 动态转换服务Ionic 2 Angular 2 ngx Translate

Javascript 动态转换服务Ionic 2 Angular 2 ngx Translate,javascript,angular,ionic-framework,ionic2,ngx-translate,Javascript,Angular,Ionic Framework,Ionic2,Ngx Translate,我正在用ionic 2构建一个应用程序,我想翻译服务器响应中的一些对象,而不将其存储在JSON文件中 我正在使用 例如,我接收的对象如下: { "name": ["Hello", "Hola", "Bon Jour"], "description": ["This text is in English", "This text is in Spanish", "This text is in French"] } 我想根据所选语言设置应用程序中字符串的值。我怎样才能做到这一点 非常感谢。您可以

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

我正在使用

例如,我接收的对象如下:

{
"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语言,而无需重复代码。

@PabloGarcíaMiranda太棒了!如果可以,请接受我的回答-希望你能接受这个答案不@巴勃洛加西阿米兰达酒店