2

ASP.NET では、リソース ファイルを使用してアプリケーションをローカライズできます。リソース ファイルには、さまざまな翻訳が保持されます。たとえば、英語のリソース ファイルとスペイン語のリソース ファイルがあるとします。リソース ファイルを使用すると、Web ページ上のコントロールに属性を適用して、そのコントロールにリソース ファイルの値を自動的に設定できます。または、リソース ファイルから値をプログラムで読み込んで、コントロールのプロパティに割り当てることもできます。

ASP.NET は、翻訳の読み込みにフォールバック メカニズムを使用します。現在のユーザーのカルチャに最も似ているリソース ファイルを見つけようとします。現在のユーザーのカルチャがスペイン語の場合、ASP.NET はスペイン語のリソース ファイルから適切なリソースを読み込もうとします。スペイン語のリソースが利用できない場合は、既定のリソース ファイルにフォールバックします。この動作のため、スペイン語ユーザーのテキストは、次の 2 つの理由で既定の言語で表示される場合があります。

  1. スペイン語の翻訳はありません。(翻訳者はこの項目の翻訳をまだ提供していません。)
  2. テキストはローカライズされていません。(これは、ページにプレーン テキストが表示されているか、メッセージがどこかにハードコードされていることが原因である可能性があります。)

テキストがデフォルトの言語で表示される場合、それが理由 1 によるものなのか、理由 2 によるものなのかを知りたいです。

欠落している翻訳ごとに、何らかのプレースホルダー テキストをリソース ファイルに挿入できます。ただし、これはフォールバック メカニズムを破棄していることを意味します。さらに悪いことに、仮のテキストが誤って本番環境に渡ってしまうと、デフォルトのテキストを表示するよりも見栄えが悪くなります。

これら 2 つの条件のどちらが手動テスト中にデフォルトのテキストが表示される理由であるかを判断するための提案 (または解決策) はありますか?

4

1 に答える 1

2

私があなたを正しく理解していれば、すべてのローカライズ可能なテキストが実際にローカライズ可能であり、コードに焼き付けられていないことを確認したいと考えています。これを行うには、実際のカルチャ (スペイン語) を使用しないでください。代わりに、サポートされていない偽のカルチャのリソースを作成し、デフォルト リソースで利用可能なすべてのローカライズ可能なリソース エントリに自動翻訳を提供する必要があります。

たとえば、以下を含むデフォルトのリソースがあるとします。

  • Entry1: これはテストです。

以下を含む偽のカルチャにリソースを作成する必要があります。

  • Entry1: Th1s 1s @ t€st!

単純な文字マッピングを使用して、偽のリソースの作成を自動的に実行することもできます (実行する必要があります)。このように、カスタムの偽のカルチャを使用するようにアプリケーションを設定すると、すべてのエントリに翻訳があることがわかり、ハードコードされたテキストを見つけることができます。この戦略は Windows で使用され、疑似ロケールとして知られています。疑似翻訳文字列を使用すると、偽のカルチャを使用して開発を行うことができます。これは、テキストがまだ読み取り可能であり、ハードコードされたテキストを見つける可能性が向上するためです。

Windows は、Windows Vista および Windows 2008 R2 以降、疑似ロケールをサポートしているため、ビルドおよびテスト環境でこれらのオペレーティング システムを使用している場合は、疑似カルチャをこれらの疑似ロケールのいずれかに関連付けることができます (たとえば、qps-ploc)。サポートされていないオペレーティング システムを使用している場合は、偽のリソースを、おそらくサポートすることのない実際のカルチャに関連付けるか、独自のカルチャを作成するだけです。

また、サポートされているオペレーティング システムであっても、レジストリで有効にしない限り、Visual Studio はこれらの疑似ロケールのサテライト アセンブリを作成しないことに注意してください。

于 2012-08-24T20:55:16.383 に答える