bindtextdomain php,PHP bind_textdomain_codeset 用法 手册 | 示例代码

So, by using this function and by setting the LANGUAGE variable, you should be able to have a functioning i18n system that is not dependent upon a system's locale installation. Here is a sample from a method I created for a language class. Look for it on http://wiki.creativecommons.org/Developer soon:

function Init ()

{

// set the LANGUAGE environmental variable

// This one for some reason makes a difference FU@#$%^&*!CK

// and when combined with bind_textdomain_codeset allows one

// to set locale independent of server locale setup!!!

if ( false == putenv("LANGUAGE=" . $this->_language ) )

CCDebug::Log(sprintf("Could not set the ENV variable LANGUAGE = %s",

$this->_language));

// set the LANG environmental variable

if ( false == putenv("LANG=" . $this->_language ) )

CCDebug::Log(sprintf("Could not set the ENV variable LANG = %s",

$this->_language));

// if locales are not installed in locale folder, they will not

// get set! This is usually in /usr/lib/locale

// Also, the backup language should always be the default language

// because of this...see the NOTE in the class description

// Try first what we want but with the .utf8, which is what the locale

// setting on most systems want (and is most compatible

// Then just try the standard lang encoding asked for, and then if

// all else fails, just try the default language

// LC_ALL is said to be used, but it has nasty usage in some languages

// in swapping commas and periods! Thus try LC_MESSAGE if on one of

// those systems.

// It is supposedly not defined on WINDOWS, so am including it here

// for possible uncommenting if a problem is shown

//

// if (!defined('LC_MESSAGES')) define('LC_MESSAGES', 6);

// yes, setlocale is case-sensitive...arg

$locale_set = setlocale(LC_ALL, $this->_language . ".utf8",

$this->_language . ".UTF8",

$this->_language . ".utf-8",

$this->_language . ".UTF-8",

$this->_language,

CC_LANG);

// if we don't get the setting we want, make sure to complain!

if ( ( $locale_set != $this->_language && CC_LANG == $locale_set)

empty($locale_set) )

{

CCDebug::Log(

sprintf("Tried: setlocale to '%s', but could only set to '%s'.",                        $this->_language, $locale_set) );

}

$bindtextdomain_set = bindtextdomain($this->_domain,

CC_LANG_LOCALE . "/" . $this->_locale_pref );

if ( empty($bindtextdomain_set) )

CCDebug::Log(

sprintf("Tried: bindtextdomain, '%s', to directory, '%s', " .

"but received '%s'",

$this->_domain, CC_LANG_LOCALE . "/" . $this->_locale_pref,

$bindtextdomain_set) );

bind_textdomain_codeset($this->_domain, "UTF-8");

$textdomain_set = textdomain($this->_domain);

if ( empty($textdomain_set) )

CCDebug::Log(sprintf("Tried: set textdomain to '%s', but got '%s'",

$this->_domain, $textdomain_set));

} // end of method Init ()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值