2012-02-09 50 views
0

我正試圖對現有的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. 

「輸入搜索字符串」的值已正確翻譯,但它位於輸入標記之外,因此它顯示在外部的搜索框。

我已經試過代碼的各種排列,如:

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

而且似乎沒有任何工作。正如我所說,它在視圖的其他區域工作(雖然作爲一個數組值),但我無法得到這個工作。

BTW,代碼之前,我開始是這樣的:

'value'=> 'Enter search string', 

任何想法?

謝謝你的時間。

回答

1

在CakePHP 1.X的__()功能相呼應,在默認情況下的內容,而在這種情況下,你只需要存儲。您可以使用第二個參數返回,而不是迴應的內容,就像這樣:

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

從CakePHP的2.0向上,你應該不再需要做到這一點,因爲它默認返回。

+0

ding ding ding !!這就像一個冠軍,感謝一百萬。 – user791194 2012-02-09 22:41:47

+0

很高興聽到它的工作:)與您的項目的其餘部分祝你好運。 – Oldskool 2012-02-09 22:43:41