如何使用TranslationService.setTranslation方法手动定义翻译

时间:2017-03-22 04:04:34

标签: angular ng2-translate

我正在使用ng2-translate节点包来实现Angular SPA应用程序中的翻译。

按照https://www.npmjs.com/package/ng2-translate上的说明(参见第3节定义翻译),我在其中一个组件中定义了如下翻译:

import { Component, } from '@angular/core';
import { TranslateService } from 'ng2-translate';


@Component({
    selector: 'home',
    templateUrl: './home.component.html'
})
export class HomeComponent  {


    constructor(private translate: TranslateService) {


        this.translate.setTranslation('en', {
            "HELLO": "Hello World from TranslateServiceLand"
        }, true);

        this.translate.setTranslation('fr', {
            "HELLO": "Bonjour tout le moonde d'TranslateServiceLand"
        }, true);
    }
}

然而这不起作用。有人可以请我提供一个例子吗?

1 个答案:

答案 0 :(得分:0)

使用最新版本ngx-translate/core

实际上,setTranslation()用于手动设置给定语言的翻译对象。

* @param lang
 * @param translations
 * @param shouldMerge
 */
setTranslation(lang: string, translations: Object, shouldMerge?: boolean): void;

在组件文件夹中创建i18n文件夹

-componentfolder
 -i18nfolder
 -component.html
 -component.ts

component.ts

import { TranslateService } from '@ngx-translate/core';

        @Component({
            selector: 'home',
            templateUrl: './home.component.html'
        })

        export class HomeComponent  {

        constructor(translate: TranslateService) { }

         changeLanguage(lang) {
            this.translate.use(lang);
            let i18n = require(`./i18n/${lang}.json`);

            this.translate.setTranslation(lang, i18n, true);
          }
        }

component.html看起来像

<ul class="dropdown-menu" role="menu">
                  <li>
                      <a class="dropdown-item" (click)="changeLanguage('en')">{{"Language.english" | translate}}</a>
                  </li>
                  <li>
                      <a class="dropdown-item"(click)="changeLanguage('es')">{{"Language.spanish" | translate}}</a>
                  </li>
</ul>

希望,您知道如何在i18n文件夹中创建json文件。