真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Angular2+國際化方案(ngx-translate)的示例代碼

本文只針對ngx-translate/core 6.x版本,如果你使用的是5.x或者更低的版本,請參照以下鏈接。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)扶溝免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

https://github.com/ngx-translate/core/blob/fb02ca5920aae405048ebab50e09db67d5bf12a2/README.md

安裝

首先需要安裝npm依賴:

npm install @ngx-translate/core --save
npm install @ngx-translate/http-loader --save // 針對Angular>=4.3
npm install @ngx-translate/http-loader@0.1.0 --save // 針對Angular<4.3

這里需要注意,如果你使用的Angular版本是 Angular <4.3,那么需要安裝http-loader@0.1.0版本。

因?yàn)?.1.0以后的版本TranslateHttpLoader構(gòu)造函數(shù)的第一個(gè)參數(shù)改為HttpClient類型,而非Http類型。

用法

1、引入TranslateModule模塊

首先需要在你項(xiàng)目的root NgModule中引入TranslateModule.forRoot()模塊。一般在項(xiàng)目中默認(rèn)命名為app.module.ts。

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

這里使用了TranslateHttpLoader 來加載我們定義好的語言文件。"/assets/i18n/[lang].json"這里的lang就是當(dāng)前正在使用的語言。

注意:如果當(dāng)前采用的是AOT編譯方式或者是ionic2工程,那么useFactory對應(yīng)的必須是一個(gè)export的自定義方法而非內(nèi)聯(lián)方法。

 即以下這種方式是不被允許的:

@NgModule({
  imports: [
    BrowserModule,
    HttpModule,
    TranslateModule.forRoot({
      provide: TranslateLoader,
      useFactory: (http: HttpClient) => new TranslateStaticLoader(http, '/assets/i18n', '.json'),
      deps: [HttpClient]
    })
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

2、注入TranslateService 服務(wù)

在需要用到的component里面注入TranslateService。

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

然后在構(gòu)造函數(shù)中定義當(dāng)前應(yīng)用的默認(rèn)語言。

constructor(private translate: TranslateService) {
 // this language will be used as a fallback when a translation isn't found in the current language
 translate.setDefaultLang('en');

 // use the brower's default lang, if the lang isn't available, it will use the 'en'
 let broswerLang = translate.getBrowserLang();
 translate.use(broswerLang.match(/en|cn/) ? broswerLang : 'en');
}

3、翻譯文本書寫規(guī)則

有兩種方式可以加載我們翻譯好的語言文本。

首先你可以把翻譯好的語言文本放到一個(gè)json文件中,然后通過TranslateHttpLoader來引用這個(gè)json文件。

例如:en.json

{
  "HELLO": "hello {{value}}"
}

另外也可以通過setTranslation方法手動加載。

translate.setTranslation('en', {
  HELLO: 'hello {{value}}'
});

同時(shí),這里的json結(jié)構(gòu)是支持嵌套的。

{
  "HOME": {
    "HELLO": "hello {{value}}"
  }
}

以上結(jié)構(gòu),可以通過"HOME.HELLO"來引用HELLO的內(nèi)容。 

4、使用方法

我們可以通過TranslateService, TranslatePipe 或者 TranslateDirective這三種方式來獲取我們翻譯的文本內(nèi)容。

TranslateService:

translate.get('HELLO', {value: 'world'}).subscribe((res: string) => {
  console.log(res);
  //=> 'hello world'
});

其中第二個(gè)參數(shù){value: 'world'}是可選的。 

TranslateService:

{{ 'HELLO' | translate:param }}

param可以像如下方式在component里面定義。同樣,這個(gè)參數(shù)也是可選的。

param = {value: 'world'};

 TranslateDirective:

或者

HELLO

5、使用HTML標(biāo)簽

允許在你的翻譯文本中直接嵌入HTML標(biāo)簽。

{
  "HELLO": "Welcome to my Angular application!
This is an amazing app which uses the latest technologies!" }

這時(shí)可以使用innerHTML 來進(jìn)行渲染。

TranslateService API

公有屬性(public properties):

/**
 * The default lang to fallback when translations are missing on the current lang
 */
defaultLang: string;
/**
 * The lang currently used
 * @type {string}
 */
currentLang: string;
/**
 * an array of langs
 * @type {Array}
 */
langs: string[];
/**
 * a list of translations per lang
 * @type {{}}
 */
translations: any;

公有方法(public methods):

/**
 * Sets the default language to use as a fallback
 * @param lang
 */
setDefaultLang(lang: string): void;
/**
 * Gets the default language used
 * @returns string
 */
getDefaultLang(): string;
/**
 * Changes the lang currently used
 * @param lang
 * @returns {Observable<*>}
 */
use(lang: string): Observable;
/**
 * Gets an object of translations for a given language with the current loader
 * and passes it through the compiler
 * @param lang
 * @returns {Observable<*>}
 */
getTranslation(lang: string): Observable;
/**
 * Manually sets an object of translations for a given language
 * after passing it through the compiler
 * @param lang
 * @param translations
 * @param shouldMerge
 */
setTranslation(lang: string, translations: Object, shouldMerge?: boolean): void;
/**
 * Returns an array of currently available langs
 * @returns {any}
 */
getLangs(): Array;
/**
 * @param langs
 * Add available langs
 */
addLangs(langs: Array): void;
/**
 * Returns the parsed result of the translations
 * @param translations
 * @param key
 * @param interpolateParams
 * @returns {any}
 */
getParsedResult(translations: any, key: any, interpolateParams?: Object): any;
/**
 * Gets the translated value of a key (or an array of keys)
 * @param key
 * @param interpolateParams
 * @returns {any} the translated key, or an object of translated keys
 */
get(key: string | Array, interpolateParams?: Object): Observable;
/**
 * Returns a stream of translated values of a key (or an array of keys) which updates
 * whenever the language changes.
 * @param key
 * @param interpolateParams
 * @returns {any} A stream of the translated key, or an object of translated keys
 */
stream(key: string | Array, interpolateParams?: Object): Observable;
/**
 * Returns a translation instantly from the internal state of loaded translation.
 * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.
 * @param key
 * @param interpolateParams
 * @returns {string}
 */
instant(key: string | Array, interpolateParams?: Object): string | any;
/**
 * Sets the translated value of a key, after compiling it
 * @param key
 * @param value
 * @param lang
 */
set(key: string, value: string, lang?: string): void;
/**
 * Allows to reload the lang file from the file
 * @param lang
 * @returns {Observable}
 */
reloadLang(lang: string): Observable;
/**
 * Deletes inner translation
 * @param lang
 */
resetLang(lang: string): void;
/**
 * Returns the language code name from the browser, e.g. "de"
 *
 * @returns string
 */
getBrowserLang(): string;
/**
 * Returns the culture language code name from the browser, e.g. "de-DE"
 *
 * @returns string
 */
getBrowserCultureLang(): string;

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)頁題目:Angular2+國際化方案(ngx-translate)的示例代碼
URL標(biāo)題:http://weahome.cn/article/ppsceh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部