2010-07-26 3 views
1

J'ai recherché plusieurs threads et rapports de bug, mais je n'ai pas trouvé de solution.Impossible de faire fonctionner la localisation de Django

J'ai changé les paramètres régionaux de mon projet Django en pt-br mais cela n'a fait aucune différence. J'ai exclu tous les champs d'entrée et les sorties pour localiser les dates et les nombres, en particulier DECIMAL_SEPARATOR et THOUSAND_SEPARATOR, y compris dans l'API d'administration. Mais les dates continuent à apparaître comme yyyy-mm-dd et le séparateur décimal "," génère une erreur lors de l'entrée.

Je l'ai fait tout ce que j'ai trouvé: changé les paramètres, ajoutés les classes de middleware de localisation, a permis USE_I18N et USE_L10N, a essayé de forcer setlocale manuellement, etc. Voici un aperçu de mon 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 = '.' 

Est est-ce bizarre que ma console Python fonctionnant sur un Windows portugais brésilien produise ceci?

>>> 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 

Des idées de ce que j'ai oublié d'essayer?

Répondre

1

Windows utilise différents ID de paramètres régionaux. Ce qui suit devrait fonctionner (obtenu à partir de la table sur Microsoft's site):

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

Eh bien, setlocale a fait le travail, mais cela n'a changé aucun comportement dans Django. –

1

Selon Django Track, le réglage INPUT_FORMATS est ignoré si USE_L10N est réglé sur True.

0

Peut-être un peu OT, mais je voulais ajouter mon point de vue sur la traduction Web. Je recommande fortement l'utilisation Bablic. C'est une approche entièrement axée sur le client à la traduction. Ils suivent les chaînes affichées sur votre site, créent le "dictionnaire" et vous informent du texte nouveau ou non traduit. Ils peuvent également être intégrés aux fournisseurs de traduction basés sur le cloud, de sorte que même le contenu nouvellement envoyé soit traduit presque immédiatement sans que vous ayez besoin de suivre ou de mettre à jour le code ou la configuration côté serveur. Je l'aime que vous n'avez pas besoin de faire l'ensemble des collect-strings-> send-mo-file-to-translators-> compiler-> déployer-> déboguer-> répéter. Et en tant que web-dev, cette solution n'a aucune friction de ma part.

0

Dans certains cas, est activé pas sur le serveur et vous devez exécuter cette commande pour activer la locale (dans mon serveur Ubuntu par exemple)

sudo locale-gen pt_BR 

Et puis exécutez

python -c "import locale; locale.setlocale(locale.LC_ALL, 'pt_BR')" 
Questions connexes