I've been working on a new software project and its important to support multiple languages.

I've thought of various techniques including language files, a language look-up table (database), etc.

Some of the main issues I see with these methods are:
  • I have "template text" (i.e. "Article name") and then the actual value from the database ("How to translate text"). Both of these need to be translated. The former would be inside a smarty template, the 2nd would be the $value, but would have been a value pulled from the database.
  • Depending on the method, making simple text changes could break the lookup and cause missing translations/orphan translations
  • We simply may not have a translation for something and would have to revert to the default language.
  • Rending speed!
FYI the setup is PHP/MySQL/Smarty.

A few years ago, I only looked into multi-language support. It would be great to hear about some methods that have proved successful/feasible and those that have not...

Any help/input/suggestions/links is greatly appreciated!