|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,皮皮我的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。 PHP的gettext用法
gettext法式在Linux/Unix世界中很罕见,但常人平常利用的时机不多。它用来为使用法式添加国际化撑持。举个例子,假如一个法式中的字符串资本没有硬编码在法式源文件中,而是以一种言语包的文件存在的,那末就能够经由过程添加言语包文件来改动法式界面的言语。gettext就能够做这类事。
Windows下的PHP5中已带有了gettext扩大,Zend Server也以带有该扩大。在php.ini文件中将“extension=php_gettext.dll”后面的分号去失落,重启Apache,假如一切正常的话,在phpinfo()的输入中应当会有gettext一节。上面有一个复杂的“Hello World”的例子来看看若何用gettext来到达撑持多言语的目标。
创立一个PHP文件test.php,内容以下:
<?php
putenv(“LANG=zh_CN”);
setlocale(LC_ALL, ‘zh_CN’);
bindtextdomain(‘testz, ‘./locale’);
textdomain(‘test’);
echo gettext(‘Hello World!’);
?>
开首两行代码设置言语情况为’zh_CN’,也就是简体中文。bindtextdomain设置域test的目次为以后目次下的locale目次。textdomain(’text’)告知PHP注释器,gettext函数要去test域中去寻觅替换字符串。
在阅读器中翻开这个文件,可以看到了局为“Hello World”,只是原样输入罢了,由于还没有制造中文言语包。要让阅读器输入中文而不改动源法式,需求筹办两个文件,PO和MO文件。为了失掉这两个文件,需求利用xgettext和msgfmt两个法式。Windows用户可以去GnuWin32下载GetText软件包,外面就有这两个法式。
接着创立响应的目次布局。在test.php的目次下创立“locale\zh_CN\LC_MESSAGES”如许的目次。目次名zh_CN必定要和代码中的言语称号zh_CN不异。然后在号令提醒符下履行:
xgettext -d test test.php
“-d test”暗示domain为“test”,这会在以后目次下生成test.po这个文件。用文本编纂器翻开它,做以下修正:
…
“Content-Type: text/plain; charset=GB2312\n”
“Content-Transfer-Encoding: 8bit\n”
#: test.php:11
msgid “Hello World!”
msgstr “你好,世界!”
行将charset设置为中文编码“GB2312”,将响应的msgid中的英文字符串翻译成中文填入到上面的msgstr中。接上去用msgfmt生成MO文件。MO是一个二进制格局的文件,gettext从它外面提取字符串资本。在号令提醒符中履行以下号令可以从方才修正的PO文件失掉MO文件:
msgfmt -o test.mo test.po
最初将test.po和test.mo放在locale\zh_CN\LC_MESSAGES目次下,刷新阅读器,便可看到显示的是中文。
下载 GnuWin32 编译po mo东西,放入情况变量,cmd 下进入项目根目次,
分离履行 :xgettext -d hello hello.php 生成po文件
分离履行 :msgfmt -o hello.mo hello.po 生成mo文件
要想从事软件开发工作,那么,还有很多的知识要学习,其实,不管是以后想去从事哪个工作,都需要自己去利用空闲的时间去不断的学习新的知识,不断的充实自己。 |
|