Explorar o código

Merge branch 'master' into gh-pages

Conflicts:
	CHANGES.rst
	converse.min.js
JC Brand %!s(int64=12) %!d(string=hai) anos
pai
achega
05c2c95b5f

+ 13 - 0
.gitignore

@@ -0,0 +1,13 @@
+*~
+*.mo
+*.kpf
+*.swp
+.*.cfg
+.hg/
+.bzr/
+.svn/
+.project
+.pydevproject
+
+# OSX
+.DS_Store

+ 1 - 1
CHANGES.rst

@@ -32,7 +32,7 @@ Changelog
 - Fixed user status handling, which wasn't 100% according to the spec. [jcbrand]
 - Fixed user status handling, which wasn't 100% according to the spec. [jcbrand]
 - Separate messages according to day in chats. [jcbrand]
 - Separate messages according to day in chats. [jcbrand]
 - Add support for specifying the BOSH bind URL as configuration setting. [jcbrand]
 - Add support for specifying the BOSH bind URL as configuration setting. [jcbrand]
-- Improve the message counter to only increment when the window is not focused [witekdev]
+- #8 Improve the message counter to only increment when the window is not focused [witekdev]
 - Make fetching of list of chatrooms on a server a configuration option. [jcbrand]
 - Make fetching of list of chatrooms on a server a configuration option. [jcbrand]
 - Use service discovery to show all available features on a room. [jcbrand]
 - Use service discovery to show all available features on a room. [jcbrand]
 - Multi-user chatrooms are now configurable. [jcbrand]
 - Multi-user chatrooms are now configurable. [jcbrand]

+ 0 - 251
Libraries/jarnxmpp.core.handlers.js

@@ -1,251 +0,0 @@
-/*global $:false, document:false, window:false, portal_url:false,
-$msg:false, Strophe:false, setTimeout:false, navigator:false, jarn:false, google:false, jarnxmpp:false, jQuery:false, sessionStorage:false, $iq:false, $pres:false, Image:false, */
-
-(function (jarnxmpp, $, portal_url) {
-
-    portal_url = portal_url || '';
-
-    jarnxmpp.Storage = {
-        storage: null,
-        init: function () {
-            try {
-                if ('sessionStorage' in window && window.sessionStorage !== null && JSON in window && window.JSON !== null) {
-                    jarnxmpp.Storage.storage = sessionStorage;
-                    if (!('_user_info' in jarnxmpp.Storage.storage)) {
-                        jarnxmpp.Storage.set('_user_info', {});
-                    }
-                    if (!('_vCards' in jarnxmpp.Storage.storage)) {
-                        jarnxmpp.Storage.set('_vCards', {});
-                    }
-                    if (!('_subscriptions' in jarnxmpp.Storage.storage)) {
-                        jarnxmpp.Storage.set('_subscriptions', null);
-                    }
-                }
-            } catch (e) {}
-        },
-
-        get: function (key) {
-            if (key in sessionStorage) {
-                return JSON.parse(sessionStorage[key]);
-            }
-            return null;
-        },
-
-        set: function (key, value) {
-            sessionStorage[key] = JSON.stringify(value);
-        },
-
-        xmppGet: function (key, callback) {
-            var stanza = $iq({type: 'get'})
-                .c('query', {xmlns: 'jabber:iq:private'})
-                .c('jarnxmpp', {xmlns: 'http://jarn.com/ns/jarnxmpp:prefs:' + key})
-                .tree();
-            jarnxmpp.connection.sendIQ(stanza, function success(result) {
-                callback($('jarnxmpp ' + 'value', result).first().text());
-            });
-        },
-
-        xmppSet: function (key, value) {
-            var stanza = $iq({type: 'set'})
-                .c('query', {xmlns: 'jabber:iq:private'})
-                .c('jarnxmpp', {xmlns: 'http://jarn.com/ns/jarnxmpp:prefs:' + key})
-                .c('value', value)
-                .tree();
-            jarnxmpp.connection.sendIQ(stanza);
-        }
-    };
-
-    jarnxmpp.Storage.init();
-
-    jarnxmpp.Presence = {
-        online: {},
-        _user_info: {},
-
-        onlineCount: function () {
-            var me = Strophe.getNodeFromJid(jarnxmpp.connection.jid),
-                counter = 0,
-                user;
-            for (user in jarnxmpp.Presence.online) {
-                if ((jarnxmpp.Presence.online.hasOwnProperty(user)) && user !== me) {
-                    counter += 1;
-                }
-            }
-            return counter;
-        },
-
-        getUserInfo: function (user_id, callback) {
-            // User info on browsers without storage
-            if (jarnxmpp.Storage.storage === null) {
-                if (user_id in jarnxmpp.Presence._user_info) {
-                    callback(jarnxmpp.Presence._user_info[user_id]);
-                } else {
-                    $.getJSON(portal_url + "/xmpp-userinfo?user_id=" + user_id, function (data) {
-                        jarnxmpp.Presence._user_info[user_id] = data;
-                        callback(data);
-                    });
-                }
-            } else {
-                var _user_info = jarnxmpp.Storage.get('_user_info');
-                if (user_id in _user_info) {
-                    callback(_user_info[user_id]);
-                } else {
-                    $.getJSON(portal_url + "/xmpp-userinfo?user_id=" + user_id, function (data) {
-                        _user_info[user_id] = data;
-                        jarnxmpp.Storage.set('_user_info', _user_info);
-                        callback(data);
-                    });
-                }
-            }
-        }
-    };
-
-    jarnxmpp.vCard = {
-
-        _vCards: {},
-
-        _getVCard: function (jid, callback) {
-            var stanza =
-                $iq({type: 'get', to: jid})
-                .c('vCard', {xmlns: 'vcard-temp'}).tree();
-            jarnxmpp.connection.sendIQ(stanza, function (data) {
-                var result = {};
-                $('vCard[xmlns="vcard-temp"]', data).children().each(function (idx, element) {
-                    result[element.nodeName] = element.textContent;
-                });
-                if (typeof (callback) !== 'undefined') {
-                    callback(result);
-                }
-            });
-        },
-
-        getVCard: function (jid, callback) {
-            jid = Strophe.getBareJidFromJid(jid);
-            if (jarnxmpp.Storage.storage === null) {
-                if (jid in jarnxmpp.vCard._vCards) {
-                    callback(jarnxmpp.vCard._vCards[jid]);
-                } else {
-                    jarnxmpp.vCard._getVCard(jid, function (result) {
-                        jarnxmpp.vCard._vCards[jid] = result;
-                        callback(result);
-                    });
-                }
-            } else {
-                var _vCards = jarnxmpp.Storage.get('_vCards');
-                if (jid in _vCards) {
-                    callback(_vCards[jid]);
-                } else {
-                    jarnxmpp.vCard._getVCard(jid, function (result) {
-                        _vCards[jid] = result;
-                        jarnxmpp.Storage.set('_vCards', _vCards);
-                        callback(result);
-                    });
-                }
-            }
-        },
-
-        setVCard: function (params, photoUrl) {
-            var key,
-                vCard = Strophe.xmlElement('vCard', [['xmlns', 'vcard-temp'], ['version', '2.0']]);
-            for (key in params) {
-                if (params.hasOwnProperty(key)) {
-                    vCard.appendChild(Strophe.xmlElement(key, [], params[key]));
-                }
-            }
-            var send = function () {
-                var stanza = $iq({type: 'set'}).cnode(vCard).tree();
-                jarnxmpp.connection.sendIQ(stanza);
-            };
-            if (typeof (photoUrl) === 'undefined') {
-                send();
-            } else {
-                jarnxmpp.vCard.getBase64Image(photoUrl, function (base64img) {
-                    base64img = base64img.replace(/^data:image\/png;base64,/, "");
-                    var photo = Strophe.xmlElement('PHOTO');
-                    photo.appendChild(Strophe.xmlElement('TYPE', [], 'image/png'));
-                    photo.appendChild(Strophe.xmlElement('BINVAL', [], base64img));
-                    vCard.appendChild(photo);
-                    send();
-                });
-            }
-        },
-
-        getBase64Image: function (url, callback) {
-            // Create the element, then draw it on a canvas to get the base64 data.
-            var img = new Image();
-            $(img).load(function () {
-                var canvas = document.createElement('canvas');
-                canvas.width = img.width;
-                canvas.height = img.height;
-                var ctx = canvas.getContext("2d");
-                ctx.drawImage(img, 0, 0);
-                callback(canvas.toDataURL('image/png'));
-            }).attr('src', url);
-        }
-    };
-
-    jarnxmpp.onConnect = function (status) {
-        if ((status === Strophe.Status.ATTACHED) || (status === Strophe.Status.CONNECTED)) {
-            $(window).bind('beforeunload', function () {
-                $(document).trigger('jarnxmpp.disconnecting');
-                var presence = $pres({type: 'unavailable'});
-                jarnxmpp.connection.send(presence);
-                jarnxmpp.connection.disconnect();
-                jarnxmpp.connection.flush();
-            });
-            $(document).trigger('jarnxmpp.connected');
-        } else if (status === Strophe.Status.DISCONNECTED) {
-            $(document).trigger('jarnxmpp.disconnected');
-        }
-    };
-
-    jarnxmpp.rawInput = function (data) {
-        var event = jQuery.Event('jarnxmpp.dataReceived');
-        event.text = data;
-        $(document).trigger(event);
-    };
-
-    jarnxmpp.rawOutput = function (data) {
-        var event = jQuery.Event('jarnxmpp.dataSent');
-        event.text = data;
-        $(document).trigger(event);
-    };
-
-    $(document).bind('jarnxmpp.connected', function () {
-        // Logging
-        jarnxmpp.connection.rawInput = jarnxmpp.rawInput;
-        jarnxmpp.connection.rawOutput = jarnxmpp.rawOutput;
-    });
-
-    $(document).bind('jarnxmpp.disconnecting', function () {
-        if (jarnxmpp.Storage.storage !== null) {
-            jarnxmpp.Storage.set('online-count', jarnxmpp.Presence.onlineCount());
-        }
-    });
-
-    $(document).ready(function () {
-        var resource = jarnxmpp.Storage.get('xmppresource');
-        if (resource) {
-            data = {'resource': resource};
-        } else {
-            data = {};
-        }
-        $.ajax({
-            'url':portal_url + '/@@xmpp-loader',
-            'dataType': 'json',
-            'data': data,
-            'success': function (data) {
-                if (!(('rid' in data) && ('sid' in data) && ('BOSH_SERVICE' in data))) {
-                    return;
-                }
-                if (!resource) {
-                    jarnxmpp.Storage.set('xmppresource', Strophe.getResourceFromJid(data.jid));
-                }
-                jarnxmpp.BOSH_SERVICE = data.BOSH_SERVICE;
-                jarnxmpp.jid = data.jid;
-                jarnxmpp.connection = new Strophe.Connection(jarnxmpp.BOSH_SERVICE);
-                jarnxmpp.connection.attach(jarnxmpp.jid, data.sid, data.rid, jarnxmpp.onConnect);
-            }
-        });
-    });
-
-})(window.jarnxmpp = window.jarnxmpp || {}, jQuery, portal_url);

+ 1 - 1
Libraries/strophe.muc.js

@@ -180,7 +180,7 @@
                 xmlns: Strophe.NS.CLIENT
                 xmlns: Strophe.NS.CLIENT
             }).t(message);
             }).t(message);
             msg.up();
             msg.up();
