2016-11-11 10 views
0

Я пытаюсь закодировать свое приложение на нескольких языках. Когда я создаю свой default.pot, я вижу, что мои варианты выбора не будут переведены.Как перевести варианты выбора в CakePHP3

//UsersTable 
<?php 

class UsersTable extends Table { 

    public $userRoles = ['admin' => 'Administrator', 'author' => 'Author' ...]; 

} 


// UsersController 
public function edit($userId = 0) { 
    $user = $this->Users->newEntity(); 
    $this->set("user", $user); 
    $this->set("userRoles", $this->Users->userRoles); 
} 

//edit.ctp 
<?php 
echo $this->Form->create($user); 
echo $this->Form->input("role",["type" => "select","options" => $userRoles,"label" => __("Userrole")]); 

Я пытался что-то вроде этого:

$_userRoles = []; 
foreach ($userRoles as $key => $value) { 
    $_userRoles[$key] = __($value); // tried also __($value, true) 
} 

, но это создает ошибку при выписке i18n.

Как я могу получить перевод?

Спасибо

Мат

ответ

0

Я думаю, вы должны определить параметры в Entity класса вместо таблицы класса

изменения, внесенные в Entity, как показано ниже

namespace App\Model\Entity; 
use Cake\ORM\Entity; 
use Cake\I18n\I18n; //important to use this 

class User extends Entity { 

    ..... 

    private $userRoles = ['admin' => 'Administrator', 'author' => 'Author' ...]; 

    ...... 

    protected function _getUserRoles() { 
     $return=(); 
     foreach($this->userRoles as $k=>$val) 
     { 
      $return[$k]=__($value); 
     } 
     return $return; 
    } 

    ...... 
} 

Изменить метод UsersController

public function edit($userId = 0) { 
    $user = $this->Users->newEntity(); 
    $this->set("user", $user); 
    $this->set("userRoles", $user->user_roles); 
} 

Ваш edit.ctp

echo $this->Form->create($user); 
echo $this->Form->input("role",["type" => "select","options" => $userRoles,"label" => __("Userrole")]); 

ИЛИ

Добавить ниже строки в файле класса таблицы перед тем объявлении класса \

use Cake\I18n\I18n; 

class UsersTable extends Table { 

Я надеюсь, что это поможет вас

+0

Hi , и спасибо за вашу помощь. Первый метод возвращает следующую ошибку: «Таблица« Приложение \ Модель \ Таблица \ UsersTable »не связана с« userRoles »». Просто добавление строки в UserTable не влияет. –

+0

Sry, моя вина. в моем классе таблицы было плохое. во время выполнения отсутствует ошибка, но когда я пытаюсь извлечь файл банка, я получаю «недопустимое содержимое маркера __ ($ val)». –

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

  • Нет связанных вопросов^_^