Python, flask, babel-сообщение и т.д. Испанский - Как

Я совершенно запутался, пытаясь использовать babel с flask для языкового перевода.

Предположим следующее. Пользователь предпочитает испанский язык английскому. У меня есть переменная, которая отмечает это:

g.user.default_language='sp'

Допустим, у меня есть сообщения, одно на английском, а другое на испанском, которые я хочу отобразить. «Пожалуйста» против «пор фовор»

<html>
<h1>INSERT TRANSLATION HERE</h1>
</html>

Вот мой базовый конфигурационный файл babel

[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_

Итак, куда идет «Пожалуйста» и как оно сопоставляется с «por fovor», если пользовательский префикс испанский?

Тогда как мне звонить из шаблона на основе языкового профиля?

Спасибо


person Tampa    schedule 14.08.2012    source источник
comment
Это пор пользу   -  person Marcelo Bielsa    schedule 03.04.2017


Ответы (2)


Flask-Babel — действительно отличный проект. Если вы ищете jinja, i18n и Flask в Google, вы найдете несколько полезных примеров. Дополнительную информацию см. в документах. Здесь я приведу небольшой пример:

<сильный>1. Создайте каталог переводов:

my_website/translations/pt/LC_MESSAGES/
my_website/translations/en/LC_MESSAGES/

Предположим, что ваш сайт на португальском и английском языках. Это ручной способ сделать это. Вам лучше использовать pybabel init команду.

<сильный>2. Создайте файл с именем messages.po (эти файлы будут содержать переведенные строки):

$ touch my_website/translations/pt/LC_MESSAGES/messages.po 
$ printf "msgid \"Hello world\"\nmsgstr \"Olá mundo\"" > my_website/translations/pt/LC_MESSAGES/messages.po
$ cat my_website/translations/pt/LC_MESSAGES/messages.po

Он создаст файл со следующим содержимым:

msgid "HELLO WORLD"
msgstr "Olá mundo"

<сильный>3. Скомпилировать перевод

 $ pybabel compile -d translations

<сильный>4. Добавлен код строки в основной файл приложения вашего фляги.

app.config['BABEL_DEFAULT_LOCALE'] = 'pt_BR' #(context locale to load language).

<сильный>5. Используйте функцию _() в файле шаблона jinja, чтобы увидеть строку Olá mundo.

<h1>{{ _('HELLO WORLD') }}</h1>

Я надеюсь, что это будет полезно.

person Jonathan Simon Prates    schedule 15.08.2012
comment
А как насчет переводов в js-коде? Это действительно возможно? - person jarandaf; 13.03.2014
comment
@jaranda Я не знаю, но, может быть, вы можете перевести на стороне сервера и отправить клиенту как jsonp. - person Jonathan Simon Prates; 13.03.2014

Вы выполнили перевод pybabel, как описано в руководстве? http://packages.python.org/Flask-Babel/

И см. http://jinja.pocoo.org/docs/templates/#i18n-in-templates и http://jinja.pocoo.org/docs/integration/#babel-integration

Кажется, вы можете просто использовать _()

person Martin Samson    schedule 14.08.2012