2011-08-05 7 views
2

i18nの機械を使って翻訳された.pyファイルで特定の文字列を取得しようとしています。 .ptファイルの翻訳は問題ではありませんが、ファイルシステムのPythonコードで_( 'Something')を使用して翻訳しようとするたびに、そこにあるノルウェー語のテキストの代わりに常に英語のテキスト(デフォルト)が得られます。だから私は他のページテンプレートビットが正しく翻訳されている間、英語でPythonコードからの出力を見ることができます。Plone製品のファイルシステムでコンテンツを翻訳する

ハウツーまたはこれに似たものはありますか?

答えて

4

がために使用されるドメイン名です_('Something')ノルウェーの.poファイルで使用しているものと同じものがありますか?彼らは同じでなければならないので、あるケースでは 'plone'を使用し、もう1つのケースでは 'my.domain'を使用しないでください。

また、アンダースコア関数の呼び出しでは、文字列自体は変換されません。翻訳できる文字列のみを作成します。この文字列がテンプレート内で直接的に終了する場合は、そのタグにi18n:translate=""を追加する必要があります。一致するi18n:ドメインを使用してください。

それ以外の場合は、http://readthedocs.org/docs/collective-docs/en/latest/i18n/localization.html#manually-translated-message-idsのように手動でtranslateメソッドを呼び出す必要があります。 Plone 3と4の違いについては、Plone 4 migration guideをお読みください。

+0

これはうまくいきました。まさに私が必要としていた助けでした。あなたに投票するのに十分な評判はまだありません。 – user880151

3

_()は呼び出し時にテキストを変換せず、テンプレートにレンダリングされたときに翻訳されるMessageオブジェクトを返すことに注意してください。

意味:

  1. は、MessageオブジェクトをCONCATません。 "text %s" % _('translation')は動作しません。"text" + _('translation')
  2. テンプレートを使用してテキストをブラウザに送信しないと、翻訳されない可能性があります。たとえば、電子メールを生成した場合、Messageオブジェクトを手動で翻訳する必要があります。