cakephp中的动态模型翻译
Posted
技术标签:
【中文标题】cakephp中的动态模型翻译【英文标题】:dynamic model translation in cakephp 【发布时间】:2010-08-18 02:36:28 【问题描述】:我正在计划构建一个可以灵活翻译成多种语言的cakephp应用程序(需要翻译网页界面和表格内容)。我的问题是当向系统添加新语言时,所有表格都必须为表单中的每个字段提供翻译。
这是我的数据库架构。
创建表fields
(
id
int(11) NOT NULL AUTO_INCREMENT,
table_id
int(11) 默认为空,
name
varchar(50) 默认为空,
language_id
int(11) 默认“1”,
label
varchar(255) 默认为空,
type
varchar(20) 默认为空,
required
tinyint(1) 默认为空,
properties
varchar(100) 默认为空,
主键 (id
)
) ENGINE=MyISAM AUTO_INCREMENT=13 默认字符集=latin1;
#
languages
表的结构:
#
创建表languages
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(255) 非空,
state
tinyint(1) 非空,
label
varchar(100) 默认为空,
default
tinyint(1) 默认为空,
主键 (id
)
) ENGINE=MyISAM AUTO_INCREMENT=14 默认字符集=latin1;
#
tables
表的结构:
#
创建表tables
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(50) 默认为空,
description
varchar(100) 默认为空,
主键 (id
)
) ENGINE=MyISAM AUTO_INCREMENT=3 默认字符集=latin1;
#
translations
表的结构:
#
创建表translations
(
id
int(11) NOT NULL AUTO_INCREMENT,
field_id
varchar(50) 非空,
value
varchar(255) 非空,
record_id
int(11) 默认为空,
主键 (id
)
) ENGINE=MyISAM 默认字符集=latin1;
#
fields
表的数据(限制 0,500)
#
插入fields
(id
、table_id
、name
、language_id
、label
、type
、required
、properties
)值
(1,1,'name',1,'Nombre','text',NULL,NULL),
(2,1,'name',2,'Name','text',NULL,NULL),
(3,2,'name',1,'Name','text',NULL,NULL),
(4,2,'country_id',1,'Country','select',NULL,NULL),
(5,2,'address',1,'Address','rich',NULL,NULL),
(6,2,'tel',1,'电话','文本',NULL,NULL),
(7,2,'fax',1,'Fax','text',NULL,NULL),
(8,2,'网站',1,'网站','文本',NULL,NULL),
(9,2,'email',1,'Email','text',NULL,NULL),
(10,2,'图片',1,'图片','上传',NULL,NULL),
(11,2,'to',1,'To country','select',NULL,NULL),
(12,2,'latlng',1,'经纬度','text',NULL,NULL);
提交;
#
languages
表的数据(限制 0,500)
#
插入languages
(id
,name
,state
,label
,default
)值
(1,'En',0,'English',NULL),
(3,'Fr',0,'France',NULL),
(2,'Es',1,'西班牙语',NULL);
提交;
#
tables
表的数据(限制 0,500)
#
插入tables
(id
,name
,description
)值
(1,'国家','国家'),
(2,'大使馆','大使馆');
当我想向例如使馆表添加新记录时,表单助手需要根据语言表中激活的语言数量有许多名为“名称”的字段。
请帮忙。
谢谢你
【问题讨论】:
【参考方案1】:你试过Translate behavior吗?查找“实用 CakePHP 项目”一书。那里有一章“翻译故事”可能对您有用。
【讨论】:
是的,但它不符合我的要求。在管理员中,我需要为每条记录添加多个翻译的能力。我不想一一翻译每个语言。 你熟悉croogo吗?如果没有,您可以查看代码。它使用插件(翻译)将管理员中的翻译添加到节点(与您希望做的一样),如果我没记错的话,它还使用翻译行为。此外,它只对所有翻译(i18n)使用一个表,这可能会大大简化事情。以上是关于cakephp中的动态模型翻译的主要内容,如果未能解决你的问题,请参考以下文章