So erstellen Sie eine internationalisierte Google App Engine-Anwendung

Ich möchte meine Python GAE Website in der eigenen Sprache des Benutzers zur Verfügung stellen, wobei nur die Werkzeuge direkt in App Engine verfügbar sind. Dafür möchte ich GNU-Gettext-Dateien (.po und .mo-Dateien) verwenden.

Hat jemand erfolgreich Python Google App Engine und gettext Dateien kombiniert? Wenn ja, können Sie bitte die Schritte, die Sie verwendet haben?

  • Python 3 gettext funktioniert nicht für argparse
  • Django makemessages Fehler Unbekannte Codierung "utf8"
  • Django-Umschaltung, für einen Codeblock, umschalten die Sprache, so dass Übersetzungen in einer Sprache durchgeführt werden
  • I18n mit jinja2 + gAE
  • Django 1.2.3 - Internationalisierung - makemessages erkennt nicht alle Saiten
  • Javascript i18n mit gettext und .po Dateien
  • Ich hatte eine Diskussion in der Google-Gruppe von GAE begonnen , aber ich konnte es nicht herausholen, wie ich es gerne machen würde: Ich möchte keine externen Abhängigkeiten hinzufügen, wie Babel (in der Diskussion vorgeschlagen). Ich möchte einfache Vanille Google App Engine verwenden, also kein manuelles Update von Django oder diese Art von Sachen.

    Zuerst werde ich mit der Sprache beginnen, die vom Browser gesendet wird, also keine Notwendigkeit, die Sprache manuell durch die Verwendung von Cookies etc. zu zwingen. Allerdings könnte ich eine sprachverändernde Funktion später hinzufügen, sobald die grundlegende Internationalisierung funktioniert.

    Als Hintergrund Hinweis, um Ihnen mehr Details über das, was ich versuche zu tun, möchte ich Internationalisierung Issue Tracker Tracker , eine Open-Source-Anwendung, die ich auf Launchpad gehostet haben. Ich beabsichtige, die Übersetzungsplattform von Launchpad zu verwenden (erkläre, warum ich die .mo-Dateien verwenden möchte). Sie können einen Blick auf den Quellcode in es ist Bazaar Zweig (sorry kein Link wegen Stackoverflow Spam Prävention Grenze für neue Benutzer …)

    Vielen Dank für die Hilfe bei diesem Projekt!

  • Erstellen eines Singletons in Python
  • Muss, um einige Basisklassen Verhalten in einem Python-Test Fall zu verspotten
  • Klassen im Python Teil 1
  • 2 Solutions collect form web for “So erstellen Sie eine internationalisierte Google App Engine-Anwendung”

    Sie können das Django Internationalisierungswerkzeug verwenden, wie hier erklärt.

    Sie sagen auch, dass es keinen einfachen Weg gibt, dies zu tun.

    Ich hoffe das hilft dir 🙂

    Da meine Bedürfnisse einfach waren, habe ich einen einfachen Hack statt (nicht verfügbar) gettext benutzt. Ich habe eine Datei mit String-Übersetzungen erstellt, translate.py . Ähnlich wie folgt:

     en={} ru={} en['default_site_title']=u"Site title in English" ru['default_site_title']=u"Название сайта по-русски" 

    Dann habe ich im Hauptcode eine Funktion definiert, die ein Wörterbuch mit Übersetzungen in die am besten geeignete Sprache aus der Liste zurückgibt (die erste, die eine Übersetzung verwendet hat oder Englisch):

     import translate def get_messages(languages=[]): msgs=translate.en for lang in languages: if hasattr(translate,lang): msgs=getattr(translate,lang) break return msgs 

    Verwendung:

     msgs = get_messages(["it","ru","en"]) hi = msgs['hello_message'] % 'yourname' 

    Ich habe auch eine Helper-Funktion definiert, die eine Liste von Sprachen aus Accept-Language Header extrahiert.

    Es ist nicht die flexibelste Lösung, aber es hat keine externen Abhängigkeiten und arbeitet für mich (in einem Spielzeugprojekt). Ich denke, translate.py kann automatisch aus Gettext-Dateien generiert werden.

    Falls du mehr sehen willst, ist meine eigentliche Quelle hier .

    Python ist die beste Programmiersprache der Welt.