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. 我的问题是由目录内语言子目录的名称不正确引起的locale。这有点误导,因为浏览器传递或配置的语言代码settings.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 回答