c #: есть ли в классе dotnet свойство, указывающее, является ли культура "Current" фактической культурой по умолчанию? - PullRequest
7 голосов
/ 28 марта 2011

Есть ли свойство в каком-то классе, которое может сказать мне, является ли текущая культура фактически культурой по умолчанию.

Подобно тому, как локализация работает с winforms.В форме указывается, является ли язык по умолчанию.

Допустим, я нахожусь в en-US - как я могу узнать через код, является ли en.US фактическим значением по умолчанию?

Мне нужнореализовать некоторую локализацию для некоторых XML-файлов, которые не поддерживаются .net, поэтому я хочу реализовать свою собственную ...

и сделать так, как работает winforms, то есть

nameofxml.default.xml (this is the default local)
nameofXml.de-de.xml (this is german) 

и т. д.

существует ли свойство?

Ответы [ 3 ]

3 голосов
/ 28 марта 2011

System.Globalization.CultureInfo.CurrentCulture обозначает настройки региона панели управления системы, а System.Globalization.CultureInfo.CurrentUICulture соответствует настройке языка интерфейса пользователя системы ввода (которую нельзя изменить, если у вас не установлен многоязычный интерфейс пользователя).

Поэтому выможно использовать следующий фрагмент кода для определения культуры по умолчанию:

using System.Globalization;
// N.B. execute the following line *before* you programmatically change the CurrentCulture
// (if you ever do this, of course)

// Gets the CultureInfo that represents the culture used by the current thread
CultureInfo culture = CultureInfo.CurrentCulture;
string code = culture.IetfLanguageTag; // e.g. "en-US", "de-DE", etc.

Затем вы можете использовать code, чтобы найти свои XML-файлы.

2 голосов
/ 28 марта 2011

На уровне сборки можно указать, что встроенные ресурсы относятся к определенной культуре, используя NeutralResourcesLanguageAttribute.

IIRC, таким образом менеджер ресурсов может оптимизировать процесс загрузки ресурсов, если требуемая культура является той, которая встроена в сборку.

Поскольку вы внедряете свою собственную реализацию для локализации, я не знаю, как это может быть полезно, но вы можете использовать этот атрибут, чтобы указать, что культура информации о локализации XML, встроенной непосредственно в сборку, относится к определенной культуре и по умолчанию выполняется поиск спутниковых сборок или другого пользовательского хранилища, если вы обнаружите несоответствие между заявленной культурой в сборке и требуемой культурой, которую вы ищете.

0 голосов
/ 28 марта 2011

CultureInfo.CurrentCulture - это статический член, который «получает CultureInfo, представляющий культуру, используемую текущим потоком». Он доступен из любого класса, если вы просто включите пространство имен System.Globalization.

Документация: http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...