2013-08-08 5 views
2

Я установил язык системы на китайский (упрощенный КНР) черезSystem Locale в .NET

ControlPanel >> Region and Language >> Administrative >> Change System locale 

Затем я перезагрузил свой компьютер и запустить мой .NET 4.0 приложения.

Запуск

Thread.CurrentThread.CurrentCulture.Name 

Возвращает

en-GB 

Почему?

+0

попробовать: Thread.CurrentThread.CurrentUICulture.Name (обратите внимание на пользовательский интерфейс) –

+0

я получаю такое же поведение с '' Thread.CurrentThread.CurrentUICulture.Name – Ben

ответ

2

MSDN говорит, что

Информация, такие как культура по умолчанию и шаблонов формата, является кэшируются в первый раз, когда он запрашивается. Эта информация может изменить в течение срока действия AppDomain, например, когда пользователь изменяет часть региональных и языковых параметров панели управления. Однако класс CultureInfo автоматически не обнаруживает изменения в системных настройках .

называют это первым

Thread.CurrentThread.CurrentCulture.ClearCachedData(); 
+0

я могу получить 'Thread.CurrentThread.CurrentCulture.Name' вернуть ожидаемый значение, установив «Регион и язык >> Форматы» на «Китайский (SImplified PRC)». Это ожидаемое поведение? На культуру, представленную в .NET, влияет только эта настройка «Формат». – Ben

+0

@Ben Я не получил ваш вопрос – Ehsan

+0

Изменение 'ControlPanel >> Регион и язык >> Административный >> Изменить System locale', похоже, не изменяет значение, выставленное в' Thread.CurrentThread.CurrentCulture.Name'. Вместо этого, согласно моим экспериментам, установка «Панель управления >> Регион и язык >> Форматы» делает. Это за ваше понимание. Я предположил, что установка «Locale» на панели управления установит локаль в .NET. – Ben

0

Похоже место, чтобы увидеть язык системы является System.Text.Encoding.Default

PS: "... Изменение языка системы" влияет на Кодировка ANSI, используемая для приложений «не-Юникод» (вызовы * A() из Win32 API). В большинстве случаев приложениям .NET не нужно заботиться об этом, потому что они используют строки Unicode и Unicode API. Но мне нужно взаимодействовать с не-юникодным приложением, поэтому мне нужно узнать текущий язык системы.

Смежные вопросы