複数の言語をサポートするサイトを構築しています。en-US をデフォルトとして、fr、de、および en-US をサポートするリソースを作成しました。私が追加しました:
<system.web>
<globalization
uiCulture="auto" culture="auto"
requestEncoding="utf-8"
responseEncoding="utf-8"
enableClientBasedCulture="true" />
...
</system.web>
私のweb.config
ファイルに。IE または Chrome で言語を fr、de、または en-US に設定すると、期待どおりの言語が表示されます。言語を ar-EG に設定すると、これも予想どおり en-US になります。
言語を fr-FR に設定しても、受け入れられる言語のリストに fr が含まれていない場合、一般化された fr (fr-FR ではなく) よりも de を受け入れるようにブラウザに指示しても、サイトは fr ページを返します。 )。これは RFC に反しているように見えますが、IE はデフォルトでフランスでは fr-FR に、ドイツでは de-DE に設定されており、カルチャを自動的に一般化しないサイトでは機能しないため、驚くことではありません。
ただし、ブラウザーに ar-EG と fr を受け入れるように指示すると、サイトはデフォルトで en-US になります。Accept-Language ヘッダーで fr を優先して受け入れるように指定されているにもかかわらずです。要求したすべての言語が適切な優先度で送信されていることを確認するために、ブラウザーで要求ヘッダーをキャプチャしました。
ASP.NET は、Accept-Language ヘッダーで指定された最初の言語のみを見ているようです。ASP.NET 言語マッチング アルゴリズムはどこかに指定されていますか? ASP.NET/MVC が Accept-Language リスト内のすべての言語をチェックして最適な言語を決定するように指定する方法はありますか? または、独自の言語一致コードを作成する必要がありますか?