Look at
http://bakery.cakephp.org/articles/kicaj/2013/01/27/internationalization_with_static_and_dynamic_content_routing_and_switching
W dniu niedziela, 7 lipca 2013 12:16:25 UTC+2 użytkownik Hervé Thouzard
napisał:
>
> Hello,
>
> I have many problems with the translate behavior.
> Here is my configuration.
>
> At the top of bootstrap.php I have :
>
>> Configure::write('Config.languages', array('eng', 'fra', 'ita'));
>> Configure::write('Config.language', 'fra');
>
>
> My model, a very simple Post model with id, title, content, created,
> modified :
>
> class Post extends AppModel {
>> public $displayField = 'title';
>> public $actsAs = array(
>> 'Translate' => array(
>> 'title' => '_title',
>> 'content' => '_content',
>> )
>> );
>> public $validate = array(
>> 'title' => array(
>> 'notempty' => array(
>> 'rule' => array('notempty'),
>> 'message' => "Veuillez renseigner un titre",
>> ),
>> ),
>> );
>> }
>
>
> An extract from my controler :
>
>> public function admin_view($id = null) {
>> if (!$this->Post->exists($id)) {
>> throw new NotFoundException(__('Invalid post'));
>> }
>> $this->Post->id = $id;
>> $this->set('post', $this->Post->read());
>> }
>
>
> And my view :
>
> <h2><?php echo __('Post'); ?></h2>
>> <dl>
>> <dt><?php echo __('Id'); ?></dt>
>> <dd>
>> <?php echo h($post['Post']['id']); ?>
>>
>> </dd>
>> <dt><?php echo __('Title'); ?></dt>
>> <dd>
>> <?php echo h($post['Post']['title']); ?>
>>
>> </dd>
>> <dt><?php echo __('Content'); ?></dt>
>> <dd>
>> <?php echo h($post['Post']['content']); ?>
>>
>> </dd>
>> <dt><?php echo __('Created'); ?></dt>
>> <dd>
>> <?php echo h($post['Post']['created']); ?>
>>
>> </dd>
>> <dt><?php echo __('Modified'); ?></dt>
>> <dd>
>> <?php echo h($post['Post']['modified']); ?>
>>
>> </dd>
>> </dl>
>> </div>
>
>
> That's standard code mostly generated by bake.
> An extract from my database :
>
> 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` text,
>> PRIMARY KEY (`id`),
>> KEY `locale` (`locale`),
>> KEY `model` (`model`),
>> KEY `row_id` (`foreign_key`),
>> KEY `field` (`field`)
>> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
>> INSERT INTO `i18n` VALUES(19, 'eng', 'Post', 4, 'title', 'en title 4');
>> INSERT INTO `i18n` VALUES(20, 'fra', 'Post', 4, 'title', 'fr titre 4');
>> INSERT INTO `i18n` VALUES(21, 'ita', 'Post', 4, 'title', 'it titla 4');
>> INSERT INTO `i18n` VALUES(22, 'eng', 'Post', 4, 'content', 'en content
>> 4');
>> INSERT INTO `i18n` VALUES(23, 'fra', 'Post', 4, 'content', 'fr contenu
>> 4');
>> INSERT INTO `i18n` VALUES(24, 'ita', 'Post', 4, 'content', 'it contena
>> 4');
>> CREATE TABLE `posts` (
>> `id` int(11) NOT NULL AUTO_INCREMENT,
>> `title` varchar(255) NOT NULL,
>> `content` text NOT NULL,
>> `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
>> CURRENT_TIMESTAMP,
>> `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
>> PRIMARY KEY (`id`),
>> KEY `created` (`created`)
>> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
>> INSERT INTO `posts` VALUES(4, 'en title 4', 'en content 4', '0000-00-00
>> 00:00:00', '0000-00-00 00:00:00');
>
>
>
> With this default configuration when I go to
> http://localhost/multilangues/admin/posts/view/4
> The view displays :
> Id4 Titre Contenu Créée le0000-00-00 00:00:00 Modifié0000-00-00
> 00:00:00
>
>
> Nothing for the title and the content.
>
> If I modify my model like this :
>
> public $actsAs = array(
>> 'Translate' => array(
>> 'title',
>> 'content,
>> )
>> );
>
>
> Then the display is "correct" :
> Id4 Titrefr titre 4 Contenufr contenu 4 Créée le0000-00-00 00:00:00
> Modifié0000-00-00 00:00:00
>
> I have the title and the content.
> But I will not have all the different translated values in the different
> locales to edit my post in all its languages...
>
> Can someone help me please ?
>
> Bye,
> Hervé
>
>
>
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.