我打算构建一个可以灵活地翻译成多种语言的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 fields
(id
,table_id
,name
,language_id
,label
,type
,{{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 languages
(languages
,id
,name
,state
,label
)价值观
(1, '恩',0, '英语',NULL),
(3, 'FR',0, '法国',NULL),
(2, '居',1 '西班牙语',NULL);
COMMIT;
#
default
表的数据(LIMIT 0,500)#
INSERT INTO tables
(tables
,id
,name
)价值观
(1, '国家', '国家'),
(2, '大使馆', '大使馆');
当我想在例如Embassy表中添加新记录时,formhelper需要根据语言表中激活的语言数量,将许多字段命名为“Name”。
请帮忙。
谢谢你