Instant18n Gem for Rails

Use OpenAI's GPT large-language model to power internationalization of the text in your Rails application. Extracted from real-world usage in MagmaChat.

Installation

Install the gem and add to the application's Gemfile by executing:

$ bundle add instant18n

If bundler is not being used to manage dependencies, install the gem by executing:

$ gem install instant18n

Make sure to set OPENAI_ACCESS_TOKEN in your environment so that the library is able to access GPT.

Usage

Invoke with I18n.it or simply it in your view templates. (Method is short for instant translation). Use in place of the standard t method for translating text.

The it method provides translation using the GPT-3 language model and caching the results to improve performance.

>> I18n.it('Hello world!', lang: 'español')
=> Hola mundo!

This will attempt to translate the text associated with the key hello_world to the English language using the GPT-3 language model. If the translation is successful, the translated text will be returned. If the translation fails, the original text (or GPT error) will be returned.

Options

The it method accepts the following parameters:

  • key (required): The key associated with the text to be translated.
  • lang (required): The language to translate the text to. Defaults to the default language set in the I18n module.
  • class: if you pass in css classes with the classes option, the method will return the translation wrapped in a div tag, instead of plain text.

Additional options that affect caching:

  • force: force a cache miss
  • expires_in: (seconds) how long to cache the translation

Additional options that are passed to the GPT-3 API:

  • model: defaults to gpt-3.5-turbo
  • temperature: defaults to 0.25
  • max_tokens: defaults to 64
  • top_p: defaults to 0.1
  • frequency_penalty: defaults to 0
  • presence_penalty: defaults to 0

Full description of these options is available here.

View Helper

This gem mixes in an it helper method into ActionView::Base. For convenience, the helper method assumes the presence of a current_user object with a preferred_language attribute. If current_user is nil, it will use the value of I18n.locale instead.

Default Language

We use I18n.default_locale as the default language. For performance and practical reasons, if you pass in the default language, GPT is not invoked. Change the default language in an initializer or at runtime by changing the value of the default_language property on the I18n module.

I18n.default_language = "Spanish"

Anything Goes

Because GPT is smart and can translate into almost anything that resembles a language, in addition to standard locale country codes, all of the following options are known to work:

  • Español
  • Baby Talk
  • Baseldeutsch
  • Braille
  • Ebonics
  • Emoji
  • Esperanto
  • Gregg Shorthand
  • हिन्दी
  • 日本語
  • Klingon
  • 1337 Speak (Leetspeak)
  • 한국어
  • 中文
  • Newspeak
  • Morse Code
  • Rhyming Cockney Slang
  • Sindarin
  • Singlish
  • Spanglish
  • العربية
  • Trumpisms
  • Türkçe
  • Uwu

The limit is your imagination!

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Testing

The I18n Extensions gem can be tested using the RSpec testing framework. The tests are located in the spec directory and can be run using the following command:

bundle exec rspec

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/obie/instant18n. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Instant18n project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

Acknowledgments

The I18n Extensions gem uses the GPT-3 language model API provided by OpenAI.