Heim > Backend-Entwicklung > Python-Tutorial > Mehrsprachige Unterstützung im Django-Framework

Mehrsprachige Unterstützung im Django-Framework

WBOY
Freigeben: 2023-06-17 11:12:09
Original
1773 Leute haben es durchsucht

Das Django-Framework ist ein sehr beliebtes Python-Webframework. Es bietet leistungsstarke Unterstützung für mehrere Sprachen und ermöglicht Entwicklern die einfache Entwicklung mehrsprachiger Websites. In diesem Artikel werden wir untersuchen, wie die Mehrsprachenunterstützung im Django-Framework implementiert wird, und einige Best Practices vorstellen.

Lassen Sie uns zunächst verstehen, wie die mehrsprachige Funktionalität im Django-Framework implementiert wird. Django implementiert die Unterstützung mehrerer Sprachen mithilfe des Tools gettext. Dieses Tool hilft uns, Textzeichenfolgen aus dem Quellcode zu extrahieren und in verschiedene Sprachen zu übersetzen. In Django können wir gettext als Django-Übersetzungsmethode oder die integrierte Übersetzungsmethode von Django verwenden. Unabhängig davon, welche Methode Sie verwenden, sind die folgenden Schritte erforderlich:

  1. Textzeichenfolgen aus dem Quellcode extrahieren.
  2. Verwenden Sie das Übersetzungstool, um Textzeichenfolgen in die Zielsprache zu übersetzen.
  3. Wählen Sie eine übersetzte Textzeichenfolge basierend auf den Spracheinstellungen des Benutzers aus.

Lassen Sie uns diese Schritte einzeln besprechen.

  1. Textzeichenfolgen aus Quellcode extrahieren

In Django verwenden wir den Befehl gettext, um Textzeichenfolgen zu extrahieren, die übersetzt werden müssen. Gettext-Dateien in Django heißen normalerweise django.po. Sowohl das Standardtool „gettext“ als auch das Tool „gettext“ von Django unterstützen die Verwendung von „gettext“ im Code, um Textzeichenfolgen zu markieren, die übersetzt werden müssen. Zum Beispiel:

from django.utils.translation import gettext as _

class MyView(View):
    def get(self, request):
        context = {
            'title': _('Hello World!'),
        }
        return render(request, 'mytemplate.html', context)
Nach dem Login kopieren

Im obigen Code verwenden wir die gettext-Methode von Django, um die Zeichenfolge „Hello World!“ zu markieren. Als nächstes müssen wir gettext ausführen, um die Zeichenfolge zu extrahieren, die übersetzt werden muss.

  1. Verwenden Sie das Übersetzungstool, um die Textzeichenfolge in die Zielsprache zu übersetzen.

Die von gettext extrahierte Textzeichenfolge wird in die Datei django.po eingefügt. Wir können einen Texteditor oder einen speziellen PO-Editor verwenden, um diese Datei zu bearbeiten und die Zeichenfolgen in die Zielsprache zu übersetzen. Beispielsweise können wir „Hallo Welt!“ in „Hallo Welt!“ übersetzen.

  1. Wählen Sie eine übersetzte Textzeichenfolge basierend auf den Spracheinstellungen des Benutzers aus.

In Django können wir die Spracheinstellungen des Benutzers über eine Middleware abrufen und auf die aktuelle Sitzung festlegen. Die Django-Community stellt viele hervorragende Bibliotheken von Drittanbietern zur Verfügung, um diese Funktion zu erreichen, wie z. B. Django-Language-Utils und Django-Language-Switcher. Hier ist ein einfaches Middleware-Beispiel:

class LanguageMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        language = request.COOKIES.get('language')  # get language from cookies
        
        if language:
            translation.activate(language)  # set user language for the current session
            
        response = self.get_response(request)
        
        return response
Nach dem Login kopieren

In der obigen Middleware erhalten wir die Spracheinstellung des Benutzers aus dem Cookie und setzen sie auf die aktuelle Sitzung. Sobald wir die Spracheinstellungen des Benutzers haben, können wir _('Hello World!') verwenden, um die richtige Übersetzungszeichenfolge zu erhalten.

Zusätzlich zur Verwendung des Befehls gettext zum Extrahieren von Textzeichenfolgen, die übersetzt werden müssen, bietet Django auch erweiterte Übersetzungsfunktionen. Einer davon ist, dass Vorlagenvariablen übersetzt werden können. Zum Beispiel:

{% trans "Hello {{ name }}!" %}
Nach dem Login kopieren

In der Vorlage oben haben wir die integrierte Übersetzungsmethode von Django verwendet, um die Zeichenfolge „Hallo {{ name }}!“ zu übersetzen. Django erkennt automatisch die Vorlagenvariablen in diesem String und übergibt sie an das Übersetzungstool, damit das Übersetzungstool den String korrekt übersetzen kann.

Abschließend ist zu beachten, dass wir bei der Entwicklung einer mehrsprachigen Website Sprachcodes verwenden sollten, um verschiedene Sprachen zu identifizieren. Englisch ist beispielsweise en und Chinesisch ist zh-cn. Durch die Verwendung von Sprachcodes kann sichergestellt werden, dass unsere Website verschiedene Sprachen unterstützt und keine Probleme wie verstümmelte Zeichen auftreten.

Kurz gesagt: Die leistungsstarke Mehrsprachenunterstützung im Django-Framework ermöglicht Entwicklern die einfache Entwicklung mehrsprachiger Websites. Mit dem Befehl gettext können wir die zu übersetzende Textzeichenfolge extrahieren und mit dem PO-Editor in die Zielsprache übersetzen. Wir können dann Middleware verwenden, um die Spracheinstellungen des Benutzers abzurufen, und die integrierte Übersetzungsmethode von Django verwenden, um die richtige Übersetzungszeichenfolge zu erhalten. Letztendlich sollten wir Sprachcodes verwenden, um verschiedene Sprachen zu identifizieren.

Das obige ist der detaillierte Inhalt vonMehrsprachige Unterstützung im Django-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage