Rails i18n locale editor

Proof of concept of live locale editor for Ruby on Rails

Features

  • edit translations in-place in overlay window right on your live site

  • cool firebug-like translation key selector for localized strings

  • ajax lazy updating for better user experience

  • taranslations listing (index)

  • select which locales to show in translations index

  • show only keys with missing translations

  • unobtrusive JS inclusion - if jQuery is not included in project and async autoloads it from CDN as noConflict(), then loads itself

  • tested in Firefox and Chromium

  • tested on rails 2.3.8, 2.3.2 with bundler see: gembundler.com/rails23.html

  • not designed as production CMS, it’s for developers

Installation

add to your Gemfile:

gem "i18n_locale_editor"

run:

bundle install

add to your layout’s <HEAD> section:

=include_i18n_editor

start server with environment variable:

I18N_EDITOR=true script/server

TODO

  • tests

  • code review and documentation

  • rails 3 support

  • test it on real-life translator’s workflow to save clicks and improve efficiency (maybe add ‘commit and next’ to editor)

  • auto copy js asset and include by gem version in init.rb

  • when open in editor is requested, add locale from key to be shown on index if it is not set in session yet

  • when open in editor is requeseed and “show only missing” is enabled, check if the requested key is in the result set, if not cancel the fileter and retry

  • it will copy javascript assets to RAILS_ROOT/public/i18n_locale_editor on every init, find some better and unobtrusive way

  • raise if not vaild html accepted as transalation

  • show key name in modal window

  • move all javascript functions to i18n namespace to prevent colision

  • make hash_tools as inherited class ExtendedHash from Hash (eradicate monkey patching)

  • extract translation controller name, model name, routing nammespace to some config and make it dynamic

  • ESC to close modal window

  • possibility to load another translations in modal

  • toggle wym editor in modal (cool)

  • change localization key from id to rel in span I18n monkey patch

  • git, subversion support for tracking changes

  • escape path for eval in hash_tools.rb (!!!)

  • translation workflow design

  • translation key is held in span id=“en.translation.key”. check if the ‘id’ attribute can contain dots

  • title, buttons, select options are broken - filter them out

  • create tools for refactoring - especially path rename

  • paginantion on index

  • list missing translations

  • api for external access

  • scopes support for api (how)

  • export all locales to csv (it’s done, but not included in this gem)

  • import all locales from csv (it’s done, but not included in this gem)

  • key hitcounter

  • test in Opera, IE and other browsers…

  • review these issues and move them to the github’s task tracker :)

Copyright © 2011 Adam Kliment, Virtualmater s.r.o. See LICENSE for details.