python(django) 国际化翻译详细总结
2017-03-27 16:56
796 查看
1.在没有使用Python的web项目的框架的时候,解决方法如下:
a)使用翻译模块
i.translate模块
默认一天限制1000词翻译一天,默认被翻译语言为英文,默认翻译成语言为简体中文。
安装:
使用:
运行结果:
这是一支笔
ii.Goslate 免费谷歌翻译模块
谷歌升级了在线翻译系统, 新加入的 ticket 机制能有效地防止类似 goslate 这样简单的爬虫系统的访问. 技术上来说, 更加复杂的爬虫仍有可能成功抓取翻译, 但这么做已经越过了红线. Goslate 作者不再继续更新去破解 Google 的 ticket 机制. 所以此模块提供的方法可能有报错.
安装:
使用:
运行结果:
这是一支笔
b)直接调用翻译接口
鉴于国内调用GOOGLE翻译的速度,建议使用国内翻译软件的翻译接口,一般官网有提供,如有道翻译,百度在线翻译接口。
c)Python 国际化
进入Python的安装目录中Tools\i18n目录
执行
生成一个messages.pot
修改messages.pot中编码
编辑messages.pot
添加需要国际化的内容,另存为*.po文件
我这里存成了lang.po
编译lang.po
执行
生成lang.mo
在项目中建立目录
\locale\cn\LC_MESSAGES
\locale\en\LC_MESSAGES
LC_MESSAGES这个是必须的
同时将刚刚的lang.po、lang.mo放入到zn\LC_MESSAGES\这个目录下。
也可以生成一个英文的对应文件放入到en\LC_MESSAGES\目录下
测试下效果,输出用_(str)代替str。成功输出中文
将zn换成en如果没有配置默认直接输出原内容,如Hello YY
2.使用django配置的国际化
因为windows系统的原因,执行
需要手动安装gettext,通过百度google基本的方法是下载两个包集中解压,但是该方法报丢失dll的错,无解,后来尝试了一个豆瓣上的方法,链接为:
https://www.douban.com/group/topic/9572943/
但是他提供的是win32的,由于其他方法无解,直接在64位系统上安装的此方法提供的三个包,下载地址为:https://ftp.gnu.org/gnu/gettext/和https://ftp.gnu.org/gnu/libiconv/下载了3个包:
gettext-runtime-X.bin.woe32.zip
gettext-tools-X.bin.woe32.zip
libiconv-X.bin.woe32.zip
解压这3个zip文件到同一个文件夹:C:\Program Files\gettext-utils
然后添加到系统变量的PATH中: ;C:\Program Files\gettext-utils\bin
那3个文件全部选中后,直接解压,选择一个目录后解压即可。
命令窗口输入
使用:
中间件添加在session之后
context_processors添加’
执行
但是!执行最后的编译命令时遇到中文总是报错,可能是32位和64位不兼容的原因,最后还是按照前一个Python的国际化拷贝到C:\Python27\Tools\i18n手动编译再拷贝到项目里才运行的,有待完善。
a)使用翻译模块
i.translate模块
默认一天限制1000词翻译一天,默认被翻译语言为英文,默认翻译成语言为简体中文。
安装:
pip install translate
使用:
from translate import Translator translator= Translator(to_lang="zh") tran = translator.translate("this is a pen") print tran
运行结果:
这是一支笔
ii.Goslate 免费谷歌翻译模块
谷歌升级了在线翻译系统, 新加入的 ticket 机制能有效地防止类似 goslate 这样简单的爬虫系统的访问. 技术上来说, 更加复杂的爬虫仍有可能成功抓取翻译, 但这么做已经越过了红线. Goslate 作者不再继续更新去破解 Google 的 ticket 机制. 所以此模块提供的方法可能有报错.
安装:
pip install goslate
使用:
import goslate gs = goslate.Goslate() print gs.translate('this is a pen', 'zh')
运行结果:
这是一支笔
b)直接调用翻译接口
鉴于国内调用GOOGLE翻译的速度,建议使用国内翻译软件的翻译接口,一般官网有提供,如有道翻译,百度在线翻译接口。
c)Python 国际化
进入Python的安装目录中Tools\i18n目录
执行
pygettext.py
生成一个messages.pot
修改messages.pot中编码
CHARSET gb2312 ENCODING utf8
编辑messages.pot
添加需要国际化的内容,另存为*.po文件
我这里存成了lang.po
编译lang.po
执行
msgfmt.py lang.po
生成lang.mo
在项目中建立目录
\locale\cn\LC_MESSAGES
\locale\en\LC_MESSAGES
LC_MESSAGES这个是必须的
同时将刚刚的lang.po、lang.mo放入到zn\LC_MESSAGES\这个目录下。
也可以生成一个英文的对应文件放入到en\LC_MESSAGES\目录下
测试下效果,输出用_(str)代替str。成功输出中文
将zn换成en如果没有配置默认直接输出原内容,如Hello YY
2.使用django配置的国际化
因为windows系统的原因,执行
python manage.py makemessages -l zh_hans就会报错CommandError: Can’t find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.
需要手动安装gettext,通过百度google基本的方法是下载两个包集中解压,但是该方法报丢失dll的错,无解,后来尝试了一个豆瓣上的方法,链接为:
https://www.douban.com/group/topic/9572943/
但是他提供的是win32的,由于其他方法无解,直接在64位系统上安装的此方法提供的三个包,下载地址为:https://ftp.gnu.org/gnu/gettext/和https://ftp.gnu.org/gnu/libiconv/下载了3个包:
gettext-runtime-X.bin.woe32.zip
gettext-tools-X.bin.woe32.zip
libiconv-X.bin.woe32.zip
解压这3个zip文件到同一个文件夹:C:\Program Files\gettext-utils
然后添加到系统变量的PATH中: ;C:\Program Files\gettext-utils\bin
那3个文件全部选中后,直接解压,选择一个目录后解压即可。
命令窗口输入
xgettext --version时不报错即为正常。
使用:
中间件添加在session之后
'django.middleware.locale.LocaleMiddleware'
context_processors添加’
django.template.context_processors.i18n'
LANGUAGE_CODE = 'zh-hans' USE_I18N = True USE_L10N = True LANGUAGES = ( ('en', ('English')), ('zh-hans', ('中文简体')), ('zh-hant', ('中文繁體')), )
执行
python manage.py makemessages -l zh_hans后生成对应的文件夹在locale下,在po文件中修改对应的键值对,修改字符集为utf8再执行
python manage.py compilemessages编译成mo文件,调用时引入
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext as _un测试
但是!执行最后的编译命令时遇到中文总是报错,可能是32位和64位不兼容的原因,最后还是按照前一个Python的国际化拷贝到C:\Python27\Tools\i18n手动编译再拷贝到项目里才运行的,有待完善。
相关文章推荐
- Python 通过pip安装Django详细介绍
- Python+Django知识点总结
- 深入学习Django源码基础7 - python的gettext国际化本地化
- python django模型内部类meta详细解释
- 8年开发经验,总结python Django一些开发经验
- python总结27 django paginator实现分页
- python django 数据库查询方法总结
- Python工程师详细讲解Django之model
- Django with mod_python环境搭建总结
- python 国际化一词多义翻译
- python总结26 django 富文本编辑器实现上传图片
- centos7下部署python网络爬虫程序及django程序总结
- python django项目开发总结
- python总结25 django 富文本编辑器加入项目中
- [Django]《Python Web开发 测试驱动方法》前六章非测试部分总结
- Python和Django的详细安装步骤
- python django model类型总结
- python总结24 django publish
- BP神经网络python代码详细解答(来自原文翻译)
- Django国际化问题总结