próbuję włączyć tag trans
i zrobiłem i18n.html szablonu Test:Jak włączyć znacznik {% trans%} w szablonach jinja?
{% trans %}For sale{% endtrans %}--{{message}}--{{decimal_format}}
Tu jest mój kod Pythona według manpages:
from webapp2_extras import i18n as multilingua
import jinja2
from webapp2_extras.i18n import lazy_gettext as gettext
from webapp2_extras.i18n import lazy_gettext as _
from jinja2 import Environment, FileSystemLoader
jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions=['jinja2.ext.i18n'])
# The code below seems wrong since it is django but it was the only way I could make the page load
jinja_environment.install_gettext_translations(django.utils.translation)
class HelloWorldHandler(webapp2.RequestHandler):
def get(self):
# Set the requested locale.
locale = self.request.GET.get('locale', 'pt')
multilingua.get_i18n().set_locale(locale)
message = multilingua.gettext('For sale')
#django.utils.translation.activate('pt')
template = jinja_environment.get_template('templates/i18n.html')
decimal_format = multilingua.I18n(self.request).format_decimal(1000)
self.response.out.write(template.render(message=message, decimal_format=decimal_format))
nie mogłem zrobić to praca bez django i dlatego pytam, jak stracić tłumaczenie django i pozostać przy webapp2.i18n + jinja zamiast tego.
Była też dyskusja w a thread, w której nie tylko ja twierdzę, że dokumentacja jest nieco niekompletna lub trudna do znalezienia. Czy mógłbyś odpowiedzieć lub skomentować, co jest zalecanym sposobem działania tagu trans i dlaczego muszę dołączyć jinja_environment.install_gettext_translations(django.utils.translation)
?
Kiedy próbuję usunąć moje użycie django, tracę również funkcje webapp2.i18n. Moje pliki ustawień narodowych znajdują się w ustawieniach narodowych/... i conf/locale .. ponieważ pierwsze jest domyślne dla webapp2, a drugie jest domyślne dla tłumaczeń django, więc mogłem naprawdę użyć kilku wskazówek dotyczących najlepszych praktyk, aby pozbyć się zależność django i używanie webapp2 i jinja do renderowania moich lokalizacji.
self.response.out.write(template.render(message=message, decimal_format=decimal_format))
File "/media/Lexar/montao/montaoproject/jinja2/environment.py", line 894, in render
return self.environment.handle_exception(exc_info, True)
File "/media/Lexar/montao/montaoproject/templates/i18n.html", line 2, in top-level template code
{{ _('For sale') }}--{{message}}--{{decimal_format}}
UndefinedError: 'gettext' is undefined
Dziękuję
Nieudokumentowane rozwiązanie/obejście, które powoduje, że moje tagi trans jinja wor wor k: 'from webapp2_extras import i18n jinja_environment.install_gettext_translations (i18n)' –
Byłoby interesujące wiedzieć, jak znalazłeś to nieudokumentowane rozwiązanie/obejście. – eyquem
dla każdego, kto to czyta, oto aktualny przewodnik, jak to zrobić http://mikeshilkov.wordpress.com/2012/07/26/enable-jinja2-and-i18n-translations-on-google-appengine/ –