Skip to content
Extends gettext_i18n_rails making your .PO files available to client side javascript as JSON
Branch: master
Clone or download
Pull request Compare This branch is 44 commits behind webhippie:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
spec
vendor/assets/javascripts/gettext
.gitignore
.rspec
.rubocop.yml
.travis.yml
CHANGELOG.md
Gemfile
LICENSE
README.md
Rakefile
gettext_i18n_rails_js.gemspec

README.md

GettextI18nRailsJs

Gem Version Build Status Code Climate Test Coverage Dependency Status

Extends gettext_i18n_rails, making your .PO files available to client side javascript as JSON. It will find translations inside your .js, .coffee, .handlebars and .mustache files, then it will create JSON versions of your .PO files so you can serve them with the rest of your assets, thus letting you access all your translations offline from client side javascript.

Versions

This gem is tested on the following versions:

  • Ruby
    • 1.9.3
    • 2.0.0
    • 2.1.0
  • Rails
    • 3.2.21
    • 4.0.13
    • 4.1.9
    • 4.2.0

Installation

gem "gettext_i18n_rails_js", "~> 1.0.0"

Usage

set up you rails application with gettext support as usual, afterwards just execute the following rake task to export your translations to JSON:

rake gettext:po_to_json

Per default this will reconstruct the locale/<lang>/app.po structure as javascript files inside app/assets/javascripts/locale/<lang>/app.js

The gem provides the Jed library to use the generated javascript files. It also provides a global __ function that maps to Jed#gettext. The Jed instance used by the client side __ function is pre-configured with the lang attribute specified in your main HTML tag. Before anything, make sure your page's HTML tag includes a valid lang attribute, for example:

%html{ manifest: "", lang: I18n.locale }

Once you're sure your page is configured with a locale, then you should add both your javascript locale files and the provided javascripts to your application.js

//= require_tree ./locale
//= require gettext/all

The default function name is window.__, to avoid conflicts with underscore.js. If you want to alias the function to something else in your javascript you should also instruct the javascript and coffeescript parser to look for a different function when finding your translations within the config file config/gettext_i18n_rails_js.yml, these are valid available options:

output_path: "app/assets/javascripts/locale"
handlebars_function: "__"
javascript_function: "__"
jed_options:
  pretty: false

Todo

  • More deep testing against multiple Rails versions
  • Extend the current test suite, especially handlebars

Contributing

Fork -> Patch -> Spec -> Push -> Pull Request

Authors

License

MIT

Copyright

Copyright (c) 2012-2015 Dropmysite.com <https://dropmyemail.com>
Copyright (c) 2015 Webhippie <http://www.webhippie.de>
You can’t perform that action at this time.