I dont like that we would have to create a ___Localization table for every table that we want to localize.Maybe look into using a name / value pair type table. Im away from the database right now, so beware of typos below :)Something like this:declare @user table (user_id int, first_name varchar(100) )declare @locale table (locale_id int, locale varchar(100) )declare @user_attribute_type table (attribute_type_id int, attribute_name varchar(25) )declare @user_attribute table (user_id int, locale_id int, attribute_type_id int, attribute_value varchar(100) ) insert into @userselect 1, 'nathan'insert into @localeselect 1, 'en-US' unionselect 2, 'sp-SP'insert into @user_attribute_typeselect 1, 'first_name' unionselect 2, 'last_name', unionselect 3, 'fav_color'insert into @user_attributeselect 1, 1, 3, 'Red' unionselect 1, 2, 3, 'Rojo'
You could even move locale_id out into another table to define default_locale_id... that way when you alter the default you alter it for all localized attributes.