# DB structure of a translation Web service

**URL:** <https://www.ruby-forum.com/t/db-structure-of-a-translation-web-service/187922>\
**Category:** Rails\
**Created:** [May 2, 2010, 6:41am UTC](https://www.ruby-forum.com/t/db-structure-of-a-translation-web-service/187922 "2010-05-02T06:41:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![oreng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8e8cbc/32.png) [@oreng](https://www.ruby-forum.com/u/oreng)\
**Post date:** [May 2, 2010, 6:41am UTC](https://www.ruby-forum.com/t/db-structure-of-a-translation-web-service/187922/1 "2010-05-02T06:41:14Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![oreng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8e8cbc/32.png) [@oreng](https://www.ruby-forum.com/u/oreng)\
**Post date:** [May 2, 2010, 6:52am UTC](https://www.ruby-forum.com/t/db-structure-of-a-translation-web-service/187922/2 "2010-05-02T06:52:22Z")

</div>

HI oren,

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

> **[OSDIR](https://osdir.com)**
>
> edit post Gaming How To Check If US iGaming Platform is Safe July 13, 2021 edit post Gaming What made

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.](http://github.com/kete/kete) and [http://kete.net.nz](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.](http://github.com/kete/mongo_translatable), are starting to use a NoSQL  
backend for translation. The latest I18n gem just added Tokyo Cabinet  
support, too.

Hope this helps,  
Walter

---

<div class="post-metadata">

**Author:** ![oreng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8e8cbc/32.png) [@oreng](https://www.ruby-forum.com/u/oreng)\
**Post date:** [May 2, 2010, 5:08pm UTC](https://www.ruby-forum.com/t/db-structure-of-a-translation-web-service/187922/3 "2010-05-02T17:08:03Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![oreng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8e8cbc/32.png) [@oreng](https://www.ruby-forum.com/u/oreng)\
**Post date:** [May 2, 2010, 5:08pm UTC](https://www.ruby-forum.com/t/db-structure-of-a-translation-web-service/187922/4 "2010-05-02T17:08:38Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![oreng](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8e8cbc/32.png) [@oreng](https://www.ruby-forum.com/u/oreng)\
**Post date:** [May 2, 2010, 9:03pm UTC](https://www.ruby-forum.com/t/db-structure-of-a-translation-web-service/187922/5 "2010-05-02T21:03:55Z")

</div>

On Mon, May 3, 2010 at 3:06 AM, oren [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

> **[mongo\_translatable/test/full\_2\_3\_5\_app\_with\_tests at master ·...](https://github.com/kete/mongo_translatable/tree/master/test/full_2_3_5_app_with_tests)**
>
> master/test/full\_2\_3\_5\_app\_with\_tests

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
