2016-07-26 4 views
1

TabTextField을 번역하려하지만 현재 번역하지 않고 있습니다. 아래의 현재 설정 :탭 이름과 TextField를 변환하는 방법은 무엇입니까?

로케일은 _config.php으로 설정되었습니다. 플러시되었습니다.

i18n::set_locale('de_DE'); 

내 사이트/LANG/de.yml

de: 
    Page: 
    FULLNAME: 'Testing this' 
    CONTACTDETAILS: 'Root.Trying to change to this text' 

Page.php는

<?php 
class Page extends SiteTree { 

    private static $db = array(
     'FullName' => 'Varchar(255)' 
    ); 

    public function getCMSFields() 
    { 
     $fields = parent::getCMSFields(); 
     $fields->addFieldsToTab(_t('Page.CONTACTDETAILS', 'Root.ContactDetails'), array(
      TextField::create('FullName', _t('Page.FULLNAME', 'Full Name')) 
     )); 
     return $fields; 
    } 

} 

그러나 텍스트는 그냥 영어로 표시 번역되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

CMS는 현재 로그인 한 사용자의 Locale 필드를 afaik 번역에 사용합니다. Security으로 이동하고 사용자를 선택하고 Interface LanguageGerman (Germany)으로 변경하여 사용자의 언어를 de_DE (사용자의 번역이 작동해야 함)으로 변경할 수 있습니다.

public function getCMSFields() 
{ 
    $oldLocale = i18n::get_locale(); 
    i18n::set_locale('de_DE'); 
    $fields = parent::getCMSFields(); 
    $fields->addFieldsToTab(_t('Page.CONTACTDETAILS', 'Root.ContactDetails'), array(
     TextField::create('FullName', _t('Page.FULLNAME', 'Full Name')) 
    )); 
    i18n::set_locale($oldLocale); 
    return $fields; 
} 

CMS를 통해 생성 된 새로운 사용자의 LocaleLocale에 따라 설정됩니다

그것은 당신이 유일한 번역 얻을 거기에서 필드를 원하는 경우 getCMSFields 내부의 로케일을 설정할 수도 있습니다 그것들을 생성하는 사용자의

+0

아, 네가 명시한대로 사용자의 인터페이스 언어를 변경했는데 효과가있었습니다. 나는 '루트'를 추가해야했다. 내 yml 파일에 그래서 그것은 오류가 던지고 탭으로 작동합니다. 예 : CONTACTDETAILS : '루트.이 텍스트로 변경하려고합니다.'- 고맙습니다. – ifusion

+1

'루트'를 제외하는 것이 좋습니다. yfield 파일에서 다음과 같이하십시오 :'$ fields-> addFieldsToTab ('Root.'_t ('Page.CONTACTDETAILS', '연락처 세부 사항'), [...]' –

+1

좋은 생각을. – ifusion

관련 문제