php 为什么不好使,php – 我如何分析为什么gettext不起作用?

这对我在Linux上的CE ZendServer和NetBsd上的Apache服务器上都有用

文件“message.po”是从应用程序的根生成的:

#, fuzzy

msgid ""

msgstr ""

"Project-Id-Version: PACKAGE VERSION\n"

"Report-Msgid-Bugs-To: \n"

"POT-Creation-Date: 2013-04-30 19:38+0200\n"

"PO-Revision-Date: 2013-04-12 14:00+0000\n"

"Last-Translator: gin(e) \n"

"Language-Team: LANGUAGE \n"

"Language: eo\n"

"MIME-Version: 1.0\n"

"Content-Type: text/plain; charset=utf-8\n"

"Content-Transfer-Encoding: 8bit\n"

#: include/apteryx_text.php:3

msgid "email:"

msgstr "Retpoŝtadreso:"

这是新的树目录:

res/locale/

de_DE/

LC_MESSAGES/

messages.mo

eo_EO/

LC_MESSAGES/

messages.mo

eo->eo_EO (symlink)

我必须添加“eo”符号链接,因为我支持的系统上只有三个世界语语言环境:

eo

eo.iso88593

eo.utf8

编译惠特:

sudo locale-gen eo

sudo locale-gen eo.iso88593

sudo locale-gen eo.utf8

sudo update-locale

sudo dpkg-reconfigure locales

目前我的locale.php代码是:

$charset="UTF-8";

$gettext_domain="messages";

$locale_dir="res/locale";

putenv("LC_ALL=$lang");

$l=split("_",$lang);

/* not in all system and not all locales got the classic name this stupid method try to solve it*/

if(! setlocale(LC_ALL, $lang.".".$charset))

if(! setlocale(LC_ALL, $lang))

if(! setlocale(LC_ALL,$l[0].".".$charset))

setlocale(LC_ALL,$l[0]);

bindtextdomain($gettext_domain, "res/locale");

textdomain($gettext_domain);

bind_textdomain_codeset($gettext_domain, $charset);

因为whitout它gettext不起作用.我认为locale目录必须与设置为whit setlocale的语言具有相同的名称.另一件事是测试每个函数叫什么返回.它们必须永远不会返回NULL或FALSE.你可以用简单的方式做到这一点:

var_dump(bindtextdomain($gettext_domain, "res/locale"));

var_dump(textdomain($gettext_domain));

..and so on..

最后但不是列表,记得为所有.mo文件设置正确的apache权限,重新启动apache服务器并通过phpinfo()验证“GetText支持”是否已“启用”.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值