This is a repost of this post to the jQuery UI forum
I have to support several locales for the jQuery UI plugins I am creating and am trying to think of a consistent way to support localization of numeral characters and any strings that may be embedded in the plugin. I think the mechanism I have in mind may be useful to the larger jQuery UI set of plugins.
To clarify, this proposal is mean to support localization of numeral characters and strings embedded in a plugin, not dates or currency formats ($ 1.000,00 vs. 1,000.00) but it could conceivable support those as well. If you aren’t already aware, a number of languages like Arabic and Hindi use different numeral characters for 1-9. For example, ४ is 4 in Hindi.
I propose the following methods for localizing strings and numbers
New Functions
$._({String}, [locale])
find translation of string for current locale. In case you have multiple locales loaded, you can pass a different locale from the default one. Say the default the locale is English but you need to interject Nepali. An example of this would be an English Lesson for Nepali children.
$._c({context}, {String}, [locale])
find translation of string for current locale in a given context. In case you have multiple locales loaded, you can pass a different locale from the default one. Say the default the locale is English but you need to interject Nepali. An example of this would be an English Lesson for Nepali children.
$._n({Number}, [locale])
convert the number to specified locale.
While ‘_’ is used to prefix private variables and methods in js, it is the standard shorthand for the GNU gettext() method in a number of languages and frameworks.
Loading Locales
I think locales should be loaded individually for each plugin rather than a big page wide plugin. Also, the locale information should be embedded in the main plugin code. It bulks up the code and different versions of the code for each locale á la datepicker, makes the code harder to maintain.
All the locale info should be in a .json file in the ui.plugin_name.l10n.locale_name.json file
for an example datepicker plugin
ui.datepicker.js
ui.datepicker.css
ui.datepicker.l10n.ne.json //’ne’ for nepal, for country of residence
datepicker.js would then load the json file as $.ui.datepicker.l10n.ne
I recommend using the l10n namespace because otherwise we would conflict with any two-letter property name.
.json localization json files for a site could be consolidated into a single .json file for deployment.
The Problem of Contexts
In English, we often use the same word to mean different things in different contexts. A good example is “right” which can mean a direction and affirmation. Spanish, Nepali, and many other languages do not use the same word for the direction and affirmation.
GNU gettext, the standard bearer for open-source localization, lets you specify contexts for this kind of situation.
_c(context, string, [locale]) could be used
For example, _c(‘map’, ‘right’) for the context of a map and _(‘test’, ‘right’) to fetch the translation in the context of a test on the same page.
I am not exactly sure how to handle contexts, but it is important to consider
Summary
I hope to have a basic prototype of this up and running by the end of the week.
I haven’t explored how to use this mechanism to handle currency and date formats, I think it could easily do so. A harder problem is handling the localization of css, something I haven’t put hard thought into.
Ideas have been liberally borrowed/stolen from
http://www.gnu.org/software/gettext/
http://jsgettext.berlios.de/doc/html/Gettext.html

You can also look at json2po that’s part of the Translate Toolkit http://bit.ly/9Kmw47 – this allows you to extract text from a JSON file into Gettext PO format which you can then give to a translator to translate. You get the benefits you need from JSON and the translator gets the benefits inherent in using good localisation editors rather then a text editor.
Comment by Dwayne Bailey — October 12, 2010 @ 11:31 am
Hello
Do you love travelling? Me too. What’s the most annoying issue in travelling? Costs and time you have to spend getting from one point to another. It’s difficult to find solution on time but you can do something with costs. You can choose bilety promowe that are quite inexpensive and anyone can handle to buy them.
Best regards
Comment by bilety-promowe — December 20, 2010 @ 1:47 am