Skip to content

onesky/gettext-one_sky-ruby

Repository files navigation

Gettext OneSky

OneSky is a new service that lets developers reach a global audience by easily enabling them to translate their websites and applications to different languages through the help of the community.

This gem integrates OneSky and gettext. At its most basic, it allows you to take the phrases defined under gettext .pot file and upload it to OneSky for translation by the community. Afterwards, you can download available translations and save them as .po files.

This gem is supporting Ruby projects using gettext gem to handle localization. If you are using i18n, checkout i18n-one_sky gem

PO file support

  1. One layer of Context

  2. Text Domain as page

  3. Reserved Context: Singular, Plural and General

— One layer of Context

Onesky currently only support 1 layer of context. That means only either “msgctxt” / “msgstr” / “msgstr” will be supported but not both.

— Text Domain as page

Regarding the text domain, please use the file name as the page parameter. That means if the po file is abc.po, just add the string with parameter page=abc.po.

— Reserved Context: Singular, Plural and General

“Singular” / “Plural” / “General” are reserved context words.

Onesky only support “Singular” and “Plural” for po files. That means only [0] and [1] are used. Which will return in result:

{"key": { "Singular": "Word", "Plural": "Words"}}

For the stuff without context, you may use “General” if there are other strings with same string key but different context:

{"key_of_book": { "General": "book", "verb": "book", "noun": "book"}}

Using inside a Rails project

  1. Generate OneSky API key

  2. Generate .pot

  3. Upload .pot to OneSky

  4. Upload translated .po to OneSky

  5. Download latest translated files .po from OneSky

  6. Overwrite old .po files

  7. Generate .mo files

— Generate OneSky API key

If you haven’t done so yet, log in to your account at OneSky and create a new project for this Rails app. Also, find the API key and secret which you will supply here:

rails generate one_sky:init my_api_key my_api_secret my_project

This will create the configuration file config/one_sky.yml.

— Generate .pot

Use the gettext rake task

rake updatepo

— Upload .pot to OneSky

So assuming that you already have your .pot file generated, it’s time now to submit these phrases to OneSky:

rake one_sky:upload_phrases

— Upload translated .po to OneSky

You may have some translated .po files in your repository. Upload them to Onesky:

rake one_sky:upload_translated_phrases

— Download latest translated files .po from OneSky

Then ask your translators to provide the translations using the OneSky website. When they’re done and a few new languages are available, download them by:

rake one_sky:download_translations

This will save the translations inside po/**/from_one_sky.po files.

— Overwrite old .po files

Overwrite your own .po files by the downloaded from_one_sky.po file.

You now have more languages supported and it’s just a matter of pushing again to production. You can call upload and download over and over as you incrementally internationalize your site.

Using outside Rails

The steps are similar. Install it like any regular gem:

gem install gettext-one_sky

And see the gettext-one_sky.rake and GetText::OneSky::SimpleClient for the methods available in Ruby.

TODO

  • merge downloaded translation with .pot to generate the .po files

  • upload existing .po files to onesky service

  • handle textdomain.po

History

See CHANGELOG

Credits

See CREDITS

License

Copyright 2010-2011 OneSky, Inc.

Licensed under the MIT License.

About

integrating GetText with onesky translation service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages