2014-05-16 4 views
1

Я использую функцию поведения перевода: __() для перевода вещей. Он отлично работает. Unformtunately, когда я изменить язык в контроллере, как это:Как изменить язык для определенных элементов вида?

Configure::write('Config.language', 'deu'); 

он меняет язык для всего сайта :(

Есть ли способ перевести скажем только определенные части (в виде) ? Например, язык в целом приложение на английском языке, но для некоторого $ this-> элемент я хочу его на немецком языке

Моя попытка:.. в представлении изменить язык так:

<?php 
    Configure::write('Config.language', 'deu'); 
    echo __("Hello World"); 
?> 

Он работает только тогда, когда CakeSession :: прочитать часть в l18n.php удаляется:

if (empty($language)) { 
     // if (CakeSession::started()) { 
     // $language = CakeSession::read('Config.language'); 
     // } 
     if (empty($language)) { 
      $language = Configure::read('Config.language'); 
     } 
    } 

Я мог бы переписать l18n.php так это работает для меня, но это ядро, и я не хочу трогать Это. Есть ли способ для CakeSession :: write in view? cakephp doc говорит it is not possible.

+0

Я уверен, что это дубликат - но то, что остановить вас Настройка :: write'ing язык для ДЭУ, а затем обратно, когда вы закончили? – AD7six

+0

, но когда я настраиваю :: записываю в контроллер, он переведет все, все приложение. Я хочу перевести определенные элементы в представлении (которые включены $ this-> element()) – MilMike

+0

Я попробовал это также в представлении, но язык не изменится. :( – MilMike

ответ

0

Вы можете создать папку, названную как нужный язык внутри вашей папки с элементами, а затем вызвать ее.

Принимая бразильский португальский в качестве примера: <?php echo $this->element('pt_BR/your_element'); ?>

+0

да, хорошая идея. Но то, что я сделал, это то, что я переопределил функцию перевода (подчеркивание), используя собственный php в каталоге поставщика и используя пространства имен. Работает хорошо. – MilMike

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