簡體   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