같이 런타임에 수행 할 수 있습니다,하지만 난 당신의 질문을 이해한다면, 당신의 문제는 이미 핵심 YII 1.x에서 엔진에 의해 해결된다 할 일이별로 없다.
이 /protected/messages/fr/
폴더에 (예를 app.php
에 대한) 모든 파일을 만듭니다 상세
, 당신은해야합니다.
응용 프로그램의 구성 배열에 'coreMessages'=>array('basePath'=>'../protected/messages'),
을 입력하십시오. Yii 번역 시스템을 사용자 정의 된 번역본이있는 폴더로 라우트하십시오.
구성 배열에 'sourceLanguage'=>'en'
을 입력하십시오. 응용 프로그램의 핵심 언어가 영어로 설정되어 있는지 확인하십시오.
번역문 (아래 참조)을 사용하여 파일 app.php
을 채우십시오.
응용 프로그램의 일부를 Yii::t('app', 'string');
(아래 참조)으로 번역하십시오.
번역 파일 형식이어야합니다 :
return array
(
//Translations from Google Translate! :> I don't speak French at all! :>
'This page is not yet translated into your language.'=>'Cette page n'a pas encore été traduit dans votre langue.',
'Language'=>'Langue',
'read more'=>'en savoir plus'
);
따라서, 예를 들어,하지만 같은 블로그 목록보기 문자열 :
<?php Yii::t('app', 'read more'); ?>
당신은에 응용 프로그램 언어를 설정하면 코드 (Yii::app()->language = 'fr';
)로 강제 입력하거나 응용 프로그램 구성 배열 ('language'=>'fr'
)로 사전 설정하여가 표시되어야합니다 (코드 번호 Yii::app()->language = 'fr';
). fr
10 위 또는 위에있는 read more
대신 10 (또는 번역 파일에 넣은 것)을 입력하십시오.
응용 프로그램의 언어가 영어로 설정되어 있거나 번역 문자열을 찾을 수없는 경우 으로 작성된 텍스트가 표시됩니다.
'Error no {code}:'=>'Erreur n {code}:'
: (번역 파일)이 방법에서 완전한 영어 문자열을 사용하는 것이 매우 중요 등
'core.app.language'=>'Langue'
주처럼, "패턴"을 피하기 위해 이유는 당신은 또한 파라미터 플레이스 홀더를 사용할 수있는,이다 실제 매개 변수 값으로 대체됩니다
:
Yii::t('app', 'Error no {code}:', array('{code}'=>$code));
당신이 변수 값을 달리 일정한 메시지 텍스트를 제공 할 수있는이 방법.
"The Definitive Guide to Yii"에 큰 topic about internationalization이 있습니다. 이 문제에 대한 자세한 내용을 보거나 Yii 번역 메커니즘을 좀 더 고급 방법으로 사용하려는 경우이를 읽어야합니다.
마지막 줄 Yii :: app() -> language = 'fr'; 일했다. 컨트롤러의 액션에서이 라인을 추가하고 마술처럼 작동했습니다. 모든 메시지가 원하는 lannguage에 나타납니다 –
@MazIqbal 둘 다 필요하지 않습니다. 단 하나이면 충분합니다. – Harikrishnan
@Harikrishnan 핵심 프레임 워크에서 번역을 제공하는 경우 왜 불필요한 코드로 기본 클래스를 재정의하겠습니까? OP가 주석에서 말했듯이, 애플리케이션 언어 설정을 제외하고는 귀하의 답변 중 어느 것도 필요하지 않습니다. Yii1 문서에 쓰여 있듯이 적절한 메시지를 제공하고 언어를 설정하기 만하면됩니다. – trejder