2016-04-29 11 views
0

私はDjango==1.8.4を使用しています。 Djangoアプリケーション内変数としてugettextに渡された.poファイルへのグリフ文字列

私は次のように翻訳されたメッセージを取得するにはugettextを使用しています:Djangoの公式ドキュメントで

id = 1 
message = "Some message %(id)s" % {'id':id} 
return JsonResponse({'message': ugettext(message)}) 

はugettextで変数を翻訳に関するノートがあります。

( 前の2つの例のように、変数または計算された値を使用したとの注意点は、Djangoの翻訳文字列検出 ユーティリティ、ジャンゴ管理者makemessagesの節では、これらの の文字列を見つけることができないということです。。より多くのmakemessagesの節以降の

出典:Django documentation page

ugettextのすべての呼び出しをリファクタリングすることなく、自動的に.poファイルをするために、メッセージをGRUBする他の方法があるです(DIRECを渡しますtの文字列を変数の代わりにugettextに入れます)?

答えて

1

変数を代入する前に文字列リテラルでugettextを呼び出します。

message = ugettext("Some message %(id)s") % {'id':id} 
+0

ありがとうございます。問題は、そのようなリファクタリングを回避する方法です。 –

+0

私はそうは思わない。変数 'message'は毎回異なるので、.poファイル内の各バージョンのメッセージを生成する必要があります。 どのように.poファイルのメッセージを表示しますか?あなたはJsonResponseへの引数の中の{}を忘れてしまいました。 'JsonResponse({'メッセージ':ugettext(メッセージ)})' – Alvra

+0

**正式な**方法は、ソースコード内のすべての翻訳されたソース文字列に注釈を付けることです。つまり、サードパーティのツールが、すべてのこれらの文字列を見つける、すなわち静的解析のために。 (Obv、 'xx import ugettext from _')この"リファクタリング "は、ユーザが扱う文字列' _() 'ごとにたった3文字です。別の方法は、独自のツールチェーンを構築することです...そして、あなたのコードを後でサポートしなければならない他の開発者に説明してみてください。 –

関連する問題