[PYTHON] Internationalisierung mit Django

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.

Umgebung

Klonen Sie die Django-Umgebung

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

Bau der Betriebsumgebung

# 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

Führen Sie ranserver aus

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

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

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.

Installieren Sie django-admin-tooles

django-admin-tooles wird verwendet, um eine Übersetzungsliste zu erstellen. Installieren Sie also

pip install django-admin-tools

Übersetzungsunterstützung

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')),
]
スクリーンショット 2016-04-11 10.40.19.png

Erklärung der Übersetzungsfunktion

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

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

Internationalisierung mit Django
Internationalisierungsunterstützung mit Django 1.9
CRUD mit Django
Authentifizieren Sie Google mit Django
Django 1.11 wurde mit Python3.6 gestartet
Laden Sie Dateien mit Django hoch
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Verwenden Sie Gentelella mit Django
Twitter OAuth mit Django
Erste Schritte mit Django 1
Mail mit Django senden
Datei-Upload mit Django
Verwenden Sie WENIGER mit Django
Pooling mechanisieren mit Django
Verwenden Sie MySQL mit Django
Django ab heute
Erste Schritte mit Django 2
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Minimale Konfigurations-Website-Umgebung mit Django
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Stellen Sie Django serverlos mit Lambda bereit
Erste Schritte mit Python Django (1)
Erstellen Sie eine Homepage mit Django
Fangen Sie mit Django an! ~ Tutorial ④ ~
Django
Erste Schritte mit Python Django (4)
Erstellen Sie eine Webanwendung mit Django
Erste Schritte mit Python Django (3)
Kombinieren Sie Fast API mit Django ORM
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Verwenden Sie Django, um Tweet-Daten zu speichern
Führen Sie eine AES-Verschlüsselung mit DJango durch
Einführung in Python Django (6)
Kombiniere zwei Bilder mit Django
Erste Schritte mit Django mit PyCharm
Echtzeit-Web mit Django-Kanälen
Doppelte Submit-Unterdrückung mit Django
Django REST Framework mit Vue.js
Verwenden Sie prefetch_related bequem mit Django
Erste Schritte mit Python Django (5)
Melden Sie sich mit dem Django Rest Framework an
Qiita API Oauth mit Django
Testgetriebene Entwicklung mit Django Teil 3
Laden Sie die Django-Shell mit ipython neu
Schritte zur Entwicklung von Django mit VSCode
Laden Sie ein Django-Modul mit einem Interpreter
Testgetriebene Entwicklung mit Django Teil 6
Messen Sie die Abdeckung der Django-Anwendung mit Coverage.py
Behandeln Sie CSV-Dateien mit Django (Django-Import-Export)
HTTPS mit Django und Let's Encrypt
Verwalten Sie Django-Konfigurationsdateien mit Python-Decouple
Stellen Sie die Django-Anwendung mit Docker bereit
Standardisieren Sie HTML, um mit Django gemietet zu werden
Linke äußere Verbindung im Django-Modell
Testgetriebene Entwicklung mit Django Teil 2
Django-Tipps - Erstellen Sie eine Ranking-Site mit Django-
Twitter-Posting-Anwendung mit Django gemacht
Generieren Sie automatisch ein Modellbeziehungsdiagramm mit Django
Wie fange ich mit Django an?