Daniel McBrearty wrote: > Hi > > I have a website that has multilingual text stored in the database. > Currently I just have a flat table (lets called it "translations"), one > row per text item, one column per language. This works OK, for now, but > I am looking at a redesign. Mostly I want to keep information about the > languages in teh db as well, so that look like an extra table, one row > per lang. Not sure about your base and site text ;) But I can tell you how I solved a similar problem: I used tables: languages (language_id serial, description_id int4) references descriptions (description_id) descriptions (description_id serial,acronym text) descriptiontexts (description_id int4, language_id int4, description text) references descriptions (description_id), languages (language_id) (pseudocode) so the languages table keeps all the languages I use in the database, (as ids) for example: languages language_id | description_id 1 1 2 2 3 3 descriptions description_id | acronym 1 lang_en 2 lang_de 3 lang_ru discriptiontexts description_id | language_id | description 1 1 english 1 2 Englisch 2 1 german 2 2 Deutsch thats for the self documentation - now you can translate sentences (give them an acronym for use, like 'customer_basket_close' and let your translaters translate them with respective language_id into descriptiontexts table. This way for a given expression (description_id) there can only be one entry per language. HTH Tino Wildenhain