2
0
Эх сурвалжийг харах

Merge branch 'master' into gh-pages

Conflicts:
	CHANGES.rst
	converse.min.js
JC Brand 12 жил өмнө
parent
commit
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]
 - Separate messages according to day in chats. [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]
 - Use service discovery to show all available features on a room. [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
             }).t(message);
             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);
 
                 if (msg.node.childNodes.length === 0) {

+ 2 - 0
build.js

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

+ 7 - 7
converse.js

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

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
converse.min.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 84 - 0
converse.min.no-locales.js


BIN
docs/doctrees/environment.pickle


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
 ==========================
 
+.. _`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::
    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
 tokens, RID (request ID) and SID (session ID).
@@ -153,21 +155,36 @@ connection object.
 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:
 
 ::
 
-    <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
 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
 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
 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
 *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
 all the available configuration settings.
 
@@ -358,6 +378,14 @@ CSS can be minimized with Yahoo's yuicompressor tool:
 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
 containing all translations and from which for each language an individual PO
 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
 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
-<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
 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
@@ -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
 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
-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
 servers that you can set up yourself on <a class="reference external" href="http://xmpp.org/xmpp-software/servers/">xmpp.org</a>.</p>
 </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">
 <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">
-<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
 authenticated in your website will also automatically be logged in on the chat server,
 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">
 <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>
-when you call <strong>converse.initialize</strong> (see ./main.js).</p>
+when you call <strong>converse.initialize</strong> (see ./index.html).</p>
 </div>
 <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>
@@ -209,17 +209,30 @@ connection object.</p>
 </div>
 <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>
-<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">
-<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>
-<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>
-<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>
 <p>The <em>index.html</em> file inside the Converse.js folder serves as a nice usable
 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
 your website, where users authenticate once in your website and then stay
 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
 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>
@@ -241,6 +254,8 @@ you&#8217;ll want to configure <em>Converse.js</em> to suit your needs before yo
 on your website.</p>
 <p><em>Converse.js</em> is passed its configuration settings when you call its
 <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
 all the available configuration settings.</p>
 <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 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>
+<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
 containing all translations and from which for each language an individual PO
 file is generated.</p>

BIN
docs/html/objects.inv


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 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
 ==========================
 
+.. _`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::
    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
 tokens, RID (request ID) and SID (session ID).
@@ -153,21 +155,36 @@ connection object.
 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:
 
 ::
 
-    <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
 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
 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
 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
 *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
 all the available configuration settings.
 
@@ -358,6 +378,14 @@ CSS can be minimized with Yahoo's yuicompressor tool:
 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
 containing all translations and from which for each language an individual PO
 file is generated.

+ 12 - 0
index.html

@@ -165,4 +165,16 @@
 </script>
 <script type="text/javascript">try { var pageTracker = _gat._getTracker("UA-2128260-8"); pageTracker._trackPageview(); } catch(err) {}</script>
 </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>

+ 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) {
     require.config({
         paths: {
             "jed": "Libraries/jed",
             "af": "locale/af/LC_MESSAGES/af",
             "en": "locale/en/LC_MESSAGES/en",
+            "es": "locale/es/LC_MESSAGES/es",
             "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',
         'af',
         'en',
+        'es',
         'de',
-        'hu'
-        ], function (jed, af, en, de, hu) {
+        'hu',
+        "it"
+        ], function (jed, af, en, es, de, hu, it) {
             root.locales = {};
             root.locales.af = af;
             root.locales.en = en;
+            root.locales.es = es;
             root.locales.de = de;
             root.locales.hu = hu;
+            root.locales.it = it;
         });
 })(this);

+ 1 - 12
main.js

@@ -1,14 +1,3 @@
 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"
+}

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно