【问题标题】:Localization of array value in CakePHPCakePHP 中数组值的本地化
【发布时间】:2012-02-09 21:10:59
【问题描述】:

我正在尝试本地化现有的 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')`,

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

顺便说一句,我开始之前的代码是这样的:

 'value'=> 'Enter search string',

有什么想法吗?

感谢您的宝贵时间。

【问题讨论】:

    标签: php cakephp localization internationalization


    【解决方案1】:

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

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

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

    【讨论】:

    • 叮叮叮!!这就像一个冠军,感谢一百万。
    • 很高兴听到它成功了 :) 祝你项目的其余部分好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2012-05-11
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多