生成的.po文件在makemessages之后有msgstr“”

时间:2017-01-23 21:42:40

标签: python django localization web multilingual

我正在使用Django本地化API为我的网站提供多语言功能。但在生成.po文件后,所有msgstr都是空白的。我没有得到任何翻译的字符串。

以下是setting.py配置

MIDDLEWARE_CLASSES = (
    'framework.botdetection_middleware.AvoidBotsMiddleware',
    'framework.cl_redirect.MainSiteRedirect',
    'framework.ssl_redirect.SSLRedirect',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.common.CommonMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',    
    'framework.wlabel_middleware.CustomDomainMiddleware',    
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'social.apps.django_app.middleware.SocialAuthExceptionMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.middleware.locale.LocaleMiddleware',
)

# Implementation of Localiztion

# Path to locale folder
LOCALE_PATHS = (
     os.path.join(APP_DIR, 'locale').replace('\\', '/'),
)

# The language your website is starting in
LANGUAGE_CODE = 'en'

# The languages you are supporting
ugettext = lambda s: s
LANGUAGES = (
    ('en', ugettext('English')),
    ('fr', ugettext('French')),
    ('pl', ugettext('Polish')),
)

# Use internationalization
USE_I18N = True

# Use localization
USE_L10N = True

我使用以下命令创建.po文件。

django-admin makemessages --locale=fr --extension=html --ignore=env --ignore=*.py

以下是我得到的输出

msgid "Change Payment Method"
msgstr ""

msgid "Return to Purchase Details"
msgstr 

我错过了什么。另外如何在不使用url.py

的情况下加载我的网站的翻译版本

1 个答案:

答案 0 :(得分:0)

这是正常行为。您必须自己翻译msgstr部分并使用manage.py compilemessages进行编译。 RTFM。