Django翻译在生产环境中无法工作。

8

我已经为不同城市的站点进行了翻译,它在开发机上运行良好。但是在生产服务器上发布后,没有显示任何翻译。

但是它能正确显示可用语言和当前语言。

这是我的settings.py:

USE_I18N = True
USE_L10N = True
LANGUAGES = [
    ('ru-spb', _('SaintP')),
    ('ru-msk', _('Moscow')),
]

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'nordicsite/locale'),
)

这里有一个语言检查的模板:
 {% load i18n %}
 {% get_current_language as LANGUAGE_CODE %}
 {% get_available_languages as LANGUAGES %} 
 {% get_language_info_list for LANGUAGES as languages %}

 {{server}}<br/>
 {% trans 'Test 2' %}<br/>
 {{LANGUAGE_CODE}}<br/>
 {% for language in languages %}
     {{ language.name_local }} ({{ language.code }})<br/>
 {% endfor %}
 <br/>
 {% for path in paths %}
     {{path}}<br/>
 {% endfor %}

开发环境输出:

Тест 1 Питер
Тест 2 Питер
ru-spb
Русский (ru) 
Русский (ru) 

/*****/nordicsite/locale

生产环境输出:

Test 1
Test 2
ru-spb
Русский (ru) 
Русский (ru) 

/*****/nordicsite/locale

有什么可能出错呢?


你是否已经将.po文件编译成.mo文件并部署到生产环境中了? - bruno desthuilliers
哦,对了:你也重启了服务器进程吗? - bruno desthuilliers
@bruno-desthuilliers 是的,文件已部署,locale_paths 也正确。我已要求托管提供商重新启动我的用户进程。 - Владимир Трифонов
请注意,每次更新代码时都需要重新启动服务器进程,因此您可能需要与您的主机提供商确认如何自行执行此操作。 - bruno desthuilliers
1个回答

5

最后我弄清楚了问题所在。我的开发机是Mac,而生产环境是Ubuntu。而且它不支持像ru-spb和ru-msk这样的伪语言代码。我将其更改为ru-ru和ru-ua,然后就可以正常工作了。

还有一件事。Ubuntu需要locale文件夹为ru_RU(而不是ru_ru)。


1
我尝试了你展示的所有建议,但是我的网站翻译仍然无法正常工作。 - Cristian Flórez
我在locale文件夹中更改了大小写,并将LANGUAGE_CODE更改为我的“第二”语言,它起作用了。它总是回退到英语或使用我的第二语言,在这个例子中应该是ru_RU。 - Joel Carneiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接