angular2 で Web アプリケーションを構築し、これを webpack にバンドルしたいと考えています。複数の言語を提供するための最良の方法は何ですか:
i18n-プラグイン: https://github.com/webpack/i18n-webpack-plugin
また
ng2-translate: https://github.com/ocombe/ng2-translate
angular2 で Web アプリケーションを構築し、これを webpack にバンドルしたいと考えています。複数の言語を提供するための最良の方法は何ですか:
i18n-プラグイン: https://github.com/webpack/i18n-webpack-plugin
また
ng2-translate: https://github.com/ocombe/ng2-translate
クックブックを使用して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'}
];
});
を使用しているangular-cli
場合は、次の手順に従ってください。
アプリはAOT compatibeでなければならないことに注意してください。したがって、
--aot
switchでビルドできるはずです。ng build --aot
ng xi18n
指定された翻訳ファイルの場所を指定したコマンドでメッセージを抽出します。
ng xi18n --output-path src/i18n
ファイルを取得しsrc/i18n/messages.xlf
ます。このファイルをコピーして、メッセージを必要な言語に翻訳します。
src/i18n/messages.en.xlf
src/i18n/messages.pl.xlf
コマンドでアプリを提供/ビルドしますng serve / ng build
(それに応じてロケールを変更します):
ng serve --i18n-file=src/i18n/messages.en.xlf --locale=en --i18n-format=xlf --aot
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 ドキュメントへの大きな貢献者です。