博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 国际化
阅读量:6896 次
发布时间:2019-06-27

本文共 3132 字,大约阅读时间需要 10 分钟。

简介

Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持。

详解

Linux下Python的国际化编程

 在Linux的操作和C语言的国际化过程是一样的,在需要国际化的字符串前面添加_()即可。

(1)代码:internation.py

# -*- coding: utf-8 -*-  #!/usr/bin/env python    import gettext  locale_path = './locale/'  #gettext.install('internation', locale_path) # 这条语句会将_()函数自动放到python的内置命名空间中  zh_trans = gettext.translation('internation', locale_path, languages=['zh_CN'])  en_trans = gettext.translation('internation', locale_path, languages=['en_US'])    print "----中文版本----"  zh_trans.install()  print _("Hello world!")  print _("Python is a good Language.")    print "----英文版本----"  en_trans.install()  print _("Hello world!")  print _("Python is a good Language.")

 

(2)生成po文件

1 方法1:2 xgettext -k_ -o internation.po_en internation.py3 xgettext -k_ -o internation.po_zh internation.py4 5 6 方法2:7 find . -type f \( -name '*.py' \) -print > list8 xgettext --files-from=list -d internation -o internation.po --from-code=UTF-8

 

 

(3)翻译(charset设定为utf-8)

 英文:

1 # SOME DESCRIPTIVE TITLE.   2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER   3 # This file is distributed under the same license as the PACKAGE package.   4 # FIRST AUTHOR 
, YEAR. 5 # 6 #, fuzzy 7 msgid "" 8 msgstr "" 9 "Project-Id-Version: PACKAGE VERSION\n" 10 "Report-Msgid-Bugs-To: \n" 11 "POT-Creation-Date: 2015-10-08 22:06+0800\n" 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 "Last-Translator: FULL NAME
\n" 14 "Language-Team: LANGUAGE
\n" 15 "MIME-Version: 1.0\n" 16 "Content-Type: text/plain; charset=UTF-8\n" 17 "Content-Transfer-Encoding: 8bit\n" 18 19 #: internation.py:11 internation.py:16 20 msgid "Hello world!" 21 msgstr "translate:Hello world" 22 23 #: internation.py:12 internation.py:17 24 msgid "Python is a good Language." 25 msgstr "translate:python is a good Language."

中文:

1 # SOME DESCRIPTIVE TITLE.   2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER   3 # This file is distributed under the same license as the PACKAGE package.   4 # FIRST AUTHOR 
, YEAR. 5 # 6 #, fuzzy 7 msgid "" 8 msgstr "" 9 "Project-Id-Version: PACKAGE VERSION\n" 10 "Report-Msgid-Bugs-To: \n" 11 "POT-Creation-Date: 2015-10-08 22:06+0800\n" 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 "Last-Translator: FULL NAME
\n" 14 "Language-Team: LANGUAGE
\n" 15 "MIME-Version: 1.0\n" 16 "Content-Type: text/plain; charset=utf-8\n" 17 "Content-Transfer-Encoding: 8bit\n" 18 19 #: internation.py:11 internation.py:16 20 msgid "Hello world!" 21 msgstr "您好!" 22 23 #: internation.py:12 internation.py:17 24 msgid "Python is a good Language." 25 msgstr "Python是一种好语言。"

 

(4)建立翻译文件路径

  在主文件目录下建立英文翻译路径./locale/en_US/LC_MESSAGES/和中文翻译路径./locale/zh_CN/LC_MESSAGES/ (对文件层次比较严格)。

 

(5)生成mo最终文件

msgfmt -o ./locale/en_US/LC_MESSAGES/internation.mo internation.po_en msgfmt -o ./locale/zh_CN/LC_MESSAGES/internation.mo internation.po_zh

 

(6)运行

。。。

 

Locale directory 参考:

        https://docs.openstack.org/oslo.i18n/latest/user/usage.html

转载于:https://www.cnblogs.com/gaozhengwei/p/8555618.html

你可能感兴趣的文章
【Static Program Analysis - Chapter 3】Type Analysis
查看>>
类的继承关系,多态的体现,我的觉得题目还是有点欠缺
查看>>
微服务(Microservices)—Martin Fowler【翻译】
查看>>
新浪微博客户端(58)-处理点击微博内容中的关键字
查看>>
文件资源Android项目的工程结构
查看>>
Mockito 库、powermock扩展
查看>>
各版本JDK1.5-1.8新特性
查看>>
京东无界零售带来机遇,家电专卖店拉动实体经济,大学生的致富经
查看>>
中国物流能送到四海八荒,菜鸟年度排行榜告诉你都去了哪些地方
查看>>
从业界良心到疲态尽显 Netflix到底中了什么降头?
查看>>
OpenStack消亡?在企业落地为什么越来越难
查看>>
GitHub因Memcached漏洞遭遇DDoS攻击,专家称攻击会持续发生!
查看>>
湖南郴州与新疆托克逊特色年货节开幕
查看>>
快手音乐人计划:音乐人可以靠作品赚到真金白银
查看>>
使用Python一年多了,总结八个好用的Python爬虫技巧
查看>>
无人船成下一个全球研发热点,参与行业标准的「云洲智能」要做海洋上的"SpaceX"...
查看>>
13种数据分析思维
查看>>
3分钟搞掂Set集合
查看>>
如果再有人问你分布式 ID,这篇文章丢给他
查看>>
90% New Grads 都懵逼的面试轮次,这些应对“骚操作”请收好
查看>>