8

jsi18n JavaScript でカタログが空になってしまいます。JavaScriptコードを国際化するときにカタログを空にするなど、StackOverflowですべてのソリューションを試しましたが、カタログはまだ空です。

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

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

settings.py には

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

SITE_ROOT は私のプロジェクト ディレクトリへの絶対パスなので、これは次のように変換されます。

urls.py には

# 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 ファイルは locale ディレクトリにあります。

誰?

4

3 に答える 3

5

これは私のために働いたものです:

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

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

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

これが機能する理由は特にわかりませんが、機能させる方法をどのように見つけたかをお話しできます。同じトラブルシューティング手法を使用すれば、方法も見つかるかもしれません。次のように、Pythonデバッガーを使用しました。

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'),
    ...
]

次に、PDB を使用して、次javascript_catalogの行に到達するまで に進みました。

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

次に、必要な値が見つかるまで、デバッガーでdomainとのさまざまな値を試しました。packages

于 2016-08-12T18:28:25.933 に答える
2

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

つまり、英語の po ファイルにこれがある場合:

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

カタログには何も表示されません (英語でアクセスしている場合)。しかし、これがある場合:

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

それからあるでしょう。

于 2012-11-07T10:52:57.960 に答える