Рассмотрим этот код:TextInfo для Нейтральной Культуры - как определяется область не нейтральной культуры?
new CultureInfo("sv").TextInfo.CultureName
Это возвращает "SV-SE". Но почему? Почему бы не «sv-FI» или какая-то другая культура? Как определяется регион?
documentation for CultureName говорит
Если CultureInfo.Name имеет нейтральную культуру в качестве своего значения, то соответствующего CultureName имеет в качестве значения произвольной конкретного культуры, которая использует тот же язык. Например, свойство Name возвращает «en» для английской нейтральной культуры, но соответствующая собственность CultureName может возвращать «en-US» для английской (United государств).
Непонятно, как выбирается регион. Для «en» выбранный регион - «США», что приводит к культуре en-US.
Это кажется отличным способом автоматического получения «первичной» области для языка - но действительно ли это так? Или совершенно случайно, что выбраны sv-SE и en-US? Слово «может» кажется слишком неопределенным, чтобы полагаться на него.
Интересно. Так как обходное решение «TextInfo» - это взлома, есть ли более прямой путь к области по умолчанию для языка или нейтральной культуры? То есть, способ получения языковой культуры 0x0400 + без использования 'TextInfo'? – bzlm
@bzlm не уверен, что я понял ваш вопрос, в информации о культуре есть [LCID] (http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.lcid.aspx). Какой идентификатор языка + региона. Вы также можете использовать этот LCID для создания нового экземпляра информации о культуре. Я использую его в веб-приложении для идентификатора языка, так как проще работать с числами, чем с символами. Надеюсь, что это помогло – peter