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 :
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" :
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 cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment