我正在尝试本地化现有的cakephp应用程序。在大多数情况下,我让它按照我想要的方式工作,但有一种情况我无法想象。
我正在使用表单助手创建这样的表单:
echo $this->Form->create('search', array('url' =>
array('controller' => '/',
'action' => '/search/searcher'),
'onsubmit'=>'return checkForm();',
'class'=>'find-form'));
echo '<fieldset>';
echo $this->Form->input('name', array(
'type'=>'hidden',
'div'=>false,
'id'=>'name',
'class'=>'nice',
'label'=>false,
'value'=>''
));
echo $this->Form->input('myvalue', array(
'type'=>'text',
'div'=>false,
'id'=>'searchval',
'class'=>'nice',
'value'=> __('Enter search string'),
'label'=>false));
问题出在线路上:
'value'=> __('Enter search string'),
生成的html如下所示:
...
<fieldset>
<input type="hidden" name="data[search][name]"
id="name" value="" />
Enter Search String
<input name="data[search][myvalue]"
type="text"
id="searchval"
class="nice"
and so on.
值"Enter Search String"被正确翻译,但它在输入标记之外,因此它显示在搜索框之外。
我尝试过各种代码排列,比如:
'value'=> echo __('Enter search string'),
'value'=> `__('Enter search string')`,
似乎什么都不起作用。正如我所说的,它适用于视图的其他区域(不过是作为数组值),但我无法使它发挥作用。
顺便说一句,我开始之前的代码是这样的:
'value'=> 'Enter search string',
有什么想法吗?
谢谢你抽出时间。
在CakePHP 1.x中,__()
函数默认情况下会回显内容,而在这种情况下,您只想存储它。您可以使用第二个参数来返回而不是回显内容
'value' => __('Enter search string', true),
从CakePHP 2.0开始,您不应该再这样做了,因为它在默认情况下会返回。