zoukankan      html  css  js  c++  java
  • Angular2中使用ngx-translate进行国际化

      转自 https://blog.csdn.net/u014291497/article/details/61233033

      相较于angularjs中的ng-translate, angular2也有适合自己的国际化模块,就是ngx-translate。
      项目地址:https://github.com/ngx-translate/core

      使用angular-cli初始化项目:
      ng new my-project
      使用npm安装ngx-translate模块
      npm install --save @ngx-translate/core
      npm install --save @ngx-translate/http-loader
      在项目的根模块app.module.ts中引入该模块

    import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
    import { TranslateHttpLoader } from '@ngx-translate/http-loader';
    
    export function HttpLoaderFactory(http:Http){
      return new TranslateHttpLoader(http, './assets/i18n/', '.json');
    }
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        ...
        TranslateModule.forRoot({
          loader:{
            provide:TranslateLoader,
            useFactory:HttpLoaderFactory,
            deps:[Http]
          }
        }
    
        )
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    

      

      在assets文件夹下新建i18n文件夹,并且新建两个语言的json文件。(比如zh-CN.json和en.json)

      json文件是key-value形式的,key值代表要翻译的字符串,value值为特定语言的翻译结果,不用语言的文件一般key值是相同的,只是value值不同。

    //zh-CN.json
    {
        "welcome":"欢迎使用本应用",
        "hello":"你好",
        "get-lang":"获取语言类型"
    }
    
    //en.json
    {
        "welcome":"welcome to this app",
        "hello":"Hola"
    }
    

       然后在相应的组件中使用Translate服务

    import { TranslateService } from '@ngx-translate/core'
    @Component({
      ...
    })
    export class AppComponent {
      constructor(private translate: TranslateService) {
        //添加语言支持
        translate.addLangs(['zh-CN', 'en']);
        //设置默认语言,一般在无法匹配的时候使用
        translate.setDefaultLang('zh-CN');
    
        //获取当前浏览器环境的语言比如en、 zh
        let broswerLang = translate.getBrowserLang();
        translate.use(broswerLang.match(/en|zh-CN/) ? broswerLang : 'zh-CN');
      }
    
      changeLang(lang) {
        console.log(lang);
        this.translate.use(lang);
      }
      toggleLang() {
        console.log(this.translate.getBrowserLang());
        //获取语言风格,相当于更详细的语言类型,比如zh-CN、zh-TW、en-US
        console.log(this.translate.getBrowserCultureLang());
      }
    }
    

      示例模板:

    <div>
      <h2>{{ title | translate }}</h2>
      <label>
        {{ 'hello' | translate }}
        <select #langSelect (change)="changeLang(langSelect.value)">
          <option *ngFor="let lang of translate.getLangs()" [value]="lang" [selected]="lang === translate.currentLang">{{ lang }}</option>
        </select>
      </label>
    </div>
    <button (click)="toggleLang()">{{'get-lang' | translate}}</button>
    

      使用方式和angularjs中的ng-translate类似,使用translate管道。

  • 相关阅读:
    读写ini文件
    身份证号码验证正则表达式
    使用SubSonic生成数据访问层步骤
    MonoRail&ActiveRecord开发中的注意事项
    C#实现邮件发送的功能
    建立ASP.NET服务器控件
    操作身份验证
    看了几天C#了...人开始变得有点急躁
    关于正则表达式
    如何在多台电脑上同时安装Windows
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/10128214.html
Copyright © 2011-2022 走看看