开发者

dynamic model translation in cakephp

开发者 https://www.devze.com 2023-01-11 20:29 出处:网络
i am planning to build a cakephp application that can be flexibly translated to many languages(web interface and table content are need to be translated). my problem is when a new languages is added t

i am planning to build a cakephp application that can be flexibly translated to many languages(web interface and table content are need to be translated). my problem is when a new languages is added to the system , all the table must provide a translation for each field in the form.

here is my database schema.

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, PRIMARY KEY (id) ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;

#

Structure for the languages table :

#

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, PRIMARY KEY (id) ) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=latin1;

#

Structure for the tables table :

#

CREATE TABLE tables ( id int(11) NOT NU开发者_开发百科LL AUTO_INCREMENT, name varchar(50) DEFAULT NULL, description varchar(100) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

#

Structure for the translations table :

#

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, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

#

Data for the fields table (LIMIT 0,500)

#

INSERT INTO fields (id, table_id, name, language_id, label, type, required, properties) VALUES (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,'Telephone','text',NULL,NULL), (7,2,'fax',1,'Fax','text',NULL,NULL), (8,2,'website',1,'Web site','text',NULL,NULL), (9,2,'email',1,'Email','text',NULL,NULL), (10,2,'picture',1,'Picture','upload',NULL,NULL), (11,2,'to',1,'To country','select',NULL,NULL), (12,2,'latlng',1,'Latitude & Longitud','text',NULL,NULL);

COMMIT;

#

Data for the languages table (LIMIT 0,500)

#

INSERT INTO languages (id, name, state, label, default) VALUES (1,'En',0,'English',NULL), (3,'Fr',0,'France',NULL), (2,'Es',1,'Espanol',NULL);

COMMIT;

#

Data for the tables table (LIMIT 0,500)

#

INSERT INTO tables (id, name, description) VALUES (1,'countries','Country'), (2,'embassies','Embassy');

when i wanna add a new record to the for instance Embassy table then the formhelper need to have many field named "Name" according to the number of languages activated in the language table.

please help .

thanks you


Have you tried Translate behavior? Find the book "Practical CakePHP Projects". There is a chapter "Translating Stories" there that could be useful for you.

0

精彩评论

暂无评论...
验证码 换一张
取 消