django国际化与本地化

使用django-admin为项目添加国际化支持, 会调用django提供的两个命令:

  • makemessages
  • compilemessages

准备

要想支持国际化, 需要做一些准备, 比如对django项目进行适当配置, 添加对需要国际化的字符串的处理, 以及相关目录的创建.

要想将页面依据不同语言用户的语言进行分配展示的话, 需要保证settings中的MIDDLEWARE_CLASSES中, 包含:

  • django.middleware.locale.LocaleMiddleware

要想支持国际化, 需要在输出是添加对需要国际化的字符串进行ugettext包裹处理

from django.shortcuts import render
from django.utils.translation import ugettext as _

def test_view(request):
    context['name'] = _('test')
    
    return render("test/test.html", context)

由于默认需要app目录下面的locale目录来搜寻国际化支持, 所以需要在app目录下面创建locale目录, 以及想要支持的国际化语言目录, 如创建zh_CN目录来添加中文支持.

-> % cd app_dir
-> % mkdir -p locale/zh_CN

makemessages

所有准备工作做完后, 只需要在app目录下执行一个命令即可

-> % cd app_dir
-> % django-admin makemessages -a

这里-a会将需要国际化的字符串各种语言(locale目录下)都进行创建, 由于我们只有zh_CN目录所以只创建中文的

-> % ls locale
zh_CN

-> % tree locale
locale
└── zh_CN
    └── LC_MESSAGES
        └── django.po

compilemessages

有了django.po文件我们就需要最内容进行修改, 从而让django知道对应语言的应该如何国际化. django.po文件中格式如下:

#: test/views.py:5
msgid "test"
msgstr "测试"

会有一条注释, 表示这条记录出现的位置, msgid对应是的我们想要国际化的字符串, 而msgstr对应我们想要对应语言翻译的内容.

对django.po翻译完成后, 执行compilemessages即可.

-> % django-admin compilemessages

-> % tree locale
locale
└── zh_CN
    └── LC_MESSAGES
        ├── django.mo
        └── django.po

这里讲的是使用django自带的功能, 要想使用比较底层的可以参考关于babel部分.

到此, 所有的内容就完成了.

转载于:https://my.oschina.net/alazyer/blog/900524

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值