8

angular2 で Web アプリケーションを構築し、これを webpack にバンドルしたいと考えています。複数の言語を提供するための最良の方法は何ですか:

i18n-プラグイン: https://github.com/webpack/i18n-webpack-plugin

また

ng2-translate: https://github.com/ocombe/ng2-translate

4

5 に答える 5

9

クックブックを使用してwebpackで動作させました。xliff ファイルは、次のように ts に変換する必要があります。

export const TRANSLATION_SV = `<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file source-language="en" datatype="plaintext" original="ng2.template">
    <body>
    <trans-unit id="a73e2898b9e1126ed19dbabe4b5c3715a84db61a" datatype="html">
      <source>Category</source>
      <target>Kategori</target>
    </trans-unit>
    </body>
  </file>
</xliff>`;

次に、main.ts に追加する必要があります

import { TRANSLATIONS, TRANSLATIONS_FORMAT, LOCALE_ID  } from '@angular/core';
import { TRANSLATION_SV } from './locale/messages.sv';

そしてブートストラップステップに挿入されます:

platformBrowserDynamic().bootstrapModule(AppModule, {
    providers: [
      {provide: TRANSLATIONS, useValue: TRANSLATION_SV},
      {provide: TRANSLATIONS_FORMAT, useValue: "xlf"},
      {provide: LOCALE_ID, useValue:'sv'}
    ];
});
于 2016-12-02T10:34:09.270 に答える
8

を使用しているangular-cli場合は、次の手順に従ってください。

アプリはAOT compatibeでなければならないことに注意してください。したがって、 --aotswitchでビルドできるはずです。

ng build --aot
  1. ng xi18n指定された翻訳ファイルの場所を指定したコマンドでメッセージを抽出します。

    ng xi18n --output-path src/i18n
    
  2. ファイルを取得しsrc/i18n/messages.xlfます。このファイルをコピーして、メッセージを必要な言語に翻訳します。

    src/i18n/messages.en.xlf
    src/i18n/messages.pl.xlf
    
  3. コマンドでアプリを提供/ビルドしますng serve / ng build(それに応じてロケールを変更します):

    ng serve --i18n-file=src/i18n/messages.en.xlf --locale=en --i18n-format=xlf --aot
    
于 2017-02-28T11:00:14.963 に答える
3

Angular 2 最終リリースには i18n ネイティブ サポートがあります https://angular.io/docs/ts/latest/cookbook/i18n.html

別の回答https://stackoverflow.com/a/39004058/1267942を例と使用法に関する詳細で確認してください。

ng2-translateは、ネイティブ実装に比べて冗長すぎます。また、ng2 -translate の作成者は、 angular 2 i18n ドキュメントへの大きな貢献者です。

于 2016-10-04T13:24:49.067 に答える