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.
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
# 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
# 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.
À 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.
django-admin-tooles est utilisé pour créer une liste de traduction, alors installez
pip install django-admin-tools
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')),
]
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
Créez un fichier de message pour la langue que vous souhaitez traduire Créez un fichier django.po à l'aide de la commande makemessages.
Entrez la traduction dans le message dans le fichier de message Traduisez la liste des mots traduits dans le fichier django.po.
Compilez le fichier de message Compilez avec la commande compile messages. Créer un fichier django.mo
Définissez des balises de modèle de traduction pour traduire les mots dans n'importe quelle langue que vous définissez. Je l'avais préparé à l'avance dans le modèle github, mais je l'ai préparé du côté modèle. Si vous spécifiez un libellé de traduction dans la balise de modèle {% trans%}, le libellé sera automatiquement traduit par django. De plus, vous pouvez définir les informations de la langue que vous souhaitez traduire dans le formulaire défini dans index.html ci-dessus sur session côté django. Cependant, si vous ne créez pas de fichier de traduction, la traduction ne sera pas effectuée, donc si vous avez une langue que vous souhaitez traduire, essayez de la créer à nouveau avec la commande make messages.
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