gettext简介

原创 2004年01月20日 21:16:00
由fanyamin翻译摘录自php.net及::URL::http://www.onlamp.com/pub/a/php/2002/06/13/php.html
gettext函数实现了本地化语言支持的应用程序接口,可用于PHP应用程序的国际化,详细的说明文档请参见::URL::http://www.gnu.org/software/gettext/manual/index.html

需求:
要使用这些函数,必需从::URL::http://www.gnu.org/software/gettext/gettext.html  下载安装GNU gettext软件包

要在你的PHP安装中加入GNU gettext支持,必需增加--with-gettext[=DIR]选择,其中 DIR 是 gettext 的安装目录,默认为/usr/local. 
注意对于win32用户,必需拷贝gnu_gettext.dll到windows下的SYSTEM32目录,从PHP 4.2.3开始更名为libintl-1.dll,而且同时要安装iconv.dll

函数列表
bind_textdomain_codeset --  Specify the character encoding in which the messages from the DOMAIN message catalog will be returned 
bindtextdomain -- Sets the path for a domain
dcgettext -- Overrides the domain for a single lookup
dcngettext -- Plural version of dcgettext
dgettext -- Override the current domain
dngettext -- Plural version of dgettext
gettext -- Lookup a message in the current domain
ngettext -- Plural version of gettext
textdomain -- Sets the default domain

为简单起见,Gettext PHP extension允许通过使用gettext()函数在你的PHP代码中动态地翻译源字串为适宜的目的字串,
如果那个字串仍没有被翻译,则保留源字串。
例如
<?php
// I18N support information here
$language = 'en';
putenv("LANG=$language"); 
setlocale(LC_ALL, $language);

// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, "/www/htdocs/site.com/locale"); 
textdomain($domain);

echo gettext("A string to be translated would go here");
?>



安装Gettext文件
Gettext需要一个拥有全部翻译字串的locale目录,基本结构如下
/locale
    /en
        /LC_MESSAGES
            messages.po
            messages.mo
在locale目录中要为每一个你想要支持的语言创建一个子目录
<?php
// The language code goes here
$language = 'zh_CN';
putenv("LANG=$language"); 
setlocale(LC_ALL, $language);

// ....
?>
例如:
/locale
    /en
        /LC_MESSAGES
            messages.po
            messages.mo
    /zh_CN
        /LC_MESSAGES
            messages.po
            messages.mo
zh_CN目录创建以后,在PHP文件中用gettext函数标注需要翻译和文本,然后可以用命令
$xgettext -n *.php
来生成翻译字串文件messages.po,举例如下

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION/n"
"POT-Creation-Date: 2002-04-06 21:44-0500/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: 8bit/n"

#: gettext_example.php:12
msgid "A string to be translated would go here"
msgstr ""

这个文件包括所有在gettext()调用的字串,可提供给翻译者翻译成不同的语言

然后,就可把这些pot文件*.po转换成Gettext函数真正能够了解的二进制文件*.mo
以下命令可以创建一个message.mo文件,且须放置在正确的目录下locale/<LANG_CODE>/LC_MESSAGES/
$ msgfmt messages.po

注意如果新增一包含新字串的新文件,如何维护一个包括所有字串翻译的不断更新的message.po文件
这时就可利用gettext的msgmerge 功能
$ ls
example.php
$ xgettext -n *.php
$ ls
example.php   messages.po
// ...
// Translates the messages.po file now
// ...
$ msgfmt messages.po
$ ls
example.php   messages.po   messages.mo
// ...
// Changes the example.php file
// ...
$ mv messages.po old.po
$ xgettext -n *.php
$ ls
example.php   messages.po   messages.mo   old.po
$ msgmerge old.po messages.po --output-file=new.po
$ ls
example.php   messages.po   messages.mo   new.po    old.po
// ...
// Translates the new.po file
// ...
$ msgfmt new.po
版权声明:本文为博主原创文章,未经博主允许不得转载。

Dom4j中getStringValue()和getText()用法和区别

这两个方法的左右都是获取文本,但是区别是: getText(方法是)获取当前节点的文本内容。是当前节点.如果当前节点是一个element元素,那返回值就是null. 而getStringValue...
  • www_wangjun
  • www_wangjun
  • 2017年05月08日 10:59
  • 1391

使用GetText本地化编程

使用GetText本地化编程 by Jian Lee 参考介绍简单使用的例子 使用gettext的流程 细节 setlocale()xgettext 多文件的 PO示例:GTK 程...
  • Blaider
  • Blaider
  • 2012年09月23日 22:43
  • 3222

windows 下gettext使用

http://jianlee.ylinux.org/Computer/C/gettext.html
  • moyumoyu
  • moyumoyu
  • 2014年10月10日 10:01
  • 3825

c/c++ ,gettext,软件的多语言支持(i18n)

一个小例程,用于演示: cat >hello.cpp
  • GW569453350game
  • GW569453350game
  • 2015年12月24日 14:34
  • 3084

gettext简介

由fanyamin翻译摘录自php.net及http://www.onlamp.com/pub/a/php/2002/06/13/php.html gettext函数实现了本地化语言支持的应用程序接口...
  • fanyamin
  • fanyamin
  • 2004年01月20日 21:16
  • 4385

PHP多语言翻译 和php的gettext函数类似

  • 2012年04月06日 23:40
  • 10KB
  • 下载

gettext简介

本文来自维基百科:https://en.wikipedia.org/wiki/Gettext gettext是一种国际化与本地化系统,在类Unix系统中编写多语言程序时经常被使用。gettext的一个...
  • yjwx0018
  • yjwx0018
  • 2016年08月25日 10:50
  • 171

gettext简介

由fanyamin翻译摘录自php.net及http://www.onlamp.com/pub/a/php/2002/06/13/php.html gettext函数实现了本地化语言支持的应用程序接口...
  • jgqceo
  • jgqceo
  • 2007年04月24日 15:11
  • 401

转贴:Gettext 安装

Gettext 用于系统的国际化和本地化,可以在编译程序的时候使用本国语言支持(NLS),可以使程序的输出使用用户设置的语言而不是英文。预计编译时间: 1.2 SBU所需磁盘空间: 65.1 MB安装...
  • u012296253
  • u012296253
  • 2013年10月22日 15:25
  • 1060

Android edittext.getText()的返回值类型

在开发的时候会遇到将edittext.getText()赋值给String类型出错了 这时加上.toString()就会好用 (1)那么edittext.getText()的返回值类型是什么呢? ...
  • Lucy_FuJuan
  • Lucy_FuJuan
  • 2016年07月30日 10:45
  • 3159
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gettext简介
举报原因:
原因补充:

(最多只允许输入30个字)