0.01
No commit activity in last 3 years
No release in over 3 years
This is a backport of i18n-one_sky-ruby to support gettext. i18n is not included in Rails before Rails 2.2. This gem handles the downloading and uploading translation files (.po) to Onesky server by calling Onesky API.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.0.0
~> 2.2.0

Runtime

~> 2.0.0
~> 0.0.2
~> 0.14.4
 Project Readme

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.