2016-09-16 9 views
1

現在、私はDjangoのjavascriptファイルを翻訳しようとするとこの問題が発生します。私はurl(r'^jsi18n/$', javascript_catalog, js_info_dict, name='javascript-catalog'),をurls.pyに持っていて、それをテンプレートに入れます。これは翻訳に問題ではないようですが、django-admin.py makemessagesコマンドを実行すると、いくつかのエラーが発生し、その理由がわかりません。Djangoはdjangojsのmakemessagesできません

$ django-admin.py makemessages -d djangojs -l nl_NL --keep-pot 
    CommandError: errors happened while running msguniq 
    /Users/../../src/locale/djangojs.pot:120: context separator <EOT> within string 
    /Users/../../src/locale/djangojs.pot:121: context separator <EOT> within string 
    msguniq: found 2 fatal errors 

は、これは私が、私は空の文字列でこれらの行を削除し、再度コマンドを実行すると、コマンドが実行された後

#: static/jsi18n/djangojs.js:38 static/jsi18n/djangojs.js:46 
#: static/jsi18n/nl/djangojs.js:84 static/jsi18n/nl/djangojs.js:92 
msgid " " 
msgid_plural "" 
msgstr[0] "" 
msgstr[1] "" 

、それは単にそれらを再び追加しますdjangojs.potファイルで見つけるものです。誰もがこの問題を以前に持っていましたか?

+0

.potに記載されているファイルには、同じmsgid文字列(空白)が含まれているようです。なぜこれらのjsファイルは翻訳のためにスキャンされますか? /nl/djangojs.jsはオランダ語の翻訳に専念しているようです。なぜそれに翻訳文字列が含まれていますか? – allcaps

+0

私は他のものを削除しましたので、これは '#:static/jsi18n/nl/djangojs.js:84 static/jsi18n/nl/djangojs.js:92'のみです。それでもエラーですので、同じ文字列を持つわけではありません。ここで間違っています(これはdjangojs.js:84です): 'var value = django.gettext(context + '\ x04' + msgid);'。 \ x04や何か@allcapsを処理できないようです – dnsko

答えて

0

djangojs.jsファイルの\x04文字列を削除し、空の文字列を残してこの問題を解決しました。これは素晴らしい修正ではありませんが、私にとってはうまくいくようです。私はこのチケットに関するいくつかをhttps://code.djangoproject.com/ticket/17008で読んでいます。これは、javascriptファイルでこれをエスケープできないようです。

./static/jsi18n/djangojs.js:90: warning: Empty msgid. It is reserved by GNU gettext: 
             gettext("") returns the header entry with 
             meta information, not the empty string. 

これは私が得る警告ですが、今でもこれは翻訳の問題を修正しているようです。

関連する問題