Hi,
Like others mentioned, I think that storing Product descriptions, titles, etc. in different langs in the db is a good idea. See this
http://www.openmymind.net/localization/index2.html for a schema suggestion. It should be possible to make a pretty nice interface to edit all the different languages in the db.
As for the pages themselves, I think it's a toss up between separate language files for each page or also putting it in the db. If you put it in the db you can still get translators to work with text files, a little db exporting and scripting to get the text back in the db shouldn't be too hard.
I am going with the db choice myself. I kind of like it all in one place. Bert Hooyman's comment in
http://www.jugglingdb.com/compendium/ge ... sites.html is pretty much the same as my idea - put a list of all pages in one table, text in different langs in another, then link the two thru an intermediate table. This way different pages can use the same text phrases and you can grab all text required for a page in one statement - something like Bert's:
Code: Select all
SELECT page_phrases.key, phrases.text from page_phrases, phrases WHERE
page_phrase.pageID = theCurrentPage AND page_phrase.phraseID = phrases.phraseID AND phrases.languageID = theCurrentLanguage;
I already have a list of pages in the db for authorization purposes so it's a little easier to implement. However, instead of implementing return codes from functions and includes, I have several that output loads of text themselves

So what I'd also have is any fn/inc that needed to, also querying the db for its localized text.
I defer to Ambush Commander's and any other's comments on caching - I know little about implementing any.