ASP.NET Создать особую культуру с языковым кодом nb (букмол) - PullRequest
0 голосов
/ 16 января 2012

У меня есть веб-сайт ASP.NET 3.5.

Почему я не могу создать определенную культуру для языка Bokmal, например:

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

Язык "en" работает нормально,это приводит к "en-US".Я думал, что с "nb" я мог бы сделать то же самое и получить культуру "nb-NO".Но с "nb" я получаю ошибку:

Культура nb не поддерживается.

Я объясню, зачем мне это нужно.

Iизвлек список культур: «nl-NL», «nl-BE», «nb-NO», «fr-CH», «fr-FR» Want, я хотел был уникальный список языков с культурами по умолчанию.Поэтому я создаю список с уникальными языками, что приводит к «nl», «nb», «fr».Следующее, что я хочу, чтобы конкретные культуры, но NB не работает.Я хотел этого, потому что уникальный список выбрал nl-BE вместо nl-NL по умолчанию.

Но тогда я просто буду придерживаться "nl-BE", когда выбран голландский, и поместу культуры в уникальные культуры.список.Этот список приведет к "nl-BE", "nb-NO", "fr-CH".

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Вы не можете предполагать, что существует соответствие между именами языков и отношениями родитель-потомок между объектами CultureInfo. Иерархия также зависит от версии Windows.

Согласно документации для NLS API культура "nb" существует в Windows 7, но не в Windows Vista.

На моем компьютере с Windows 7 иерархия культуры для Bokmål в порядке от дочернего к родительскому

  • NB-NO
  • пь
  • нет
  • Инвариантная культура

Короче говоря, вы должны использовать свойство Parent объекта CultureInfo вместо выполнения строковых манипуляций.

2 голосов
/ 16 января 2012

Я не понимаю, почему это не работает.Эти три имени ниже дают мне правильную культуру

Попробуйте:

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


    }
...