原文
WPF Localization Guidance 「Rick StrahlとMichele Leroux Bustamante(2009年6月)」の和訳です。地域設定の実装の参考にしてください。
関連ファイル
LocBaml-心臓の弱い人向けではありません
LocBaml - Not for the faint of heart
LocBamlの地域設定方法は、心臓を気絶させるためにあるわけではありません。 事実、あなたは、Microsoftから独立した、サポートされていないツールをダウンロードし、それをコンパイルし、 それを、あなたの出力フォルダへコピーし、そして、その次に、手動で実行されたいくつかのコマンドライン・ツール、 そして、ビルドプロセスに、それらを統合する必要があるのは、特に気力をくじきます。 あなたが、ちょうど地域設定を始めたばかりであれば、CSVファイルの地域設定は、同様に、きわめて気難しいです。 そのファイルは、簡単に壊されて、使えなくなることがあります。 必ず、あなたは、頻繁にバックアップを作成するようにしてください。 あなたが、地域設定している間に元に戻すことができます。
ここに、LocBamlを使用する際の強みと弱みについての簡単な要約があります。
LocBamlの長所は以下のとおりです。:
ページに地域設定情報を追加するための特別な要件はありません。
発者にとって、ドキュメントに埋め込む特別なマークアップもリソースマッピング構文もないので、BAMLの地域設定は素晴らしいです。 開発者は、単純に、それらの既定のカルチャにおけるページをレイアウトすることができます。 そして、それぞれのページのための地域設定の問題についての心配はありません。 これは、開発工程から地域設定工程をほとんど完全に切り離すため、LocBamlの地域設定は、簡単で大きな利点があります。
実行時に効果的です
地域設定されたBAMLの読込は、実行時に、きわめて効率的です。 なぜなら、WPFは、全ての実体のそれぞれの個々の値を調べて、結合することなく、それぞれのBAMLドキュメントを読み込みます。
かなり簡単な地域設定
あなたが、マークアップ・テキストを編集するために、CSVエディタや普通のテキストエディターを使用するかどうかに関係なく、地域設定の処理は、比較的簡単です。 なぜなら、あなたは、テキスト・ドキュメントの中のテキストを変更しています。 そして、あなたは、すばやく、地域設定可能な値と地域設定したそれらのリストを、下に進むことができます。
LocBamlの短所は、次のとおりです。:
ツールがサポートされていない
BAML地域設定のための第一のツールは、LocBamlです。そして、このツールは、サンプル・アプリケーションです。 それは、WPFが公開されたときから存在し、その後更新されていません。 このツールが将来改良されるかどうかについてや、追加のツールが、リソースの編集と同期を容易にするために提供されるかどうかの情報が、ずっと、ありません。
CSVファイルフォーマットをエクスポートする
LocBamlは、CSVファイルをエクスポートします。それは、直接、編集するのが困難なフォーマットです。 CSVファイルを地域設定するのは、実際に、現実的ではありません。 それで、可能性がありそうな、ほとんどのdevelopers/localizersは、CSVファイルのある種の変換に直面し、より編集に適したなんらかの他のフォーマットを設定します。 また、CSVフォーマットは不安定です。-1つははコンマの置き忘れ、そして、あなたのファイルは壊れます。 LocBamlの出力フォーマットは、同様に、UTF-8でエンコードされます。保存するとき、多くのCSVツール( Excelが含まれる)は維持しません。 Visual Studioで開く別の手順は、カスタム・エンコーディングを適用することが必要です。
LocBamlは、一方通行のエクスポートです。
あなたが、エクスポートするとき、LocBamlは、常に、新しいリソース・ファイルを作成します。 それで、あなたが、一度、LocBamlに実行し、英語をドイツ語に翻訳する場合、 続いて、あなたのアプリケーションを更新し、変更や新しい要素を追加します。 これらの変更を、あなたが作成した、すでに変換されたCSVファイルに、同期させるための簡単な方法がありません。 あなたは、手動で、すべての更新の履歴を追跡する必要があります。 そして、翻訳されたCSVファイルにそれらをマッピングし、あるいは、最初からやり直します。
CSVファイルは、無関係なレイアウト情報が、たくさんの含まれています。
地域設定可能な文字列に加えて、CSVエクスポートは、地域設定ドキュメント内のXAMLドキュメントから、多くのレイアウト・プロパティが含まれています。 地域設定されたCSVドキュメントでUIの変更を作成するための、なんらかの柔軟性を提供している間、 これは、同様に、変更が、既定のカルチャのXAMLアプリケーションで行われたとき、これらの変更をバックアップに同期させることは、きわめて困難です。 たとえ、値が上書きされなくても、XAMLの指定されていないカルチャで作成される変更が、地域設定されたバーションで表示されないために、それは、可能です。
サテライト・アセンブリ要件は、Resxリソースではうまくいきません。
さらに、既定のカルチャのために、地域設定が有効にされると、地域設定されたBAMLリソースは、サテライト・アセンブリを使い切るために必要です。 あなたが、BAMLとResxリソースを混在すると、この必要条件は強制されます。あなたが、具体的な両方のカルチャを持っている場合、 指定されていないリソースのResxはファイルは、変化しません。(すなわち、同じ内容があるResources.resxとResources.en-US.resx )厳格に型指定されたリソースとResxリソースの両方を取得するために、それは、実行時に、アプリケーションで動作します。 さらに、LocBamlのエクスポートは、別々のビルドの手順を使用している、ResxとBAMLリソースを結合する必要があります。