CakePHP에서 TranslateBehavior를 어떻게 사용하나요?
문제
cakephp.org에는 문서가 없으며 Google에서 문서를 찾을 수 없습니다.나에게 문서를 연결하거나 제공해주세요!
해결책
번역 동작은 CakePHP의 매우 유용하지만 제대로 문서화되지 않은 기능 중 하나입니다.저는 다음 라인을 따라 다국어 웹사이트에서 합리적인 성공을 거두며 몇 번 구현했습니다.
첫째, 번역 동작은 사이트의 데이터베이스 콘텐츠만 국제화합니다.정적인 콘텐츠가 더 있으면 Cake's를 살펴보세요. __('string')
래퍼 함수 및 gettext
(이것에 관한 유용한 정보가 있습니다. 여기)
다음 db 테이블을 사용하여 번역하려는 내용이 있다고 가정합니다.
CREATE TABLE `contents` (
`id` int(11) unsigned NOT NULL auto_increment,
`title` varchar(255) default NULL,
`body` text,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
content.php 모델은 다음을 갖습니다:
var $actsAs = array('Translate' => array('title' => 'titleTranslation',
'body' => 'bodyTranslation'
));
그 정의에서.그런 다음 i18n 테이블을 데이터베이스에 다음과 같이 추가해야 합니다.
CREATE TABLE `i18n` (
`id` int(10) NOT NULL auto_increment,
`locale` varchar(6) NOT NULL,
`model` varchar(255) NOT NULL,
`foreign_key` int(10) NOT NULL,
`field` varchar(255) NOT NULL,
`content` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
그런 다음 컨트롤러의 데이터베이스에 데이터를 저장할 때 로케일을 원하는 언어로 설정합니다(이 예는 폴란드어입니다).
$this->Content->locale = 'pol';
$result = $this->Content->save($this->data);
그러면 pol 로케일의 제목 및 본문 필드에 대한 항목이 i18n 테이블에 생성됩니다.찾기는 사용자 브라우저에 설정된 현재 로캘을 기반으로 찾아 다음과 같은 배열을 반환합니다.
[Content]
[id]
[titleTranslation]
[bodyTranslation]
우리는 우수한 p28n 구성 요소 gettext 및 번역 동작과 매우 잘 작동하는 언어 전환 솔루션을 구현합니다.
완벽한 시스템은 아닙니다. 즉석에서 HABTM 관계를 생성하므로 수동으로 생성한 다른 관계에 일부 문제가 발생할 수 있지만 주의하면 잘 작동할 수 있습니다.
다른 팁
같은 것을 검색하는 사람을 위해 cakephp는 문서를 업데이트했습니다.번역 행동의 경우 여기..