【问题标题】:Django translation returning the same stringsDjango 翻译返回相同的字符串
【发布时间】:2012-12-29 14:01:12
【问题描述】:

我正在建立一个新的小项目,在 Django 1.4.3(英语和荷兰语)中尝试 i18n。但我认为我错过了一步,因为它没有翻译字符串。

谁能告诉我我需要做什么才能获得翻译后的字符串?如何调试?

settings.py

gettext = lambda s: s
LANGUAGES = (
  ('nl', gettext('Dutch')),
  ('en', gettext('English')),
)

LOCALE_PATH= (
  '/var/www/test/locale',
)
# django.middleware.locale.LocaleMiddleware is also included @ MIDDLEWARE_CLASSES

urls.py 文件:

urlpatterns = i18n_patterns('',
    #home
    url(r'^$','bday.views.home',name="index"),
)

views.py 在项目中:

from django.utils.translation import ugettext as _
def home(request):
  text=_("Welcome!")
  return HttpResponse("LANG[{}], TEXT[{}]".format( request.LANGUAGE_CODE, text ) ) 

/var/www/test/locale/nl/LC_MESSAGES/django.po

#: bday/views.py:16
msgid "Welcome!"
msgstr "Welkon in Nederlands"

/var/www/test/locale/en/LC_MESSAGES/django.po

#: bday/views.py:16
msgid "Welcome!"
msgstr "Welcome in English"

消息确实被编译了,我明白了:

./manage.py compilemessages
processing file django.po in /var/www/test/locale/nl/LC_MESSAGES
processing file django.po in /var/www/test/locale/en/LC_MESSAGES

但在我的应用中,我得到:

$ curl "http://www.host.com:8000/nl/" 
LANG[nl], TEXT[Welcome!]
$ curl "http://www.host.com:8000/en/" 
LANG[en], TEXT[Welcome!]

【问题讨论】:

  • 您需要使用 django.utils.translation.activate 设置实际语言
  • 感谢您的回复。我认为这是由 urlconf 自动完成的。将其添加到代码中(直接在导入之后)不会改变任何内容。
  • $ mv locale{,old}/ $ mkdir locale $ ./manage.py makemessages -l en $ vim locale/en/LC_MESSAGES/django.po $ ./manage.py compilemessages 没有变化

标签: django internationalization gettext


【解决方案1】:

您是否在settings.py 中设置了LOCALE_PATHS

这仅适用于您在项目目录中有翻译的情况。

【讨论】:

  • 谢谢。我设置了 LOCALE_PATH 而不是 LOCALE_PATHS。愚蠢的错字。感谢您的帮助。
猜你喜欢
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2015-07-31
  • 2016-12-18
相关资源
最近更新 更多