-            if (html_message !== null) {
+            if (html_message != null) {
                 msg.c("html", {xmlns: Strophe.NS.XHTML_IM}).c("body", {xmlns: Strophe.NS.XHTML}).h(html_message);
                 msg.c("html", {xmlns: Strophe.NS.XHTML_IM}).c("body", {xmlns: Strophe.NS.XHTML}).h(html_message);
 
 
                 if (msg.node.childNodes.length === 0) {
                 if (msg.node.childNodes.length === 0) {

+ 2 - 0
build.js

@@ -7,7 +7,9 @@
         "af": "locale/af/LC_MESSAGES/af",
         "af": "locale/af/LC_MESSAGES/af",
         "en": "locale/en/LC_MESSAGES/en",
         "en": "locale/en/LC_MESSAGES/en",
         "de": "locale/de/LC_MESSAGES/de",
         "de": "locale/de/LC_MESSAGES/de",
+        "es": "locale/es/LC_MESSAGES/es",
         "hu": "locale/hu/LC_MESSAGES/hu",
         "hu": "locale/hu/LC_MESSAGES/hu",
+        "it": "locale/it/LC_MESSAGES/it",
         "sjcl": "Libraries/sjcl",
         "sjcl": "Libraries/sjcl",
         "tinysort": "Libraries/jquery.tinysort",
         "tinysort": "Libraries/jquery.tinysort",
         "underscore": "Libraries/underscore",
         "underscore": "Libraries/underscore",

+ 7 - 7
converse.js

@@ -1162,7 +1162,7 @@
                     '<p class="chatroom-topic"><p/>' +
                     '<p class="chatroom-topic"><p/>' +
                 '</div>' +
                 '</div>' +
                 '<div class="chat-body">' +
                 '<div class="chat-body">' +
-                '<img class="spinner centered" src="images/spinner.gif"/>' +
+                '<span class="spinner centered"/>' +
                 '</div>'),
                 '</div>'),
 
 
             chatarea_template: _.template(
             chatarea_template: _.template(
@@ -1247,7 +1247,7 @@
                     'hidden': 'hidden',
                     'hidden': 'hidden',
                     'list-single': 'dropdown'
                     'list-single': 'dropdown'
                 };
                 };
-                $form.find('img.spinner').remove();
+                $form.find('span.spinner').remove();
                 $form.append($('<legend>').text(title));
                 $form.append($('<legend>').text(title));
                 if (instructions != title) {
                 if (instructions != title) {
                     $form.append($('<p>').text(instructions));
                     $form.append($('<p>').text(instructions));
@@ -1356,7 +1356,7 @@
                 this.$el.find('.chat-body').append(
                 this.$el.find('.chat-body').append(
                     $('<div class="chatroom-form-container">'+
                     $('<div class="chatroom-form-container">'+
                         '<form class="chatroom-form">'+
                         '<form class="chatroom-form">'+
-                        '<img class="spinner centered" src="images/spinner.gif"/>'+
+                        '<span class="spinner centered"/>'+
                         '</form>'+
                         '</form>'+
                     '</div>'));
                     '</div>'));
                 converse.connection.muc.configure(
                 converse.connection.muc.configure(
@@ -1369,12 +1369,12 @@
                 ev.preventDefault();
                 ev.preventDefault();
                 var password = this.$el.find('.chatroom-form').find('input[type=password]').val();
                 var password = this.$el.find('.chatroom-form').find('input[type=password]').val();
                 this.$el.find('.chatroom-form-container').replaceWith(
                 this.$el.find('.chatroom-form-container').replaceWith(
-                    '<img class="spinner centered" src="images/spinner.gif"/>');
+                    '<span class="spinner centered"/>');
                 this.connect(password);
                 this.connect(password);
             },
             },
 
 
             renderPasswordForm: function () {
             renderPasswordForm: function () {
-                this.$el.find('img.centered.spinner').remove();
+                this.$el.find('span.centered.spinner').remove();
                 this.$el.find('.chat-body').append(
                 this.$el.find('.chat-body').append(
                     $('<div class="chatroom-form-container">'+
                     $('<div class="chatroom-form-container">'+
                         '<form class="chatroom-form">'+
                         '<form class="chatroom-form">'+
@@ -1389,7 +1389,7 @@
             showDisconnectMessage: function (msg) {
             showDisconnectMessage: function (msg) {
                 this.$el.find('.chat-area').remove();
                 this.$el.find('.chat-area').remove();
                 this.$el.find('.participants').remove();
                 this.$el.find('.participants').remove();
-                this.$el.find('img.centered.spinner').remove();
+                this.$el.find('span.centered.spinner').remove();
                 this.$el.find('.chat-body').append($('<p>'+msg+'</p>'));
                 this.$el.find('.chat-body').append($('<p>'+msg+'</p>'));
             },
             },
 
 
@@ -2510,7 +2510,7 @@
                     connection = new Strophe.Connection(converse.bosh_service_url);
                     connection = new Strophe.Connection(converse.bosh_service_url);
                 if ($form) {
                 if ($form) {
                     $button = $form.find('input[type=submit]');
                     $button = $form.find('input[type=submit]');
-                    $button.hide().after('<img class="spinner login-submit" src="images/spinner.gif"/>');
+                    $button.hide().after('<span class="spinner login-submit"/>');
                 }
                 }
                 connection.connect(jid, password, $.proxy(function (status, message) {
                 connection.connect(jid, password, $.proxy(function (status, message) {
                     if (status === Strophe.Status.CONNECTED) {
                     if (status === Strophe.Status.CONNECTED) {

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
converse.min.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 84 - 0
converse.min.no-locales.js


BIN=BIN
docs/doctrees/environment.pickle


BIN=BIN
docs/doctrees/index.doctree


+ 39 - 11
docs/html/_sources/index.txt

@@ -99,6 +99,8 @@ website. This will remove the need for any cross-domain XHR support.
 Server-side authentication
 Server-side authentication
 ==========================
 ==========================
 
 
+.. _`Session Support`:
+
 Pre-binding and Single Session Support
 Pre-binding and Single Session Support
 --------------------------------------
 --------------------------------------
 
 
@@ -110,7 +112,7 @@ Jack Moffitt has a great `blogpost`_ about this and even provides an `example Dj
 
 
 .. Note::
 .. Note::
    If you want to enable single session support, make sure to pass **prebind: true**
    If you want to enable single session support, make sure to pass **prebind: true**
-   when you call **converse.initialize** (see ./main.js).
+   when you call **converse.initialize** (see ./index.html).
 
 
 When you authenticate to the XMPP server on your backend, you'll receive two
 When you authenticate to the XMPP server on your backend, you'll receive two
 tokens, RID (request ID) and SID (session ID).
 tokens, RID (request ID) and SID (session ID).
@@ -153,21 +155,36 @@ connection object.
 Quickstart (to get a demo up and running)
 Quickstart (to get a demo up and running)
 =========================================
 =========================================
 
 
-When you download a specific release of *Converse.js*, say for example version 0.3,
-there will be two minified files inside the zip file.
-
-For version 0.3 they will be:
+When you download a specific release of *Converse.js* there will be two minified files inside the zip file.
 
 
-* converse.0.3.min.js
-* converse.0.3.min.css
+* converse.min.js
+* converse.min.css
 
 
-You can include these two files in your website via the *script* and *link*
+You can include these two files inside the *<head>* element of your website via the *script* and *link*
 tags:
 tags:
 
 
 ::
 ::
 
 
-    <link rel="stylesheet" type="text/css" media="screen" href="converse.0.3.min.css">
-    <script src="converse.0.3.min.js"></script>
+    <link rel="stylesheet" type="text/css" media="screen" href="converse.min.css">
+    <script src="converse.min.js"></script>
+
+Then, at the bottom of your page, after the closing *</body>* element, put the
+following inline Javascript code:
+
+::
+
+    <script>
+        converse.initialize({
+            auto_list_rooms: false,
+            auto_subscribe: false,
+            bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
+            hide_muc_server: false,
+            i18n: locales.en, // Refer to ./locale/locales.js to see which locales are supported
+            prebind: false,
+            show_controlbox_by_default: true,
+            xhr_user_search: false
+        });
+    </script>
 
 
 The *index.html* file inside the Converse.js folder serves as a nice usable
 The *index.html* file inside the Converse.js folder serves as a nice usable
 example of this.
 example of this.
@@ -180,7 +197,7 @@ You'll most likely want to implement some kind of single-signon solution for
 your website, where users authenticate once in your website and then stay
 your website, where users authenticate once in your website and then stay
 logged into their XMPP session upon page reload.
 logged into their XMPP session upon page reload.
 
 
-For more info on this, read `Session Support`_.
+For more info on this, read: `Pre-binding and Single Session Support`_.
 
 
 You might also want to have more fine-grained control of what gets included in
 You might also want to have more fine-grained control of what gets included in
 the minified Javascript file. Read `Configuration`_ and `Minification`_ for more info on how to do
 the minified Javascript file. Read `Configuration`_ and `Minification`_ for more info on how to do
@@ -198,6 +215,9 @@ on your website.
 *Converse.js* is passed its configuration settings when you call its
 *Converse.js* is passed its configuration settings when you call its
 *initialize* method.
 *initialize* method.
 
 
+You'll most likely want to call the *initialize* method in your HTML page. For
+an example of how this is done, please see the bottom of the *./index.html* page.
+
 Please refer to the `Configuration variables`_ section below for info on
 Please refer to the `Configuration variables`_ section below for info on
 all the available configuration settings.
 all the available configuration settings.
 
 
@@ -358,6 +378,14 @@ CSS can be minimized with Yahoo's yuicompressor tool:
 Translations
 Translations
 ============
 ============
 
 
+.. Note :: 
+   Translations take up a lot of space and will bloat your minified file.
+   At the time of writing, the difference between *converse.min.js* and
+   *converse.min.no-locales.js* is about 50KB! Therefore, make sure to only
+   include those languages that you intend to support and remove from
+   ./locale/locales.js those which you don't need. Remember to rebuild the
+   minified file afterwards.
+
 The gettext POT file located in ./locale/converse.pot is the template
 The gettext POT file located in ./locale/converse.pot is the template
 containing all translations and from which for each language an individual PO
 containing all translations and from which for each language an individual PO
 file is generated.
 file is generated.

+ 37 - 13
docs/html/index.html

@@ -115,7 +115,7 @@ properly configure and integrate it into your site.</p>
 webchat experience and that you have control over the data. The latter being a
 webchat experience and that you have control over the data. The latter being a
 requirement for many sites dealing with sensitive information.</p>
 requirement for many sites dealing with sensitive information.</p>
 <p>You&#8217;ll need to set up your own XMPP server and in order to have
 <p>You&#8217;ll need to set up your own XMPP server and in order to have
-<a href="#id24"><span class="problematic" id="id25">`Session Support`_</span></a> (i.e. single-signon functionality whereby users are authenticated once and stay
+<a class="reference internal" href="#session-support">Session Support</a> (i.e. single-signon functionality whereby users are authenticated once and stay
 logged in to XMPP upon page reload) you will also have to add some server-side
 logged in to XMPP upon page reload) you will also have to add some server-side
 code.</p>
 code.</p>
 <p>The <a class="reference internal" href="#what-you-will-need">What you will need</a> section has more information on all these
 <p>The <a class="reference internal" href="#what-you-will-need">What you will need</a> section has more information on all these
@@ -128,7 +128,7 @@ requirements.</p>
 <p><em>Converse.js</em> implements <a class="reference external" href="https://en.wikipedia.org/wiki/Xmpp">XMPP</a> as its messaging protocol, and therefore needs
 <p><em>Converse.js</em> implements <a class="reference external" href="https://en.wikipedia.org/wiki/Xmpp">XMPP</a> as its messaging protocol, and therefore needs
 to connect to an XMPP/Jabber server (Jabber is really just a synonym for XMPP).</p>
 to connect to an XMPP/Jabber server (Jabber is really just a synonym for XMPP).</p>
 <p>You can connect to public XMPP servers like <tt class="docutils literal"><span class="pre">jabber.org</span></tt> but if you want to
 <p>You can connect to public XMPP servers like <tt class="docutils literal"><span class="pre">jabber.org</span></tt> but if you want to
-have <a href="#id26"><span class="problematic" id="id27">`Session Support`_</span></a> you&#8217;ll have to set up your own XMPP server.</p>
+have <a class="reference internal" href="#session-support">Session Support</a> you&#8217;ll have to set up your own XMPP server.</p>
 <p>You can find a list of public XMPP servers/providers on <a class="reference external" href="http://xmpp.net">xmpp.net</a> and a list of
 <p>You can find a list of public XMPP servers/providers on <a class="reference external" href="http://xmpp.net">xmpp.net</a> and a list of
 servers that you can set up yourself on <a class="reference external" href="http://xmpp.org/xmpp-software/servers/">xmpp.org</a>.</p>
 servers that you can set up yourself on <a class="reference external" href="http://xmpp.org/xmpp-software/servers/">xmpp.org</a>.</p>
 </div>
 </div>
@@ -168,7 +168,7 @@ website. This will remove the need for any cross-domain XHR support.</p>
 <div class="section" id="server-side-authentication">
 <div class="section" id="server-side-authentication">
 <h2><a class="toc-backref" href="#id6">Server-side authentication</a><a class="headerlink" href="#server-side-authentication" title="Permalink to this headline">¶</a></h2>
 <h2><a class="toc-backref" href="#id6">Server-side authentication</a><a class="headerlink" href="#server-side-authentication" title="Permalink to this headline">¶</a></h2>
 <div class="section" id="pre-binding-and-single-session-support">
 <div class="section" id="pre-binding-and-single-session-support">
-<h3><a class="toc-backref" href="#id7">Pre-binding and Single Session Support</a><a class="headerlink" href="#pre-binding-and-single-session-support" title="Permalink to this headline">¶</a></h3>
+<span id="session-support"></span><h3><a class="toc-backref" href="#id7">Pre-binding and Single Session Support</a><a class="headerlink" href="#pre-binding-and-single-session-support" title="Permalink to this headline">¶</a></h3>
 <p>It&#8217;s possible to enable single-site login, whereby users already
 <p>It&#8217;s possible to enable single-site login, whereby users already
 authenticated in your website will also automatically be logged in on the chat server,
 authenticated in your website will also automatically be logged in on the chat server,
 but this will require custom code on your server.</p>
 but this will require custom code on your server.</p>
@@ -176,7 +176,7 @@ but this will require custom code on your server.</p>
 <div class="admonition note">
 <div class="admonition note">
 <p class="first admonition-title">Note</p>
 <p class="first admonition-title">Note</p>
 <p class="last">If you want to enable single session support, make sure to pass <strong>prebind: true</strong>
 <p class="last">If you want to enable single session support, make sure to pass <strong>prebind: true</strong>
-when you call <strong>converse.initialize</strong> (see ./main.js).</p>
+when you call <strong>converse.initialize</strong> (see ./index.html).</p>
 </div>
 </div>
 <p>When you authenticate to the XMPP server on your backend, you&#8217;ll receive two
 <p>When you authenticate to the XMPP server on your backend, you&#8217;ll receive two
 tokens, RID (request ID) and SID (session ID).</p>
 tokens, RID (request ID) and SID (session ID).</p>
@@ -209,17 +209,30 @@ connection object.</p>
 </div>
 </div>
 <div class="section" id="quickstart-to-get-a-demo-up-and-running">
 <div class="section" id="quickstart-to-get-a-demo-up-and-running">
 <h1><a class="toc-backref" href="#id8">Quickstart (to get a demo up and running)</a><a class="headerlink" href="#quickstart-to-get-a-demo-up-and-running" title="Permalink to this headline">¶</a></h1>
 <h1><a class="toc-backref" href="#id8">Quickstart (to get a demo up and running)</a><a class="headerlink" href="#quickstart-to-get-a-demo-up-and-running" title="Permalink to this headline">¶</a></h1>
-<p>When you download a specific release of <em>Converse.js</em>, say for example version 0.3,
-there will be two minified files inside the zip file.</p>
-<p>For version 0.3 they will be:</p>
+<p>When you download a specific release of <em>Converse.js</em> there will be two minified files inside the zip file.</p>
 <ul class="simple">
 <ul class="simple">
-<li>converse.0.3.min.js</li>
-<li>converse.0.3.min.css</li>
+<li>converse.min.js</li>
+<li>converse.min.css</li>
 </ul>
 </ul>
-<p>You can include these two files in your website via the <em>script</em> and <em>link</em>
+<p>You can include these two files inside the <em>&lt;head&gt;</em> element of your website via the <em>script</em> and <em>link</em>
 tags:</p>
 tags:</p>
-<div class="highlight-python"><pre>&lt;link rel="stylesheet" type="text/css" media="screen" href="converse.0.3.min.css"&gt;
-&lt;script src="converse.0.3.min.js"&gt;&lt;/script&gt;</pre>
+<div class="highlight-python"><pre>&lt;link rel="stylesheet" type="text/css" media="screen" href="converse.min.css"&gt;
+&lt;script src="converse.min.js"&gt;&lt;/script&gt;</pre>
+</div>
+<p>Then, at the bottom of your page, after the closing <em>&lt;/body&gt;</em> element, put the
+following inline Javascript code:</p>
+<div class="highlight-python"><pre>&lt;script&gt;
+    converse.initialize({
+        auto_list_rooms: false,
+        auto_subscribe: false,
+        bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
+        hide_muc_server: false,
+        i18n: locales.en, // Refer to ./locale/locales.js to see which locales are supported
+        prebind: false,
+        show_controlbox_by_default: true,
+        xhr_user_search: false
+    });
+&lt;/script&gt;</pre>
 </div>
 </div>
 <p>The <em>index.html</em> file inside the Converse.js folder serves as a nice usable
 <p>The <em>index.html</em> file inside the Converse.js folder serves as a nice usable
 example of this.</p>
 example of this.</p>
@@ -229,7 +242,7 @@ practical.</p>
 <p>You&#8217;ll most likely want to implement some kind of single-signon solution for
 <p>You&#8217;ll most likely want to implement some kind of single-signon solution for
 your website, where users authenticate once in your website and then stay
 your website, where users authenticate once in your website and then stay
 logged into their XMPP session upon page reload.</p>
 logged into their XMPP session upon page reload.</p>
-<p>For more info on this, read <a href="#id28"><span class="problematic" id="id29">`Session Support`_</span></a>.</p>
+<p>For more info on this, read: <a class="reference internal" href="#pre-binding-and-single-session-support">Pre-binding and Single Session Support</a>.</p>
 <p>You might also want to have more fine-grained control of what gets included in
 <p>You might also want to have more fine-grained control of what gets included in
 the minified Javascript file. Read <a class="reference internal" href="#configuration">Configuration</a> and <a class="reference internal" href="#minification">Minification</a> for more info on how to do
 the minified Javascript file. Read <a class="reference internal" href="#configuration">Configuration</a> and <a class="reference internal" href="#minification">Minification</a> for more info on how to do
 that.</p>
 that.</p>
@@ -241,6 +254,8 @@ you&#8217;ll want to configure <em>Converse.js</em> to suit your needs before yo
 on your website.</p>
 on your website.</p>
 <p><em>Converse.js</em> is passed its configuration settings when you call its
 <p><em>Converse.js</em> is passed its configuration settings when you call its
 <em>initialize</em> method.</p>
 <em>initialize</em> method.</p>
+<p>You&#8217;ll most likely want to call the <em>initialize</em> method in your HTML page. For
+an example of how this is done, please see the bottom of the <em>./index.html</em> page.</p>
 <p>Please refer to the <a class="reference internal" href="#configuration-variables">Configuration variables</a> section below for info on
 <p>Please refer to the <a class="reference internal" href="#configuration-variables">Configuration variables</a> section below for info on
 all the available configuration settings.</p>
 all the available configuration settings.</p>
 <p>After you have configured <em>Converse.js</em>, you&#8217;ll have to regenerate the minified
 <p>After you have configured <em>Converse.js</em>, you&#8217;ll have to regenerate the minified
@@ -357,6 +372,15 @@ manager, NPM.</p>
 </div>
 </div>
 <div class="section" id="translations">
 <div class="section" id="translations">
 <h1><a class="toc-backref" href="#id23">Translations</a><a class="headerlink" href="#translations" title="Permalink to this headline">¶</a></h1>
 <h1><a class="toc-backref" href="#id23">Translations</a><a class="headerlink" href="#translations" title="Permalink to this headline">¶</a></h1>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Translations take up a lot of space and will bloat your minified file.
+At the time of writing, the difference between <em>converse.min.js</em> and
+<em>converse.min.no-locales.js</em> is about 50KB! Therefore, make sure to only
+include those languages that you intend to support and remove from
+./locale/locales.js those which you don&#8217;t need. Remember to rebuild the
+minified file afterwards.</p>
+</div>
 <p>The gettext POT file located in ./locale/converse.pot is the template
 <p>The gettext POT file located in ./locale/converse.pot is the template
 containing all translations and from which for each language an individual PO
 containing all translations and from which for each language an individual PO
 file is generated.</p>
 file is generated.</p>

BIN=BIN
docs/html/objects.inv


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
docs/html/searchindex.js


+ 39 - 11
docs/source/index.rst

@@ -99,6 +99,8 @@ website. This will remove the need for any cross-domain XHR support.
 Server-side authentication
 Server-side authentication
 ==========================
 ==========================
 
 
+.. _`Session Support`:
+
 Pre-binding and Single Session Support
 Pre-binding and Single Session Support
 --------------------------------------
 --------------------------------------
 
 
@@ -110,7 +112,7 @@ Jack Moffitt has a great `blogpost`_ about this and even provides an `example Dj
 
 
 .. Note::
 .. Note::
    If you want to enable single session support, make sure to pass **prebind: true**
    If you want to enable single session support, make sure to pass **prebind: true**
-   when you call **converse.initialize** (see ./main.js).
+   when you call **converse.initialize** (see ./index.html).
 
 
 When you authenticate to the XMPP server on your backend, you'll receive two
 When you authenticate to the XMPP server on your backend, you'll receive two
 tokens, RID (request ID) and SID (session ID).
 tokens, RID (request ID) and SID (session ID).
@@ -153,21 +155,36 @@ connection object.
 Quickstart (to get a demo up and running)
 Quickstart (to get a demo up and running)
 =========================================
 =========================================
 
 
-When you download a specific release of *Converse.js*, say for example version 0.3,
-there will be two minified files inside the zip file.
-
-For version 0.3 they will be:
+When you download a specific release of *Converse.js* there will be two minified files inside the zip file.
 
 
-* converse.0.3.min.js
-* converse.0.3.min.css
+* converse.min.js
+* converse.min.css
 
 
-You can include these two files in your website via the *script* and *link*
+You can include these two files inside the *<head>* element of your website via the *script* and *link*
 tags:
 tags:
 
 
 ::
 ::
 
 
-    <link rel="stylesheet" type="text/css" media="screen" href="converse.0.3.min.css">
-    <script src="converse.0.3.min.js"></script>
+    <link rel="stylesheet" type="text/css" media="screen" href="converse.min.css">
+    <script src="converse.min.js"></script>
+
+Then, at the bottom of your page, after the closing *</body>* element, put the
+following inline Javascript code:
+
+::
+
+    <script>
+        converse.initialize({
+            auto_list_rooms: false,
+            auto_subscribe: false,
+            bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
+            hide_muc_server: false,
+            i18n: locales.en, // Refer to ./locale/locales.js to see which locales are supported
+            prebind: false,
+            show_controlbox_by_default: true,
+            xhr_user_search: false
+        });
+    </script>
 
 
 The *index.html* file inside the Converse.js folder serves as a nice usable
 The *index.html* file inside the Converse.js folder serves as a nice usable
 example of this.
 example of this.
@@ -180,7 +197,7 @@ You'll most likely want to implement some kind of single-signon solution for
 your website, where users authenticate once in your website and then stay
 your website, where users authenticate once in your website and then stay
 logged into their XMPP session upon page reload.
 logged into their XMPP session upon page reload.
 
 
-For more info on this, read `Session Support`_.
+For more info on this, read: `Pre-binding and Single Session Support`_.
 
 
 You might also want to have more fine-grained control of what gets included in
 You might also want to have more fine-grained control of what gets included in
 the minified Javascript file. Read `Configuration`_ and `Minification`_ for more info on how to do
 the minified Javascript file. Read `Configuration`_ and `Minification`_ for more info on how to do
@@ -198,6 +215,9 @@ on your website.
 *Converse.js* is passed its configuration settings when you call its
 *Converse.js* is passed its configuration settings when you call its
 *initialize* method.
 *initialize* method.
 
 
+You'll most likely want to call the *initialize* method in your HTML page. For
+an example of how this is done, please see the bottom of the *./index.html* page.
+
 Please refer to the `Configuration variables`_ section below for info on
 Please refer to the `Configuration variables`_ section below for info on
 all the available configuration settings.
 all the available configuration settings.
 
 
@@ -358,6 +378,14 @@ CSS can be minimized with Yahoo's yuicompressor tool:
 Translations
 Translations
 ============
 ============
 
 
+.. Note :: 
+   Translations take up a lot of space and will bloat your minified file.
+   At the time of writing, the difference between *converse.min.js* and
+   *converse.min.no-locales.js* is about 50KB! Therefore, make sure to only
+   include those languages that you intend to support and remove from
+   ./locale/locales.js those which you don't need. Remember to rebuild the
+   minified file afterwards.
+
 The gettext POT file located in ./locale/converse.pot is the template
 The gettext POT file located in ./locale/converse.pot is the template
 containing all translations and from which for each language an individual PO
 containing all translations and from which for each language an individual PO
 file is generated.
 file is generated.

+ 12 - 0
index.html

@@ -165,4 +165,16 @@
 </script>
 </script>
 <script type="text/javascript">try { var pageTracker = _gat._getTracker("UA-2128260-8"); pageTracker._trackPageview(); } catch(err) {}</script>
 <script type="text/javascript">try { var pageTracker = _gat._getTracker("UA-2128260-8"); pageTracker._trackPageview(); } catch(err) {}</script>
 </body>
 </body>
+<script>
+    converse.initialize({
+        auto_list_rooms: false,
+        auto_subscribe: false,
+        bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
+        hide_muc_server: false,
+        i18n: locales.en, // Refer to ./locale/locales.js to see which locales are supported
+        prebind: false,
+        show_controlbox_by_default: true,
+        xhr_user_search: false
+    });
+</script>
 </html>
 </html>

+ 460 - 0
locale/es/LC_MESSAGES/converse.json

@@ -0,0 +1,460 @@
+{
+   "converse": {
+      "": {
+         "Project-Id-Version": "Converse.js 0.4",
+         "Report-Msgid-Bugs-To": "",
+         "POT-Creation-Date": "2013-06-01 23:03+0200",
+         "PO-Revision-Date": "2013-07-22 18:13-0400",
+         "Last-Translator": "Leonardo J. Caballero G. <leonardocaballero@gmail.com>",
+         "Language-Team": "Spanish",
+         "Language": "es",
+         "MIME-Version": "1.0",
+         "Content-Type": "text/plain; charset=ASCII",
+         "Content-Transfer-Encoding": "8bit",
+         "Plural-Forms": "nplurals=2; plural=(n != 1);",
+         "domain": "converse",
+         "lang": "es",
+         "plural_forms": "nplurals=2; plural=(n != 1);"
+      },
+      "Show this menu": [
+         null,
+         "Mostrar este menú"
+      ],
+      "Write in the third person": [
+         null,
+         "Escribir en tercera persona"
+      ],
+      "Remove messages": [
+         null,
+         "Eliminar mensajes"
+      ],
+      "Personal message": [
+         null,
+         "Mensaje personal"
+      ],
+      "Contacts": [
+         null,
+         "Contactos"
+      ],
+      "Online": [
+         null,
+         "En linea"
+      ],
+      "Busy": [
+         null,
+         "Ocupado"
+      ],
+      "Away": [
+         null,
+         "Ausente"
+      ],
+      "Offline": [
+         null,
+         "Desconectado"
+      ],
+      "Click to add new chat contacts": [
+         null,
+         "Haga clic para agregar nuevos contactos al chat"
+      ],
+      "Add a contact": [
+         null,
+         "Agregar un contacto"
+      ],
+      "Contact username": [
+         null,
+         "Nombre de usuario de contacto"
+      ],
+      "Add": [
+         null,
+         "Agregar"
+      ],
+      "Contact name": [
+         null,
+         "Nombre de contacto"
+      ],
+      "Search": [
+         null,
+         "Búsqueda"
+      ],
+      "No users found": [
+         null,
+         "Sin usuarios encontrados"
+      ],
+      "Click to add as a chat contact": [
+         null,
+         "Haga clic para agregar como un contacto de chat"
+      ],
+      "Click to open this room": [
+         null,
+         "Haga clic para abrir esta sala"
+      ],
+      "Show more information on this room": [
+         null,
+         "Mostrar mas información en esta sala"
+      ],
+      "Description:": [
+         null,
+         "Descripción"
+      ],
+      "Occupants:": [
+         null,
+         "Ocupantes:"
+      ],
+      "Features:": [
+         null,
+         "Características:"
+      ],
+      "Requires authentication": [
+         null,
+         "Autenticación requerida"
+      ],
+      "Hidden": [
+         null,
+         "Oculto"
+      ],
+      "Requires an invitation": [
+         null,
+         "Requiere una invitación"
+      ],
+      "Moderated": [
+         null,
+         "Moderado"
+      ],
+      "Non-anonymous": [
+         null,
+         "No usuario anónimo"
+      ],
+      "Open room": [
+         null,
+         "Abrir sala"
+      ],
+      "Permanent room": [
+         null,
+         "Sala permanente"
+      ],
+      "Public": [
+         null,
+         "Publico"
+      ],
+      "Semi-anonymous": [
+         null,
+         "Semi anónimo"
+      ],
+      "Temporary room": [
+         null,
+         "Sala temporal"
+      ],
+      "Unmoderated": [
+         null,
+         "Sin moderar"
+      ],
+      "Rooms": [
+         null,
+         "Salas"
+      ],
+      "Room name": [
+         null,
+         "Nombre de sala"
+      ],
+      "Nickname": [
+         null,
+         "Apodo"
+      ],
+      "Server": [
+         null,
+         "Servidor"
+      ],
+      "Join": [
+         null,
+         "Unirse"
+      ],
+      "Show rooms": [
+         null,
+         "Mostrar salas"
+      ],
+      "No rooms on %1$s": [
+         null,
+         "Sin salas en %1$s"
+      ],
+      "Rooms on %1$s": [
+         null,
+         "Salas en %1$s"
+      ],
+      "Set chatroom topic": [
+         null,
+         "Defina tema de sala de chat"
+      ],
+      "Kick user from chatroom": [
+         null,
+         "Expulsar usuario de sala de chat."
+      ],
+      "Ban user from chatroom": [
+         null,
+         "Bloquear usuario de sala de chat."
+      ],
+      "Message": [
+         null,
+         "Mensaje"
+      ],
+      "Save": [
+         null,
+         "Guardar"
+      ],
+      "Cancel": [
+         null,
+         "Cancelar"
+      ],
+      "An error occurred while trying to save the form.": [
+         null,
+         "Un error ocurrido mientras trataba de guardar el formulario."
+      ],
+      "This chatroom requires a password": [
+         null,
+         "Esta sala de chat requiere una contraseña."
+      ],
+      "Password: ": [
+         null,
+         "Contraseña: "
+      ],
+      "Submit": [
+         null,
+         "Enviar"
+      ],
+      "This room is not anonymous": [
+         null,
+         "Esta sala no es para usuarios anónimos"
+      ],
+      "This room now shows unavailable members": [
+         null,
+         "Esta sala ahora muestra los miembros no disponibles"
+      ],
+      "This room does not show unavailable members": [
+         null,
+         "Esta sala no muestra los miembros no disponibles"
+      ],
+      "Non-privacy-related room configuration has changed": [
+         null,
+         "Configuración de la sala para no relacionada con la privacidad ha sido cambiada"
+      ],
+      "Room logging is now enabled": [
+         null,
+         "El registro de la sala ahora está habilitada"
+      ],
+      "Room logging is now disabled": [
+         null,
+         "El registro de la sala ahora está deshabilitada"
+      ],
+      "This room is now non-anonymous": [
+         null,
+         "Esta sala ahora es para los usuarios no anónimos"
+      ],
+      "This room is now semi-anonymous": [
+         null,
+         "Esta sala ahora es para los usuarios semi-anónimos"
+      ],
+      "This room is now fully-anonymous": [
+         null,
+         "Esta sala ahora es para los usuarios completamente-anónimos"
+      ],
+      "A new room has been created": [
+         null,
+         "Una nueva sala ha sido creada"
+      ],
+      "Your nickname has been changed": [
+         null,
+         "Su apodo ha sido cambiado"
+      ],
+      "<strong>%1$s</strong> has been banned": [
+         null,
+         "<strong>%1$s</strong> ha sido prohibido"
+      ],
+      "<strong>%1$s</strong> has been kicked out": [
+         null,
+         "<strong>%1$s</strong> ha sido expulsado"
+      ],
+      "<strong>%1$s</strong> has been removed because of an affiliation change": [
+         null,
+         "<strong>%1$s</strong> ha sido eliminado debido a un cambio de afiliación"
+      ],
+      "<strong>%1$s</strong> has been removed for not being a member": [
+         null,
+         "<strong>%1$s</strong> ha sido eliminado debido a que no es miembro"
+      ],
+      "You have been banned from this room": [
+         null,
+         "Usted ha sido prohibido de esta sala"
+      ],
+      "You have been kicked from this room": [
+         null,
+         "Usted ha sido expulsado de esta sala"
+      ],
+      "You have been removed from this room because of an affiliation change": [
+         null,
+         "Usted ha sido eliminado de esta sala debido a un cambio de afiliación"
+      ],
+      "You have been removed from this room because the room has changed to members-only and you're not a member": [
+         null,
+         "Usted ha sido eliminado de esta sala debido a que la sala cambio su configuración a solo-miembros y usted no es un miembro"
+      ],
+      "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
+         null,
+         "Usted ha sido eliminado de esta sala debido al servicio MUC (Multi-user chat) está apagado."
+      ],
+      "You are not on the member list of this room": [
+         null,
+         "Usted no está en la lista de miembros de esta sala"
+      ],
+      "No nickname was specified": [
+         null,
+         "Sin apodo especificado"
+      ],
+      "You are not allowed to create new rooms": [
+         null,
+         "A usted no se le permite crear nuevas salas"
+      ],
+      "Your nickname doesn't conform to this room's policies": [
+         null,
+         "Su apodo no se ajusta a la política de esta sala"
+      ],
+      "Your nickname is already taken": [
+         null,
+         "Su apodo ya ha sido tomando por otro usuario"
+      ],
+      "This room does not (yet) exist": [
+         null,
+         "Esta sala (aún) no existe"
+      ],
+      "This room has reached it's maximum number of occupants": [
+         null,
+         "Esta sala ha alcanzado su número máximo de ocupantes"
+      ],
+      "Topic set by %1$s to: %2$s": [
+         null,
+         "Tema fijado por %1$s a: %2$s"
+      ],
+      "This user is a moderator": [
+         null,
+         "Este usuario es un moderador"
+      ],
+      "This user can send messages in this room": [
+         null,
+         "Este usuario puede enviar mensajes en esta sala"
+      ],
+      "This user can NOT send messages in this room": [
+         null,
+         "Este usuario NO puede enviar mensajes en esta"
+      ],
+      "Click to chat with this contact": [
+         null,
+         "Haga clic para conversar con este contacto"
+      ],
+      "Click to remove this contact": [
+         null,
+         "Haga clic para eliminar este contacto"
+      ],
+      "Contact requests": [
+         null,
+         "Solicitudes de contacto"
+      ],
+      "My contacts": [
+         null,
+         "Mi contactos"
+      ],
+      "Pending contacts": [
+         null,
+         "Contactos pendientes"
+      ],
+      "Custom status": [
+         null,
+         "Personalice estatus"
+      ],
+      "Click to change your chat status": [
+         null,
+         "Haga clic para cambiar su estatus de chat"
+      ],
+      "Click here to write a custom status message": [
+         null,
+         "Haga clic para escribir un mensaje de estatus personalizado"
+      ],
+      "online": [
+         null,
+         "en linea"
+      ],
+      "busy": [
+         null,
+         "ocupado"
+      ],
+      "away for long": [
+         null,
+         "lejos por mucho tiempo"
+      ],
+      "away": [
+         null,
+         "ausente"
+      ],
+      "I am %1$s": [
+         null,
+         "Yo soy %1$s"
+      ],
+      "Sign in": [
+         null,
+         "Registro"
+      ],
+      "XMPP/Jabber Username:": [
+         null,
+         "Nombre de usuario XMPP/Jabber"
+      ],
+      "Password:": [
+         null,
+         "Contraseña:"
+      ],
+      "Log In": [
+         null,
+         "Iniciar sesión"
+      ],
+      "BOSH Service URL:": [
+         null,
+         "URL del servicio BOSH:"
+      ],
+      "Connected": [
+         null,
+         "Conectado"
+      ],
+      "Disconnected": [
+         null,
+         "Desconectado"
+      ],
+      "Error": [
+         null,
+         "Error"
+      ],
+      "Connecting": [
+         null,
+         "Conectando"
+      ],
+      "Connection Failed": [
+         null,
+         "Conexión fallo"
+      ],
+      "Authenticating": [
+         null,
+         "Autenticando"
+      ],
+      "Authentication Failed": [
+         null,
+         "Autenticación fallo"
+      ],
+      "Disconnecting": [
+         null,
+         "Desconectando"
+      ],
+      "Attached": [
+         null,
+         "Adjuntado"
+      ],
+      "Online Contacts": [
+         null,
+         "Contactos en linea"
+      ]
+   }
+}

+ 493 - 0
locale/es/LC_MESSAGES/converse.po

@@ -0,0 +1,493 @@
+# Spanish translations for Converse.js package.
+# Copyright (C) 2013 Jan-Carel Brand
+# This file is distributed under the same license as the Converse.js package.
+# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: Converse.js 0.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-06-01 23:03+0200\n"
+"PO-Revision-Date: 2013-07-22 18:13-0400\n"
+"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>\n"
+"Language-Team: ES <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"plural_forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+"lang: es\n"
+"Language-Code: es\n"
+"Language-Name: Español\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: converse\n"
+"domain: converse\n"
+"X-Is-Fallback-For: es-ar es-bo es-cl es-co es-cr es-do es-ec es-es es-sv es-gt es-hn es-mx es-ni es-pa es-py es-pe es-pr es-us es-uy es-ve\n"
+
+#: converse.js:397
+#: converse.js:1128
+msgid "Show this menu"
+msgstr "Mostrar este menú"
+
+#: converse.js:398
+#: converse.js:1129
+msgid "Write in the third person"
+msgstr "Escribir en tercera persona"
+
+#: converse.js:399
+#: converse.js:1133
+msgid "Remove messages"
+msgstr "Eliminar mensajes"
+
+#: converse.js:539
+msgid "Personal message"
+msgstr "Mensaje personal"
+
+#: converse.js:613
+msgid "Contacts"
+msgstr "Contactos"
+
+#: converse.js:618
+msgid "Online"
+msgstr "En linea"
+
+#: converse.js:619
+msgid "Busy"
+msgstr "Ocupado"
+
+#: converse.js:620
+msgid "Away"
+msgstr "Ausente"
+
+#: converse.js:621
+msgid "Offline"
+msgstr "Desconectado"
+
+#: converse.js:628
+msgid "Click to add new chat contacts"
+msgstr "Haga clic para agregar nuevos contactos al chat"
+
+#: converse.js:628
+msgid "Add a contact"
+msgstr "Agregar un contacto"
+
+#: converse.js:637
+msgid "Contact username"
+msgstr "Nombre de usuario de contacto"
+
+#: converse.js:638
+msgid "Add"
+msgstr "Agregar"
+
+#: converse.js:646
+msgid "Contact name"
+msgstr "Nombre de contacto"
+
+#: converse.js:647
+msgid "Search"
+msgstr "Búsqueda"
+
+#: converse.js:682
+msgid "No users found"
+msgstr "Sin usuarios encontrados"
+
+#: converse.js:689
+msgid "Click to add as a chat contact"
+msgstr "Haga clic para agregar como un contacto de chat"
+
+#: converse.js:753
+msgid "Click to open this room"
+msgstr "Haga clic para abrir esta sala"
+
+#: converse.js:755
+msgid "Show more information on this room"
+msgstr "Mostrar mas información en esta sala"
+
+#: converse.js:760
+msgid "Description:"
+msgstr "Descripción"
+
+#: converse.js:761
+msgid "Occupants:"
+msgstr "Ocupantes:"
+
+#: converse.js:762
+msgid "Features:"
+msgstr "Características:"
+
+#: converse.js:764
+msgid "Requires authentication"
+msgstr "Autenticación requerida"
+
+#: converse.js:767
+msgid "Hidden"
+msgstr "Oculto"
+
+#: converse.js:770
+msgid "Requires an invitation"
+msgstr "Requiere una invitación"
+
+#: converse.js:773
+msgid "Moderated"
+msgstr "Moderado"
+
+#: converse.js:776
+msgid "Non-anonymous"
+msgstr "No usuario anónimo"
+
+#: converse.js:779
+msgid "Open room"
+msgstr "Abrir sala"
+
+#: converse.js:782
+msgid "Permanent room"
+msgstr "Sala permanente"
+
+#: converse.js:785
+msgid "Public"
+msgstr "Publico"
+
+#: converse.js:788
+msgid "Semi-anonymous"
+msgstr "Semi anónimo"
+
+#: converse.js:791
+msgid "Temporary room"
+msgstr "Sala temporal"
+
+#: converse.js:794
+msgid "Unmoderated"
+msgstr "Sin moderar"
+
+#: converse.js:800
+msgid "Rooms"
+msgstr "Salas"
+
+#: converse.js:804
+msgid "Room name"
+msgstr "Nombre de sala"
+
+#: converse.js:805
+msgid "Nickname"
+msgstr "Apodo"
+
+#: converse.js:806
+msgid "Server"
+msgstr "Servidor"
+
+#: converse.js:807
+msgid "Join"
+msgstr "Unirse"
+
+#: converse.js:808
+msgid "Show rooms"
+msgstr "Mostrar salas"
+
+#. For translators: %1$s is a variable and will be replaced with the XMPP server name
+#: converse.js:841
+msgid "No rooms on %1$s"
+msgstr "Sin salas en %1$s"
+
+#. For translators: %1$s is a variable and will be
+#. replaced with the XMPP server name
+#: converse.js:856
+msgid "Rooms on %1$s"
+msgstr "Salas en %1$s"
+
+#: converse.js:1130
+msgid "Set chatroom topic"
+msgstr "Defina tema de sala de chat"
+
+#: converse.js:1131
+msgid "Kick user from chatroom"
+msgstr "Expulsar usuario de sala de chat."
+
+#: converse.js:1132
+msgid "Ban user from chatroom"
+msgstr "Prohibir usuario de sala de chat."
+
+#: converse.js:1159
+msgid "Message"
+msgstr "Mensaje"
+
+#: converse.js:1273
+#: converse.js:2318
+msgid "Save"
+msgstr "Guardar"
+
+#: converse.js:1274
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: converse.js:1321
+msgid "An error occurred while trying to save the form."
+msgstr "Un error ocurrido mientras trataba de guardar el formulario."
+
+#: converse.js:1367
+msgid "This chatroom requires a password"
+msgstr "Esta sala de chat requiere una contraseña."
+
+#: converse.js:1368
+msgid "Password: "
+msgstr "Contraseña: "
+
+#: converse.js:1369
+msgid "Submit"
+msgstr "Enviar"
+
+#: converse.js:1383
+msgid "This room is not anonymous"
+msgstr "Esta sala no es para usuarios anónimos"
+
+#: converse.js:1384
+msgid "This room now shows unavailable members"
+msgstr "Esta sala ahora muestra los miembros no disponibles"
+
+#: converse.js:1385
+msgid "This room does not show unavailable members"
+msgstr "Esta sala no muestra los miembros no disponibles"
+
+#: converse.js:1386
+msgid "Non-privacy-related room configuration has changed"
+msgstr "Configuración de la sala para no relacionada con la privacidad ha sido cambiada"
+
+#: converse.js:1387
+msgid "Room logging is now enabled"
+msgstr "El registro de la sala ahora está habilitada"
+
+#: converse.js:1388
+msgid "Room logging is now disabled"
+msgstr "El registro de la sala ahora está deshabilitada"
+
+#: converse.js:1389
+msgid "This room is now non-anonymous"
+msgstr "Esta sala ahora es para los usuarios no anónimos"
+
+#: converse.js:1390
+msgid "This room is now semi-anonymous"
+msgstr "Esta sala ahora es para los usuarios semi-anónimos"
+
+#: converse.js:1391
+msgid "This room is now fully-anonymous"
+msgstr "Esta sala ahora es para los usuarios completamente-anónimos"
+
+#: converse.js:1392
+msgid "A new room has been created"
+msgstr "Una nueva sala ha sido creada"
+
+#: converse.js:1393
+msgid "Your nickname has been changed"
+msgstr "Su apodo ha sido cambiado"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been banned
+#: converse.js:1400
+msgid "<strong>%1$s</strong> has been banned"
+msgstr "<strong>%1$s</strong> ha sido prohibido"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been kicked out
+#: converse.js:1404
+msgid "<strong>%1$s</strong> has been kicked out"
+msgstr "<strong>%1$s</strong> ha sido expulsado"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been removed because of an affiliasion change
+#: converse.js:1408
+msgid "<strong>%1$s</strong> has been removed because of an affiliation change"
+msgstr "<strong>%1$s</strong> ha sido eliminado debido a un cambio de afiliación"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been removed for not being a member
+#: converse.js:1412
+msgid "<strong>%1$s</strong> has been removed for not being a member"
+msgstr "<strong>%1$s</strong> ha sido eliminado debido a que no es miembro"
+
+#: converse.js:1416
+#: converse.js:1478
+msgid "You have been banned from this room"
+msgstr "Usted ha sido prohibido de esta sala"
+
+#: converse.js:1417
+msgid "You have been kicked from this room"
+msgstr "Usted ha sido expulsado de esta sala"
+
+#: converse.js:1418
+msgid "You have been removed from this room because of an affiliation change"
+msgstr "Usted ha sido eliminado de esta sala debido a un cambio de afiliación"
+
+#: converse.js:1419
+msgid "You have been removed from this room because the room has changed to members-only and you're not a member"
+msgstr "Usted ha sido eliminado de esta sala debido a que la sala cambio su configuración a solo-miembros y usted no es un miembro"
+
+#: converse.js:1420
+msgid "You have been removed from this room because the MUC (Multi-user chat) service is being shut down."
+msgstr "Usted ha sido eliminado de esta sala debido al servicio MUC (Multi-user chat) está apagado."
+
+#: converse.js:1476
+msgid "You are not on the member list of this room"
+msgstr "Usted no está en la lista de miembros de esta sala"
+
+#: converse.js:1482
+msgid "No nickname was specified"
+msgstr "Sin apodo especificado"
+
+#: converse.js:1486
+msgid "You are not allowed to create new rooms"
+msgstr "A usted no se le permite crear nuevas salas"
+
+#: converse.js:1488
+msgid "Your nickname doesn't conform to this room's policies"
+msgstr "Su apodo no se ajusta a la política de esta sala"
+
+#: converse.js:1490
+msgid "Your nickname is already taken"
+msgstr "Su apodo ya ha sido tomando por otro usuario"
+
+#: converse.js:1492
+msgid "This room does not (yet) exist"
+msgstr "Esta sala (aún) no existe"
+
+#: converse.js:1494
+msgid "This room has reached it's maximum number of occupants"
+msgstr "Esta sala ha alcanzado su número máximo de ocupantes"
+
+#. For translators: the %1$s and %2$s parts will get replaced by the user and topic text respectively
+#. Example: Topic set by JC Brand to: Hello World!
+#: converse.js:1571
+msgid "Topic set by %1$s to: %2$s"
+msgstr "Tema fijado por %1$s a: %2$s"
+
+#: converse.js:1587
+msgid "This user is a moderator"
+msgstr "Este usuario es un moderador"
+
+#: converse.js:1590
+msgid "This user can send messages in this room"
+msgstr "Este usuario puede enviar mensajes en esta sala"
+
+#: converse.js:1593
+msgid "This user can NOT send messages in this room"
+msgstr "Este usuario NO puede enviar mensajes en esta"
+
+#: converse.js:1796
+msgid "Click to chat with this contact"
+msgstr "Haga clic para conversar con este contacto"
+
+#: converse.js:1797
+#: converse.js:1801
+msgid "Click to remove this contact"
+msgstr "Haga clic para eliminar este contacto"
+
+#: converse.js:2163
+msgid "Contact requests"
+msgstr "Solicitudes de contacto"
+
+#: converse.js:2164
+msgid "My contacts"
+msgstr "Mi contactos"
+
+#: converse.js:2165
+msgid "Pending contacts"
+msgstr "Contactos pendientes"
+
+#: converse.js:2317
+msgid "Custom status"
+msgstr "Personalice estatus"
+
+#: converse.js:2323
+msgid "Click to change your chat status"
+msgstr "Haga clic para cambiar su estatus de chat"
+
+#: converse.js:2326
+msgid "Click here to write a custom status message"
+msgstr "Haga clic para escribir un mensaje de estatus personalizado"
+
+#: converse.js:2355
+#: converse.js:2363
+msgid "online"
+msgstr "en linea"
+
+#: converse.js:2357
+msgid "busy"
+msgstr "ocupado"
+
+#: converse.js:2359
+msgid "away for long"
+msgstr "lejos por mucho tiempo"
+
+#: converse.js:2361
+msgid "away"
+msgstr "ausente"
+
+#. For translators: the %1$s part gets replaced with the status
+#. Example, I am online
+#: converse.js:2375
+#: converse.js:2409
+msgid "I am %1$s"
+msgstr "Yo soy %1$s"
+
+#: converse.js:2480
+msgid "Sign in"
+msgstr "Registro"
+
+#: converse.js:2483
+msgid "XMPP/Jabber Username:"
+msgstr "Nombre de usuario XMPP/Jabber"
+
+#: converse.js:2485
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: converse.js:2487
+msgid "Log In"
+msgstr "Iniciar sesión"
+
+#: converse.js:2491
+msgid "BOSH Service URL:"
+msgstr "URL del servicio BOSH:"
+
+#: converse.js:2503
+msgid "Connected"
+msgstr "Conectado"
+
+#: converse.js:2507
+msgid "Disconnected"
+msgstr "Desconectado"
+
+#: converse.js:2511
+msgid "Error"
+msgstr "Error"
+
+#: converse.js:2513
+msgid "Connecting"
+msgstr "Conectando"
+
+#: converse.js:2516
+msgid "Connection Failed"
+msgstr "Conexión fallo"
+
+#: converse.js:2518
+msgid "Authenticating"
+msgstr "Autenticando"
+
+#: converse.js:2521
+msgid "Authentication Failed"
+msgstr "Autenticación fallo"
+
+#: converse.js:2523
+msgid "Disconnecting"
+msgstr "Desconectando"
+
+#: converse.js:2525
+msgid "Attached"
+msgstr "Adjuntado"
+
+#: converse.js:2656
+msgid "Online Contacts"
+msgstr "Contactos en linea"
+

+ 459 - 0
locale/es/LC_MESSAGES/es.js

@@ -0,0 +1,459 @@
+(function (root, factory) {
+    define("es", ['jed'], function () {
+        var de = new Jed({
+            "domain": "converse",
+            "locale_data": {
+                "converse": {
+                    "": {
+                        "domain": "converse",
+                        "lang": "es",
+                        "plural_forms": "nplurals=2; plural=(n != 1);"
+                    },
+                    "Show this menu": [
+                        null,
+                        "Mostrar este menú"
+                    ],
+                    "Write in the third person": [
+                        null,
+                        "Escribir en tercera persona"
+                    ],
+                    "Remove messages": [
+                        null,
+                        "Eliminar mensajes"
+                    ],
+                    "Personal message": [
+                        null,
+                        "Mensaje personal"
+                    ],
+                    "Contacts": [
+                        null,
+                        "Contactos"
+                    ],
+                    "Online": [
+                        null,
+                        "En linea"
+                    ],
+                    "Busy": [
+                        null,
+                        "Ocupado"
+                    ],
+                    "Away": [
+                        null,
+                        "Ausente"
+                    ],
+                    "Offline": [
+                        null,
+                        "Desconectado"
+                    ],
+                    "Click to add new chat contacts": [
+                        null,
+                        "Haga clic para agregar nuevos contactos al chat"
+                    ],
+                    "Add a contact": [
+                        null,
+                        "Agregar un contacto"
+                    ],
+                    "Contact username": [
+                        null,
+                        "Nombre de usuario de contacto"
+                    ],
+                    "Add": [
+                        null,
+                        "Agregar"
+                    ],
+                    "Contact name": [
+                        null,
+                        "Nombre de contacto"
+                    ],
+                    "Search": [
+                        null,
+                        "Búsqueda"
+                    ],
+                    "No users found": [
+                        null,
+                        "Sin usuarios encontrados"
+                    ],
+                    "Click to add as a chat contact": [
+                        null,
+                        "Haga clic para agregar como un contacto de chat"
+                    ],
+                    "Click to open this room": [
+                        null,
+                        "Haga clic para abrir esta sala"
+                    ],
+                    "Show more information on this room": [
+                        null,
+                        "Mostrar mas información en esta sala"
+                    ],
+                    "Description:": [
+                        null,
+                        "Descripción"
+                    ],
+                    "Occupants:": [
+                        null,
+                        "Ocupantes:"
+                    ],
+                    "Features:": [
+                        null,
+                        "Características:"
+                    ],
+                    "Requires authentication": [
+                        null,
+                        "Autenticación requerida"
+                    ],
+                    "Hidden": [
+                        null,
+                        "Oculto"
+                    ],
+                    "Requires an invitation": [
+                        null,
+                        "Requiere una invitación"
+                    ],
+                    "Moderated": [
+                        null,
+                        "Moderado"
+                    ],
+                    "Non-anonymous": [
+                        null,
+                        "No usuario anónimo"
+                    ],
+                    "Open room": [
+                        null,
+                        "Abrir sala"
+                    ],
+                    "Permanent room": [
+                        null,
+                        "Sala permanente"
+                    ],
+                    "Public": [
+                        null,
+                        "Publico"
+                    ],
+                    "Semi-anonymous": [
+                        null,
+                        "Semi anónimo"
+                    ],
+                    "Temporary room": [
+                        null,
+                        "Sala temporal"
+                    ],
+                    "Unmoderated": [
+                        null,
+                        "Sin moderar"
+                    ],
+                    "Rooms": [
+                        null,
+                        "Salas"
+                    ],
+                    "Room name": [
+                        null,
+                        "Nombre de sala"
+                    ],
+                    "Nickname": [
+                        null,
+                        "Apodo"
+                    ],
+                    "Server": [
+                        null,
+                        "Servidor"
+                    ],
+                    "Join": [
+                        null,
+                        "Unirse"
+                    ],
+                    "Show rooms": [
+                        null,
+                        "Mostrar salas"
+                    ],
+                    "No rooms on %1$s": [
+                        null,
+                        "Sin salas en %1$s"
+                    ],
+                    "Rooms on %1$s": [
+                        null,
+                        "Salas en %1$s"
+                    ],
+                    "Set chatroom topic": [
+                        null,
+                        "Defina tema de sala de chat"
+                    ],
+                    "Kick user from chatroom": [
+                        null,
+                        "Expulsar usuario de sala de chat."
+                    ],
+                    "Ban user from chatroom": [
+                        null,
+                        "Prohibir usuario de sala de chat."
+                    ],
+                    "Message": [
+                        null,
+                        "Mensaje"
+                    ],
+                    "Save": [
+                        null,
+                        "Guardar"
+                    ],
+                    "Cancel": [
+                        null,
+                        "Cancelar"
+                    ],
+                    "An error occurred while trying to save the form.": [
+                        null,
+                        "Un error ocurrido mientras trataba de guardar el formulario."
+                    ],
+                    "This chatroom requires a password": [
+                        null,
+                        "Esta sala de chat requiere una contraseña."
+                    ],
+                    "Password: ": [
+                        null,
+                        "Contraseña: "
+                    ],
+                    "Submit": [
+                        null,
+                        "Enviar"
+                    ],
+                    "This room is not anonymous": [
+                        null,
+                        "Esta sala no es para usuarios anónimos"
+                    ],
+                    "This room now shows unavailable members": [
+                        null,
+                        "Esta sala ahora muestra los miembros no disponibles"
+                    ],
+                    "This room does not show unavailable members": [
+                        null,
+                        "Esta sala no muestra los miembros no disponibles"
+                    ],
+                    "Non-privacy-related room configuration has changed": [
+                        null,
+                        "Configuración de la sala para no relacionada con la privacidad ha sido cambiada"
+                    ],
+                    "Room logging is now enabled": [
+                        null,
+                        "El registro de la sala ahora está habilitada"
+                    ],
+                    "Room logging is now disabled": [
+                        null,
+                        "El registro de la sala ahora está deshabilitada"
+                    ],
+                    "This room is now non-anonymous": [
+                        null,
+                        "Esta sala ahora es para los usuarios no anónimos"
+                    ],
+                    "This room is now semi-anonymous": [
+                        null,
+                        "Esta sala ahora es para los usuarios semi-anónimos"
+                    ],
+                    "This room is now fully-anonymous": [
+                        null,
+                        "Esta sala ahora es para los usuarios completamente-anónimos"
+                    ],
+                    "A new room has been created": [
+                        null,
+                        "Una nueva sala ha sido creada"
+                    ],
+                    "Your nickname has been changed": [
+                        null,
+                        "Su apodo ha sido cambiado"
+                    ],
+                    "<strong>%1$s</strong> has been banned": [
+                        null,
+                        "<strong>%1$s</strong> ha sido prohibido"
+                    ],
+                    "<strong>%1$s</strong> has been kicked out": [
+                        null,
+                        "<strong>%1$s</strong> ha sido expulsado"
+                    ],
+                    "<strong>%1$s</strong> has been removed because of an affiliation change": [
+                        null,
+                        "<strong>%1$s</strong> ha sido eliminado debido a un cambio de afiliación"
+                    ],
+                    "<strong>%1$s</strong> has been removed for not being a member": [
+                        null,
+                        "<strong>%1$s</strong> ha sido eliminado debido a que no es miembro"
+                    ],
+                    "You have been banned from this room": [
+                        null,
+                        "Usted ha sido prohibido de esta sala"
+                    ],
+                    "You have been kicked from this room": [
+                        null,
+                        "Usted ha sido expulsado de esta sala"
+                    ],
+                    "You have been removed from this room because of an affiliation change": [
+                        null,
+                        "Usted ha sido eliminado de esta sala debido a un cambio de afiliación"
+                    ],
+                    "You have been removed from this room because the room has changed to members-only and you're not a member": [
+                        null,
+                        "Usted ha sido eliminado de esta sala debido a que la sala cambio su configuración a solo-miembros y usted no es un miembro"
+                    ],
+                    "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
+                        null,
+                        "Usted ha sido eliminado de esta sala debido al servicio MUC (Multi-user chat) está apagado."
+                    ],
+                    "You are not on the member list of this room": [
+                        null,
+                        "Usted no está en la lista de miembros de esta sala"
+                    ],
+                    "No nickname was specified": [
+                        null,
+                        "Sin apodo especificado"
+                    ],
+                    "You are not allowed to create new rooms": [
+                        null,
+                        "A usted no se le permite crear nuevas salas"
+                    ],
+                    "Your nickname doesn't conform to this room's policies": [
+                        null,
+                        "Su apodo no se ajusta a la política de esta sala"
+                    ],
+                    "Your nickname is already taken": [
+                        null,
+                        "Su apodo ya ha sido tomando por otro usuario"
+                    ],
+                    "This room does not (yet) exist": [
+                        null,
+                        "Esta sala (aún) no existe"
+                    ],
+                    "This room has reached it's maximum number of occupants": [
+                        null,
+                        "Esta sala ha alcanzado su número máximo de ocupantes"
+                    ],
+                    "Topic set by %1$s to: %2$s": [
+                        null,
+                        "Tema fijado por %1$s a: %2$s"
+                    ],
+                    "This user is a moderator": [
+                        null,
+                        "Este usuario es un moderador"
+                    ],
+                    "This user can send messages in this room": [
+                        null,
+                        "Este usuario puede enviar mensajes en esta sala"
+                    ],
+                    "This user can NOT send messages in this room": [
+                        null,
+                        "Este usuario NO puede enviar mensajes en esta"
+                    ],
+                    "Click to chat with this contact": [
+                        null,
+                        "Haga clic para conversar con este contacto"
+                    ],
+                    "Click to remove this contact": [
+                        null,
+                        "Haga clic para eliminar este contacto"
+                    ],
+                    "Contact requests": [
+                        null,
+                        "Solicitudes de contacto"
+                    ],
+                    "My contacts": [
+                        null,
+                        "Mi contactos"
+                    ],
+                    "Pending contacts": [
+                        null,
+                        "Contactos pendientes"
+                    ],
+                    "Custom status": [
+                        null,
+                        "Personalice estatus"
+                    ],
+                    "Click to change your chat status": [
+                        null,
+                        "Haga clic para cambiar su estatus de chat"
+                    ],
+                    "Click here to write a custom status message": [
+                        null,
+                        "Haga clic para escribir un mensaje de estatus personalizado"
+                    ],
+                    "online": [
+                        null,
+                        "en linea"
+                    ],
+                    "busy": [
+                        null,
+                        "ocupado"
+                    ],
+                    "away for long": [
+                        null,
+                        "lejos por mucho tiempo"
+                    ],
+                    "away": [
+                        null,
+                        "ausente"
+                    ],
+                    "I am %1$s": [
+                        null,
+                        "Yo soy %1$s"
+                    ],
+                    "Sign in": [
+                        null,
+                        "Registro"
+                    ],
+                    "XMPP/Jabber Username:": [
+                        null,
+                        "Nombre de usuario XMPP/Jabber"
+                    ],
+                    "Password:": [
+                        null,
+                        "Contraseña:"
+                    ],
+                    "Log In": [
+                        null,
+                        "Iniciar sesión"
+                    ],
+                    "BOSH Service URL:": [
+                        null,
+                        "URL del servicio BOSH:"
+                    ],
+                    "Connected": [
+                        null,
+                        "Conectado"
+                    ],
+                    "Disconnected": [
+                        null,
+                        "Desconectado"
+                    ],
+                    "Error": [
+                        null,
+                        "Error"
+                    ],
+                    "Connecting": [
+                        null,
+                        "Conectando"
+                    ],
+                    "Connection Failed": [
+                        null,
+                        "Conexión fallo"
+                    ],
+                    "Authenticating": [
+                        null,
+                        "Autenticando"
+                    ],
+                    "Authentication Failed": [
+                        null,
+                        "Autenticación fallo"
+                    ],
+                    "Disconnecting": [
+                        null,
+                        "Desconectando"
+                    ],
+                    "Attached": [
+                        null,
+                        "Adjuntado"
+                    ],
+                    "Online Contacts": [
+                        null,
+                        "Contactos en linea"
+                    ]
+                }
+            }
+        });
+        return factory(de);
+    });
+}(this, function (de) { 
+    return de; 
+}));

+ 460 - 0
locale/it/LC_MESSAGES/converse.json

@@ -0,0 +1,460 @@
+{
+   "converse": {
+      "": {
+         "Project-Id-Version": "Converse.js 0.4",
+         "Report-Msgid-Bugs-To": "",
+         "POT-Creation-Date": "2013-07-20 23:03+0200",
+         "PO-Revision-Date": "2013-07-20 13:58+0200",
+         "Last-Translator": "Fabio Bas <ctrlaltca@gmail.com>",
+         "Language-Team": "Italian",
+         "Language": "it",
+         "MIME-Version": "1.0",
+         "Content-Type": "text/plain; charset=ASCII",
+         "Content-Transfer-Encoding": "8bit",
+         "Plural-Forms": "nplurals=2; plural=(n != 1);",
+         "domain": "converse",
+         "lang": "it",
+         "plural_forms": "nplurals=2; plural=(n != 1);"
+      },
+      "Show this menu": [
+         null,
+         "Mostra questo menu"
+      ],
+      "Write in the third person": [
+         null,
+         "Scrivi in terza persona"
+      ],
+      "Remove messages": [
+         null,
+         "Rimuovi messaggi"
+      ],
+      "Personal message": [
+         null,
+         "Messaggio personale"
+      ],
+      "Contacts": [
+         null,
+         "Contatti"
+      ],
+      "Online": [
+         null,
+         "In linea"
+      ],
+      "Busy": [
+         null,
+         "Occupato"
+      ],
+      "Away": [
+         null,
+         "Assente"
+      ],
+      "Offline": [
+         null,
+         "Non in linea"
+      ],
+      "Click to add new chat contacts": [
+         null,
+         "Clicca per aggiungere nuovi contatti alla chat"
+      ],
+      "Add a contact": [
+         null,
+         "Aggiungi un contatto"
+      ],
+      "Contact username": [
+         null,
+         "Nome utente del contatto"
+      ],
+      "Add": [
+         null,
+         "Aggiungi"
+      ],
+      "Contact name": [
+         null,
+         "Nome del contatto"
+      ],
+      "Search": [
+         null,
+         "Cerca"
+      ],
+      "No users found": [
+         null,
+         "Nessun utente trovato"
+      ],
+      "Click to add as a chat contact": [
+         null,
+         "Clicca per aggiungere il contatto alla chat"
+      ],
+      "Click to open this room": [
+         null,
+         "Clicca per aprire questa stanza"
+      ],
+      "Show more information on this room": [
+         null,
+         "Mostra più informazioni su questa stanza"
+      ],
+      "Description:": [
+         null,
+         "Descrizione:"
+      ],
+      "Occupants:": [
+         null,
+         "Utenti presenti:"
+      ],
+      "Features:": [
+         null,
+         "Funzionalità:"
+      ],
+      "Requires authentication": [
+         null,
+         "Richiede autenticazione"
+      ],
+      "Hidden": [
+         null,
+         "Nascosta"
+      ],
+      "Requires an invitation": [
+         null,
+         "Richiede un invito"
+      ],
+      "Moderated": [
+         null,
+         "Moderata"
+      ],
+      "Non-anonymous": [
+         null,
+         "Non-anonima"
+      ],
+      "Open room": [
+         null,
+         "Stanza aperta"
+      ],
+      "Permanent room": [
+         null,
+         "Stanza permanente"
+      ],
+      "Public": [
+         null,
+         "Pubblica"
+      ],
+      "Semi-anonymous": [
+         null,
+         "Semi-anonima"
+      ],
+      "Temporary room": [
+         null,
+         "Stanza temporanea"
+      ],
+      "Unmoderated": [
+         null,
+         "Non moderata"
+      ],
+      "Rooms": [
+         null,
+         "Stanze"
+      ],
+      "Room name": [
+         null,
+         "Nome stanza"
+      ],
+      "Nickname": [
+         null,
+         "Soprannome"
+      ],
+      "Server": [
+         null,
+         "Server"
+      ],
+      "Join": [
+         null,
+         "Entra"
+      ],
+      "Show rooms": [
+         null,
+         "Mostra stanze"
+      ],
+      "No rooms on %1$s": [
+         null,
+         "Nessuna stanza su %1$s"
+      ],
+      "Rooms on %1$s": [
+         null,
+         "Stanze su %1$s"
+      ],
+      "Set chatroom topic": [
+         null,
+         "Cambia oggetto della stanza"
+      ],
+      "Kick user from chatroom": [
+         null,
+         "Espelli utente dalla stanza"
+      ],
+      "Ban user from chatroom": [
+         null,
+         "Bandisci utente dalla stanza"
+      ],
+      "Message": [
+         null,
+         "Messaggio"
+      ],
+      "Save": [
+         null,
+         "Salva"
+      ],
+      "Cancel": [
+         null,
+         "Annulla"
+      ],
+      "An error occurred while trying to save the form.": [
+         null,
+         "Errore durante il salvataggio del modulo"
+      ],
+      "This chatroom requires a password": [
+         null,
+         "Questa stanza richiede una password"
+      ],
+      "Password: ": [
+         null,
+         "Password: "
+      ],
+      "Submit": [
+         null,
+         "Invia"
+      ],
+      "This room is not anonymous": [
+         null,
+         "Questa stanza non è anonima"
+      ],
+      "This room now shows unavailable members": [
+         null,
+         "Questa stanza mostra i membri non disponibili al momento"
+      ],
+      "This room does not show unavailable members": [
+         null,
+         "Questa stanza non mostra i membri non disponibili"
+      ],
+      "Non-privacy-related room configuration has changed": [
+         null,
+         "Una configurazione della stanza non legata alla privacy è stata modificata"
+      ],
+      "Room logging is now enabled": [
+         null,
+         "La registrazione è abilitata nella stanza"
+      ],
+      "Room logging is now disabled": [
+         null,
+         "La registrazione è disabilitata nella stanza"
+      ],
+      "This room is now non-anonymous": [
+         null,
+         "Questa stanza è non-anonima"
+      ],
+      "This room is now semi-anonymous": [
+         null,
+         "Questa stanza è semi-anonima"
+      ],
+      "This room is now fully-anonymous": [
+         null,
+         "Questa stanza è completamente-anonima"
+      ],
+      "A new room has been created": [
+         null,
+         "Una nuova stanza è stata creata"
+      ],
+      "Your nickname has been changed": [
+         null,
+         "Il tuo soprannome è stato cambiato"
+      ],
+      "<strong>%1$s</strong> has been banned": [
+         null,
+         "<strong>%1$s</strong> è stato bandito"
+      ],
+      "<strong>%1$s</strong> has been kicked out": [
+         null,
+         "<strong>%1$s</strong> è stato espulso"
+      ],
+      "<strong>%1$s</strong> has been removed because of an affiliation change": [
+         null,
+         "<strong>%1$s</strong> è stato rimosso a causa di un cambio di affiliazione"
+      ],
+      "<strong>%1$s</strong> has been removed for not being a member": [
+         null,
+         "<strong>%1$s</strong> è stato rimosso in quanto non membro"
+      ],
+      "You have been banned from this room": [
+         null,
+         "Sei stato bandito da questa stanza"
+      ],
+      "You have been kicked from this room": [
+         null,
+         "Sei stato espulso da questa stanza"
+      ],
+      "You have been removed from this room because of an affiliation change": [
+         null,
+         "Sei stato rimosso da questa stanza a causa di un cambio di affiliazione"
+      ],
+      "You have been removed from this room because the room has changed to members-only and you're not a member": [
+         null,
+         "Sei stato rimosso da questa stanza poiché ora la stanza accetta solo membri"
+      ],
+      "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
+         null,
+         "Sei stato rimosso da questa stanza poiché il servizio MUC (Chat multi utente) è in fase di spegnimento"
+      ],
+      "You are not on the member list of this room": [
+         null,
+         "Non sei nella lista dei membri di questa stanza"
+      ],
+      "No nickname was specified": [
+         null,
+         "Nessun soprannome specificato"
+      ],
+      "You are not allowed to create new rooms": [
+         null,
+         "Non ti è permesso creare nuove stanze"
+      ],
+      "Your nickname doesn't conform to this room's policies": [
+         null,
+         "Il tuo soprannome non è conforme alle regole di questa stanza"
+      ],
+      "Your nickname is already taken": [
+         null,
+         "Il tuo soprannome è già utilizzato"
+      ],
+      "This room does not (yet) exist": [
+         null,
+         "Questa stanza non esiste (per ora)"
+      ],
+      "This room has reached it's maximum number of occupants": [
+         null,
+         "Questa stanza ha raggiunto il limite massimo di utenti"
+      ],
+      "Topic set by %1$s to: %2$s": [
+         null,
+         "Topic impostato da %1$s a: %2$s"
+      ],
+      "This user is a moderator": [
+         null,
+         "Questo utente è un moderatore"
+      ],
+      "This user can send messages in this room": [
+         null,
+         "Questo utente può inviare messaggi in questa stanza"
+      ],
+      "This user can NOT send messages in this room": [
+         null,
+         "Questo utente NON può inviare messaggi in questa stanza"
+      ],
+      "Click to chat with this contact": [
+         null,
+         "Clicca per parlare con questo contatto"
+      ],
+      "Click to remove this contact": [
+         null,
+         "Clicca per rimuovere questo contatto"
+      ],
+      "Contact requests": [
+         null,
+         "Richieste dei contatti"
+      ],
+      "My contacts": [
+         null,
+         "I miei contatti"
+      ],
+      "Pending contacts": [
+         null,
+         "Contatti in attesa"
+      ],
+      "Custom status": [
+         null,
+         "Stato personalizzato"
+      ],
+      "Click to change your chat status": [
+         null,
+         "Clicca per cambiare il tuo stato"
+      ],
+      "Click here to write a custom status message": [
+         null,
+         "Clicca qui per scrivere un messaggio di stato personalizzato"
+      ],
+      "online": [
+         null,
+         "in linea"
+      ],
+      "busy": [
+         null,
+         "occupato"
+      ],
+      "away for long": [
+         null,
+         "assente da molto"
+      ],
+      "away": [
+         null,
+         "assente"
+      ],
+      "I am %1$s": [
+         null,
+         "Sono %1$s"
+      ],
+      "Sign in": [
+         null,
+         "Entra"
+      ],
+      "XMPP/Jabber Username:": [
+         null,
+         "Nome utente:"
+      ],
+      "Password:": [
+         null,
+         "Password:"
+      ],
+      "Log In": [
+         null,
+         "Entra"
+      ],
+      "BOSH Service URL:": [
+         null,
+         "Indirizzo servizio BOSH:"
+      ],
+      "Connected": [
+         null,
+         "Connesso"
+      ],
+      "Disconnected": [
+         null,
+         "Disconnesso"
+      ],
+      "Error": [
+         null,
+         "Errore"
+      ],
+      "Connecting": [
+         null,
+         "Connessione in corso"
+      ],
+      "Connection Failed": [
+         null,
+         "Connessione fallita"
+      ],
+      "Authenticating": [
+         null,
+         "Autenticazione in corso"
+      ],
+      "Authentication Failed": [
+         null,
+         "Autenticazione fallita"
+      ],
+      "Disconnecting": [
+         null,
+         "Disconnessione in corso"
+      ],
+      "Attached": [
+         null,
+         "Allegato"
+      ],
+      "Online Contacts": [
+         null,
+         "Contatti in linea"
+      ]
+   }
+}

+ 489 - 0
locale/it/LC_MESSAGES/converse.po

@@ -0,0 +1,489 @@
+# German translations for Converse.js package.
+# Copyright (C) 2013 Jan-Carel Brand
+# This file is distributed under the same license as the Converse.js package.
+# JC Brand <jc@opkode.com>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Converse.js 0.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-07-20 23:03+0200\n"
+"PO-Revision-Date: 2013-07-20 18:53+0100\n"
+"Last-Translator: Fabio Bas <ctrlaltca@gmail.com>\n"
+"Language-Team: Italian\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"domain: converse\n"
+"lang: it\n"
+"plural_forms: nplurals=2; plural=(n != 1);\n"
+
+#: converse.js:397
+#: converse.js:1128
+msgid "Show this menu"
+msgstr "Mostra questo menu"
+
+#: converse.js:398
+#: converse.js:1129
+msgid "Write in the third person"
+msgstr "Scrivi in terza persona"
+
+#: converse.js:399
+#: converse.js:1133
+msgid "Remove messages"
+msgstr "Rimuovi messaggi"
+
+#: converse.js:539
+msgid "Personal message"
+msgstr "Messaggio personale"
+
+#: converse.js:613
+msgid "Contacts"
+msgstr "Contatti"
+
+#: converse.js:618
+msgid "Online"
+msgstr "In linea"
+
+#: converse.js:619
+msgid "Busy"
+msgstr "Occupato"
+
+#: converse.js:620
+msgid "Away"
+msgstr "Assente"
+
+#: converse.js:621
+msgid "Offline"
+msgstr "Non in linea"
+
+#: converse.js:628
+msgid "Click to add new chat contacts"
+msgstr "Clicca per aggiungere nuovi contatti alla chat"
+
+#: converse.js:628
+msgid "Add a contact"
+msgstr "Aggiungi contatti"
+
+#: converse.js:637
+msgid "Contact username"
+msgstr "Nome utente del contatto"
+
+#: converse.js:638
+msgid "Add"
+msgstr "Aggiungi"
+
+#: converse.js:646
+msgid "Contact name"
+msgstr "Nome del contatto"
+
+#: converse.js:647
+msgid "Search"
+msgstr "Cerca"
+
+#: converse.js:682
+msgid "No users found"
+msgstr "Nessun utente trovato"
+
+#: converse.js:689
+msgid "Click to add as a chat contact"
+msgstr "Clicca per aggiungere il contatto alla chat"
+
+#: converse.js:753
+msgid "Click to open this room"
+msgstr "Clicca per aprire questa stanza"
+
+#: converse.js:755
+msgid "Show more information on this room"
+msgstr "Mostra più informazioni su questa stanza"
+
+#: converse.js:760
+msgid "Description:"
+msgstr "Descrizione:"
+
+#: converse.js:761
+msgid "Occupants:"
+msgstr "Utenti presenti:"
+
+#: converse.js:762
+msgid "Features:"
+msgstr "Funzionalità:"
+
+#: converse.js:764
+msgid "Requires authentication"
+msgstr "Richiede autenticazione"
+
+#: converse.js:767
+msgid "Hidden"
+msgstr "Nascosta"
+
+#: converse.js:770
+msgid "Requires an invitation"
+msgstr "Richiede un invito"
+
+#: converse.js:773
+msgid "Moderated"
+msgstr "Moderata"
+
+#: converse.js:776
+msgid "Non-anonymous"
+msgstr "Non-anonima"
+
+#: converse.js:779
+msgid "Open room"
+msgstr "Stanza aperta"
+
+#: converse.js:782
+msgid "Permanent room"
+msgstr "Stanza permanente"
+
+#: converse.js:785
+msgid "Public"
+msgstr "Pubblica"
+
+#: converse.js:788
+msgid "Semi-anonymous"
+msgstr "Semi-anonima"
+
+#: converse.js:791
+msgid "Temporary room"
+msgstr "Stanza temporanea"
+
+#: converse.js:794
+msgid "Unmoderated"
+msgstr "Non moderata"
+
+#: converse.js:800
+msgid "Rooms"
+msgstr "Stanze"
+
+#: converse.js:804
+msgid "Room name"
+msgstr "Nome stanza"
+
+#: converse.js:805
+msgid "Nickname"
+msgstr "Soprannome"
+
+#: converse.js:806
+msgid "Server"
+msgstr "Server"
+
+#: converse.js:807
+msgid "Join"
+msgstr "Entra"
+
+#: converse.js:808
+msgid "Show rooms"
+msgstr "Mostra stanze"
+
+#. For translators: %1$s is a variable and will be replaced with the XMPP server name
+#: converse.js:841
+msgid "No rooms on %1$s"
+msgstr "Nessuna stanza su %1$s"
+
+#. For translators: %1$s is a variable and will be
+#. replaced with the XMPP server name
+#: converse.js:856
+msgid "Rooms on %1$s"
+msgstr "Stanze su %1$s"
+
+#: converse.js:1130
+msgid "Set chatroom topic"
+msgstr "Cambia oggetto della stanza"
+
+#: converse.js:1131
+msgid "Kick user from chatroom"
+msgstr "Espelli utente dalla stanza"
+
+#: converse.js:1132
+msgid "Ban user from chatroom"
+msgstr "Bandisci utente dalla stanza"
+
+#: converse.js:1159
+msgid "Message"
+msgstr "Messaggio"
+
+#: converse.js:1273
+#: converse.js:2318
+msgid "Save"
+msgstr "Salva"
+
+#: converse.js:1274
+msgid "Cancel"
+msgstr "Annulla"
+
+#: converse.js:1321
+msgid "An error occurred while trying to save the form."
+msgstr "Errore durante il salvataggio del modulo"
+
+#: converse.js:1367
+msgid "This chatroom requires a password"
+msgstr "Questa stanza richiede una password"
+
+#: converse.js:1368
+msgid "Password: "
+msgstr "Password: "
+
+#: converse.js:1369
+msgid "Submit"
+msgstr "Invia"
+
+#: converse.js:1383
+msgid "This room is not anonymous"
+msgstr "Questa stanza non è anonima"
+
+#: converse.js:1384
+msgid "This room now shows unavailable members"
+msgstr "Questa stanza mostra i membri non disponibili al momento"
+
+#: converse.js:1385
+msgid "This room does not show unavailable members"
+msgstr "Questa stanza non mostra i membri non disponibili"
+
+#: converse.js:1386
+msgid "Non-privacy-related room configuration has changed"
+msgstr "Una configurazione della stanza non legata alla privacy è stata modificata"
+
+#: converse.js:1387
+msgid "Room logging is now enabled"
+msgstr "La registrazione è abilitata nella stanza"
+
+#: converse.js:1388
+msgid "Room logging is now disabled"
+msgstr "La registrazione è disabilitata nella stanza"
+
+#: converse.js:1389
+msgid "This room is now non-anonymous"
+msgstr "Questa stanza è non-anonima"
+
+#: converse.js:1390
+msgid "This room is now semi-anonymous"
+msgstr "Questa stanza è semi-anonima"
+
+#: converse.js:1391
+msgid "This room is now fully-anonymous"
+msgstr "Questa stanza è completamente-anonima"
+
+#: converse.js:1392
+msgid "A new room has been created"
+msgstr "Una nuova stanza è stata creata"
+
+#: converse.js:1393
+msgid "Your nickname has been changed"
+msgstr "Il tuo soprannome è stato cambiato"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been banned
+#: converse.js:1400
+msgid "<strong>%1$s</strong> has been banned"
+msgstr "<strong>%1$s</strong> è stato bandito"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been kicked out
+#: converse.js:1404
+msgid "<strong>%1$s</strong> has been kicked out"
+msgstr "<strong>%1$s</strong> è stato espulso"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been removed because of an affiliasion change
+#: converse.js:1408
+msgid "<strong>%1$s</strong> has been removed because of an affiliation change"
+msgstr "<strong>%1$s</strong> è stato rimosso a causa di un cambio di affiliazione"
+
+#. For translations: %1$s will be replaced with the user's nickname
+#. Don't translate "strong"
+#. Example: <strong>jcbrand</strong> has been removed for not being a member
+#: converse.js:1412
+msgid "<strong>%1$s</strong> has been removed for not being a member"
+msgstr "<strong>%1$s</strong> è stato rimosso in quanto non membro"
+
+#: converse.js:1416
+#: converse.js:1478
+msgid "You have been banned from this room"
+msgstr "Sei stato bandito da questa stanza"
+
+#: converse.js:1417
+msgid "You have been kicked from this room"
+msgstr "Sei stato espulso da questa stanza"
+
+#: converse.js:1418
+msgid "You have been removed from this room because of an affiliation change"
+msgstr "Sei stato rimosso da questa stanza a causa di un cambio di affiliazione"
+
+#: converse.js:1419
+msgid "You have been removed from this room because the room has changed to members-only and you're not a member"
+msgstr "Sei stato rimosso da questa stanza poiché ora la stanza accetta solo membri"
+
+#: converse.js:1420
+msgid "You have been removed from this room because the MUC (Multi-user chat) service is being shut down."
+msgstr "Sei stato rimosso da questa stanza poiché il servizio MUC (Chat multi utente) è in fase di spegnimento"
+
+#: converse.js:1476
+msgid "You are not on the member list of this room"
+msgstr "Non sei nella lista dei membri di questa stanza"
+
+#: converse.js:1482
+msgid "No nickname was specified"
+msgstr "Nessun soprannome specificato"
+
+#: converse.js:1486
+msgid "You are not allowed to create new rooms"
+msgstr "Non ti è permesso creare nuove stanze"
+
+#: converse.js:1488
+msgid "Your nickname doesn't conform to this room's policies"
+msgstr "Il tuo soprannome non è conforme alle regole di questa stanza"
+
+#: converse.js:1490
+msgid "Your nickname is already taken"
+msgstr "Il tuo soprannome è già utilizzato"
+
+#: converse.js:1492
+msgid "This room does not (yet) exist"
+msgstr "Questa stanza non esiste (per ora)"
+
+#: converse.js:1494
+msgid "This room has reached it's maximum number of occupants"
+msgstr "Questa stanza ha raggiunto il limite massimo di utenti"
+
+#. For translators: the %1$s and %2$s parts will get replaced by the user and topic text respectively
+#. Example: Topic set by JC Brand to: Hello World!
+#: converse.js:1571
+msgid "Topic set by %1$s to: %2$s"
+msgstr "Topic impostato da %1$s a: %2$s"
+
+#: converse.js:1587
+msgid "This user is a moderator"
+msgstr "Questo utente è un moderatore"
+
+#: converse.js:1590
+msgid "This user can send messages in this room"
+msgstr "Questo utente può inviare messaggi in questa stanza"
+
+#: converse.js:1593
+msgid "This user can NOT send messages in this room"
+msgstr "Questo utente NON può inviare messaggi in questa stanza"
+
+#: converse.js:1796
+msgid "Click to chat with this contact"
+msgstr "Clicca per parlare con questo contatto"
+
+#: converse.js:1797
+#: converse.js:1801
+msgid "Click to remove this contact"
+msgstr "Clicca per rimuovere questo contatto"
+
+#: converse.js:2163
+msgid "Contact requests"
+msgstr "Richieste dei contatti"
+
+#: converse.js:2164
+msgid "My contacts"
+msgstr "I miei contatti"
+
+#: converse.js:2165
+msgid "Pending contacts"
+msgstr "Contatti in attesa"
+
+#: converse.js:2317
+msgid "Custom status"
+msgstr "Stato personalizzato"
+
+#: converse.js:2323
+msgid "Click to change your chat status"
+msgstr "Clicca per cambiare il tuo stato"
+
+#: converse.js:2326
+msgid "Click here to write a custom status message"
+msgstr "Clicca qui per scrivere un messaggio di stato personalizzato"
+
+#: converse.js:2355
+#: converse.js:2363
+msgid "online"
+msgstr "in linea"
+
+#: converse.js:2357
+msgid "busy"
+msgstr "occupato"
+
+#: converse.js:2359
+msgid "away for long"
+msgstr "assente da molto"
+
+#: converse.js:2361
+msgid "away"
+msgstr "assente"
+
+#. For translators: the %1$s part gets replaced with the status
+#. Example, I am online
+#: converse.js:2375
+#: converse.js:2409
+msgid "I am %1$s"
+msgstr "Sono %1$s"
+
+#: converse.js:2480
+msgid "Sign in"
+msgstr "Accesso"
+
+#: converse.js:2483
+msgid "XMPP/Jabber Username:"
+msgstr "Nome utente:"
+
+#: converse.js:2485
+msgid "Password:"
+msgstr "Password:"
+
+#: converse.js:2487
+msgid "Log In"
+msgstr "Entra"
+
+#: converse.js:2491
+msgid "BOSH Service URL:"
+msgstr "Indirizzo servizio BOSH:"
+
+#: converse.js:2503
+msgid "Connected"
+msgstr "Connesso"
+
+#: converse.js:2507
+msgid "Disconnected"
+msgstr "Disconnesso"
+
+#: converse.js:2511
+msgid "Error"
+msgstr "Errore"
+
+#: converse.js:2513
+msgid "Connecting"
+msgstr "Connessione in corso"
+
+#: converse.js:2516
+msgid "Connection Failed"
+msgstr "Connessione fallita"
+
+#: converse.js:2518
+msgid "Authenticating"
+msgstr "Autenticazione in corso"
+
+#: converse.js:2521
+msgid "Authentication Failed"
+msgstr "Autenticazione fallita"
+
+#: converse.js:2523
+msgid "Disconnecting"
+msgstr "Disconnessione in corso"
+
+#: converse.js:2525
+msgid "Attached"
+msgstr "Allegato"
+
+#: converse.js:2656
+msgid "Online Contacts"
+msgstr "Contatti in linea"
+

+ 470 - 0
locale/it/LC_MESSAGES/it.js

@@ -0,0 +1,470 @@
+(function (root, factory) {
+    define("it", ['jed'], function () {
+        var it = new Jed({
+            "domain": "converse",
+            "locale_data": {
+               "converse": {
+                  "": {
+                     "Project-Id-Version": "Converse.js 0.4",
+                     "Report-Msgid-Bugs-To": "",
+                     "POT-Creation-Date": "2013-07-20 23:03+0200",
+                     "PO-Revision-Date": "2013-07-20 13:58+0200",
+                     "Last-Translator": "Fabio Bas <ctrlaltca@gmail.com>",
+                     "Language-Team": "Italian",
+                     "Language": "it",
+                     "MIME-Version": "1.0",
+                     "Content-Type": "text/plain; charset=ASCII",
+                     "Content-Transfer-Encoding": "8bit",
+                     "Plural-Forms": "nplurals=2; plural=(n != 1);",
+                     "domain": "converse",
+                     "lang": "it",
+                     "plural_forms": "nplurals=2; plural=(n != 1);"
+                  },
+                  "Show this menu": [
+                     null,
+                     "Mostra questo menu"
+                  ],
+                  "Write in the third person": [
+                     null,
+                     "Scrivi in terza persona"
+                  ],
+                  "Remove messages": [
+                     null,
+                     "Rimuovi messaggi"
+                  ],
+                  "Personal message": [
+                     null,
+                     "Messaggio personale"
+                  ],
+                  "Contacts": [
+                     null,
+                     "Contatti"
+                  ],
+                  "Online": [
+                     null,
+                     "In linea"
+                  ],
+                  "Busy": [
+                     null,
+                     "Occupato"
+                  ],
+                  "Away": [
+                     null,
+                     "Assente"
+                  ],
+                  "Offline": [
+                     null,
+                     "Non in linea"
+                  ],
+                  "Click to add new chat contacts": [
+                     null,
+                     "Clicca per aggiungere nuovi contatti alla chat"
+                  ],
+                  "Add a contact": [
+                     null,
+                     "Aggiungi un contatto"
+                  ],
+                  "Contact username": [
+                     null,
+                     "Nome utente del contatto"
+                  ],
+                  "Add": [
+                     null,
+                     "Aggiungi"
+                  ],
+                  "Contact name": [
+                     null,
+                     "Nome del contatto"
+                  ],
+                  "Search": [
+                     null,
+                     "Cerca"
+                  ],
+                  "No users found": [
+                     null,
+                     "Nessun utente trovato"
+                  ],
+                  "Click to add as a chat contact": [
+                     null,
+                     "Clicca per aggiungere il contatto alla chat"
+                  ],
+                  "Click to open this room": [
+                     null,
+                     "Clicca per aprire questa stanza"
+                  ],
+                  "Show more information on this room": [
+                     null,
+                     "Mostra più informazioni su questa stanza"
+                  ],
+                  "Description:": [
+                     null,
+                     "Descrizione:"
+                  ],
+                  "Occupants:": [
+                     null,
+                     "Utenti presenti:"
+                  ],
+                  "Features:": [
+                     null,
+                     "Funzionalità:"
+                  ],
+                  "Requires authentication": [
+                     null,
+                     "Richiede autenticazione"
+                  ],
+                  "Hidden": [
+                     null,
+                     "Nascosta"
+                  ],
+                  "Requires an invitation": [
+                     null,
+                     "Richiede un invito"
+                  ],
+                  "Moderated": [
+                     null,
+                     "Moderata"
+                  ],
+                  "Non-anonymous": [
+                     null,
+                     "Non-anonima"
+                  ],
+                  "Open room": [
+                     null,
+                     "Stanza aperta"
+                  ],
+                  "Permanent room": [
+                     null,
+                     "Stanza permanente"
+                  ],
+                  "Public": [
+                     null,
+                     "Pubblica"
+                  ],
+                  "Semi-anonymous": [
+                     null,
+                     "Semi-anonima"
+                  ],
+                  "Temporary room": [
+                     null,
+                     "Stanza temporanea"
+                  ],
+                  "Unmoderated": [
+                     null,
+                     "Non moderata"
+                  ],
+                  "Rooms": [
+                     null,
+                     "Stanze"
+                  ],
+                  "Room name": [
+                     null,
+                     "Nome stanza"
+                  ],
+                  "Nickname": [
+                     null,
+                     "Soprannome"
+                  ],
+                  "Server": [
+                     null,
+                     "Server"
+                  ],
+                  "Join": [
+                     null,
+                     "Entra"
+                  ],
+                  "Show rooms": [
+                     null,
+                     "Mostra stanze"
+                  ],
+                  "No rooms on %1$s": [
+                     null,
+                     "Nessuna stanza su %1$s"
+                  ],
+                  "Rooms on %1$s": [
+                     null,
+                     "Stanze su %1$s"
+                  ],
+                  "Set chatroom topic": [
+                     null,
+                     "Cambia oggetto della stanza"
+                  ],
+                  "Kick user from chatroom": [
+                     null,
+                     "Espelli utente dalla stanza"
+                  ],
+                  "Ban user from chatroom": [
+                     null,
+                     "Bandisci utente dalla stanza"
+                  ],
+                  "Message": [
+                     null,
+                     "Messaggio"
+                  ],
+                  "Save": [
+                     null,
+                     "Salva"
+                  ],
+                  "Cancel": [
+                     null,
+                     "Annulla"
+                  ],
+                  "An error occurred while trying to save the form.": [
+                     null,
+                     "Errore durante il salvataggio del modulo"
+                  ],
+                  "This chatroom requires a password": [
+                     null,
+                     "Questa stanza richiede una password"
+                  ],
+                  "Password: ": [
+                     null,
+                     "Password: "
+                  ],
+                  "Submit": [
+                     null,
+                     "Invia"
+                  ],
+                  "This room is not anonymous": [
+                     null,
+                     "Questa stanza non è anonima"
+                  ],
+                  "This room now shows unavailable members": [
+                     null,
+                     "Questa stanza mostra i membri non disponibili al momento"
+                  ],
+                  "This room does not show unavailable members": [
+                     null,
+                     "Questa stanza non mostra i membri non disponibili"
+                  ],
+                  "Non-privacy-related room configuration has changed": [
+                     null,
+                     "Una configurazione della stanza non legata alla privacy è stata modificata"
+                  ],
+                  "Room logging is now enabled": [
+                     null,
+                     "La registrazione è abilitata nella stanza"
+                  ],
+                  "Room logging is now disabled": [
+                     null,
+                     "La registrazione è disabilitata nella stanza"
+                  ],
+                  "This room is now non-anonymous": [
+                     null,
+                     "Questa stanza è non-anonima"
+                  ],
+                  "This room is now semi-anonymous": [
+                     null,
+                     "Questa stanza è semi-anonima"
+                  ],
+                  "This room is now fully-anonymous": [
+                     null,
+                     "Questa stanza è completamente-anonima"
+                  ],
+                  "A new room has been created": [
+                     null,
+                     "Una nuova stanza è stata creata"
+                  ],
+                  "Your nickname has been changed": [
+                     null,
+                     "Il tuo soprannome è stato cambiato"
+                  ],
+                  "<strong>%1$s</strong> has been banned": [
+                     null,
+                     "<strong>%1$s</strong> è stato bandito"
+                  ],
+                  "<strong>%1$s</strong> has been kicked out": [
+                     null,
+                     "<strong>%1$s</strong> è stato espulso"
+                  ],
+                  "<strong>%1$s</strong> has been removed because of an affiliation change": [
+                     null,
+                     "<strong>%1$s</strong> è stato rimosso a causa di un cambio di affiliazione"
+                  ],
+                  "<strong>%1$s</strong> has been removed for not being a member": [
+                     null,
+                     "<strong>%1$s</strong> è stato rimosso in quanto non membro"
+                  ],
+                  "You have been banned from this room": [
+                     null,
+                     "Sei stato bandito da questa stanza"
+                  ],
+                  "You have been kicked from this room": [
+                     null,
+                     "Sei stato espulso da questa stanza"
+                  ],
+                  "You have been removed from this room because of an affiliation change": [
+                     null,
+                     "Sei stato rimosso da questa stanza a causa di un cambio di affiliazione"
+                  ],
+                  "You have been removed from this room because the room has changed to members-only and you're not a member": [
+                     null,
+                     "Sei stato rimosso da questa stanza poiché ora la stanza accetta solo membri"
+                  ],
+                  "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
+                     null,
+                     "Sei stato rimosso da questa stanza poiché il servizio MUC (Chat multi utente) è in fase di spegnimento"
+                  ],
+                  "You are not on the member list of this room": [
+                     null,
+                     "Non sei nella lista dei membri di questa stanza"
+                  ],
+                  "No nickname was specified": [
+                     null,
+                     "Nessun soprannome specificato"
+                  ],
+                  "You are not allowed to create new rooms": [
+                     null,
+                     "Non ti è permesso creare nuove stanze"
+                  ],
+                  "Your nickname doesn't conform to this room's policies": [
+                     null,
+                     "Il tuo soprannome non è conforme alle regole di questa stanza"
+                  ],
+                  "Your nickname is already taken": [
+                     null,
+                     "Il tuo soprannome è già utilizzato"
+                  ],
+                  "This room does not (yet) exist": [
+                     null,
+                     "Questa stanza non esiste (per ora)"
+                  ],
+                  "This room has reached it's maximum number of occupants": [
+                     null,
+                     "Questa stanza ha raggiunto il limite massimo di utenti"
+                  ],
+                  "Topic set by %1$s to: %2$s": [
+                     null,
+                     "Topic impostato da %1$s a: %2$s"
+                  ],
+                  "This user is a moderator": [
+                     null,
+                     "Questo utente è un moderatore"
+                  ],
+                  "This user can send messages in this room": [
+                     null,
+                     "Questo utente può inviare messaggi in questa stanza"
+                  ],
+                  "This user can NOT send messages in this room": [
+                     null,
+                     "Questo utente NON può inviare messaggi in questa stanza"
+                  ],
+                  "Click to chat with this contact": [
+                     null,
+                     "Clicca per parlare con questo contatto"
+                  ],
+                  "Click to remove this contact": [
+                     null,
+                     "Clicca per rimuovere questo contatto"
+                  ],
+                  "Contact requests": [
+                     null,
+                     "Richieste dei contatti"
+                  ],
+                  "My contacts": [
+                     null,
+                     "I miei contatti"
+                  ],
+                  "Pending contacts": [
+                     null,
+                     "Contatti in attesa"
+                  ],
+                  "Custom status": [
+                     null,
+                     "Stato personalizzato"
+                  ],
+                  "Click to change your chat status": [
+                     null,
+                     "Clicca per cambiare il tuo stato"
+                  ],
+                  "Click here to write a custom status message": [
+                     null,
+                     "Clicca qui per scrivere un messaggio di stato personalizzato"
+                  ],
+                  "online": [
+                     null,
+                     "in linea"
+                  ],
+                  "busy": [
+                     null,
+                     "occupato"
+                  ],
+                  "away for long": [
+                     null,
+                     "assente da molto"
+                  ],
+                  "away": [
+                     null,
+                     "assente"
+                  ],
+                  "I am %1$s": [
+                     null,
+                     "Sono %1$s"
+                  ],
+                  "Sign in": [
+                     null,
+                     "Entra"
+                  ],
+                  "XMPP/Jabber Username:": [
+                     null,
+                     "Nome utente:"
+                  ],
+                  "Password:": [
+                     null,
+                     "Password:"
+                  ],
+                  "Log In": [
+                     null,
+                     "Entra"
+                  ],
+                  "BOSH Service URL:": [
+                     null,
+                     "Indirizzo servizio BOSH:"
+                  ],
+                  "Connected": [
+                     null,
+                     "Connesso"
+                  ],
+                  "Disconnected": [
+                     null,
+                     "Disconnesso"
+                  ],
+                  "Error": [
+                     null,
+                     "Errore"
+                  ],
+                  "Connecting": [
+                     null,
+                     "Connessione in corso"
+                  ],
+                  "Connection Failed": [
+                     null,
+                     "Connessione fallita"
+                  ],
+                  "Authenticating": [
+                     null,
+                     "Autenticazione in corso"
+                  ],
+                  "Authentication Failed": [
+                     null,
+                     "Autenticazione fallita"
+                  ],
+                  "Disconnecting": [
+                     null,
+                     "Disconnessione in corso"
+                  ],
+                  "Attached": [
+                     null,
+                     "Allegato"
+                  ],
+                  "Online Contacts": [
+                     null,
+                     "Contatti in linea"
+                  ]
+               }
+            }
+        });
+        return factory(it);
+    });
+}(this, function (it) { 
+    return it; 
+}));

+ 16 - 3
locale/locales.js

@@ -1,11 +1,20 @@
+/*
+ * This file specifies the language dependencies.
+ *
+ * Translations take up a lot of space and you are therefore advised to remove
+ * from here any languages that you don't need.
+ */
+
 (function (root, factory) {
 (function (root, factory) {
     require.config({
     require.config({
         paths: {
         paths: {
             "jed": "Libraries/jed",
             "jed": "Libraries/jed",
             "af": "locale/af/LC_MESSAGES/af",
             "af": "locale/af/LC_MESSAGES/af",
             "en": "locale/en/LC_MESSAGES/en",
             "en": "locale/en/LC_MESSAGES/en",
+            "es": "locale/es/LC_MESSAGES/es",
             "de": "locale/de/LC_MESSAGES/de",
             "de": "locale/de/LC_MESSAGES/de",
-            "hu": "locale/hu/LC_MESSAGES/hu"
+            "hu": "locale/hu/LC_MESSAGES/hu",
+            "it": "locale/it/LC_MESSAGES/it"
         }
         }
     });
     });
 
 
@@ -13,13 +22,17 @@
         'jed',
         'jed',
         'af',
         'af',
         'en',
         'en',
+        'es',
         'de',
         'de',
-        'hu'
-        ], function (jed, af, en, de, hu) {
+        'hu',
+        "it"
+        ], function (jed, af, en, es, de, hu, it) {
             root.locales = {};
             root.locales = {};
             root.locales.af = af;
             root.locales.af = af;
             root.locales.en = en;
             root.locales.en = en;
+            root.locales.es = es;
             root.locales.de = de;
             root.locales.de = de;
             root.locales.hu = hu;
             root.locales.hu = hu;
+            root.locales.it = it;
         });
         });
 })(this);
 })(this);

+ 1 - 12
main.js

@@ -1,14 +1,3 @@
 require(["jquery", "converse"], function($, converse) {
 require(["jquery", "converse"], function($, converse) {
-    // Most of these initialization values are the defaults but they're
-    // included here as a reference.
-    converse.initialize({
-        auto_list_rooms: false,
-        auto_subscribe: false,
-        bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
-        hide_muc_server: false,
-        i18n: locales.en, // Refer to ./locale/locales.js to see which locales are supported
-        prebind: false,
-        show_controlbox_by_default: true,
-        xhr_user_search: false
-    });
+    window.converse = converse;
 });
 });

+ 5 - 0
package.json

@@ -0,0 +1,5 @@
+{
+    "name": "Converse.js",
+    "description": "Converse.js is a web based XMPP/Jabber instant messaging client",
+    "version": "0.4.1"
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio