I'm proud to announce my presence as speaker at the RailsConf Europe 2008 with a speech on Click to Globalize.
Click to Globalize: rewritten and moved to GitHub 4
Click to Globalize has been rewritten, in order to use all instance methods of the JavaScript class, instead of class methods.
I also fixed some tiny issues:
- The
form_authentication_tokenmethod is called only if the application is protected against the CSRF attacks (protect_against_forgery?returnstrue) - It uses as parameter key what
request_forgery_protection_tokenreturns, instead of the hard-codedauthenticity_token - The JavaScript class uses Prototype's dom:loaded custom event.
I also migrated the plugin GitHub. The new repo is http://github.com/jodosha/click-to-globalize/tree/master, so the oldest one is deprecated.
Have a nice globalization!
If you enjoyed this post, feel free to recommend me on Working With Rails.
Click To Globalize 0
Click To Globalize
Click To Globalize is an extension for Globalize plugin, it allows to edit in place globalized labels. With this plugin you don't have to create a globalization back-end, but just edit your interface in place!!
If you have a previous globalization experience, you probably noticed that the main problem of dedicated back-ends is the lack of the context where the string will be placed in. It isn't a trivial issue: you'll never know if the meaning of your string is harmonious with other labels and how your string will be rendered, until the page load.
Now you can forget this issues, you can directly globalize in place!!
Getting Started
- Install Globalize, if you don't already done.
- Install Click To Globalize:
$ ./scripts/plugin install git://github.com/jodosha/click-to-globalize.git - Run the setup task:
$ rake click:setup - Add at the end of your layout the following code:
<%= click_to_globalize -%> - Put in your view:
<%= 'hello_world'.t %> - Start the server and click to globalize.
Prerequisites
- Globalize plugin: www.globalize-rails.org.
- Prototype >= 1.5.1.1, this version is provided by Click To Globalize installation.
- RedCloth gem (optional) for textile formatting.
- BlueCloth gem (optional) for markdown formatting.
Install
- Install Globalize, if you don't already done.
- Install Click To Globalize:
Rails 2.1.x
Rails 2.0.x$ ./script/plugin install git://github.com/jodosha/click-to-globalize.git
Rails 1.2.x$ ./script/plugin install http://dev.23labs.net/svn/rails/plugins/click_to_globalize/trunk$ ./script/plugin install http://dev.23labs.net/svn/rails/plugins/click_to_globalize/branches/for-1.2.x - Run the setup task:
$ rake click:setup - Run the tests (optional):
$ rake click:test - Choose your languages, they will be used to create a picker menu.
class ApplicationController < ActionController::Base self.languages = { :english => 'en-US', :italian => 'it-IT' } end - If you like to use wiki-formatting styles, you could use textile (RedCloth) or markdown (BlueCloth).
class ApplicationController < ActionController::Base self.formatting :textile end - Personalize the access to the globalization features, overriding #globalize:
class ApplicationController < ActionController::Base def self.globalize? current_user.admin? end end
NOTICE: #globalize? is method to turn on/off all the Click To Globalize features. - Add at the end of your layout the following code:
<%= click_to_globalize -%>
Uninstall
$ ./script/plugin remove click_to_globalize
Features
- In-place editing for each globalized string.
- Easy and painless plug-in/plug-out process.
- Unobtrusive Javascript.
- Auto transformation from input text to textarea for long strings.
Common Issues
- The install process upgrades your Prototype version to 1.5.1.1 only if needed, but it's advisable to backup your scripts.
- Since the Globalize plugin creates folders like for-1.2, be sure to rename the folder to globalize.
- Due to unobtrusive nature of the plugin, each page is parsed by javascript to find the right element and bind to it an Ajax.InPlaceEditor.
Be sure your (X)HTML is wellformed.
NOTICE: If you use the Rails 1.2.3 scaffold system, Click To Globalize doesn't works. Cleanup the code before to use. - If you use a wiki-formatting style it could be advisable to use #h to avoid security problems (i.e. XSS).
<%= textilize(h('some_text'.t)) %>
Contribute
- Check out the code and test it:
$ git clone git://github.com/jodosha/click-to-globalize.git $ rake click - Create tickets at the project Trac.
- Create a patches and add as attachement to the tickets.
Repository
http://github.com/jodosha/click-to-globalize/tree/master
Credits
Javascript tests are based on Prototype test libs.
Vote
If you find it useful feel free to add to your favs on agilewebdevelopment.com.
Copyright
Copyright © 2007 - 2008 Luca Guidi - 23 Labs, released under the MIT license.
Tutorials
Click To Globalize: High Resolution Video Tutorial 3
The video tutorial for Click to Globalize is now available in high resolution: Click To Globalize: Getting Started.
Click To Globalize: Rails 2.0 Ready 6
I have finished to work on Click To Globalize, to made it Rails 2.0 compatible.
What's Changed?
All and nothing: from the user point of view, the plugin has the same behaviors of the previous version. My recent activity was a refactoring, now it:
- Works with CSRF Killer
- Works with Prototype 1.6.0.1 and Scriptaculous 1.8.0.1
- Works with rewritten version of Scriptaculous
Ajax.InPlaceEditor - Works with new Prototype events handling
- Uses new Prototype's
Element#addMethodsandFunction#wrapto add methods and AOP - Uses Protoype
Hash#get, instead of square brackets - Uses
.html.erbas helper, instead of.rhtml - Has a more clean installation/disinstallation process
- Has DRYed up tests
- Hasn't prototype.js into the packaging
How To Use It?
Rails 2.0
$ ./script/plugin install http://dev.23labs.net/svn/rails/plugins/click_to_globalize/trunkRails 1.2.x
$ ./script/plugin install http://dev.23labs.net/svn/rails/plugins/click_to_globalize/branches/for-1.2.xFor a detailed guide, howtos, snippets, video-tutorials and other infos, please visit the Click To Globalize page.
Click To Globalize: Repository Changes 2
As I previously announced, I'm working on Rails 2.0 compatibility for Click To Globalize.
I decided to move the stuff for Rails 1.2.x to for-1.2.x branch and continue the porting into trunk.
How To Install
Rails 2.0
$ ./script/plugin install http://dev.23labs.net/svn/rails/plugins/click_to_globalize/trunkRails 1.2.x
$ ./script/plugin install http://dev.23labs.net/svn/rails/plugins/click_to_globalize/branches/for-1.2.x
Click To Globalize: Working On Rails 2.0 Compatibility 1
As you already know, Rails 2.0 it's shipped with updated version of Prototype and Scriptaculous.
Prototype team has committed some breaking changes (e.g. Hash class), and Scriptaculous now has a brand new, rewritten InPlaceEditon.
Those elements are fundamental for Click To Globalize and I'm working on new version for Rails 2.0.
Be patient, I'll soon release it.
![Click To Globalize: Getting Started [High Resolution]](http://lucaguidi.com/assets/2008/1/26/click_to_globalize_getting_started.png)
