zoukankan      html  css  js  c++  java
  • Angular 2/4 多语言 国际化支持

       包使用

    1.  安装

    npm @ngx-translate/core --save
    npm @ngx-translate/http-loader

    2. app.module.ts

    import { BrowserModule } from '@angular/platform-browser';
    import { NgModule } from '@angular/core';
    import { FormsModule } from '@angular/forms';
    import { HttpModule, Http } from '@angular/http';
    import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
    import { TranslateHttpLoader } from '@ngx-translate/http-loader';
    
    import { AppComponent } from './app.component';
    
    export function createTranslateLoader(http: Http) {
        return new TranslateHttpLoader(http, './assets/i18n/', '.json');
    }
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        BrowserModule,
        TranslateModule.forRoot({
                loader: {
                    provide: TranslateLoader,
                    useFactory: (createTranslateLoader),
                    deps: [Http]
                }
            }),
        FormsModule,
        HttpModule
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }

    加载TranslateModule的loader, parser 或者missing translations handler

    TranslateModule.forRoot();

    默认的http loader
    TranslateModule.forRoot({
                loader: {
                    provide: TranslateLoader,
                    useFactory: (createTranslateLoader),
                    deps: [Http]
                }
            }),

    实现AOT编译

    export function createTranslateLoader(http: Http) {
        return new TranslateHttpLoader(http, './assets/i18n/', '.json');
    }


    TranslateHttpLoader 加载 "/assets/i18n/[lang].json"  文件, [lang] 为语言文件名

    初始化 TranslateService 
    import { Component } from '@angular/core';
    import { TranslateService } from '@ngx-translate/core';
    
    
    @Component({
      selector: 'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    export class AppComponent {
    
      constructor(public translate: TranslateService) {
            // this language will be used as a fallback when a translation isn't found in the current language
            translate.addLangs(["en", "ch"]);
            
            let browserLang = translate.getBrowserLang();
            console.log("browser languague: " + browserLang);
            translate.use(browserLang.match(/en|ch/) ? browserLang : 'en');
        }
    }

    语言文件 /assets/i18n/ch.json

    {
      "HOME": {
        "TITLE": "你好, Angular ngx-translate!",
        "SELECT": "更改语言"
      }
    }

    /assets/i18n/en.json

    {
      "HOME": {
        "TITLE": "Hello Angular with ngx-translate!",
        "SELECT": "Change language"
      }
    }
    app.component.html 文件

    <div>
      <h2>{{ 'HOME.TITLE' | translate }}</h2>
      <label>
        {{ 'HOME.SELECT' | translate }}
        <select #langSelect (change)="translate.use(langSelect.value)">
          <option *ngFor="let lang of translate.getLangs()" [value]="lang" [selected]="lang === translate.currentLang">{{ lang }}</option>
        </select>
      </label>
    </div>

    效果



    -------------------------------------------------------------------------------
    Senior Software Engineer
  • 相关阅读:
    asp.net core 操作误区
    asp.net core 通过ajax上传图片及wangEditor图片上传
    asp.net core 通过ajax调用后台方法(非api)
    使用 IIS 在 Windows 上托管 ASP.NET Core
    asp.net core 2.0 api ajax跨域问题
    【数据结构】算法 层数最深叶子节点的和 Deepest Leaves Sum
    【数据结构】算法 首个公共祖先 First Common Ancestor
    【数据结构】算法 Top K Frequent Words 前K个高频单词
    【数据结构】算法 Kth Largest Element in an Array 数组中的第K个最大元素
    【数据结构】算法 搜索旋转排序数组 Search in Rotated Sorted Array II
  • 原文地址:https://www.cnblogs.com/fangshiwei/p/7137857.html
Copyright © 2011-2022 走看看