分享
 
 
 

gettext简介

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

由fanyamin翻译摘录自php.net及

http://www.onlamp.com/pub/a/php/2002/06/13/php.html

gettext函数实现了本地化语言支持的应用程序接口,可用于PHP应用程序的国际化,详细的说明文档请参见

http://www.gnu.org/software/gettext/manual/index.html

需求:

要使用这些函数,必需从

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有