6

おそらく私は明白な解決策を見落としているか、間違った方法を考えています...

限られた量のテキスト、データベース内の単語があり、flask / jinja /babelwebappでユーザーに翻訳して表示したいと思います。例えば。「running」は「activity」列の可能な値であり、ドイツのユーザーにとっては「laufen」である必要があります。

テンプレートとコードの単語が抽出されてカタログに入れられますが、カタログに追加の単語を入れるにはどうすればよいですか?簡単なテキストファイルエクストラクタはありますか?

私が考えることができる唯一のことは、.pyファイルを作成し、それらにたくさんの_('...')行を入れることですが、それはちょうど間違っていると感じます...そうですか?

4

2 に答える 2

4

gettext関数呼び出しのような「単語」を使用してmessages.txtを作成しました。

_('cycling')
_('running')

そしてそれをPythonソースとして私のbabel.cfgに追加しました:

[python: messages.txt]

わかりやすく、シンプルで、愚かですが、機能します。

于 2012-01-21T15:08:34.263 に答える
2

まず、http://flask.pocoo.org/snippets/4/から始めます。

次に、これらの「制限された」値を整数または列挙型としてデータベースに格納してから、これらすべての列挙型のルックアップテーブルをコードで作成する必要があります(Babelがそれらについて認識しているため)。

i18n_val = {0: _('running'), ...}
# Or multi-level dict with different categories:
i18n_all = {
  'activity': {
     0: _('running'), ...
  'foo': {
     0: _('bar..'), ...
  }
}

そして、テンプレートから翻訳された文字列にアクセスするのは、次のように簡単になりました。

{{ i18n_val[obj.activity] }}
{{ i18n_all['activity'][obj.activity] }}

i18n_valおよびi18n_all変数をすべてのテンプレートで使用できるようにするには、それらをコンテキストプロセッサに登録するだけです。

于 2012-01-15T16:34:14.903 に答える