My 3rd option seems to be the most simple, although i admit it doesnt sound quite right. Having fixed table fields for languages doesnt seem correct.
I can see disavantages in all 3 options, thats why i wanted to ask everybody's opinion on something like this, i mean, a assume that dealing with a multi language project is something that everybody will come across eventually, right? :-) Regarding your case, Engel, i would go for something like session or cookie, thatsets a "global" var, so you can do the query like this: $active_lang = $_SESSION...whatever; // will be "en" or "es" $query="select name_".$active_lang." name from recipes"; $res = mysql_query($query) or die("blah blah"); ... retrieve always the field named "name", which will always be in your active language. Hope it helps. :-) MV On Fri, Nov 27, 2009 at 4:13 PM, Engel Sanchez <en...@solunion.com> wrote: > I am really interested in the same answer... > > I am making a script.. and as I will only have 2 languages I decided to use > you 3rd option (Fields for each language), because of less rows. > > But I really would like to know if there is a better approach to this. > > *eg. php function:* > > function getRecipeName($id) { > global $database; > $query = mysql_query("SELECT name_english,name_spanish > FROM ".$database['prefix']."recipes > WHERE id = '$id' > LIMIT 1 > ") or die(mysql_error()); > > $RECIPES = mysql_fetch_object($query); > > if (ACTIVE_LANG == "spanish" && $RECIPES->name_spanish != "") { > $return = "".$RECIPES->name_spanish.""; } > elseif (ACTIVE_LANG == "spanish" && $RECIPES->name_spanish == "") { > $return = "".$RECIPES->name_english." [Sólo inglés disponible]"; } > elseif (ACTIVE_LANG == "english" && $RECIPES->name_english != "") { > $return = "".$RECIPES->name_english.""; } > else {$return = "".$RECIPES->name_spanish." [Only spanish available]"; } > > return $return; > } > > > Engel > > > > 2009/11/27 Elizabeth Mattijsen <l...@dijkmat.nl> > > > On Nov 27, 2009, at 4:34 PM, Miguel Vaz wrote: > > > This is my first post, and could use some points of view on the > subject. > > > Have a project that will have several languages for its records, for > > places, > > > for example, whose names and descriptions will be in 3 languages. > > > > > > Have already read several sites about it but always end up with several > > > perspectives: > > > > > > 1 - Tables for each language: places_pt, places_en, places_es, with > > fields: > > > id, name, description; Seems superfluous, but will leave less records > on > > > each table, although adding a great amount of tables, the more > languages > > i > > > have; > > > > > > 2 - Rows for each language: id, lang, name, description - the field > > "lang" > > > will have "pt", "en" or "es", and when displaying, i will have to > lookup > > the > > > active language and get the proper record; Will add tremendously to the > > > record #; > > > > > > 3 - Fields for each language: table "places", with fields: id, name_pt, > > > name_en, name_es, description_pt,description_en,description_es - not > > likely > > > to add a new language, but still adding new field adds complexity. > > > > > > Is there a "proper" way to do things? Any usual way of handling several > > > languages on a project? Any help is highly appreciated, thanks. > > > > This really depends on whether you have all content available in all > > languages. And if not, how you want to fall back to other languages. > And > > how often you add new languages. > > > > > > > > Liz > > -- > > MySQL General Mailing List > > For list archives: http://lists.mysql.com/mysql > > To unsubscribe: http://lists.mysql.com/mysql?unsub=en...@solunion.com > > > > > > > -- > Engel Sanchez > Solunion Group || Esfera Digital > www.solunion.com || www.esferadigital.com > E-mail: en...@solunion.com >