CakePHP中数组值的本地化



我正在尝试本地化现有的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开始,您不应该再这样做了,因为它在默认情况下会返回。

最新更新