Click here to Skip to main content
15,886,137 members
Articles / jQuery

Localizing jQuery plugins

Rate me:
Please Sign up or sign in to vote.
4.00/5 (1 vote)
17 Feb 2012LGPL31 min read 16K   2  
Localizing jQuery plugins

I’ve spent some time to figure out how to localize my jQuery plugins and I’ve just found out a way that works just fine.
Disclaimer: I’m not 100% sure of how namespacing works in jQuery, so this might not be the correct way.

I’m using the meta header accept-language to control which language to use. It allows me to select the language in my backend (using user settings or whatever) instead of just using the languages defined by the browser. An ASP.NET MVC3 header would look like this in the layout:

XML
<meta name="accept-language" 
content="@System.Globalization.CultureInfo.CurrentCulture.Name" />

You should be able to do the same thing in PHP or whatever language you use.

Next thing to do is to add the localization structure to your plug in script file:

JavaScript
(function($) {
    //globals
    $.yourPluginName = {
        texts: {
            title: 'Please wait, loading..'
        },
        translations: []
    };

    var methods = {
        // your methods here.
    };

    $.fn.yourPluginName = function(method) {

        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on jQuery.yourPluginName');
        }

    };

})(jQuery);

That will make the plug in work if no languages are loaded. The translations will be loaded into the $.yourPluginName.translations array by another script.

We got one thing left to do before we can use the texts in your script. We need to load the correct language. Create another script called jquery.yourpluginnamne.localization.js and load it after:

JavaScript
$(function () {
    $.yourPluginName.translations['sv-SE'] = {
        title: ‘Vänta, laddar..’
    };

    $.yourPluginName.translations['fi-FI'] = {
        title: ‘Yxi yxi, kaxi…’
    };    

    var currentLanguage = $("meta[name='accept-language']").attr("content");
    if (typeof $.yourPluginName.translations[currentLanguage] !== ‘undefined’)
        $.yourPluginName.texts = $.yourPluginName.translations[currentLanguage];
});

That's it!

Use $.yourPluginName.texts.anyTextName in your plug in to use the localized strings.

This article was originally posted at http://blog.gauffin.org/2012/02/localizing-jquery-plugins

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Founder 1TCompany AB
Sweden Sweden

Comments and Discussions

 
-- There are no messages in this forum --