2016-11-11 11 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) 
} 

을하지만이 국제화 추출물 중에 오류를 생성합니다.

이 항목에 대한 번역은 어떻게받을 수 있습니까?

난 당신이 엔티티 클래스 대신 표 클래스 UsersController의

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; 
    } 

    ...... 
} 

편집 방법을 아래와 같이 법인의

만들기 변화의 옵션을 정의한다고 생각하면

매트

답변

0

감사

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

귀하의 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

안녕에 도움을 주셔서 감사합니다. "App \ Model \ Table \ UsersTable"테이블이 "userRoles"와 관련이 없습니다. "라는 오류 메시지가 나타납니다. UserTable에 줄을 추가해도 효과가 없습니다. –

+0

Sry, 내 잘못. 내 탁자 반에는 나쁜 남은 것이 있었어. 런타임 중에 오류가 남아 있지만 냄비 파일을 추출하려고하면 "유효하지 않은 마커 내용 __ ($ val)"이 표시됩니다. –