我创建了一个简单的网站来测试国际化,但我无法让它按照我想要的方式工作。我想在不检查request.LANGUAGE_CODE (正确显示)的情况下更改views.py中的消息。
我可以访问前缀为/en/和/pt-br/的urls,但它们不会更改模板中的文本。
我试着跑
django-admin makemessages --locale=pt_BR我换了台词
#: mytest/views.py:7
msgid "Welcome to my site."
msgstr "Bem vindo ao meu site."范围
django-admin compilemessages --locale=pt_BRPS:(尽管这是错误的,我也尝试了django-admin makemessages/编译程序--locale=pt-br )
我在settings.py中更改了什么(添加了我的应用程序,添加了地区中间件,增加了一些内部化设置)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mytest'
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'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',
]
# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale/translations/'),
]
LANGUAGE_CODE = 'en-us'
from django.utils.translation import ugettext_lazy as _
LANGUAGES = [
('pt-br', _('Portuguese')),
('en', _('English')),
]
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = Trueviews.py
from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _
def index(request):
print(request.LANGUAGE_CODE) #this shows correctly the prefix in the url
output = _("Welcome to my site.")
context = {"test_translate": output}
return render(request, "mytest/index.html", context)urls.py
from django.conf.urls.i18n import i18n_patterns
from mytest import views
urlpatterns = [
]
urlpatterns += i18n_patterns(
url(r'^$', views.index, name='index'),
)发布于 2019-11-08 06:38:21
请遵循以下步骤。
1)在根目录中创建文件夹'locale'。
2)增加中间设备
.....
'django.middleware.common.CommonMiddleware',
'django.middleware.locale.LocaleMiddleware',
....3)在settings.py集中
USE_L10N = True
LANGUAGE_CODE = 'pt-BR'
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
LANGUAGES = (
('pt_BR', 'Portuguese'),
)4)运行以下命令
$ django-admin makemessages -l pt_BR -i env
$ django-admin compilemessages -l pt_BR5)然后在locale > pt_BR > LC_MESSAGES > django.po中更新所需的翻译文本,然后再次运行
$ django-admin compilemessages -l pt_BRhttps://stackoverflow.com/questions/39311230
复制相似问题