par
Ajoloca » 14 nov. 2006, 16:41
Bonjour,
Il y a QQ temps j'avais fait un squelette pour une internationalisation.
Je suis parti sur l'idée de faciliter l'évolution (sans avoir à toucher à la structure de la base)
Je suis parti sur deux tables et une relation

Et le source de création des tables
CREATE TABLE zonesHTML (
id_zone VARCHAR(30) NOT NULL COMMENT 'Correspond a l''id HTML',
desc_zone VARCHAR(255) NULL COMMENT 'Description de la zone',
PRIMARY KEY(id_zone)
)
ENGINE=InnoDB;
CREATE TABLE langues (
code_lang VARCHAR(3) NOT NULL COMMENT 'Selon la norme ISO 3166-1 A3',
langue VARCHAR(50) NULL,
drapeau VARCHAR(255) NULL COMMENT 'Chemin du fichier, nom image idem code_lang.gif',
PRIMARY KEY(code_lang)
)
ENGINE=InnoDB;
CREATE TABLE contenus (
id_zone VARCHAR(30) NOT NULL,
code_lang VARCHAR(3) NOT NULL,
contenu LONGTEXT NULL COMMENT 'Texte dans la langue pour cet id',
PRIMARY KEY(id_zone, code_lang),
FOREIGN KEY(id_zone)
REFERENCES zonesHTML(id_zone)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(code_lang)
REFERENCES langues(code_lang)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE=InnoDB;
Il y avait une autre partie qui associait les pays et les langues pour proposer en tête de liste des langues celle(s) parlées dans le pays, mais c'est pas le propos du post.
Bonjour,
Il y a QQ temps j'avais fait un squelette pour une internationalisation.
Je suis parti sur l'idée de faciliter l'évolution (sans avoir à toucher à la structure de la base)
Je suis parti sur deux tables et une relation
[img]http://www.joloca.eu/img_forums/phpFrance/internationalisation.db.png[/img]
Et le source de création des tables[php]CREATE TABLE zonesHTML (
id_zone VARCHAR(30) NOT NULL COMMENT 'Correspond a l''id HTML',
desc_zone VARCHAR(255) NULL COMMENT 'Description de la zone',
PRIMARY KEY(id_zone)
)
ENGINE=InnoDB;
CREATE TABLE langues (
code_lang VARCHAR(3) NOT NULL COMMENT 'Selon la norme ISO 3166-1 A3',
langue VARCHAR(50) NULL,
drapeau VARCHAR(255) NULL COMMENT 'Chemin du fichier, nom image idem code_lang.gif',
PRIMARY KEY(code_lang)
)
ENGINE=InnoDB;
CREATE TABLE contenus (
id_zone VARCHAR(30) NOT NULL,
code_lang VARCHAR(3) NOT NULL,
contenu LONGTEXT NULL COMMENT 'Texte dans la langue pour cet id',
PRIMARY KEY(id_zone, code_lang),
FOREIGN KEY(id_zone)
REFERENCES zonesHTML(id_zone)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(code_lang)
REFERENCES langues(code_lang)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE=InnoDB;[/php]
Il y avait une autre partie qui associait les pays et les langues pour proposer en tête de liste des langues celle(s) parlées dans le pays, mais c'est pas le propos du post.