Вопрос

Документации по cakephp.org нет, и я не могу найти ее в Google.Пожалуйста, свяжите мне какую-нибудь документацию или предоставьте ее!

Это было полезно?

Решение

Поведение перевода - еще одна из очень полезных, но плохо документированных функций CakePHP.Я реализовывал это пару раз с разумным успехом на многоязычных веб-сайтах следующим образом.

Во-первых, поведение translate приведет только к интернационализации содержимого базы данных вашего сайта.Если у вас есть еще какой-нибудь статичный контент, вы захотите взглянуть на Cake __('string') функция-оболочка и gettext (есть некоторая полезная информация по этому поводу здесь)

Предполагая, что есть содержимое, которое мы хотим перевести с помощью следующей таблицы базы данных:

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 для полей title и body для языкового стандарта pol.Finds будет выполнять поиск на основе текущей локали, установленной в браузере пользователя, возвращая массив типа:

[Content]
  [id]
  [titleTranslation]
  [bodyTranslation]

Мы используем отличные компонент p28n реализовать решение для переключения языка, которое довольно хорошо работает с поведением gettext и translate.

Это не идеальная система - поскольку она создает отношения HABTM "на лету", это может вызвать некоторые проблемы с другими отношениями, которые вы, возможно, создали вручную, но если вы будете осторожны, она может работать хорошо.

Другие советы

Для тех, кто ищет одно и то же, cakephp обновил свою документацию.Для Перевода поведения перейдите по ссылке вот..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top