Domanda

Ho un sito Web ASP.NET 3.5.

Perché non riesco a creare una cultura specifica per la lingua Bokmal come questa:

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

Lingua "IT" funziona bene, si traduce in "IT-US".Pensavo che con "NB" potessi fare la stessa cosa e ottenere la cultura "nb-no".Ma con "NB" ottengo l'errore:

.

Cultura NB non è supportato.

Spiegherò perché ne avevo bisogno.

Ho recuperato un elenco di culture: "NL-NL", "NL-BE", "NB-NO", "FR-CH", "FR-FR" Voglio che volevo essere un elenco unico di lingue con le culture predefinite.Quindi creo una lista con lingue uniche che si traducono in "NL", "NB", "FR".La prossima cosa voglio le culture specifiche ma NB non funziona.Lo volevo perché la lista unica selezionata è stata selezionata al posto del NL-NL predefinito.

Ma poi mi attaccherò con "NL-Be" quando l'olandese è selezionato e posiziona le culture in una lista di culture uniche.Questa lista si tradurrà in "NL-BE", "NB-NO", "FR-CH".

È stato utile?

Soluzione

Non si può presumere che esista una corrispondenza tra i nomi delle lingue e le relazioni padre-figlio tra gli oggetti CultureInfo.La gerarchia dipende anche dalla versione di Windows.

Secondo la documentazione per l ' API NLS , il "nb"la cultura esiste su Windows 7, ma non su Windows Vista.

Sulla mia macchina Windows 7, la gerarchia della cultura per Bokmål è, in ordine da bambino a genitore

  • nb-NO
  • nb
  • no
  • Cultura invariante

In breve, dovresti usare la proprietà Parent dell'oggetto CultureInfo, invece di manipolare le stringhe.

Altri suggerimenti

Non riesco a capire perché non funziona.Questi tre nomi di seguito mi danno la cultura corretta

Prova:

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


    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top