首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django翻译制造误差

Django翻译制造误差
EN

Stack Overflow用户
提问于 2018-01-04 07:43:38
回答 2查看 826关注 0票数 0

我正在创建django多语种网站。

Settings.py

代码语言:javascript
复制
USE_I18N = True

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.i18n',
            ],
        },
    },
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',

]
from django.utils.translation import ugettext_lazy as _

LANGUAGES = (
    ('en', _('English')),
    ('de', _('German')),
)
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

模板:

代码语言:javascript
复制
<h5>{% trans "Hello, this is testing page" %}</h5>

网址:

代码语言:javascript
复制
from django.conf.urls.i18n import i18n_patterns

from django.conf.urls import  include, url

    urlpatterns  = [
      url(r'^rev/', rev, name="rev"),
      url(r'^userprofile/', userprofile, name="profile"),
]

视图:

代码语言:javascript
复制
@login_required
def rev(request):
  return render_to_response('rev.html', {'client': request.user.client, 'user': request.user})

@login_required
@require_http_methods(["GET"])
def userprofile(request):
  return render(request, 'userprofile.html', {
    'user': request.user, 
    'form': UserProfileForm(instance=request.user)
  })

因此,使用-l de命令,我得到了下一个错误:

代码语言:javascript
复制
CommandError: errors happened while running msguniq
msguniq: \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \xabASCII\xbb \u0432 \xabUTF-8\xbb.  msguniq \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 iconv(). \u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u0431\u0435\u0437 iconv().

我想,我把urls设置错了。所有关于它的答案至少有3-4年,在最新的django版本上,设置urlpatterns =i18n_patterns.导致错误:

TypeError:“函数”对象不可订阅

已安装GNU gettext。

为什么我真的收到这个错误,我知道,这里禁止任何建议:)是否有人有工作的例子连接JS (网站上的语言按钮或什么)与django翻译。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-23 07:42:33

解决了。出现此问题是因为2 Gettext安装(不同版本)1已经安装了另一个我自己安装的。在PyCharm中设置路径(是的,我的django项目在PyCharm中)到终端中最新的gnu gettext解决了我的问题。

票数 0
EN

Stack Overflow用户

发布于 2018-01-04 08:28:33

代码语言:javascript
复制
MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
]

LocaleMiddleware必须在SessionMiddlewareCommonMiddleware之间添加。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48090781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档