cakephp.org 上没有文档,我无法在 google 上找到文档。请给我链接一些文档或提供一份!

有帮助吗?

解决方案

翻译行为是 CakePHP 的另一个非常有用但文档很少的功能。我已经在多语言网站上实施了几次,并取得了一定的成功,遵循以下原则。

首先,翻译行为只会国际化您网站的数据库内容。如果您有更多静态内容,您将需要查看 Cake's __('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 和翻译行为配合良好的语言切换解决方案。

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

其他提示

对于任何搜索相同内容的人,cakephp 更新了他们的文档。对于翻译行为,请转到 这里..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top