CakePHP中数组值的本地化

时间:2012-02-09 21:11:00

标签: php cakephp localization internationalization

我正在尝试本地化现有的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.

“输入搜索字符串”值已正确转换,但它位于输入标记之外,因此显示在搜索框之外。

我尝试了各种代码的排列,如:

 'value'=> echo __('Enter search string'),
 'value'=> `__('Enter search string')`,

似乎没有任何效果。正如我所说它在视图的其他区域(虽然作为一个数组值)工作,但我不能让这个工作。

BTW,我开始之前的代码看起来像这样:

 'value'=> 'Enter search string',

有什么想法吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

在CakePHP 1.x中,__()函数默认回显内容,而在这种情况下,您只想存储它。您可以使用第二个参数返回而不是回显内容,如下所示:

'value' => __('Enter search string', true),

从CakePHP 2.0开始,您不再需要这样做,因为它默认返回。