赞
踩
当 Web服务搭建好以后,可以接收来自全球不同国家用户访问。这样就要求开发人员调整软件,使之能适用于不同的语言,即国际化和本地化。国际化 -- Internationalization,i和 n之间有 18个字母,简称 I18N,。本地化 -- localization, l 和 n之间有 10个字母,简称 L10N。国际化意味着 Web产品有适用于任何地方的潜力,针对程序开发人员;本地化则是指使一个国际化的程序为了在某个特定地区使用而进行实际翻译的过程,针对翻译人员而言。
Django 提供了非常强大的翻译机制,开发者一旦理解它的实现,就能减少编码量,提高开发效率。
项目要做国际化,之前没做过,所以找了许多文档,最终感觉阅读官方文档来解惑和获取知识是最好,当然长时间阅读英文文档个人容易晕,也是不容易啊
现在项目中国际化基本完成,先写这文档,将自己的一些感悟记录分享下
一。python项目国际化主要有3类数据进行翻译
二。语言文件即.mo文件
三。生成及编译.po文件生成.mo文件
四。django如何找到.mo翻译文件
五。指定.mo文件的路径
一.python项目国际化主要有3类数据进行翻译:
1. template文件里的静态html数据
2. 由于python的模板标签无法在js中应用,所以对js里静态展示的数据翻译也需另外的方法
3. 数据库中查询出来的数据展示到前台template文件里,对这一部分的数据进行翻译
二.语言文件即.mo文件
对于语言文件django官方文档有这样的说明:
语言文件也分两类
1. 一种是django.mo
2. 另一种是djangojs.mo,这是用于js文件里需要用到翻译的文件
如我项目中用到的国际化文件:
项目中对于国际化,我的做法是,每个app下都建立一个local/en_US/LC_MESSAGES/…
local/zh_CN/LC_MESSAGES/…文件
每个app中的数据分别翻译放置
三.生成及编译.po文件生成.mo文件
我的方式是这样的
1.进入Python安装目录中的il8n文件夹下
2. 双击pygettext.py文件自动生成messages.pot文件
3. 编辑messages.pot文件,保存并重命名为django.po
4. 修改文件charset=gb2312,Encoding: utf8
5.将django.po文件拖到当前目录下的msgfmt.py文件上,自动生成django.mo文件
6.将中英文翻译文件各准备一份即可
---给个gif动态图展示以上几个步骤
然后将生成的.mo文件复制到对应的locale目录下
四.django如何找到.mo翻译文件
这是django官方文档里的说明,直接贴上吧
1.第一优先级是在settings.py文件中定义的模板文件路径
如:
- LOCALE_PATHS = [
- '/home/www/project/common_files/locale',
- '/var/local/translations/locale',
- ]
2.次优先级是在每个app下定义的locale文件下的翻译文件
3.最后是django提供的一些基本的翻译
对于JavaScript翻译文件,官方文档中有这样的描述:
五。指定.mo文件的路径
django默认会到每个app下去找是否存在locale这样的目录结构下的.mo文件
指定也有有两种吧
1.在settings.py文件中指定
- LOCALE_PATHS = [
- '/home/www/project/common_files/locale',
- '/var/local/translations/locale',
- ]
- from django.views.i18n import javascript_catalog
-
- js_info_dict = {
- 'packages': ('your.app.package',),
- }
-
- urlpatterns = [
- url(r'^jsi18n/$', javascript_catalog, js_info_dict),
- ]
官方文档中有相关描述:
点击打开链接
可搜索Internationalization: in JavaScript code定位到那段描述
python国际化具体如何设置如何做,未完待续。。。
懒得写啦。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。