|
Project Information
Links
|
AboutjQuery.i18n.properties is a lightweight jQuery plugin for providing internationalization to javascript from ‘.properties’ files, just like in Java Resource Bundles. It loads and parses resource bundles (.properties) based on provided language and country codes (ISO-639 and ISO-3166) or language reported by browser. Resource bundles are ‘.properties‘ files containing locale specific key-value pairs. The use of ‘.properties‘ files for translation is specially useful when sharing i18n files between Java and Javascript projects. This plugin loads the default file (eg, Messages.properties) first and then locale specific files (Messages_pt.properties, then Messages_pt_PT.properties), so that a default value is always available when there is no translation provided. Translation keys will be available to developer as javascript variables/functions (functions, if translated value contains substitutions (eg, {0}) or as a map. This plugin was inspired on the Localisation assistance for jQuery from Keith Wood, and is made available under a dual license (GPL and MIT). Features
ExampleTake as an example the following Messages.properties, Messages_pt.properties and Messages_pt_PT.properties: Messages.properties # This line is ignored by the plugin
msg_hello = Hello
msg_world = World
msg_complex = Good morning {0}!Messages_pt.properties # We only provide a translation for the 'msg_hello' key msg_hello = Bom dia Messages_pt_PT.properties # We only provide a translation for the 'msg_hello' key msg_hello = Olá Now, suppose these files are located on the ‘bundle/‘ folder. One can invoke the plugin like below: // This will initialize the plugin
// and show two dialog boxes: one with the text "Olá World"
// and other with the text "Good morning John!"
jQuery.i18n.properties({
name:'Messages',
path:'bundle/',
mode:'both',
language:'pt_PT',
callback: function() {
// We specified mode: 'both' so translated values will be
// available as JS vars/functions and as a map
// Accessing a simple value through the map
jQuery.i18n.prop('msg_hello');
// Accessing a value with placeholders through the map
jQuery.i18n.prop('msg_complex', 'John');
// Accessing a simple value through a JS variable
alert(msg_hello +' '+ msg_world);
// Accessing a value with placeholders through a JS function
alert(msg_complex('John'));
}
});This will initialize the plugin (loading bundle files and parsing them) and show a dialog box with the text “Olá World” and other with “Good morning John!”. The english word “World” is shown because we didn’t provide a translation for the msg_world key. Also notice that keys are available as a map and also as javascript variables (for simple strings) and javascript functions (for strings with placeholders for substitution). UsageOptions
Including and invoking the plugin1. Load the script: <script type="text/javascript" language="JavaScript" src="js/jquery.i18n.properties-min.js"></script> 2. Initialize the plugin (minimal usage, will use language reported by browser), and access a translated value (assuming a key named ‘org.somekey‘ exists): jQuery.i18n.properties({
name: 'Messages',
callback: function(){ alert( org.somekey ); }
});DemoSee a small demonstration. Downloads
Known issues
Example: <!-- on HTML file: --> <div id="test123">ola</div> # on .properties file: test123 = qwerty Executing alert(test123); will output the div object with id “ola” and not the “qwerty” string! |