4

私は、言語翻訳のためにフラスコでバベルを使用しようとすることに完全に混乱しています。

以下を想定してみましょう。ユーザーは英語よりもスペイン語を好みます。これをマークする変数があります:

g.user.default_language='sp'

1つは英語で、もう1つはスペイン語で、表示したいメッセージが必要だとしましょう。「お願いします」と「お願いします」

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

ここに私のベースバベル設定ファイルがあります

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

では、ユーザー設定がスペイン語の場合、「Please」はどこに行き、「por fovor」にどのようにマッピングされるのでしょうか?

では、言語プロファイルに基づいてテンプレートから呼び出す方法を教えてください。

ありがとう

4

2 に答える 2

6

Flask-Babelは本当に素晴らしいプロジェクトです。Google で jinja、i18n、Flask を検索すると、役立つ例がいくつか見つかります。詳細については、ドキュメントを参照してください。ここで、少し例を示します。

1. 翻訳ディレクトリを作成します:

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

サイトがポルトガル語と英語であると仮定します。それを行うのは手動の方法です。pybabel init commandを使用したほうがよいでしょう。

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. Olá mundo_()文字列を表示するには、jinja のテンプレート ファイルで関数を使用します。

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

役に立つことを願っています。

于 2012-08-15T22:13:14.957 に答える
3

ガイドで説明されているように、pybabel の翻訳を実行しましたか? http://packages.python.org/Flask-Babel/

http://jinja.pocoo.org/docs/templates/#i18n-in-templatesおよびhttp://jinja.pocoo.org/docs/integration/#babel-integrationを参照してください。

単純に使えるようです_()

于 2012-08-14T15:42:53.893 に答える