2012-08-02 10 views
11

Ich arbeite derzeit an Sprachlokalisierung von Khan Academy, ich habe die Quelle 8051 von Google Code heruntergeladen. Nach der Umfrage Informationen und Anzeigen von Code online, wird das Projekt mit jinja2 als Templating Sprache gemacht. Ich kann Babel benutzen, um meine Arbeit zu erledigen.Sprachlokalisierung von Khan Academy

Mit den folgenden Arbeiten kann ich endlich ermöglichen {%trans%} und {%endtrans%} Tag Parse-Lage durch die Template-Engine mit folgenden Änderung:

in webapp2_extra/jinja2.py:

from django.utils import translation 
    env.install_gettext_translations(translation) 

in config_jinja2.py

-- put following line 
"extensions": ['jinja2.ext.i18n'] 

jedoch meine übersetzt Vorlage von *.mo und *.po (fr om pybabel) übersetzt das Tag innerhalb des Wertes nicht in eine bestimmte Sprache. Ich denke, die Babel-Integration sollte von webapp2_extra.i18n.py kommen, aber ich weiß nicht, wie ich es aktivieren kann.

Wie wenige Beiträge in Google erwähnt, dass folgender Code funktionieren könnte:

from webapp2_extras import i18n 
    env.install_gettext_translations(i18n) 

es aber nicht, weil es nicht {%trans%} Tag nicht erkennt. Also hat jemand die Erfahrung, an dem gleichen Problem zu arbeiten oder hat irgendeinen Vorschlag zu jinja2 i18n Problem?

Schätzen Sie alle Vorschläge.

+0

Sind Sie die .mo und po neu zu kompilieren. Dateien mit den Gettext-Dienstprogrammen? Hört sich trotzdem an, dass sie ein ähnliches System wie Django für Übersetzungen haben, also könntest du auch Djangos Dokumentation überprüfen – Lorenzo

+0

Arbeitest du in der Khan Academy? –

+0

Nein, ich bin nur ein Freiwilliger, um Khan Academy ins Chinesische zu übersetzen. Versuchen, einen schlaueren Weg zu finden, anstatt HTML zu ändern. –

Antwort

1

Hier ist ein Modul, das für mich funktioniert (übersetzt {% trans %} Markup in einer jinja2 Vorlage).

main.py

import webapp2 
from webapp2_extras import i18n 
from jinja2 import FileSystemLoader, Environment 

env = Environment(loader=FileSystemLoader('/path/to/my/templates'), 
     extensions=['jinja2.ext.i18n']) 
env.install_gettext_translations(i18n) 

class HelloWorld(webapp2.RequestHandler): 

    def _find_locale(self): 
     #needs customization 
     lang = self.request.accept_language.best_match(('en-us', 'fr')) 
     if ('fr' in lang): 
      return 'fr_FR' 
     return 'en_US' 

    def get(self): 
     i18n.get_i18n().set_locale(self._find_locale()) 
     template = env.get_template('hello.html') 
     self.response.write(template.render()) 

config = {'webapp2_extras.i18n': {'translations_path': './i18n'}} 

app = webapp2.WSGIApplication([ 
    ('/', HelloWorld), 
], config=config, debug=True) 

def main(): 
    from paste import httpserver 
    httpserver.serve(app, host='127.0.0.1', port='8080') 

if __name__ == '__main__': 
    main() 
Verwandte Themen