2017-07-10 14 views
0

私はionic 2でアプリケーションを構築しています。これをJSONファイルに保存せずにサーバーレスポンスから翻訳したいと思います。例えばngx-translateサービスを動的に変換します。イオン2角度2 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'

例使用して、それぞれの言語を設定するためにそれを使用してオブジェクトを作成することができます

答えて

1

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' 

ここにはworking fiddle with this codeがあります。あなたはあなたがコードを繰り返すことなく、複数(1..nの)言語を持つことができ、より動的な方法で

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

をsetTranslationでそのハードコードされた部分を書き換えることができ

UPDATE

+0

ありがとうございました!それは適切に働いた。 –

+0

@PabloGarcíaMiranda素晴らしい!あなたができれば、私の答えを受け入れてください;-) –

+0

あなたはこの答えを受け入れることができます希望ですか? @パブロガルシアミランダ – Sampath

関連する問題