当前位置:  开发笔记 > 编程语言 > 正文

如何在CakePHP中使用TranslateBehavior?

如何解决《如何在CakePHP中使用TranslateBehavior?》经验,为你挑选了1个好方法。

cakephp.org上没有文档,我无法在谷歌上找到一个.请链接我一些文件或提供一个!



1> David Heggie..:

翻译行为是CakePHP的另一个非常有用但记录不佳的功能.我已经多次实施了它,并且在多语言网站上取得了相当大的成功.

首先,翻译行为只会使您网站的数据库内容国际化.如果你有更多的静态内容,你会想看看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表中为pol语言环境的标题和正文字段创建条目.Finds将根据用户浏览器中设置的当前区域设置查找,返回如下数组:

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

我们使用优秀的p28n组件来实现一种语言切换解决方案,该解决方案与gettext和translate行为非常兼容.

它不是一个完美的系统 - 因为它会动态创建HABTM关系,它可能会导致您可能手动创建的其他关系出现一些问题,但如果您小心,它可以很好地工作.


谢谢.甚至找出i18n表的名称和字段很难..谈论隐藏的功能..
推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有