Надежность глобализации .net в международных и английских системах. - PullRequest
1 голос
/ 31 января 2011

У меня есть приложение, работающее на клиенте с международными установками Windows XP, и клиент сообщил мне, что несколько клиентов не могут вводить даты с разделителем даты в своих странах (.).Система настроена правильно.Мое приложение принимает разделитель от System.Globalization.DateTimeFormatInfo.CurrentInfo.DateSeparator.Версия .net - 3.5SP1.

Еще одна проблема, с которой я столкнулся, была во время презентации другого моего приложения для другого клиента.Приложение изменило формат вывода даты во время выполнения приложения.Вместо отображения дд.мм.гггг он изменился на используемый формат мм / дд / гггг после примерно 1,5 часа презентации.Потому что это было во время презентации, я не мог понять, в чем проблема.Я только перезапустил приложение, и все снова было хорошо.ОС на презентационном ноутбуке была W7 en.Здесь я использую DateTime.ToShortDateString.

Мой вопрос: если другие программисты сталкиваются с такими неясными проблемами, связанными с глобализацией в международных системах, и если да, есть ли что-то, что можно и нельзя.Или, может быть, есть сочетание клавиш, о котором я не знаю, которое меняет региональные настройки (не раскладку клавиатуры, о которой я знаю).

Ответы [ 2 ]

2 голосов
/ 31 января 2011

никогда не зависит от конечной среды, а также от конфигурации установок для таких проблем. лучший способ быть на 100% уверенным в правильной глобализации (а также в локализации) - это поставить все проверки в самом коде. когда я знаю, что мое приложение будет использоваться в разных локалях, я явно получаю / устанавливаю текущую информацию о культуре через код. Кроме того, почти каждый метод синтаксического анализа для распространенных типов (таких как числа, дата и т. д.) имеет перегрузку, которая позволяет указывать информацию о культуре, которая будет использоваться при анализе специфичных для культуры данных. вы это гарантируете?

И последнее, но не менее важное: убедитесь, что ваш db-сервер ХОРОШО, КАК ваши sps правильно настроены и закодированы для ввода данных в разных локалях. например, у сервера sql есть много опций (включая стандарты ISO) для разбора / сохранения даты и времени. SQL Server 2008 предлагает вам гораздо проще и лучше варианты для той же цели

также, золотое правило с датой и временем - ВСЕГДА СОХРАНИТЬ ИХ в UTC, но отображать их в зависимости от текущего формата часового пояса / локали. одна очень распространенная ошибка, которую делают программисты, это НЕ сохранять информацию о дате и времени в формате UTC / GMT в БД. например: вместо сохранения DateTime.UTCNow они сохраняют DateTime.Now. Я видел дни, если не недели, потраченные на попытки выяснить такие ошибки / проблемы, когда приложение имеет дело с несколькими культурами / локалями / часовыми поясами. и то же самое, имея дело с числами. например: цена товара на сайте электронной торговли, который занимается продажами в разных странах и валютах

1 голос
/ 31 января 2011

Следующий ответ содержит ценные советы о том, как можно использовать класс CultureInfo: Как учитывать / наследовать языковые настройки пользователя в приложении WinForm?

...