문제

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는 문서를 업데이트했습니다.번역 행동의 경우 여기..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top