Django翻译创建po和mo文件,但在翻译中失败并显示翻译占位符

 mobiledu2502871567 发布于 2023-01-09 13:26

我正在使用Django 1.6.5 virtualenv(Vitrual Environment)和apache2

我有以下settings.py结构:

from django.utils.translation import ugettext_lazy as _

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

LANGUAGE_CODE = 'tr_TR'
LANGUAGE_COOKIE_NAME = 'wm_lang'
LOCALE_PATHS = (
    '/home/mustafa/python/myproject/locale'
)

USE_I18N = True
USE_L10N = True

LANGUAGES = (
    ('tr', _(u'Türkçe')),
    ('en', _(u'English')),
)

我有一个模板文件看起来像那样

{% extends .... %}
{% load i18n %}

{% block content %}
    

{% trans 'Hosgeldin' %}

.... ....

我运行以下来创建po文件

django-admin.py makemessages  --locale=tr --locale=en

这会创建以下文件

/home/mustafa/python/myproject/locale/tr/LC_MESSAGES/django.po
/home/mustafa/python/myproject/locale/en/LC_MESSAGES/django.po

我应用翻译字符串,所以我的django.po翻译文件看起来像那样

于:

#: templates/websitesi/index.html:6
msgid "Hosgeldin"
msgstr "Welcome, that is a test"

TR:

#: templates/websitesi/index.html:6
msgid "Hosgeldin"
msgstr "Ho?geldiniz, bu bir deneme"

然后我用它们编译它们

django-admin.py compilemessages

和django 在两种语言的django.mo文件附近创建文件django.po.

但是当我访问该页面时,我看到Hosgeldin(翻译占位符)而不是翻译文本.

将{{LANGUAGE_CODE}}写入模板会显示所选的语言代码.当我的地址是someadress/en,语言代码显示为en......

我错过了什么?

更新:这是我的一个部分 urls.py

urlpatterns = patterns('',
    (r'^i18n/', include('django.conf.urls.i18n')),
)

urlpatterns += i18n_patterns('',
    url(r'^admin/docs/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

urlpatterns += staticfiles_urlpatterns()

urlpatterns += i18n_patterns('websitesi.views',
    url(r'^$', 'index', name='index'),  # This is my home page
                         ....
                         ....

然后我去my_local_server/my_local_server/trmy_local_server/en测试,但是这一切在转换失败.

当我通过my_local_server/tr/admin或去管理my_local_server/en/admin,django trqnslations工作得很好.

1 个回答
  • 最后,正如预期的那样,它被证明是一个错字.

    settings.py

    LOCALE_PATHS = (
        '/home/mustafa/python/myproject/locale'
    )
    

    但Django期望LOCALE_PATHS成为一个settings.py,所以添加一个逗号解决了这个问题......

    LOCALE_PATHS = (
        '/home/mustafa/python/myproject/locale',
    )
    

    2023-01-09 13:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有