Многоязычный часовой пояс - PullRequest
0 голосов
/ 24 ноября 2010

Мне нужно сделать элемент управления WPF, который позволит пользователю выбрать часовой пояс. Этот элемент управления также должен поддерживать несколько языков. Т.е. названия часовых поясов должны отображаться на языке, выбранном в приложении.

.NET 3.5 поддерживает простой способ получения списка часовых поясов из реестра, вызывая метод TimeZoneInfo.GetSystemTimeZones . Проблема этого подхода заключается в том, что он зависит от текущей системы. Это означает, что разные пользователи могут иметь разные списки часовых поясов на своих машинах. Некоторые из этих списков могут быть устаревшими, если пользователь отказался обновить свою систему.

Одним из способов решения этой проблемы может быть получение актуального списка путем вызова TimeZoneInfo.GetSystemTimeZones на современной машине. А затем сериализовать его в файл, который будет развернут вместе с приложением. Кроме того, поскольку этот список возвращается на текущем системном языке, мне нужно будет генерировать списки для каждого языка в разных локализациях Windows. Или просто сделайте перевод вручную. При таком подходе у пользователя будет обновленный список при условии, что у него установлена ​​последняя версия приложения.

Другим подходом может быть использование другого источника информации о часовых поясах, например tz database . В этом случае мне потребуется использовать некоторые конвертеры для преобразования объектов API часового пояса базы данных tz в стандартные объекты TimeZoneInfo.

Какой подход вы используете или рекомендуете в таких или подобных случаях?

1 Ответ

1 голос
/ 24 ноября 2010

Я понимаю, как это может быть проблематично.

Вариант 1:

Чтобы все было согласованно, я бы создал список с современной машины (например, с вашей машины разработчика) и включил его в файл ресурсов, развернутый вместе с вашим приложением.

Тогда я бы позаботился о локализации как о части нормального процесса локализации, то есть часовые пояса были бы переведены с остальной частью пользовательского интерфейса.

Вариант 2:

Предполагая клиент-серверное приложение, вы можете ограничить использование часового пояса на стороне клиента (т. Е. Всегда отправлять-получать время UTC и преобразовывать их на клиенте), чтобы вы могли использовать часовые пояса ОС и не иметь заботиться о том, что на самом деле эти зоны.

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