На cakephp.org нет документации, и я не могу найти ее в Google. Пожалуйста, свяжите мне какую-нибудь документацию или предоставьте ее!
Как использовать TranslateBehavior в CakePHP?
Ответы (2)
Поведение при переводе - еще одна очень полезная, но плохо документированная функция CakePHP. Я несколько раз реализовал это с разумным успехом на многоязычных веб-сайтах в следующих направлениях.
Во-первых, поведение перевода будет интернационализировать только содержимое базы данных вашего сайта. Если у вас есть еще статический контент, вы захотите взглянуть на функцию-оболочку Cake __('string') и gettext (есть полезная информация об этом здесь)
Предполагая, что есть Contents, который мы хотим перевести со следующей таблицей 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);
Это создаст записи в таблице i18n для полей заголовка и тела для языкового стандарта pol. Поиск будет выполняться на основе текущего языкового стандарта, установленного в браузере пользователя, и возвращает массив, например:
[Content]
[id]
[titleTranslation]
[bodyTranslation]
Мы используем отличный компонент p28n для реализации решения для переключения языков, которое очень хорошо работает с поведением gettext и translate.
Это не идеальная система - поскольку она создает отношения HABTM на лету, это может вызвать некоторые проблемы с другими отношениями, которые вы, возможно, создали вручную, но если вы будете осторожны, она может хорошо работать.
./Console/cake i18n. Эта команда может инициализировать таблицу i18n и извлечь все переводы из вашего приложения в файл локали.
- person Ish; 29.01.2013
Для тех, кто ищет то же самое, cakephp обновил свою документацию. Чтобы узнать о поведении переводчика, перейдите здесь ..