cakephp 1.25 html image helper alt属性不能为汉字

今天用 cakephp 1.25遇到一个怪问题
好奇怪
<?php echo $html->image('qq.gif', array('alt' => '腾讯'))?>
//这句打印出来是
<img src="/img/qq.gif" alt="" />

<?php echo $html->image('qq.gif', array('alt' => 'qq'))?>
//这句打印出来是
<img src="/img/qq.gif" alt="qq" />

alt 是汉字就显示不出来,大家都这样么?

------

问题解决了,是多语言i18n 和 L10n的问题
//首先给模板设置好字符集
<?php echo $html->charset(); ?>
//然后,代码改为
<?php echo $html->image('qq.gif', array('alt' => __('qq', true)))?>
//在文件夹app\locale\chi\LC_MESSAGES\default.po(存为utf-8格式)中添加
msgid "qq"
msgstr "腾讯"
//完成!

ps
如果系统在eng和chi的语言包里都找不到名为 “qq” 的msgid,则会将 __('string') 函数中的 string 直接输出。

系统是根据 HTTP_ACCEPT_LANGUAGE 自动判别该翻译为何种语言。如果要手动指定语言,比如要指定翻译为德语,可以在 controller/config 中加入如下代码:
$language = 'deu'; // 要翻译为何种语言
Configure::write('Config.language', $language);
// $this->Session->write('Config.language', $language); // 或者是这句

语言编码在这里
http://www.loc.gov/standards/iso639-2/php/code_list.php

官方文档
http://book.cakephp.org/view/163/Localization-in-CakePHP

------

又ps
刚刚发现和多语言无关,只需要将模板存为utf-8格式,默认或指定charset也为utf-8即可显示汉字属性。

你可能感兴趣的:(html,PHP,qq,腾讯,cakephp)