Frage

Ich habe eine ASP.NET 3.5-Website.

Warum kann ich keine bestimmte Kultur für die Sprache Bokmal wie diese erstellen:

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

Die Sprache "en" funktioniert einwandfrei und führt zu "en-US".Ich dachte, dass ich mit "nb" das Gleiche tun und die Kultur "nb-NO" bekommen könnte.Aber mit "nb" bekomme ich den Fehler:

Kultur nb wird nicht unterstützt.

Ich werde erklären, warum ich es brauchte.

Ich habe eine Liste von Kulturen abgerufen: "nl-NL", "nl-BE", "nb-NO", "fr-CH", "fr-FR" Ich wollte eine einzigartige Liste von Sprachen mit den Standardkulturen.Also erstelle ich eine Liste mit eindeutigen Sprachen, die zu "nl", "nb", "fr" führt.Als nächstes möchte ich die spezifischen Kulturen, aber nb funktioniert nicht.Ich wollte dies, weil in der eindeutigen Liste nl-BE anstelle des Standard-nl-NL ausgewählt wurde.

Aber dann bleibe ich einfach bei "nl-BE", wenn Niederländisch ausgewählt ist, und platziere die Kulturen in einer einzigartigen Kulturliste.Diese Liste führt zu "nl-BE", "nb-NO", "fr-CH".

War es hilfreich?

Lösung

Sie können nicht davon ausgehen, dass zwischen CultureInfo-Objekten eine Übereinstimmung zwischen Sprachnamen und Eltern-Kind-Beziehungen besteht.Die Hierarchie hängt auch von der Windows-Version ab.

Gemäß der Dokumentation für die NLS-API ist die "nb"Kultur existiert unter Windows 7, aber nicht unter Windows Vista.

Auf meinem Windows 7-Computer ist die Kulturhierarchie für Bokmål in der Reihenfolge von Kind zu Eltern

  • nb-NO
  • nb
  • nein
  • Invariante Kultur

    Kurz gesagt, Sie sollten die Parent-Eigenschaft des CultureInfo-Objekts verwenden, anstatt Zeichenfolgenmanipulationen durchzuführen.

Andere Tipps

Ich kann nicht verstehen, warum dies nicht funktioniert.Diese drei Namen geben mir die richtige Kultur

Versuchen Sie:

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

UnitTest:

        [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);


    }

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top