Django 设置国际化和本地化-GNUGettext下载路径、安装、使用

1.下载GNUGettext,gettext 0.21 and iconv 1.16 - Binaries for Windows | mlocati - Michele Locati

 2.解压,根据文件路径设置环境变量E:\gettext0.21-iconv1.16-static-64\bin

3.在项目目录中设置urls.py,导入i18n_patterns,并设置urlpatterns 中使用函数i18n_patterns。

#MyDjango的urls.py
from django.urls import path,include
from django.conf.urls.i18n import i18n_patterns

urlpatterns = i18n_patterns(
    path('',include(('index.urls','index'),namespace='index'),
)

#app的urls.py

from django.urls import path
from .views import *
urlpatterns = [
    path('',index,name='index'),
]

4.设置app中的views.py,导入gettext

# app的views.py
from django.shortcuts import render,redirect
from django.utils.translation import gettext

def index(request):
    if request.LANGUAGE_CODE == 'zh':
        language = gettext('Chinese')
    else:
        language = gettext('English')
    return render(request,'index.html',locals())

5.设置templates的index.html,导入i18n,内置标签的使用方法如下:

  • 使用内置标签trans(不可以字符串和上下文组合使用)或者blocktrans(可以字符串和上下文组合使用)使标签内的字符串或上下文可支持语言转换。
  • get_available_languages:获取LANGUAGE的值。
  • language:在模板中生成语言选择的功能。
<!DOCTYPE html>
<html>
<head>
{% load i18n %}
<meta charset="UTF-8">
<title>{% trans "Choice language" %}</title>
</head>

<body>
<div>
{% get_available_languages as languages %}
{% trans "Choice language" %}
{% for lang_code, lang_name in languages %}
    {% language lang_code %}
    <a href="{% url 'index:index' %}">
        {{ lang_name }}
    </a>
    {% endlanguage %}
{% endfor %}
</div>
<div>
    {% blocktrans %}
    The language is {{ language }}
    {% endblocktrans %}
</div>
</body>
</html>

6.设置本地化,以管理员的身份打开cmd,cd 项目目录,进入项目使用的虚拟环境,执行命令:

python manage.py makemessages -l zh

生成文件夹language以及文件django.po,该文件为urls,views,templates,models,form的国际化设置提供翻译内容。打开文件django.po,在msgstr""中设置翻译内容。

#: .\index\views.py:28
msgid "Chinese"
msgstr "简体中文"

#: .\index\views.py:30
msgid "English"
msgstr "English"

7.最后以管理员的身份打开cmd,cd 项目目录,进入项目使用的虚拟环境,执行命令:

python manage.py compilemessages

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值