0

ASP.NET3.5Webサイトがあります。

次のように、ブークモールという言語の特定の文化を作成できないのはなぜですか。

CultureInfo c = CultureInfo.CreateSpecificCulture("nb");

言語「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」になります。

4

2 に答える 2

2

なぜこれが機能しないのかわかりません。以下のこれらの3つの名前は私に正しい文化を与えます

試す:

CultureInfo c = CultureInfo.CreateSpecificCulture("nb-NO");

単体テスト:

        [Test]
    public void CultureTest()
    {
        var c = CultureInfo.CreateSpecificCulture("nb-NO");

        Assert.AreEqual("Norwegian, Bokmål (Norway)",c.DisplayName);
        Assert.AreEqual("nb-NO", c.Name);
        Assert.AreEqual("norsk, bokmål (Norge)", c.NativeName);

        var c2 =
            CultureInfo.CreateSpecificCulture("nb");

        Assert.AreEqual("Norwegian, Bokmål (Norway)", c2.DisplayName);
        Assert.AreEqual("nb-NO", c2.Name);
        Assert.AreEqual("norsk, bokmål (Norge)", c2.NativeName);

        var c3 =
            CultureInfo.CreateSpecificCulture("NO");

        Assert.AreEqual("Norwegian, Bokmål (Norway)", c3.DisplayName);
        Assert.AreEqual("nb-NO", c3.Name);
        Assert.AreEqual("norsk, bokmål (Norge)", c3.NativeName);


    }
于 2012-01-16T14:48:32.823 に答える
2

言語名とCultureInfoオブジェクト間の親子関係の間に対応があると想定することはできません。階層はWindowsのバージョンにも依存します。

NLS APIのドキュメントによると、「nb」カルチャはWindows 7には存在しますが、WindowsVistaには存在しません。

私のWindows7マシンでは、ブークモールのカルチャ階層は、子から親の順序になっています。

  • nb-いいえ
  • nb
  • いいえ
  • 不変の文化

つまり、文字列操作を行う代わりに、CultureInfoオブジェクトのParentプロパティを使用する必要があります。

于 2012-01-16T15:15:53.640 に答える