[angular] シンプルな angular 国際化 (i18n) を実装します。

目標

単純な角度の国際化を実装します。このブログでは中国語版とフランス語版を実装しています。

Hello i18n!变为中文版:你好 i18n!法语版:Bonjour l’i18n !

ここに画像の説明を挿入します

プロセス

プロジェクトを作成します。

ng new i18nDemo

統合ターミナルで開きます。

ローカリゼーション パッケージを追加します。

ng add @angular/localize

HTML に書式設定タグを追加します。

<h1 i18n>Hello i18n!</h1>

これを実行すると、ページは次のようになります。

ここに画像の説明を挿入します
翻訳テンプレート言語パックを生成します。

ng extract-i18n --output-path src/locale

フォルダを生成しました:locale、その中にファイルがありますmessages.xlf

ソースのコンテンツをターゲットに変換します。

ここに画像の説明を挿入します

ここではフランス語と中国語の 2 つの言語を使用したいと考えています。したがって:

中国語が zh-CN で、フランス語が fr-FR である理由については、こちらをご覧ください:https://angular.cn/guide/i18n-common-locale-id

ここに画像の説明を挿入します
ここに画像の説明を挿入します

<!-- messages.zh.xlf -->
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file source-language="zh-CN" datatype="plaintext" original="ng2.template">
    <body>
      <trans-unit id="4150330030790364157" datatype="html">
        <source>Hello i18n!</source>
        <target>中文版:你好 i18n!</target>
        <context-group purpose="location">
          <context context-type="sourcefile">src/app/app.component.html</context>
          <context context-type="linenumber">1</context>
        </context-group>
      </trans-unit>
    </body>
  </file>
</xliff>
<!-- messages.fr.xlf -->
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file source-language="fr-FR" datatype="plaintext" original="ng2.template">
    <body>
      <trans-unit id="4150330030790364157" datatype="html">
        <source>Hello i18n!</source>
        <target>法语版:Bonjour l'i18n !</target>
        <context-group purpose="location">
          <context context-type="sourcefile">src/app/app.component.html</context>
          <context context-type="linenumber">1</context>
        </context-group>
      </trans-unit>
    </body>
  </file>
</xliff>

関連ドキュメント:https://angular.cn/guide/i18n-common-translation-files

次は設定ですangular.json (ドキュメントによる)。

ここに画像の説明を挿入します

"i18n": {
    
    
    "sourceLocale": "en-US",
    "locales": {
    
    
        "fr": {
    
    
            "translation": "src/locale/messages.fr.xlf"
        },
        "zh": {
    
    
            "translation": "src/locale/messages.zh.xlf"
        }
    }
},

ここに画像の説明を挿入します

"localize": true,

設定が完了しました。次にコマンドラインからビルドします。

ng build --localize

次に、次のように設定します。

ここに画像の説明を挿入します

"build"->"configurations"

"fr": {
    
    
     "localize": [
         "fr"
     ]
 },
 "zh": {
    
    
     "localize": [
         "zh"
     ]
 }

"serve"->"configurations"

"fr": {
    
    
   "browserTarget": "i18nDemo:build:development,fr"
},
"zh": {
    
    
   "browserTarget": "i18nDemo:build:development,zh"
}

走る

フランス語版:

ng serve --configuration=fr

ここに画像の説明を挿入します
中国バージョン:

ng serve --configuration=zh

ここに画像の説明を挿入します

前の XML ファイルと同じです。

追記: 次の製品ビルドng build --configuration=production,fr でエラーが報告されました。どうすればよいかわかりません。後でさらに追加します。

TS における国際化

参考:
angular6 メッセージ プロンプト ボックスの使用トースト_angular4 メッセージ プロンプト ボックス - CSDN ブログ
ngx-toastr - npm (npmjs.com)
https://angular.cn/guide/i18n-common-prepare

文法:

コンポーネントコードでは、翻訳元のテキストとメタデータはバッククォート (`) 文字で囲まれます。 $localize タグ付きメッセージ文字列を使用して、コード内で翻訳対象の文字列をマークします。

$localize `string_to_translate`;

ここに画像の説明を挿入します

参考

角度の国際化

超詳細な Angular 国際化ソリューション - Nuggets (juejin.cn)

Angular は組み込みの i18n 国際化を使用して Angular internationalization_angular i18n-CSDN ブログを構成します

角度の国際化 (i18n) - Jianshu (jianshu.com)

Angular8 を Angular13_package にアップグレードするときに発生する問題 「@angular/core」 は依存関係ではありません。 - CSDN ブログ

angular6 はメッセージ プロンプト ボックスを使用します toast_angular4 メッセージ プロンプト ボックス - CSDN ブログ

ngx-toastr - npm (npmjs.com)

経験:初心者にとっては公式ドキュメントだけを読むのは抽象的すぎて難しく感じるので、他のブログと組み合わせて理解するようにしました。その後、他のブログのいくつかの設定が放棄されていることがわかり、公式ドキュメントにアクセスしました。その過程で、理解できない情報をたくさん取り除いて(…)、理解できる質の高いブログをたくさんまとめて(!)、少しずつ覚えていきました!ブログを書いて私の命を救ってくれた皆さんに感謝します。 。

おすすめ

転載: blog.csdn.net/karshey/article/details/133774499