2012-11-07 3 views
7

私のjsi18n JavaScriptで空のカタログに終わるつもりです。私はEmpty catalog when internationalizing JavaScript codeを含むStackOverflowのすべてのソリューションを試しましたが、カタログはまだ空です。Django JavaScriptの翻訳は、空のカタログ(i18n/jsi18n)

私のセットアップはこれです:私は

# Where to find locale 
LOCALE_PATHS = (
    os.path.join(SITE_ROOT, 'locale'), 
) 

を持っているsettings.pyで

project_dir 
- locale 
    - nl (contains LC_MESSAGES with django.po and djangojs.po) 
- app1 
- app2 
- main_app 
    - settings.py 
    - urls.py 
    - wsgi.py 

SITE_ROOTは私のプロジェクトのディレクトリへの絶対パスであるので、これはURLで

に変換されます。私は持っています

# i18n 
js_info_dict = { 
    'domain': 'djangojs', 
    'packages': ('wrnpro',), 
} 

および

(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), 

私のURLの一部として。私はアプリを実行し、http://localhost:8000/jsi18n/を呼び出す場合

は、私は私が見つけることができるなどの設定のすべてのバリエーションを試してみましたこれまでのところ

/* gettext library */ 
var catalog = new Array(); 
function pluralidx(count) { return (count == 1) ? 0 : 1; } 
… 

を得るが、カタログは空のまま。

make messagescompile messagesを実行しているときに、JavaScript取得のテキスト文字列が見つかり、翻訳されています。 django.poと.moファイルはロケールディレクトリにあります。

誰でも?

+0

いずれの提案もうまくいかなかったようです。私は一週間ほどそれを残して、ほとんどすべてのアップデートをインストールし、金曜日の朝に座ってこの問題を取り除くと、それ自体が修正されました。私は、JavaScriptの翻訳が現在機能しているのを見て、それ以来作業しています。私は何がこれを引き起こしたのか分かりません。私のロケールディレクトリはまだプロジェクトレベルにあります。 – dyve

答えて

1

現在のユーザーの言語については、翻訳が完了していますか、またはスタブがありますか?カタログには、実際に翻訳された文字列の値のみが含まれます。

つまり、あなたがあなたの英語のpoファイルでこれを持っている場合:(あなたが英語でそれをアクセスしている場合)

#: static/js/events.js:159 
msgid "Open side panel" 
msgstr "" 

何がカタログに表示されません。しかし、あなたはこれを持っている場合:

#: static/js/events.js:159 
msgid "Open side panel" 
msgstr "Open side panel" 

それからあるでしょう。

+0

私はdjangoカタログとdjanojsカタログの両方に100%の翻訳をしています。英語(オランダ語)からオランダ語(nl)に翻訳します。 – dyve

3

同じ問題がありました。私のロケールディレクトリを自分のプロジェクトフォルダから自分のアプリケーションフォルダに移動したとき、それは働いていたので、makemessagesはアプリレベルで実行する必要があります。私はあなたの設定ファイルにLOCALE_PATHSが必要と思わない。

5

これは私のために働いてしまったものです:

js_info_dict = { 
    'domain': 'django', 
    'packages': None, 
} 

urlpatterns = [ 
    url(r'^jsi18n/$', javascript_catalog, js_info_dict, name='javascript-catalog'), 
    # ... 
] 

はまだ動作していませんか?トラブルシューティングのヒント:

なぜこれが動作するのか分かりませんが、どのように動作させるかを知る方法を教えていただけます。同じトラブルシューティング手法を使用している場合、多分あなたは方法を見つけるでしょう。私はその後、domainpackagesに異なる値で実験

catalog, plural = get_javascript_catalog(locale, domain, packages) 

、右:私はラインに着くまで、私は、javascript_catalogに足を踏み入れ、PDBを使用して次に

def javascript_catalog_pdb(*args, **kwargs): 
    import pdb 
    pdb.set_trace() 
    return javascript_catalog(*args, **kwargs) 

url_patterns = [ 
    url(r'^jsi18n/$', javascript_catalog_pdb, js_info_dict, name='javascript-catalog'), 
    ... 
] 

:私はこのようなPythonのデバッガを使用しました私が必要とする値を発見するまで、デバッガにはありました。

関連する問題