Extending my above example and applying to your DB:
Languages: http://www.loc.gov/standards/iso639-2/php/code_list.php
Countries: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
Locales: http://www.roseindia.net/tutorials/I...les-list.shtml
Code:
-- Fill this with all ISO-639-1 languages
CREATE TABLE `languages` (
`language_id` CHAR(2) NOT NULL PRIMARY KEY,
`name` VARCHAR(255) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;
-- Fill this with all ISO-3166 Countries
CREATE TABLE `countries` (
`country_id` CHAR(2) NOT NULL PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`default` TINYINT NOT NULL DEFAULT 0
) ENGINE=INNODB DEFAULT CHARSET=utf8;
-- Fill this table with supported locales
CREATE TABLE `locales` (
`locale_id` VARCHAR(5) NOT NULL PRIMARY KEY, -- This would be like 'en_US', etc.
`language_id` CHAR(2) NOT NULL REFERENCES `languages`(`language_id`),
`country_id` CHAR(2) NULL REFERENCES `countries`(`country_id`),
`name` VARCHAR(255),
`active` TINYINT NOT NULL DEFAULT 1
PRIMARY KEY (`language_id`, `country_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `pages` (
`page_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`page_address` VARCHAR(128) DEFAULT NULL,
PRIMARY KEY (`page_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `page_contents` (
`page_id` INT UNSIGNED NOT NULL REFERENCES pages(page_id),
`locale_id` VARCHAR UNSIGNED NOT NULL REFERENCES locales(locale_id),
`title` VARCHAR(40) DEFAULT NULL,
`heading` VARCHAR(255) DEFAULT NULL,
`content` TEXT,
PRIMARY KEY (`page_id`, `locale_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 ;
Bookmarks