cakephp中的动态模型转换

时间:2010-08-18 02:36:28

标签: cakephp

我打算构建一个可以灵活地翻译成多种语言的cakephp应用程序(需要翻译Web界面和表格内容)。我的问题是当一个新语言被添加到系统时,所有表必须为表单中的每个字段提供翻译。

这是我的数据库架构。

CREATE TABLE fields(   id int(11)NOT NULL AUTO_INCREMENT,   table_id int(11)DEFAULT NULL,   name varchar(50)DEFAULT NULL,   language_id int(11)DEFAULT'1',   label varchar(255)DEFAULT NULL,   type varchar(20)DEFAULT NULL,   required tinyint(1)DEFAULT NULL,   properties varchar(100)DEFAULT NULL,   主要关键(id) )ENGINE = MyISAM AUTO_INCREMENT = 13 DEFAULT CHARSET = latin1;

languages表的结构:

CREATE TABLE languages(   id int(11)NOT NULL AUTO_INCREMENT,   name varchar(255)NOT NULL,   state tinyint(1)NOT NULL,   label varchar(100)DEFAULT NULL,   default tinyint(1)DEFAULT NULL,   主要关键(id) )ENGINE = MyISAM AUTO_INCREMENT = 14 DEFAULT CHARSET = latin1;

tables表的结构:

CREATE TABLE tables(   id int(11)NOT NULL AUTO_INCREMENT,   name varchar(50)DEFAULT NULL,   description varchar(100)DEFAULT NULL,   主要关键(id) )ENGINE = MyISAM AUTO_INCREMENT = 3 DEFAULT CHARSET = latin1;

translations表的结构:

CREATE TABLE translations(   id int(11)NOT NULL AUTO_INCREMENT,   field_id varchar(50)NOT NULL,   value varchar(255)NOT NULL,   record_id int(11)DEFAULT NULL,   主要关键(id) )ENGINE = MyISAM DEFAULT CHARSET = latin1;

fields表的数据(LIMIT 0,500)

INSERT INTO fieldsidtable_idnamelanguage_idlabeltype,{{1 }},required)价值观   (1,1, '姓名',1, '农布雷', '文本',NULL,NULL),   (2,1, '姓名',2, '名称', '文本',NULL,NULL)   (3,2, '名',1, '名', '文字',NULL,NULL)   (4,2, 'COUNTRY_ID',1, '国家', '选择',NULL,NULL),   (5,2, '地址',1, '地址', '富二代',NULL,NULL)   (6,2, '电话',1, '电话', '文本',NULL,NULL),   (7,2, '传真',1 '传真', '文本',NULL,NULL),   (8,2,'网站',1,'网站','文字',NULL,NULL),   (9,2, '电子邮件',1, '电子邮件', '文本',NULL,NULL)   (10,2, '画面',1, '图片', '上传',NULL,NULL),   (11,2,'to',1,'To country','select',NULL,NULL),   (12,2,'latlng',1,'Latitude& Longitud','text',NULL,NULL);

COMMIT;

properties表的数据(LIMIT 0,500)

INSERT INTO languageslanguagesidnamestatelabel)价值观   (1, '恩',0, '英语',NULL),   (3, 'FR',0, '法国',NULL),   (2, '居',1 '西班牙语',NULL);

COMMIT;

default表的数据(LIMIT 0,500)

INSERT INTO tablestablesidname)价值观   (1, '国家', '国家'),   (2, '大使馆', '大使馆');

当我想在例如Embassy表中添加新记录时,formhelper需要根据语言表中激活的语言数量,将许多字段命名为“Name”。

请帮忙。

谢谢你

1 个答案:

答案 0 :(得分:0)

你试过Translate behavior吗?找到“Practical CakePHP Projects”一书。那里有一章“翻译故事”可能对你有用。