2012-02-09 2 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. 

Значение «Enter Search String» переведено правильно, но оно находится вне входного тега, поэтому оно отображается снаружи окна поиска.

Я пробовал различные перестановки кода, как:

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

И ничего не похоже на работу. Как я уже сказал, это работает в других областях зрения (в качестве значения массива, хотя), но я не могу заставить этого работать.

Кстати, код, прежде чем я начал выглядел следующим образом:

'value'=> 'Enter search string', 

Любые идеи?

Спасибо за ваше время.

ответ

1

В CakePHP 1.x функция __() перехватывает содержимое по умолчанию, в то время как в этом случае вы хотите его сохранить. Вы можете использовать второй аргумент для возврата, а не эхо содержимое, например:

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

С CakePHP 2.0 на вверх вы больше не должны делать это, так как он возвращается по умолчанию.

+0

ding ding ding !! Это работало как чемпион, спасибо миллион. – user791194

+0

Приятно слышать, что это сработало :) Удачи с остальной частью вашего проекта. – Oldskool

Смежные вопросы