Wenn Sie mit Django einen Dienst implementieren, der in vielen Ländern oder Regionen verwendet wird, benötigen Sie ein System, das automatisch übersetzt wird, indem Sie die Sprache dieser Region angeben. In Django gibt es eine praktische Übersetzungsfunktion, daher werde ich versuchen, diese Funktion zu verwenden.
Hier vorbereitet Verwenden Sie Website-Umgebung mit Mindestkonfiguration mit Django.
https://github.com/yu-sa/my_site Ich werde Django von klonen.
# 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/ Wenn Sie darauf zugreifen, wird eine Seite wie die folgende angezeigt.
Zu diesem Zeitpunkt sind sowohl der Seitentitel als auch der Seitenkörper auf Japanisch. Lassen Sie uns dies beheben, damit es automatisch in Englisch konvertiert wird.
django-admin-tooles wird verwendet, um eine Übersetzungsliste zu erstellen. Installieren Sie also
pip install django-admin-tools
Erstellen Sie einen Gebietsschemaordner in der angegebenen Hierarchie
my_site
└─my_site
└─locale
Legen Sie den Pfad des lokalen Ordners in den Einstellungen fest "Django.middleware.locale.LocaleMiddleware" zu MIDDLEWARE_CLASSES hinzugefügt. Bitte beachten Sie, dass Sie nur zu der Position gehen können, um wie folgt hinzuzufügen.
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',
………,
]
Erstellen Sie eine Nachrichtendatei (django.po), die für die Übersetzung erforderlich ist Erstellt eine übersetzte Nachrichtendatei für die in der Option -l angegebene Sprache. en ist Englisch. Für Japaner ja.
# django-admin.py makemessages -l en
processing locale en
In django.po werden derzeit die Zeichen "TOP page" und "Hello world" auf der Seite angezeigt. Ich werde die übersetzten Zeichen dieser beiden Zeichenfolgen setzen.
django.po
#: my_site/views/index.py:13
msgid "Oberste Seite"
msgstr "Top Page"
#: my_site/views/index.py:14
msgid "Hallo Welt"
msgstr "Hello world"
Kompilieren Sie dann diese Nachrichtendatei, um django.mo zu erstellen.
# django-admin.py compilemessages
Sie können auswählen, in welcher Sprache der Textkörper in HTML angezeigt werden soll Richten Sie das Formular ein.
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>
………
Registrieren Sie die auf der Formularseite festgelegte URL
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')),
]
Erstens ist der Übersetzungsfluss wie folgt
Erstellen Sie eine Nachrichtendatei für die Sprache, die Sie übersetzen möchten
↓
Geben Sie den Übersetzungsinhalt in die Nachricht in der Nachrichtendatei ein
↓
Nachrichtendatei kompilieren
↓
Legen Sie Übersetzungsvorlagen-Tags fest, um Wörter in eine von Ihnen festgelegte Sprache zu übersetzen
Erstellen Sie eine Nachrichtendatei für die Sprache, die Sie übersetzen möchten Erstellen Sie eine django.po-Datei mit dem Befehl makemessages.
Geben Sie die Übersetzung in die Nachricht in der Nachrichtendatei ein Übersetzen Sie die Liste der übersetzten Wörter in die Datei django.po.
Nachrichtendatei kompilieren Kompilieren Sie mit dem Befehl compile messages. Erstellen Sie die Datei django.mo
Setzen Sie Übersetzungsvorlagen-Tags, um Wörter in eine von Ihnen festgelegte Sprache zu übersetzen. Ich hatte es im Voraus in der Github-Vorlage vorbereitet, aber ich habe es auf der Vorlagenseite vorbereitet. Wenn Sie im Vorlagen-Tag {% trans%} einen Übersetzungstext angeben, wird der Wortlaut automatisch von django übersetzt. Darüber hinaus können Sie die Informationen der Sprache, die Sie übersetzen möchten, in dem in index.html oben festgelegten Formular auf Sitzung auf der Django-Seite festlegen. Wenn Sie jedoch keine Übersetzungsdatei erstellen, wird die Übersetzung nicht ausgeführt. Wenn Sie also eine Sprache haben, die Sie übersetzen möchten, versuchen Sie, sie erneut mit dem Befehl make messages zu erstellen.
GitHub https://github.com/yu-sa/my_site/tree/i18n
Ich habe den diesmal implementierten Quellcode in den Zweig i18 des my_site-Repositorys hochgeladen. Wenn Sie interessiert sind, versuchen Sie bitte das Klonen.
Recommended Posts