Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
56 lines (36 sloc) 2.45 KB


One Translator To Rule them All!

The Problem

The problem with language translation in ruby right now is that everyone does it differently. If you want to use an external source to translate text in your application then you need to write you code for a specific gem. What do you do if you realize, post implementation, that the gem doesn’t support the language combinations or types that you need? That leaves you in quite a pickle.

The Game Changer

Ottra is different – it uses a bunch of different gems in an attempt to translate your text. When you first create a new instance of Ottra, it runs a test translation to each of the different gems it supports and then orders them by whichever was quickest. Then it goes through each of them trying to translate your text. The best part? You write your code for Ottra and then let the gem handle the oddities among the other gems. It’s that simple.

Sample Code

Default, simple example.

require 'ottra'
t =
puts t.translate_text('Hello world!', 'it')
=> Ciao mondo!

Maybe you only want to translate a single string and then send t off to the garbage collector. It might be best to avoid sorting the translators by speed.

t ={:no_sorting => true})
puts t.translate_text('Hello world!', 'it')
=> Ciao mondo!

If your starting language is not English then you need to specify it as the second parameter.

puts t.translate_text('Ciao mondo!', 'en', 'it')
=> Hello World!

Supported Translation Gems

Currently, Ottra supports shvets-google_translate, googletranslate, and tranexp. There are tons of other translation gems out there, but I haven’t gotten a chance to build in support yet.


Github is social coding! Got a favorite translation gem? Fork this project, add your support, and send me a pull request!

What About Tests?

I didn’t write any.

But But But! That’s Blasphemy!

Too bad. Fork, write, and send me a pull request.

Other Notes

This stuff was originally written as part of the Whatever You Say project (rails app that provides chats with on the fly translation) and then ported to an individual gem. It’s pretty rough around the edges in all aspects. It is missing things like:
1. Tests
2. Installing the supported gems when you install this gem
3. Bacon

Otherwise, it works pretty well. Give it a try and if you find something you can’t/won’t fix then add a github ticket.