Django 中的国际化的使用

Django 国际化使用的翻译模块是使用 Python 自带的 gettext 标准模块。通过一个到 GNU gettext 消息目录库的接口,这个模块为 Python 程序提供了国际化 (I18N) 和本地化 (L10N)。
开发人员和翻译人员需要完成一下 3 个步骤:

第一步:在 Python 代码和模板中嵌入待翻译的字符串,
第二步:把那些字符串翻译成需要支持的语言,并进行相应的编译
第三步:在 Django settings 文件中激活本地中间件

安装配置gettext

Django框架具有很好的I18N和L10N的支持,其实现是基于GNU的gettext,所以要想在Django中使用I18N还需要先安装配置gettext。

Windows下的gettext(linux下可能不用安装)
从http://sourceforge.net/projects/gettext下载以下zip文件
gettext-runtime-0.17.zip: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17.zip
gettext-tools-0.17.zip: http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip
解压文件

在同一文件夹下(如: C:\Downloads\gettext)展开这2个压缩文件中的bin\。(注意目录合并了)
更新系统路径:控制面板>系统>高级>环境变量,在系统变量列表中,把;D:\Downloads\Programming\gettext\bin加到变量值字段的末尾。
在CMD中验证下我们的配置是否正确xgettext --version或者gettext --version。
在这里插入图片描述

修改settings.py配置

settings.py

MIDDLEWARE_CLASSES = (
    ...
    'django.middleware.locale.LocaleMiddleware',
)
 
 
LANGUAGE_CODE = 'en'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
 
LANGUAGES = (
    ('en', ('English')),
    ('zh-Hans', ('中文简体')),
    ('zh-Hant', ('中文繁體')),    
)
 
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),  #翻译文件所在目录,请自行创建
)
 
TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    "django.core.context_processors.i18n",
)

示例模板:
在模板中使用, 需要先{% load i18n %}, 然后你可使用:trans和blocktrans模板标记。
更多的使用方法可以参考: http://python.usyiyi.cn/documents/django_182/topics/i18n/translation.html#std:templatetag-blocktrans
示例模板文件base.html

{% load i18n %}
<!DOCTYPE html>
<html lang="en">
<head>
    <title>{% trans "Home" %}</title>
</head>
<body>
</body>
</html>

生成需要翻译的文件

manage.py makemessages -l zh_Hans
manage.py makemessages -l zh_Hant

此时, 将会在项目根目录下生成两个文件夹, 如zh_hans(简体汉字):
在这里插入图片描述

手工翻译locale中的对应语言的django.po文件.

在这里插入图片描述

编译一下,这样翻译才会生效
manage.py compilemessages

注意:
如果翻译不生效,请检查你的语言包的文件夹是不是有 中划线,请用下划线代替它。
比如 zh-hans 改成 zh_hans (但是要注意 setttings.py 中要用 中划线,不要也改了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值