Django internationalisation exemple minimal
Je vais avoir des difficultés dans l'internationalisation de mon application, je vous présente ici un exemple minimal d'où ma mise en oeuvre échoue.
Envisager les étapes suivantes pour la production d'un site web en django avec le soutien international:
accédez à votre dossier favori dans le terminal et:
django-admin.py startproject mysite
cd mysite/
mkdir locale
python manage.py startapp main
# (1) modify mysite/urls.py
# (2) modify main/views.py
# (3) modify mysite/settings.py
django-admin.py makemessages -l de
# (4) modify locale/de/LC_MESSAGES/django.po
django-admin.py compilemessages -l de
python manage.py runserver
où:
## (1) mysite/urls.py
urlpatterns = patterns('',
url(r'^$', 'main.views.home'),
)
## (2) main/views.py
from django.http import HttpResponse
from django.utils.translation import ugettext as _
def home(request):
return HttpResponse(_('Hello'))
## (3) mysite/settings.py
LANGUAGE_CODE = 'de'
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + \
('django.core.context_processors.i18n',) # ensures all django processors are used.
## (4) locale/de/LC_MESSAGES/django.po
#: main/views.py:6
msgid "Hello"
msgstr "Hallo"
Je suppose que le site web a un et un seul langue, donc, je n'ai pas activé le middleware de paramètres régionaux par documentation de django:
Si vous voulez permettre à chaque utilisateur de spécifier la langue ou
elle préfère, utiliser LocaleMiddleware. LocaleMiddleware permet à la langue
sélection basée sur les données de la demande. Il permet de personnaliser le contenu pour
chaque utilisateur.
Cette mise en œuvre n'a pas produit la traduction de "Bonjour" "Bonjour". Ce que je fais mal?
LOCALE_PATHS
? docs.djangoproject.com/en/dev/ref/settings/#locale-pathsde ce que j'ai compris de documentation de django, ceux-ci devraient être le minimum d'étapes pour la traduction... j'ai essayé LOCAL_PATHS, sans succès, et je n'ai pas essayé admin car il nécessite une DB, ce dont je ne suis pas à l'aide de...
De quel chemin avez-vous mis
LOCALE_PATHS
?LOCALE_PATHS = ('/Users/nom d'utilisateur/Bureau/Essais/test-django/monsite/locale"), qui est celle que le contenu de makemessages aller.
a=('quelque chose') => type () = <type 'str'> le temps perdu sur elle aussi bien la première fois 🙂
OriginalL'auteur Jorge Leitão | 2013-05-27
Vous devez vous connecter pour publier un commentaire.
Django recueille des traductions dans ces 3 façons expliqué ici:
https://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-translations
Depuis votre fichier de traduction est dans aucun de ces endroits, vous devez définir manuellement à l'aide de
LOCALE_PATHS
comme expliqué ici:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-LOCALE_PATHS
c'est ce qu'il fixe pour moi: settings.py ajouter LOCALE_PATHS = ( '/monsite/locale', )
OriginalL'auteur andrea.ge
1º Permettre à l'Internationalisation de la settings.py:
2º Sur les paramètres, de l'importation:
from django.utils.translation import ugettext_lazy as _
3 ° de Définir les langues que vous allez utiliser dans settings.py:
3º Configurer le LOCALE_PATH dans settings.py trop:
4º à l'Intérieur du chemin que vous avez configuré dans LOCALE_PATH créer les dossiers, ex:
5º Exécutez la commande:
Il va créer un fichier .po à l'intérieur d'un sous-dossier de chaque langue dans settings.py les LANGUES. Faire les traductions de chaque phrase, à l'intérieur du fichier.
Ps: s'Exécute sur l'ensemble de la source de l'arborescence du répertoire courant et sort de toutes les chaînes marquées pour la traduction.
Pour tester, avant de lancer, mettre la balise
à l'intérieur de votre index.html et exécutez la commande makemessages de nouveau. Vous verrez à l'intérieur de .les fichiers po, une nouvelle chaîne:
6º Maintenant, exécutez la commande:
Il permettra de recueillir toutes msgstr d' .fichier po et de compiler dans un .mo fichier
7º Exécutez le projet et tester
8ª Plus: Si vous voulez que l'URL de montrer dans quelle langue l'aide de l'utilisateur vous pouvez configurer votre url.py montrer que:
Même problème pour moi. J'ai ouvert une question
OriginalL'auteur Gregory