1

言語ファイル (テンプレートからのメッセージを含む) を作成し、コンパイルしました。

設定ファイルにあるものは次のとおりです。

USE_I18N = True
LOCALE_PATHS = (
    '/srv/www/rewards_system/locale',
)

ugettext = lambda s: s
LANGUAGES = (
    ('bg', ugettext('Bulgarian')),
    ('en', ugettext('English')),  
)
LANGUAGE_CODE = 'bg'
USE_L10N = True

その結果、関数を使用してコードから実行されるすべての翻訳はugettext()ブルガリア語に完全に翻訳されますが、テンプレート内からはすべて({% trans "word" %})英語で表示されます。

私は{% load i18n %}自分のテンプレートの上にあります。

レンダリング機能で読み込んでいます

render(request,
       'company/signup.html', 
       { 'form': form })

つまり、RequestContext がテンプレートに送信されます。

ここで何が間違っていますか?

ありがとう

4

1 に答える 1

4

同様の問題があり、最終的に を使用して解決しstraceました。私の問題は、ディレクトリ内の言語サブディレクトリの名前が正しくないことが原因でしたlocalesettings.pyブラウザーによって渡される言語コードまたは構成された言語コードにはハイフン (例: zh-CN) が含まれているのに対し、ディレクトリ名にはアンダースコア (例: ) が含まれている必要があるため、少し誤解を招く可能性がありますlocale/zh_CNL。そして、これは実際に Django が検索しているものです。

stat("/myapp/locale/zh_CN/LC_MESSAGES/django.mo", 0x7fff08a385c0) = -1 ENOENT (No such file or directory)

ディレクトリの名前がru_RUDjango に変更されると、ディレクトリを見つけることができました。

stat("/home/webcookies/wps2/locale/ru_RU/LC_MESSAGES/django.mo", {st_mode=S_IFREG|0664, st_size=689, ...}) = 0

また、翻訳の正確性をテストするのに役立つ次のコード スニペットも見つけました。

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

from django.utils.translation import ugettext as _
from django.utils.translation import activate
activate('ru-RU')
print(_("English text to be translated"))
于 2014-03-28T14:47:57.363 に答える