Question

J'ai un site Web ASP.NET 3.5.

Pourquoi ne puis-je pas créer une culture spécifique pour la langue Bokmal comme ceci:

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

La langue "EN" fonctionne bien, elle se traduit par "en-us". Je pensais qu'avec "NB", je pouvais faire la même chose et obtenir de la culture "NB-no". Mais avec "NB", j'obtiens l'erreur:

Culture NB n'est pas soutenue.

Je vais expliquer pourquoi j'en avais besoin.

J'ai récupéré une liste de cultures: "NL-NL", "NL-Be", "NB-NO", "FR-CH", "FR-Fr" Want I Wante était une liste unique de langues avec les cultures par défaut. Je crée donc une liste avec des langues uniques qui se traduit par "NL", "NB", "FR". La prochaine chose, je veux les cultures spécifiques, mais NB ne fonctionne pas. Je le voulais car la liste unique sélectionnait NL-Be au lieu du NL-NL par défaut.

Mais ensuite, je m'en tiendrai à "NL-Be" lorsque le néerlandais sera sélectionné et je place les cultures dans une liste de cultures uniques. Cette liste se traduira par "nl-be", "nb-no", "fr-ch".

Était-ce utile?

La solution

Vous ne pouvez pas supposer qu'il existe une correspondance entre les noms de langue et les relations parent-enfant entre les objets CultureInfo. La hiérarchie dépend également de la version Windows.

Selon la documentation de la API NLS, La culture "NB" existe sur Windows 7, mais pas sur Windows Vista.

Sur ma machine Windows 7, la hiérarchie culturelle de Bokmål est, dans l'ordre des parents

  • nb-non
  • NB
  • non
  • Culture invariante

En bref, vous devez utiliser la propriété parentale de l'objet CultureInfo, au lieu de faire des manipulations de chaînes.

Autres conseils

Je ne vois pas pourquoi cela ne fonctionne pas. Ces trois noms ci-dessous me donnent une culture correcte

Essayer:

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

Test de l'unité:

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


    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top