Python 国际化

简介

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文件

xgettext -k_ -o internation.po_en internation.pyxgettext -k_ -o internation.po_zh internation.py

(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 <[email protected]>, 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 <[email protected]>\n"
14 "Language-Team: LANGUAGE <[email protected]>\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 <[email protected]>, 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 <[email protected]>\n"
14 "Language-Team: LANGUAGE <[email protected]>\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)运行

。。。

原文地址:https://www.cnblogs.com/gaozhengwei/p/8555618.html

时间: 2024-10-20 15:36:19

Python 国际化的相关文章

gettext模块实现Python国际化支持

1.gettext模块介绍 gettext模块为Python模块和应用程序提供国际化(i18n)和本地化(l10n)服务.它提供两套API,一套高层的类似于GNU gettext的API和一套基于类的API.前者适用于单语言的场景,并且语言的选择通常依赖于用户的locale,会全局性地影响到你整个应用程序语言的转译.后者允许你在一个python模块内进行本地化,非常适用于在应用程序运行时切换你的语言. 2.通用步骤 (1)无论是使用哪一套API,都必须提取可以翻译的字符串并且生成一个翻译模板文件

旧文备份:Python国际化支持

Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持,下面是我的多语言支持实现: 在python安装目录下的./Tools/i18n/(windows下例 D:\Program Files\Python25\Tools\i18n)目录中找到pygettext.py运行之,生成翻译文件模版messages.pot,内容大概是这个样子: # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FI

python国际化 i18n 和中英文切换

Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持,下面是我的多语言支持实现: 1.         在python安装目录下的./Tools/i18n/(windows下例 D:\Program Files\Python25\Tools\i18n)目录中找到pygettext.py运行之,生成翻译文件模版messages.pot,内容大概是这个样子: # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANI

Awesome Python,Python的框架集合

Awesome Python A curated list of awesome Python frameworks, libraries and software. Inspired by awesome-php. Awesome Python Environment Management 环境管理 Package Management              软件包管理 Package Repositories              软件源 Distribution          

Awesome Python(中文对照)

A curated list of awesome Python frameworks, libraries and software. Inspired by awesome-php. Awesome Python Environment Management 环境管理 Package Management              软件包管理 Package Repositories              软件源 Distribution                         

Python——深入理解urllib、urllib2及requests(requests不建议使用?)

深入理解urllib.urllib2及requests            python Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] .Python语法简洁而清晰,具有丰富和强大的类库. urllib and urllib2 区别 urllib和urllib2模块都做与请求URL相关的操作,但

Python下划线的使用

References: [1]. http://python.jobbole.com/81129/ 本文将讨论Python中下划线(_)字符的使用方法.我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已. 单下划线(_) 通常情况下,会在以下3种场景中使用: 1.在解释器中:在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用. Python 1 2 3 4 5 6

Python高手之路【八】python基础之requests模块

1.Requests模块说明 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 在Python的世界里,事情不应该这么麻烦. Requests 使用的是 urllib3,因此继承了它的所有特性.Request

python简易爬虫实现

目的:爬取昵称 目标网站:糗事百科 依赖的库文件:request.sys.beautifulSoup4.imp.io Python使用版本:3.4 说明:参考http://cn.python-requests.org/zh_CN/latest/user/quickstart.html 步骤: 一.熟悉request Request介绍: Request库是一个python http库,其内部依赖urllib3库. 以下是它的功能特性: 国际化域名和 URL.Keep-Alive & 连接池.带持