私たちはDjango
を私たちのバックエンドREST API
サーバとして使用しています。私はプッシュ通知として送信されているテキストを私たちのアプリに翻訳したいと考えています。私は翻訳の初心者です。Django翻訳 - 動的文字列の翻訳
テキストは設定ファイル内にあり、ユーザーごとに異なります。
NOTIFICATION_TEXT = {
'access_request': '%(user_name)s has requested to access your document %(story_name)s, please review '}
私は、Googleが機能を翻訳し、最後の文は、user_nameとstory_nameを理解与えられたが一定であれば、それは完全に翻訳しました。 REST
コールのAccept-language
ヘッダーで受け取ったロケールでユーザーに送信する前に、最終メッセージをラップすることができるDjangoで同様のマジックバンド機能を探していました。しかし、これは可能ではないようです。
私が理解しているように、翻訳する必要のあるテキストには、ugettext
で事前にマークし、言語とミドルウェアの設定を定義する必要があります。その後
django-admin makemessages -l de
を使用してlocale
特定のファイルを生成し、その特定のロケールの生成django.po
ファイルに参照するためのDjangoのために手動で翻訳されたテキストを与えます。
しかし、私のメッセージが動的で、ダイの中にあるという印をつける方法にはまっています。それとも別の方法がありますか?
編集:
データができ、この場合には、動的コンテキストを挿入する前に、メッセージに適切な変換関数を適用する必要が
data['msg'] = settings.NOTIFICATION_TEXT['access_request'] % \
dict(
user_name=get_user_name(sender),
story_name=story.story_name
)
これで、私は 'django.po'ファイルにabo "msgstr"を挿入しましたが、それでもまだ最終テキストを翻訳していません。私の 'settings.py'ファイルには' LANGUAGE_CODE = 'de''、 'USE_I18N = True'があります。ミドルウェアには、' django.middleware.locale.LocaleMiddleware'、 'Sesssionの後、Commonの前に'を追加しました。彼らが助けてくれるのかどうかは分かりません。 – garg10may
私に見える。デバッグを追加して、どの言語がアクティブになっているかを確認する必要があります。あなたはdjangoシェルでそれを試し、手動でドイツ語を起動するかもしれません。 ( 'django.utils.translation.activate( 'de')')。ところで、あなたは 'compilemessages'を呼び出しましたか? – schwobaseggl
Ran 'compilemessages'を実行し、手動で' de'を起動し、シェルからテストしましたが、翻訳された文字列を取得しませんでした。あなたが私のことを意味していたのですが、翻訳機能を適用した後に文脈を適用しなければなりませんでした – garg10may