Должен ли я установить Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture по умолчанию в моем приложении? - PullRequest
6 голосов
/ 04 февраля 2009

У меня есть приложение, которое предназначено для глобального рынка и должно быть локализуемым. Во время разработки у меня были некоторые проблемы в том, что мои спутниковые сборки никогда не были подобраны, даже когда я сменил локаль. После некоторых исследований я теперь понимаю, почему это так и удалось протестировать, установив CurrentUICulture в коде и убедившись, что все работает так, как ожидалось.

Теперь дело доходит до упаковки приложения для выпуска, и я не уверен, что установка Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture для текущего потока при запуске моего приложения является хорошей идеей. С положительной стороны, мое приложение будет локализуемым путем изменения региональных настроек (если это положительная сторона), но я беспокоюсь, что в этом могут быть непредвиденные недостатки. Одна вещь, которая сразу приходит на ум, заключается в том, что хотя то, что я сделал, хорошо для моей темы, оно не будет применяться (насколько я понимаю из прочтения здесь и далее) к любым потокам, которые создаются моим приложением (если только Я устанавливаю CurrentUICulture на них тоже) или хуже на любые компоненты, которые я использую, которые могут создавать свои собственные потоки.

Могут ли быть другие проблемы? Является ли установка CurrentCultures такой же, как стандартная практика или что-то осуждаемое?

Я бы хотел получить как можно больше информации о взлетах и ​​падениях, прежде чем принимать решение.

Спасибо

Сэм

Ответы [ 2 ]

5 голосов
/ 04 февраля 2009

Сэм, не связывайтесь с этим, если вы действительно не уверены, что делаете.

Я предполагаю, что мы говорим здесь о WinForms. Фреймворк выбирает, пожалуй, лучшие настройки из системы (как настроено пользователем). Из вашего вопроса это может быть просто проблемой тестирования. Я регулярно добавляю код после #if DEBUG, чтобы выбрать локаль для тестирования.

Мой собственный пример: моя локаль голландская (nl-NL), но я обычно использую английские версии Windows. Если вы переопределите CurrentUICulture, я получу голландскую версию (если есть), которая обычно в порядке. Но по опыту я знаю, что некоторые элементы управления / надстройки останутся на английском языке (включая окна ShowMessage и диалоги std). Комбинация безобразная.

Но также рассмотрим случай, когда вы не добавляете спутники, соответствующие CurrentCulture. Система будет использовать настройки по умолчанию в вашей программе, в то время как культура пользовательского интерфейса может быть лучшим выбором. Я не знаю всех запасных правил, но вы, вероятно, могли бы получить что-то похожее на:

Пользователь запускает настройки fr-CA в окнах fr-FR. Ваша программа возвращается к en-US, пользователь n'est pas happy.

Мой совет:

  • провести полевые испытания
  • если вы встроите переопределение, тогда используйте переключатель в app.config
2 голосов
/ 14 октября 2010

Старый вопрос, но некоторые комментарии от пользователя и разработчика:

  • Я норвежец, но у меня есть английская ОС по причине. Я ненавижу, когда приложения отображаются на норвежском только потому, что мои региональные настройки норвежские.
  • Я использовал Thread.CurrentThread.CurrentCulture и раньше, и, хотя поначалу кажется, что он работает хорошо ... потом вдруг у вас появляется что-то, что запускает новый поток ... (потратил довольно много времени, выясняя, почему я получил правильный номер форматирование в моем приложении, но не в моих отчетах, например)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...