> Should I:
>
> 1. Make a separate field for each translation and add a method in the
> model to return the correct translation to use in templates?
>
> 2. Make a separate table for translations in general with a foreign
> key to the original record and look up the translation that way?
I think you should:
3. Save every item the same way as original(default language) with
information about i18n of its content.
for example:
for article, add one column to table, like 'i18n' or 'language'.
in my cms, every item can be langualized that way.
to receive correct items, I check what language is requested from URI
(domain.xx/en/articles/slug), store it by router, so whenever I need
main menu in another language, I simply gather rows with designated
lang. I may be used with complicated mechanisms too. easy, intuitive
and fast.