ASP.NET言語コードnb(ブークモール)で特定のカルチャを作成する
質問
ASP.NET 3.5Webサイトがあります。
このようにブークモールの言語に特定の文化を作成できないのはなぜですか: ジェネラコディセタグプレ
言語「en」は正常に機能し、結果として「en-US」になります。「nb」でも同じことができて、「nb-NO」という文化が生まれると思いました。しかし、「nb」を使用すると、エラーが発生します:
Culturenbはサポートされていません。
必要な理由を説明します。
カルチャのリストを取得しました: "nl-NL"、 "nl-BE"、 "nb-NO"、 "fr-CH"、 "fr-FR" 私が欲しかったのは、デフォルトの文化を持つ言語のユニークなリストでした。そこで、「nl」、「nb」、「fr」という結果になる固有の言語でリストを作成します。次に、特定のカルチャが必要ですが、nbが機能しません。一意のリストがデフォルトのnl-NLではなくnl-BEを選択したため、これが必要でした。
ただし、オランダ語が選択されている場合は「nl-BE」を使用して、カルチャを一意のカルチャリストに配置します。このリストの結果は「nl-BE」、「nb-NO」、「fr-CH」になります。
解決
CultureInfoオブジェクト間の言語名と親子関係の間に対応があると想定することはできません。階層はWindowsのバージョンによっても異なります。
NLS API のドキュメントによると、「nb「文化はWindows7には存在しますが、WindowsVistaには存在しません。
私のWindows7マシンでは、ブークモールのカルチャ階層は子から親の順序になっています
- nb-いいえ
- nb
- いいえ
- 不変の文化
つまり、文字列操作を行う代わりに、CultureInfoオブジェクトのParentプロパティを使用する必要があります。
他のヒント
これが機能しない理由がわかりません。以下の3つの名前は私に正しい文化を与えます
試してみてください: ジェネラコディセタグプレ
ユニットテスト: ジェネラコディセタグプレ