[PYTHON] Internationalisation avec Django

Si vous implémentez un service utilisé dans de nombreux pays ou régions avec Django, vous souhaiterez un système qui se traduit automatiquement en spécifiant la langue de cette région. Il existe une fonction de traduction pratique dans django, je vais donc essayer d'utiliser cette fonction.

environnement

Cloner l'environnement Django

Préparé ici Utilisez Environnement de site Web de configuration minimale avec django.

https://github.com/yu-sa/my_site Je vais cloner Django à partir de.

# git clone https://github.com/yu-sa/my_site.git
# cd my_site

Construction de l'environnement d'exploitation

# pip install virtualenvwrapper
# mkvirtualenv --python=/path/to/python/2.7.11/bin/python i18n
# pip install django==1.9
# pip install mysql-python
# mysql -u root
> CREATE DATABASE my_site;
> exit
#  python manage.py migrate

Exécutez ranserver

# python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
April 08, 2016 - 17:46:13
Django version 1.9, using settings 'my_site.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

http://127.0.0.1:8000/views/ Lorsque vous y accédez, une page comme celle ci-dessous s'affiche.

スクリーンショット 2016-04-08 14.50.54.png

À ce stade, le titre de la page et le corps de la page sont en japonais. Corrigeons ce problème afin qu'il soit automatiquement converti en anglais.

Installez django-admin-tooles

django-admin-tooles est utilisé pour créer une liste de traduction, alors installez

pip install django-admin-tools

Assistance à la traduction

Créer un dossier de paramètres régionaux dans la hiérarchie spécifiée

my_site
└─my_site
 └─locale

Définissez le chemin du dossier local dans les paramètres Ajout de «django.middleware.locale.LocaleMiddleware» à MIDDLEWARE_CLASSES. Veuillez noter que vous ne pouvez accéder qu'au poste à ajouter comme suit.

settings.py


# locale
LOCALE_PATHS = (
    os.path.join(FILE_DIR, 'locale'),
)

…………

MIDDLEWARE_CLASSES = [
    ………,
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ………,
]


Créer un fichier de message (django.po) requis pour la traduction Crée un fichier de message traduit pour la langue spécifiée dans l'option -l. en est l'anglais. Pour le japonais ja.

# django-admin.py makemessages -l en
processing locale en

Dans django.po, il y a les caractères "TOP page" et "Hello world" actuellement affichés sur la page. Je vais mettre les caractères traduits de ces deux chaînes de caractères.

django.po


#: my_site/views/index.py:13
msgid "TOP page"
msgstr "Top Page"

#: my_site/views/index.py:14
msgid "Bonjour le monde"
msgstr "Hello world"

Puis compilez ce fichier de message pour créer django.mo.

# django-admin.py compilemessages

Vous pouvez choisir la langue dans laquelle vous voulez que le corps en html affiche Configurez le formulaire.

index.html


………
<span>
  <form action="{% url 'set_language' %}" method="post">
	{% csrf_token %}
	<input name="next" type="hidden" value="{{ redirect_to }}" />
	<select name="language">
	{% get_available_languages as LANGUAGES %}
	{% get_language_info_list for LANGUAGES as languages %}
	{% for language in languages %}
	<option value="{{ language.code }}" {% if request.LANGUAGE_CODE == language.code %}selected{% endif%}>{{ language.name_local }} ({{ language.code }})</option>
	{% endfor %}
	</select>
	<input type="submit" value="Go" />
  </form>
</span>
………

Enregistrez l'URL définie du côté du formulaire

my_site/views/urls.py


from django.conf.urls import url, include
from .index import IndexView
 
 
urlpatterns = [
    url(r'^$', IndexView.as_view(), name='api-index'),
    url(r'^i18n/', include('django.conf.urls.i18n')),
]
スクリーンショット 2016-04-11 10.40.19.png

Explication de la fonction de traduction

Premièrement, le flux de traduction est le suivant

Créez un fichier de message pour la langue que vous souhaitez traduire
↓
Entrez le contenu de la traduction dans le message dans le fichier de message
↓
Compiler le fichier de message
↓
Définissez des balises de modèle de traduction pour traduire les mots dans n'importe quelle langue définie

GitHub https://github.com/yu-sa/my_site/tree/i18n

J'ai téléchargé le code source implémenté cette fois dans la branche i18 du référentiel my_site. Si vous êtes intéressé, essayez le clonage.

Recommended Posts

Internationalisation avec Django
Prise en charge de l'internationalisation avec Django 1.9
CRUD avec Django
Authentifier Google avec Django
Django 1.11 a démarré avec Python3.6
Télécharger des fichiers avec Django
Sortie PDF avec Django
Sortie Markdown avec Django
Utiliser Gentelella avec Django
Twitter OAuth avec Django
Premiers pas avec Django 1
Envoyer des e-mails avec Django
Téléchargement de fichiers avec django
Utilisez LESS avec Django
La mutualisation mécanise avec Django
Utiliser MySQL avec Django
Django à partir d'aujourd'hui
Premiers pas avec Django 2
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Environnement de site Web de configuration minimale avec django
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Déployer Django sans serveur avec Lambda
Premiers pas avec Python Django (1)
Créer une page d'accueil avec django
Lancez-vous avec Django! ~ Tutoriel ④ ~
Django
Premiers pas avec Python Django (4)
Créer une application Web avec Django
Premiers pas avec Python Django (3)
Combinez Fast API avec Django ORM
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
Utilisez Django pour enregistrer les données de tweet
Effectuer le cryptage AES avec DJango
Introduction à Python Django (6)
Combinez deux images avec Django
Premiers pas avec Django avec PyCharm
Web en temps réel avec les chaînes Django
Suppression de double envoi avec Django
Framework Django REST avec Vue.js
Utilisez prefetch_related commodément avec Django
Premiers pas avec Python Django (5)
Connectez-vous avec Django Rest Framework
Qiita API Oauth avec Django
Développement piloté par les tests avec Django Partie 3
recharger dans le shell django avec ipython
Étapes pour développer Django avec VSCode
Charger les modules Django avec un interpréteur
Développement piloté par les tests avec Django Partie 6
Mesurer la couverture des applications Django avec Coverage.py
Gérer les fichiers csv avec Django (django-import-export)
HTTPS avec Django et Let's Encrypt
Gérer les fichiers de configuration Django avec Python-decouple
Déployer l'application Django avec Docker
Standardiser le HTML à louer avec Django
Jointure externe gauche dans le modèle Django
Développement piloté par les tests avec Django Partie 2
Django Tips-Créez un site de classement avec Django-
Application de publication sur Twitter réalisée avec Django
Générer automatiquement un diagramme de relation de modèle avec Django
Comment démarrer avec Django