ローカライゼーションのソースとオーバーライド

Power Portals Proは、Dataverseのテーブルメタデータ(環境にインストールされている言語パック)、PowerPortalsProのウェブリソース、ディスク上のJSONファイルの3つのソースからローカライズされた文字列を作成します。後のソースは以前のものを上書きするため、Dataverseが提供するラベル、ツールチップ、選択オプション、ビュー名などは、プロジェクト内のJSONエントリに置き換えることができ、マネージドソリューションの往復は不要です。同じJSONファイルは、Dataverseには全く提供されていない文化への翻訳も可能にしています。

このサイトで試してみてください

このデモは同じメカニズムで完全にローカライズされています。サイトのヘッダーにある言語セレクターを使って文化を切り替え、ラベル、選択肢、日付、メッセージがサイト全体でリアルタイムで更新される様子をご覧ください。このページも含めて。

ローカライズできること

フレームワーク内のすべての翻訳可能なサーフェスは同じソースパイプラインを通過するため、同じJSONファイルが以下のいずれかに対してギャップを提供したり、オーバーライドしたり、埋めたりすることができます。

これらを裏付けるJSONファイル形状については 、String Localizer のページをご覧ください。

出典の優先順位

キャッシュウォームアップ時にローカライザーは各ソースから順に読み込み、後のソースの空でない値が同じキーに対して以前のソースの値に置き換えられます。その順序は以下の通りです:

  1. Dataverseのテーブルメタデータ — 環境にインストールされている言語パックからのラベル、説明、選択肢、ビュー。ウォームアップごとに1回の RetrieveAllEntities コールで引っ張られました。
  2. Dataverseのウェブリソース — Dataverseに /PowerPortalsPro/Localization/ プレフィックスで格納されたJSONファイル。アプリのコードと一緒に翻訳を一緒に提供したい場合には便利です。
  3. ディスク上のJSONファイルoptions.AddLocalizationDirectory(...)を通じて登録されたすべてのディレクトリ。これらは長持ちするので、勝ちます。

実際的な結果としては、プロジェクトに tables.en.jsonapp.fr.json を入れてフォルダを登録し、一致するキーがDataverseやフレームワークのデフォルトを上書きします。空の入出力値は無視されるため、部分ファイルが省略によって完全に正常なDataverseラベルを消すことはできません。

言語パックの有無にかかわらず、どんな文化でも

JSONファイル名(app.{culture}.jsontables.{culture}.jsonなど)のカルチャーセグメントは権威的であり、ローダーはDataverseがそのカルチャー用の言語パックを持っているかどうかを確認してからファイルを承認します。Ship app.kk.json とポータルは、ユーザーが選択すればカザフ語を扱います。Dataverseにカザフ語メタデータが全くなくてもです。ポータルが宣伝する文化のリストは、Dataverseが提供するものとは無関係に、ASP.NET Coreの RequestLocalizationOptions.SupportedCulturesによって管理されています。

要素の背後にある鍵を見つける

どのキーが特定のラベルやボタン、メッセージを動かすのか知りたいですか?ページURLに ?ppp-show-keys=1 を付け加えると、すべてのローカライズされた文字列はキー の代わりに表示されます 。画面からキーを直接読み出し、それを app.en.jsonに追加します。パラメータを削除(または 0に設定)して通常の値を戻します。

クエリのみおよび非永続化

フラグはURL内に完全に存在し、保存もゲートもないため、 ?ppp-show-keys=1 リンクは翻訳者に渡しても安全です。React(t())やBlazor(IStringLocalizer)でも同じ動作をし、コンポーネントスコープ文字列が属する components.<FullTypeName> プレフィックスを含むフルルックアップキーを表示します。

フレームワークが出荷するデフォルトのUI文字列

ppp-server.defaults.en.jsonPowerPortalsPro.Web.Serverで出荷され、すべてのフレームワークの消費者が使用する横断的な app.* 文字列(ページタイトル、ボタンラベル、検証メッセージ、確認ダイアログ、グリッドクローム、FluentUI Blazor コンポーネントテキストなど)を定義しています。AddPowerPortalsProWebServer()によって自動的に読み込まれています。自分のapp.en.json(またはapp.fr.jsonなどの文化固有のバリエーション)のキーを上書きすると、ローダーはデフォルトのよりもあなたの値を優先します。以下のファイルは、このサイトのすべてのビルドでソースプロジェクトからリアルタイムミラーリングされているため、内容は常にあなたが利用しているパッケージのバージョンと一致しています。