【问题标题】:Translate service dynamically Ionic 2 Angular 2 ngx-translate动态翻译服务 Ionic 2 Angular 2 ngx-translate
【发布时间】:2017-12-14 09:24:43
【问题描述】:

我正在使用 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"]
}

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

非常感谢。

【问题讨论】:

    标签: javascript angular ionic-framework ionic2 ngx-translate


    【解决方案1】:

    您可以使用 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'
    

    这是working fiddle with this code

    更新

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

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

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

    【讨论】:

    • @PabloGarcíaMiranda 太棒了!如果可以,请接受我的回答;-)
    • 希望你能接受这个答案吗? @PabloGarcíaMiranda
    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 2016-05-15
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多