2013-12-04 5 views
2

У меня есть приложение WPF, которое я модифицирую для поддержки локализации. Моя программа является частью набора продуктов, предлагаемых моей компанией. Мы создали библиотеку ресурсов, содержащую все строки, которые необходимо перевести для всех наших продуктов. Я добавил ссылку на эту DLL на мою программу, добавил к ней строковые ресурсы и изменил свой код, чтобы использовать строковые ресурсы вместо жестко закодированных строк. Все работает нормально, когда я запускаю свою программу на английском языке.Настройка культуры программы WPF в App.config

У нас были переведены строки на испанский язык. Я создал файл resx с испанскими переводами. Я перестроил свое приложение. Теперь я хочу, чтобы испанский текст отображался в моей программе, не меняя настройки культуры моего компьютера.

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

У программы есть файл App.config. Если не добавить пользовательскую настройку с информацией о культуре в ней, как я могу сказать, что моя программа запускается на испанском языке?

ответ

-1

Я решил добавить этот ответ, потому что, хотя ответ @ MauricioGarcia работает, если вы хотите всегда отображать определенный язык на машине с несколькими языковыми пакетами, установленными на нем, независимо от того, какие текущие настройки региона на машине, мы не реализовали это так.

Вместо этого мы просто используем любые объекты CultureInfo в текущих Thread.CurrentThread.CurrentCulture и Thread.CurrentThread.CurrentUICulture объектах. Когда вы задаете настройки региона на конкретном месте и языке, эти свойства автоматически изменяются. Поэтому они всегда правы &, нам не нужно добавлять код, чтобы что-либо изменить.

Интересно, что объект в CurrentUICulture свойства используется для определения строки, какой язык для отображения и объект в CurrentCulture свойства используется для форматирования чисел & DateTime.

+0

@ Tony Vitabile, поэтому вы спрашиваете, как установить КУЛЬТУРУ в сообществе разработчиков и в конечном итоге взять свой собственный ответ, который использует настройки Windows? –

+0

Я поднял ваш ответ. –

7

Вы можете просто определить ключ в вашем App.config как этот

<configuration> 
    <appSettings> 
     <add key="DefaultCulture" value="es-CO" /> 
    </appSettings> 
</configuration> 

и в приложении чтения этого значения и установить культуру

CultureInfo culture = new CultureInfo(ConfigurationManager.AppSettings["DefaultCulture"]); 
Thread.CurrentThread.CurrentCulture = culture; 
Thread.CurrentThread.CurrentUICulture = culture; 

В примере конфигурации я установил это испано-Колумбия

Это список culture codes

+0

ОК, у меня есть один вопрос: когда вы создаете новые потоки, наследуют ли они эту настройку культуры или мне нужно установить ее для каждого нового потока в коде? –

+0

Невозможно заменить его. Я поставил точку останова в своей программе, где он создает первый дочерний поток, и культура этого потока установлена ​​на культуру по умолчанию. Думаю, я добавляю код, чтобы изменить культуру для каждого нового потока. –

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