Как я могу отображать дату / время на нескольких языках? - PullRequest
3 голосов
/ 23 марта 2011

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

Я рассмотрел функцию pythons time.strftime в сочетании с locale.setlocal. Я исключил это после прочтения в документах (http://docs.python.org/library/locale.html)) того, что библиотеки не должны вызывать locale.setlocal, поэтому я не должен просто «переворачивать» (изменять, а затем восстанавливать) настройки локали в моей библиотеке.

Я также рассмотрел библиотеку Python Babel, но я прочитал в их документах (http://babel.edgewall.org/wiki/Documentation/0.9/dates.html), что разбор дат "не реализован должным образом", что касается меня. Мне действительно нужны возможности разбора дат. Однако, Babel может отображать время, используя разные локали.

Третий вариант [гибридного] будет использовать pythons datetime для анализа даты, а затем Babel для отображения даты на нескольких языках / локалях. Это немного запутанно, потому что strptime использует собственный синтаксис строки формата, в то время как Babel использует синтаксис LDML для строк формата.

Возможны и другие варианты. Снова вопрос: как лучше отобразить дату или время на нескольких языках?

1 Ответ

1 голос
/ 23 марта 2011

Я бы поддерживал переводы как стандартный файл PO, используя механизм gettext . Для каждого языка вы храните переводы в отдельном файле. Вы используете названия месяца и дня как msgid и сохраняете конкретные переводы как msgstr .

http://docs.python.org/library/gettext.html

...