想在开启程序界面的时候,中文系统就出现中文,英文系统就出现英文吗?呵呵,gettext就可以实现.
过去非常向往那种风格: 选了语言,就可以用什么语言显示.以前玩anjuta的时候总是有个gettext错误,弄得我每次新建工程的时候第一件事就是关掉gettext,而且搞的好像非常神秘似的,今天才知道就是这个gettext有这种能力.
其实说起来也没什么神秘的,gettext也就是建立一个语言对应文件,必要的时候去文件中查找某国语言,然后以那种形式读出,替代原来的字符罢了.
用Python玩个简单的例子吧!其实C++什么的都有相关程序,只不过C++写起来太麻烦了,而且C++的库在Windows上是一大堆,需要下载好些依赖的dll和exe,Python才两个py文件就可以.
Python的i18n工具的存放位置在Python24\Tools\i18n目录下,一共两个msgfmt.py和pygettext.py两个文件.
现在我们先来制作语言对应文件.
运行pygettext.py会生成一个messages.pot,注意,这不是个ppt模板,是一个po文件模板.拷贝一个,改名为gb.po,其实随便改成什么都好,只要扩展名为po(其实pot也可以),用记事本打开,里面的内容如下:
# SOME DEscrīptIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2006-11-04 11:47+中国标准时间\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
把"Content-Type: text/plain; charset=CHARSET\n"改成
"Content-Type: text/plain; charset=gb2312\n"
把"Content-Transfer-Encoding: ENCODING\n"改成
"Content-Transfer-Encoding: cp936\n"
当然,这要看自己的情况了.gb2312是文件字符集,如果是utf8,则用utf8代替.
然后在文件后面添加msgid,msgstr对,比如添加完是这样:
# SOME DEscrīptIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2006-11-04 09:59+中国标准时间\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=gb2312\n"
"Content-Transfer-Encoding: cp936\n"
"Generated-By: pygettext.py 1.5\n"
msgid "Open"
msgstr "打开"
msgid "Edit"
msgstr "编辑"
msgid "Delete"
msgstr "删除"
msgid "Export"
msgstr "导出"
注意,第一个出现的msgid,msgstr对是文件头中的内容,不要动,否则会出问题.
好了,退出,运行dos命令:
msgfmt.py gb.po
生成一个gb.mo文件,这就是语言翻译库文件.
写个程序运行下:
import gettext
cat = gettext.GNUTranslations(open("gb.mo"))
_ = cat.gettext
print _("Open")
print _("Hello")
输出:
打开
Hello
可以看到,定义过的英文被翻译成了中文,其他的没有定义,也就还是英文输出.
分享到:
相关推荐
PDFBox是Apache软件基金会的一个开源Java库,专门用于处理PDF(Portable...在上述案例中,我们利用PDFBox实现了PDF文件的分拆和内容提取,生成了基于页面内容的独立文件,这在文档管理和自动化处理中具有实际应用价值。
3. PHP:http://www.php.net/downloads.php 4. GD:http://www.boutell.com/gd/#build 5. ZendOptimizer:http://www.zend.org/products/zend_optimizer 6. Gettext:http://ftp.gnu.org/pub/gnu/gettext/ 7. Netpbm...
- yasm (php扩展): `http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz` - t1lib (php扩展): `ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-5.1.2.tar.gz` - gd库安装包 (用于生成图片等):...
梁肖51CTO博客:http://blog.51cto.com/liangxiaoAndroid业务组件库:http://blog.51cto.com/liangxiao/2146536APP框架多渠道打包和闭包,支持分包安装,UI独立,网络请求独立 此项目还有一些不完善的地方,可以留言...
String message = mEditText.getText().toString() + "\r\n"; try { // 创建Socket socket = new Socket("116.29.27.138", 5554); // 向服务器发送消息 PrintWriter out = new PrintWriter(new BufferedWriter...
忽略:1 http://cn.archive.ubuntu.com/ubuntu bionic/universe amd64 fonts-gfs-baskerville all 1.1-5 错误:1 http://cn.archive.ubuntu.com/ubuntu bionic/universe amd64 fonts-gfs-baskerville all 1.1-5 连接...
在Linux操作系统中,CentOS 5.8是一个广泛使用的版本,尤其在服务器领域。LNMP是Linux、Nginx、MySQL、PHP的缩写,它是一个流行的Web服务器组合,适用于高性能、高并发的网站。本篇文章将深入探讨如何在CentOS 5.8上...
包含测试的php文件和gettext-0.14.4.exe,以及Poedit.exe 使用方法: 访问test.php?lan=zh_CN则显示简体 访问test.php?lan=en_US则显示英文 教程地址:https://www.cnblogs.com/-mrl/p/10949820.html
- msgfmt (GNU gettext-tools) 0.14.5 - makeinfo (GNU texinfo) 4.8 - GNU m4 1.4.4 - flex 2.5.31 - autoconf (GNU Autoconf) 2.59 - automake (GNU automake) 1.4-p6 **2.2 用户与权限配置** - **创建新...
开发者可以利用Smarty模板引擎进行界面定制,通过i18n和gettext实现多语言支持,并利用工作流功能来规范化知识的生命周期管理。对于希望构建或改进知识管理平台,特别是需要多语言环境和流程控制的团队来说,这个...
href="http://www.jspcn.net/css/news.css"><LINK rel=stylesheet type=text/css href="http://www.jspcn.net/css/qq.css"> <META name=GENERATOR content="MSHTML 8.00.7600.16535"></HEAD> <LI><A href=...
以上步骤仅为安装CACTI所需的部分库文件,后续还需要安装其他库文件如libxml2、zlib、curl、gettext等,以及freetype、fontconfig、rrdtool等,并进行GD库的编译安装。此外还需要安装MySQL数据库、Apache Web服务器...
wget http://ncu.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz wget ...
wget http://us3.php.net/get/php-5.4.21.tar.gz/from/ ``` **2. 编译安装** 针对每个软件包,按照其官方文档进行编译安装。这里以PHP为例简要说明: ```bash tar zxvf php-5.4.21.tar.gz cd php-5.4.21 ./...
Optional(needed when you use i18n tags in code or templates) # Google Data API Optional(allows image searching) Download it from http://code.google.com/p/gdata-python-client/ # django-profile ...
1. **添加控件**:在VB6或其他支持ActiveX的开发环境中,可以通过控件工具箱将FlexGrid添加到设计界面。如果没有显示,可以通过“工具”菜单的“部件”对话框手动添加。 2. **属性设置**:FlexGrid控件有许多可配置...
3. A number of predefined registry keys on Windows (As of PHP 5.2.0) ; 4. Current working directory (except CLI) ; 5. The web server's directory (for SAPI modules), or directory of PHP ; (otherwise ...
以上是.NET Core源码编译的基础步骤,但深入学习.NET Core,还需要了解更多的技术细节,如ASP.NET Core的静态文件处理、认证系统、ObjectPool的实现以及配置文件和依赖注入的工作原理。在ASP.NET Core MVC中,源码...
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:cc.gettext-0.6.1-py2.5.egg 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
在本文中,我们将深入探讨如何使用C++编程语言和.NET框架构建一个简易的文本编辑器。这个项目的主要目标是模仿Windows操作系统内置的记事本程序(Notepad),提供基础的文字编辑功能,如打开、保存、复制、粘贴、...