Не могу заставить работать локализацию Django - PullRequest
1 голос
/ 27 июля 2010

Я искал несколько тем и отчетов об ошибках, но не смог найти решение.

Я изменил локаль моего проекта Django на pt-br, но это не имело значения. Я исключил все поля ввода и вывода для локализации дат и чисел, особенно DECIMAL_SEPARATOR и THOUSAND_SEPARATOR, в том числе в API администратора. Но даты там продолжают отображаться как yyyy-mm-dd и десятичный разделитель "," выдает ошибку при вводе.

Я сделал все, что нашел: изменил настройки, добавил классы промежуточного программного обеспечения для локализации, включил USE_I18N и USE_L10N, попытался принудительно установить setlocale вручную и т. Д. Вот пример моих настроек.py:

LANGUAGE_CODE = 'pt-br'
USE_I18N = True
USE_L10N = True

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
)

DATE_FORMAT = 'd/m/Y'
SHORT_DATE_FORMAT = 'd/m/Y'
DATE_INPUT_FORMATS = ('%d/%m/%Y', '%d/%m/%y', '%Y-%m-%d')
DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.'

Странно, что моя консоль Python, работающая на бразильской португальской Windows, выводит это?

>>> locale.setlocale(locale.LC_ALL, ('pt_BR', 'cp1252'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\locale.py", line 478, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

Есть идеи, что я забыл попробовать?

Ответы [ 4 ]

1 голос
/ 08 ноября 2011

Согласно Django Track , INPUT_FORMATS настройка игнорируется, если для USE_L10N установлено значение True.

1 голос
/ 27 июля 2010

Windows использует разные идентификаторы локали. Должно работать следующее (взято из таблицы на сайте Microsoft ):

In [15]: locale.setlocale(locale.LC_ALL, 'Portuguese_Brazil')
Out[15]: 'Portuguese_Brazil.1252'
0 голосов
/ 18 марта 2016

В некоторых случаях не включается на сервере, и вам нужно запустить эту команду, чтобы включить локаль (в моем примере с Ubuntu на сервере)

sudo locale-gen pt_BR

И затем запустить

python -c "import locale; locale.setlocale(locale.LC_ALL, 'pt_BR')"
0 голосов
/ 16 ноября 2012

Возможно, немного OT, но я хотел добавить свой взгляд на веб-перевод.

Я настоятельно рекомендую использовать Bablic . Это полностью клиентский подход к переводу. Они отслеживают строки, отображаемые на вашем сайте, создают «словарь» и уведомляют вас о новом или непереведенном тексте. Они также могут быть интегрированы с облачными поставщиками переводов, так что даже недавно отправленный контент будет переведен практически сразу, без необходимости отслеживания или внесения каких-либо обновлений в код или конфигурацию на стороне сервера.

Мне нравится, что вам не нужно делать весь сбор-строк-> send-mo-file-to-transators-> compile-> deploy-> debug-> repeat. И как веб-разработчик у этого решения нет никаких проблем с моей стороны.

...