背景情報: 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 es
django-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'));
助言がありますか?膨大な書き込みで申し訳ありませんが、できるだけ多くの情報を提供しようとしています.