3

背景情報: django 1.6.2、python 2.7.5

最近、django プロジェクトに国際化を適用し始めました。アプリのモデル、ビュー、およびテンプレート (メトリクスと呼ばれます) で機能させることができました。ただし、静的 js ファイルに国際化を適用しようとするとgettext()、ブラウザーの言語を無視して、渡した文字列が常に返されるため、うまくいかないようです。一方、{% trans ... %}(これらの js 静的ファイルを使用する) html テンプレートのタグは正しく翻訳されます。これは、js 静的ファイルの国際化に問題があることを示しています。誰でもガイダンスや提案を提供できますか?

これは私のプロジェクト構成の要約です:

私が含めたプロジェクト設定で:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
)
LANGUAGES = (
  ('es', _('Spanish')),
  ('en', _('English')),
)
LOCALE_PATHS = (
    os.path.join(BASE_DIR,'locale'),
    os.path.join(BASE_DIR,'metrics/'),
)
USE_I18N = True
USE_L10N = True

js 静的ファイルに関する djangojs.po および .mo ファイルはルート ディレクトリにある locale フォルダーにありますが、django.poおよび.moファイルアプリlocale/es/LC_MESSAGESフォルダーにあります。適切なディレクトリと両方から実行django-admin.py makemessages -l esしました(冗長かもしれませんが...)。.po ファイルには FUZZY タグがないことに注意してください。django-admin.py makemessages -d djangojs -l esdjango-admin.py compilemessages

プロジェクトの url.py ファイルに次を含めました。

js_info_dict = {
    'packages': ('metrics',),
}
urlpatterns = patterns('',
    url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
...
)

私のdjangojs.po.moファイルはルートディレクトリにあるので、おそらくこの部分は間違っていますが、アプリディレクトリにそれらを見つけようとしましたが、どちらも機能しませんでした.

最後にgettext、静的 js ファイルでの使用例 (d3js を使用):

svg.append("g").append("text")
  .attr({"x":0,"y":17})
  .style({"text-anchor":"middle","fill":"black"})
  .text(gettext('Schedule'));

助言がありますか?膨大な書き込みで申し訳ありませんが、できるだけ多くの情報を提供しようとしています.

4

0 に答える 0