2010-07-26 2 views
1

Я искал несколько отчетов о потоках и ошибках, но не смог найти решение.Не удается получить локализацию Django для работы

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

Я сделал все, что я нашел: изменил настройки, добавлены локализации классов промежуточного слоя, позволило USE_I18N и USE_L10N, пытались заставить Setlocale вручную, и т.д. Вот проблеск моего settings.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 

Любые идеи того, что я забыл попробовать?

ответ

1

Windows использует различные идентификаторы локали. Следующее должен работать (полученный из таблицы на Microsoft's site):

In [15]: locale.setlocale(locale.LC_ALL, 'Portuguese_Brazil') 
Out[15]: 'Portuguese_Brazil.1252' 
+0

Ну, Setlocale сделал работу, но это не изменило никакого поведения в Django. –

1

В соответствии с Django Track, INPUT_FORMATS параметр игнорируется, если USE_L10N установлен в True.

0

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

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

Мне очень нравится, что вам не нужно делать целые коллекционные строки-> send-mo-file-to-translators-> compile-> deploy-> debug-> repeat. И как web-dev это решение имеет нулевое трение на моем конце.

0

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

sudo locale-gen pt_BR 

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

python -c "import locale; locale.setlocale(locale.LC_ALL, 'pt_BR')" 
Смежные вопросы