DB structure of a translation Web service

I am building a Web service that will provide content for different
client via Rest API.

currently I have: content has_many :keys (since many keys can
reference the same content)
content table has only one field - text
keys table has name and content_id

example for key: help_about
example for content: “This website is for blablabla…”

I want to add support for translations.
is it reasonable to store the content in separate table for each
language?
for example - content_english, content_spanish, etc.
If it is, how will rails handle it? currently Content.find 1 will
return the text of contents table.
and I will need to tell rails to grab it from content_english or
content_spanish.

btw, I looked at a gettext example and it uses only one table with
locale field to determine what language to show. but I am not sure
it’s a good solution for massive chunk of content and many languages.

Thanks!

HI oren,

There was recent similar discussion about design for content
translations and the answer I gave there may be useful to you:

I’m currently adding content translation to the Kete open source Rails
app (GitHub - kete/kete: Kete was developed by Horowhenua Library Trust and Katipo Communications Ltd. to build a digital library of Horowhenua material. and http://kete.net.nz). You may
find some example code there useful.

A lot of people, including myself with
GitHub - kete/mongo_translatable: Rails specific I18n model localization, ala Globalize2, backed by MongoDB rather than an RDBMS. May include UI elements, too., are starting to use a NoSQL
backend for translation. The latest I18n gem just added Tokyo Cabinet
support, too.

Hope this helps,
Walter

Thanks Walter.
Kete looks like an awesome project.

It looks like the simplest solution for me would be to add language_id
field to my content table and maybe later on
I’ll refactor it to other solution. mongo db sounds awesome, but I am
not sure where to start - the github page doesn’t explain about
installing/using it.

Thanks Walter.
Kete looks like an awesome project.

It looks like the simplest solution for me would be to add language_id
field to my content table and maybe later on
I’ll refactor it to other solution. mongo db sounds awesome, but I am
not sure where to start - the github page doesn’t explain about
installing/using it.

On Mon, May 3, 2010 at 3:06 AM, oren [email protected] wrote:

Thanks Walter.
Kete looks like an awesome project.

Thanks. It’s been good to work on and useful.

It looks like the simplest solution for me would be to add language_id
field to my content table and maybe later on
I’ll refactor it to other solution.

I usually store locale in the table for the content without splitting
out to a languages (or locales) table and storing a locale_id. Rails
only stores i18n.locale as a symbol. I haven’t had a need for tighter
constraints on the data for locale than that.

mongo db sounds awesome, but I am
not sure where to start - the github page doesn’t explain about
installing/using it.

Yep, that’s in the works. In the meantime, check out

which is a full (but simple) Rail 2.3.5 app for testing purposes. You
can dig around there, including the tests, to see the basics about how
to mongo_translatable works. I’ll get to the README before too long.

Cheers,
Walter