Merge branch 'master' into languageptbr
Conflicts: locale/locales.js
This commit is contained in:
commit
db45b1d9b4
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
*~
|
||||
*.mo
|
||||
*.kpf
|
||||
*.swp
|
||||
.*.cfg
|
||||
.hg/
|
||||
.bzr/
|
||||
.svn/
|
||||
.project
|
||||
.pydevproject
|
||||
node_modules
|
||||
|
||||
# OSX
|
||||
.DS_Store
|
12
CHANGES.rst
12
CHANGES.rst
@ -1,7 +1,15 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
0.4 (Unreleased)
|
||||
0.5 (Unreleased)
|
||||
----------------
|
||||
- #22 Fixed compare operator in strophe.muc [sonata82]
|
||||
- #23 Add Italian translations [ctrlaltca]
|
||||
- #24 Add Spanish translations [macagua]
|
||||
- #25 Using span with css instead of img [matheus-morfi]
|
||||
- #26 Only the first minute digit shown in chatbox. [jcbrand]
|
||||
|
||||
0.4 (2013-06-03)
|
||||
----------------
|
||||
|
||||
- CSS tweaks: fixed overflowing text in status message and chatrooms list. [jcbrand]
|
||||
@ -23,7 +31,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]
|
||||
|
20
Gruntfile.js
Normal file
20
Gruntfile.js
Normal file
@ -0,0 +1,20 @@
|
||||
module.exports = function(grunt) {
|
||||
grunt.initConfig({
|
||||
jshint: {
|
||||
options: {
|
||||
trailing: true
|
||||
},
|
||||
target: {
|
||||
src : [
|
||||
'converse.js',
|
||||
'mock.js',
|
||||
'main.js',
|
||||
'tests_main.js',
|
||||
'spec/*.js'
|
||||
]
|
||||
}
|
||||
}
|
||||
});
|
||||
grunt.loadNpmTasks('grunt-contrib-jshint');
|
||||
grunt.registerTask('default', ['jshint']);
|
||||
};
|
2
build.js
2
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",
|
||||
|
23
converse.css
23
converse.css
@ -15,29 +15,18 @@ span.spinner {
|
||||
display: block;
|
||||
}
|
||||
|
||||
span.spinner.hor_centered {
|
||||
left: 40%;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
|
||||
img.spinner {
|
||||
width: auto;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
margin: 0;
|
||||
padding: 0 5px 0 5px;
|
||||
}
|
||||
|
||||
img.centered {
|
||||
span.spinner.centered {
|
||||
position: absolute;
|
||||
top: 30%;
|
||||
left: 50%;
|
||||
margin: 0 0 0 -25%;
|
||||
}
|
||||
|
||||
span.spinner.hor_centered {
|
||||
left: 40%;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#chatpanel {
|
||||
z-index: 99; /*--Keeps the panel on top of all other elements--*/
|
||||
position: fixed;
|
||||
|
17
converse.js
17
converse.js
@ -313,6 +313,7 @@
|
||||
match = text.match(/^\/(.*?)(?: (.*))?$/),
|
||||
sender = msg_dict.sender,
|
||||
template, username;
|
||||
|
||||
if ((match) && (match[1] === 'me')) {
|
||||
text = text.replace(/^\/me/, '');
|
||||
template = this.action_template;
|
||||
@ -325,7 +326,7 @@
|
||||
$el.append(
|
||||
template({
|
||||
'sender': sender,
|
||||
'time': this_date.toLocaleTimeString().substring(0,4),
|
||||
'time': this_date.toTimeString().substring(0,5),
|
||||
'message': text,
|
||||
'username': username,
|
||||
'extra_classes': msg_dict.delayed && 'delayed' || ''
|
||||
@ -1161,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(
|
||||
@ -1246,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));
|
||||
@ -1355,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(
|
||||
@ -1368,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">'+
|
||||
@ -1388,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>'));
|
||||
},
|
||||
|
||||
@ -2509,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) {
|
||||
|
2
converse.min.css
vendored
2
converse.min.css
vendored
File diff suppressed because one or more lines are too long
2
converse.min.js
vendored
2
converse.min.js
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -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.
|
||||
When you download a specific release of *Converse.js* there will be two minified files inside the zip file.
|
||||
|
||||
For version 0.3 they will be:
|
||||
* converse.min.js
|
||||
* converse.min.css
|
||||
|
||||
* converse.0.3.min.js
|
||||
* converse.0.3.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, all the translations add about 50KB of extra data to
|
||||
the minified javascript file. 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.
|
||||
|
@ -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’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’ll have to set up your own XMPP server.</p>
|
||||
have <a class="reference internal" href="#session-support">Session Support</a> you’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’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’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><head></em> element of your website via the <em>script</em> and <em>link</em>
|
||||
tags:</p>
|
||||
<div class="highlight-python"><pre><link rel="stylesheet" type="text/css" media="screen" href="converse.0.3.min.css">
|
||||
<script src="converse.0.3.min.js"></script></pre>
|
||||
<div class="highlight-python"><pre><link rel="stylesheet" type="text/css" media="screen" href="converse.min.css">
|
||||
<script src="converse.min.js"></script></pre>
|
||||
</div>
|
||||
<p>Then, at the bottom of your page, after the closing <em></body></em> element, put the
|
||||
following inline Javascript code:</p>
|
||||
<div class="highlight-python"><pre><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></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’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’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’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’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, all the translations add about 50KB of extra data to
|
||||
the minified javascript file. 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.</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>
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
Search.setIndex({objects:{},terms:{all:0,code:0,partial:0,queri:0,webchat:0,follow:0,middl:0,depend:0,sensit:0,sorri:0,those:0,under:0,string:0,fals:0,mechan:0,jack:0,veri:0,list:0,pleas:0,prevent:0,past:0,second:0,pass:0,download:0,further:0,fullnam:0,click:0,even:0,index:0,what:0,hide:0,section:0,current:0,version:0,"new":0,net:0,"public":0,widget:0,gener:0,here:0,valu:0,box:0,convert:0,convers:0,mysit:0,fetch:0,implement:0,via:0,extra:0,apach:0,ask:0,href:0,org:0,auto_list_room:0,instal:0,from:0,zip:0,commun:0,doubl:0,two:0,websit:0,stylesheet:0,call:0,recommend:0,type:0,until:0,tightli:0,more:0,yahoo:0,must:0,room:0,setup:[],work:0,xhr:0,can:0,lc_messag:0,purpos:0,root:0,blogpost:0,control:0,quickstart:0,share:0,templat:0,tag:0,proprietari:0,explor:0,onlin:0,occup:0,end:0,goal:0,write:0,how:0,sid:0,instead:0,css:0,updat:0,npm:0,regener:0,product:0,resourc:0,after:0,usabl:0,befor:0,callback:0,underscor:0,data:0,demonstr:0,man:0,practic:0,bind:0,show_controlbox_by_default:0,django:0,inform:0,order:0,chatbox:0,xmpp:0,over:0,through:0,streamlin:0,snippet:0,jid:0,directli:0,fit:0,pend:0,hidden:0,therefor:0,might:0,them:0,anim:0,"return":0,thei:0,initi:0,front:0,now:0,introduct:0,name:0,edit:0,authent:0,token:0,ejabberd:0,each:0,side:0,mean:0,domain:0,individu:0,realli:0,legwork:0,connect:0,happen:0,extract:0,special:0,variabl:0,shown:0,open:0,content:0,rel:0,internet:0,plural:0,factori:0,po2json:0,proxi:0,insid:0,standard:0,standalon:0,ajax:0,put:0,succesfulli:0,could:0,success:0,keep:0,yui:0,first:0,origin:0,softwar:0,render:0,onc:0,hoop:0,lastnam:0,number:0,yourself:0,restrict:0,alreadi:0,owner:0,jabber:0,differ:0,script:0,top:0,messag:0,attach:0,attack:0,jed:0,luckili:0,option:0,tool:0,specifi:0,compressor:0,part:0,exactli:0,than:0,serv:0,jump:0,kind:0,provid:0,remov:0,bridg:0,toward:[],browser:0,pre:0,sai:0,saa:0,modern:0,ani:0,packag:0,have:0,tabl:0,need:0,moffitt:0,element:0,bosh_service_url:0,prebind:0,min:0,latter:0,note:0,also:0,contact:0,build:0,which:0,singl:0,sure:0,roster:0,track:0,object:0,most:0,deploi:0,homepag:0,"class":0,don:0,url:0,request:0,face:0,runtim:0,xdomainrequest:0,show:0,german:0,text:0,session:0,fine:0,find:0,onli:0,locat:0,just:0,configur:0,solut:0,should:0,folder:0,local:0,meant:0,get:0,opkod:0,cannot:0,deploy:0,requir:0,enabl:0,emb:0,method:0,reload:0,integr:0,contain:0,where:0,set:0,stroph:0,see:0,close:0,statu:0,state:0,reus:0,between:0,experi:0,hide_muc_serv:0,attribut:0,kei:0,screen:0,javascript:0,conjunct:[],job:0,bosh:0,cor:0,instant:0,shortliv:0,conversej:0,etc:0,grain:0,mani:0,login:0,com:0,load:0,instanti:0,pot:0,backend:0,creat:0,json:0,much:0,besid:0,subscrib:0,msgmerg:0,great:0,minifi:0,togeth:0,i18n:0,present:0,multi:0,main:0,servic:0,plugin:0,defin:0,file:0,helper:0,demo:0,auto_subscrib:0,site:0,rid:0,minim:0,receiv:0,media:0,make:0,minif:0,cross:0,same:0,html:0,chatroom:0,signon:0,http:0,webserv:0,optim:0,upon:0,hand:0,user:0,xhr_user_search:0,recent:0,stateless:0,markup:0,person:[],exampl:0,command:0,wherebi:0,thi:0,choos:0,usual:0,plural_form:0,protocol:0,firstnam:0,languag:0,web:0,xmlhttprequest:0,had:0,add:0,valid:0,input:0,yuicompressor:0,match:0,applic:0,format:0,read:0,nginx:0,traffic:0,xss:0,like:0,specif:0,server:0,benefit:0,necessari:0,either:0,page:0,deal:0,nplural:0,some:0,back:0,librari:0,though:0,overcom:0,refer:0,run:0,host:0,panel:0,src:0,about:0,obj:[],controlbox:0,unfortun:0,act:0,own:0,encod:0,automat:0,wrap:0,your:0,manag:0,log:0,wai:0,transfer:0,support:0,custom:0,avail:0,start:[],includ:0,lot:0,suit:0,"var":0,"function":0,properli:0,form:0,bundl:0,link:0,translat:0,synonym:0,"true":0,congratul:0,requirej:0,info:0,made:0,locale_data:0,possibl:0,"default":0,below:0,toggl:0,otherwis:0,problem:0,expect:0,featur:0,onconnect:0,exist:0,chat:0,want:0,when:0,detail:0,gettext:0,field:0,other:0,test:0,you:0,nice:0,node:0,releas:0,stai:0,lang:0,longer:0,getjson:0},objtypes:{},titles:["Introduction"],objnames:{},filenames:["index"]})
|
||||
Search.setIndex({objects:{},terms:{all:0,code:0,partial:0,queri:0,webchat:0,follow:0,middl:0,depend:0,sensit:0,sorri:0,those:0,under:0,string:0,fals:0,mechan:0,jack:0,veri:0,list:0,pleas:0,prevent:0,past:0,second:0,pass:0,download:0,further:0,fullnam:0,click:0,even:0,index:0,what:0,hide:0,section:0,current:0,version:[],"new":0,net:0,"public":0,widget:0,gener:0,here:0,bodi:0,valu:0,box:0,convert:0,convers:0,mysit:0,fetch:0,implement:0,via:0,extra:0,apach:0,ask:0,href:0,org:0,auto_list_room:0,instal:0,from:0,zip:0,commun:0,doubl:0,two:0,websit:0,stylesheet:0,call:0,recommend:0,type:0,until:0,tightli:0,more:0,yahoo:0,must:0,room:0,setup:[],work:0,xhr:0,can:0,lc_messag:0,purpos:0,root:0,blogpost:0,control:0,quickstart:0,share:0,templat:0,tag:0,proprietari:0,explor:0,onlin:0,occup:0,end:0,goal:0,write:0,how:0,sid:0,instead:0,css:0,updat:0,npm:0,regener:0,product:0,resourc:0,after:0,usabl:0,befor:0,callback:0,underscor:0,data:0,demonstr:0,man:0,practic:0,bind:0,show_controlbox_by_default:0,django:0,inform:0,order:0,chatbox:0,xmpp:0,over:0,through:0,streamlin:0,snippet:0,jid:0,directli:0,fit:0,pend:0,hidden:0,therefor:0,might:0,them:0,anim:0,"return":0,thei:0,initi:0,front:0,now:0,introduct:0,name:0,edit:0,authent:0,token:0,ejabberd:0,each:0,side:0,mean:0,domain:0,individu:0,realli:0,legwork:0,connect:0,happen:0,extract:0,special:0,variabl:0,shown:0,space:0,open:0,content:0,rel:0,internet:0,plural:0,factori:0,po2json:0,proxi:0,insid:0,standard:0,standalon:0,ajax:0,put:0,succesfulli:0,afterward:0,could:0,success:0,keep:0,yui:0,first:0,origin:0,softwar:0,render:0,onc:0,hoop:0,lastnam:0,number:0,yourself:0,restrict:0,alreadi:0,done:0,owner:0,jabber:0,differ:0,script:0,top:0,messag:0,attach:0,attack:0,jed:0,luckili:0,option:0,tool:0,specifi:0,compressor:0,part:0,exactli:0,than:0,serv:0,jump:0,kind:0,bloat:0,provid:0,remov:0,bridg:0,toward:[],browser:0,pre:0,sai:[],saa:0,modern:0,ani:0,packag:0,have:0,tabl:0,need:0,moffitt:0,element:0,bosh_service_url:0,prebind:0,min:0,latter:0,note:0,also:0,contact:0,build:0,which:0,singl:0,sure:0,roster:0,track:0,object:0,most:0,deploi:0,homepag:0,"class":0,don:0,url:0,request:0,face:0,runtim:0,xdomainrequest:0,show:0,german:0,text:0,session:0,fine:0,find:0,onli:0,locat:0,just:0,configur:0,solut:0,should:0,folder:0,local:0,meant:0,get:0,opkod:0,cannot:0,deploy:0,requir:0,enabl:0,emb:0,method:0,reload:0,integr:0,contain:0,where:0,set:0,stroph:0,see:0,close:0,statu:0,state:0,reus:0,between:0,experi:0,hide_muc_serv:0,attribut:0,kei:0,screen:0,javascript:0,conjunct:[],job:0,bosh:0,cor:0,instant:0,shortliv:0,conversej:0,etc:0,grain:0,mani:0,login:0,com:0,load:0,instanti:0,pot:0,backend:0,creat:0,rebuild:0,json:0,much:0,besid:0,subscrib:0,msgmerg:0,great:0,minifi:0,togeth:0,i18n:0,present:0,multi:0,main:0,servic:0,plugin:0,defin:0,file:0,helper:0,demo:0,auto_subscrib:0,site:0,rid:0,minim:0,receiv:0,media:0,make:0,minif:0,cross:0,same:0,html:0,chatroom:0,signon:0,http:0,webserv:0,optim:0,upon:0,hand:0,"50kb":0,user:0,xhr_user_search:0,recent:0,stateless:0,markup:0,person:[],exampl:0,command:0,wherebi:0,thi:0,choos:0,usual:0,plural_form:0,protocol:0,firstnam:0,languag:0,web:0,xmlhttprequest:0,had:0,add:0,valid:0,input:0,yuicompressor:0,match:0,take:0,applic:0,format:0,read:0,nginx:0,traffic:0,xss:0,like:0,specif:0,server:0,benefit:0,necessari:0,either:0,page:0,deal:0,nplural:0,some:0,back:0,librari:0,bottom:0,though:0,overcom:0,refer:0,run:0,host:0,panel:0,src:0,about:0,obj:[],controlbox:0,unfortun:0,act:0,own:0,encod:0,automat:0,wrap:0,your:0,manag:0,log:0,wai:0,transfer:0,support:0,custom:0,avail:0,start:[],includ:0,lot:0,suit:0,"var":0,"function":0,head:0,properli:0,form:0,bundl:0,link:0,translat:0,synonym:0,inlin:0,"true":0,congratul:0,requirej:0,info:0,made:0,locale_data:0,possibl:0,"default":0,below:0,toggl:0,otherwis:0,problem:0,expect:0,featur:0,onconnect:0,"100kb":[],exist:0,chat:0,want:0,when:0,detail:0,gettext:0,field:0,other:0,rememb:0,test:0,you:0,nice:0,node:0,intend:0,releas:0,stai:0,lang:0,longer:0,getjson:0,time:0},objtypes:{},titles:["Introduction"],objnames:{},filenames:["index"]})
|
@ -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.
|
||||
When you download a specific release of *Converse.js* there will be two minified files inside the zip file.
|
||||
|
||||
For version 0.3 they will be:
|
||||
* converse.min.js
|
||||
* converse.min.css
|
||||
|
||||
* converse.0.3.min.js
|
||||
* converse.0.3.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, all the translations add about 50KB of extra data to
|
||||
the minified javascript file. 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.
|
||||
|
16
index.html
16
index.html
@ -48,7 +48,7 @@
|
||||
</p>
|
||||
|
||||
<p>If you have integrated <em>Converse.js</em> into any other CMS or framework,
|
||||
<a href="http://opkode.com/contact" target="_blank">please let me know</a> and I'll mention it on this page.</p>
|
||||
<a href="http://opkode.com/contact.html" target="_blank">please let me know</a> and I'll mention it on this page.</p>
|
||||
|
||||
<h2>Features</h2>
|
||||
<ul>
|
||||
@ -164,4 +164,18 @@
|
||||
</script>
|
||||
<script type="text/javascript">try { var pageTracker = _gat._getTracker("UA-2128260-8"); pageTracker._trackPageview(); } catch(err) {}</script>
|
||||
</body>
|
||||
<script>
|
||||
require(["jquery", "converse"], function ($, converse) {
|
||||
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
locale/es/LC_MESSAGES/converse.json
Normal file
460
locale/es/LC_MESSAGES/converse.json
Normal file
@ -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
locale/es/LC_MESSAGES/converse.po
Normal file
493
locale/es/LC_MESSAGES/converse.po
Normal file
@ -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
locale/es/LC_MESSAGES/es.js
Normal file
459
locale/es/LC_MESSAGES/es.js
Normal file
@ -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;
|
||||
}));
|
@ -1,9 +1,17 @@
|
||||
/*
|
||||
* 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",
|
||||
"it": "locale/it/LC_MESSAGES/it",
|
||||
@ -15,14 +23,16 @@
|
||||
'jed',
|
||||
'af',
|
||||
'en',
|
||||
'es',
|
||||
'de',
|
||||
'hu',
|
||||
"it",
|
||||
'ptbr'
|
||||
], function (jed, af, en, de, hu, it, ptbr) {
|
||||
], function (jed, af, en, es, de, hu, it, ptbr) {
|
||||
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;
|
||||
|
13
main.js
13
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;
|
||||
});
|
||||
|
14
mock.js
14
mock.js
@ -1,8 +1,8 @@
|
||||
(function (root, factory) {
|
||||
define("mock",
|
||||
['converse'],
|
||||
function() {
|
||||
return factory();
|
||||
define("mock",
|
||||
['converse'],
|
||||
function() {
|
||||
return factory();
|
||||
});
|
||||
}(this, function (converse) {
|
||||
var mock_connection = {
|
||||
@ -14,7 +14,7 @@
|
||||
'rooms': {}
|
||||
},
|
||||
'jid': 'dummy@localhost',
|
||||
'addHandler': function (handler, ns, name, type, id, from, options) {
|
||||
'addHandler': function (handler, ns, name, type, id, from, options) {
|
||||
return function () {};
|
||||
},
|
||||
'send': function () {},
|
||||
@ -26,7 +26,7 @@
|
||||
'subscribe': function () {},
|
||||
'registerCallback': function () {}
|
||||
},
|
||||
'vcard': {
|
||||
'vcard': {
|
||||
'get': function (callback, jid) {
|
||||
var firstname, lastname;
|
||||
if (!jid) {
|
||||
@ -41,7 +41,7 @@
|
||||
var fullname = firstname+' '+lastname;
|
||||
var vcard = $iq().c('vCard').c('FN').t(fullname);
|
||||
callback(vcard.tree());
|
||||
}
|
||||
}
|
||||
},
|
||||
'disco': {
|
||||
'info': function () {},
|
||||
|
37
package.json
37
package.json
@ -1,5 +1,34 @@
|
||||
{
|
||||
"name": "Converse.js",
|
||||
"description": "Converse.js is a web based XMPP/Jabber instant messaging client",
|
||||
"version": "0.4.1"
|
||||
}
|
||||
"name": "converse.js",
|
||||
"version": "0.5.0",
|
||||
"description": "Browser based XMPP instant messaging client",
|
||||
"main": "main.js",
|
||||
"directories": {
|
||||
"doc": "docs"
|
||||
},
|
||||
"scripts": {
|
||||
"test": ""
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/jcbrand/converse.js.git"
|
||||
},
|
||||
"keywords": [
|
||||
"XMPP",
|
||||
"Jabber",
|
||||
"chat",
|
||||
"messaging",
|
||||
"chatrooms",
|
||||
"webchat"
|
||||
],
|
||||
"author": "JC Brand",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/jcbrand/converse.js/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt-cli": "~0.1.9",
|
||||
"grunt": "~0.4.1",
|
||||
"grunt-contrib-jshint": "~0.6.0"
|
||||
}
|
||||
}
|
||||
|
@ -54,7 +54,7 @@
|
||||
expect($("div#controlbox").is(':visible')).toBe(true);
|
||||
}, converse);
|
||||
it("can be opened by clicking a DOM element with class 'toggle-online-users'", open_controlbox);
|
||||
|
||||
|
||||
describe("The Status Widget", $.proxy(function () {
|
||||
it("can be used to set the current user's chat status", $.proxy(function () {
|
||||
var view = this.xmppstatusview;
|
||||
@ -121,7 +121,7 @@
|
||||
var i, t, is_last;
|
||||
spyOn(this.rosterview, 'render').andCallThrough();
|
||||
for (i=0; i<pend_names.length; i++) {
|
||||
is_last = i==(pend_names.length-1);
|
||||
is_last = i===(pend_names.length-1);
|
||||
this.roster.create({
|
||||
jid: pend_names[i].replace(' ','.').toLowerCase() + '@localhost',
|
||||
subscription: 'none',
|
||||
@ -129,7 +129,7 @@
|
||||
fullname: pend_names[i],
|
||||
is_last: is_last
|
||||
});
|
||||
// For performance reasons, the roster should only be shown once
|
||||
// For performance reasons, the roster should only be shown once
|
||||
// the last contact has been added.
|
||||
if (is_last) {
|
||||
expect(this.rosterview.$el.is(':visible')).toEqual(true);
|
||||
@ -162,7 +162,7 @@
|
||||
subscription: 'both',
|
||||
ask: null,
|
||||
fullname: cur_names[i],
|
||||
is_last: i==(cur_names.length-1)
|
||||
is_last: i===(cur_names.length-1)
|
||||
});
|
||||
expect(this.rosterview.render).toHaveBeenCalled();
|
||||
// Check that they are sorted alphabetically
|
||||
@ -291,7 +291,7 @@
|
||||
subscription: 'none',
|
||||
ask: 'request',
|
||||
fullname: req_names[i],
|
||||
is_last: i==(req_names.length-1)
|
||||
is_last: i===(req_names.length-1)
|
||||
});
|
||||
expect(this.rosterview.render).toHaveBeenCalled();
|
||||
// Check that they are sorted alphabetically
|
||||
@ -335,7 +335,7 @@
|
||||
expect(this.rosterview.removeRosterItem).toHaveBeenCalled();
|
||||
expect(this.connection.roster.unauthorize).toHaveBeenCalled();
|
||||
// There should now be one less contact
|
||||
expect(this.roster.length).toEqual(num_contacts-1);
|
||||
expect(this.roster.length).toEqual(num_contacts-1);
|
||||
}, converse));
|
||||
}, converse));
|
||||
|
||||
@ -368,7 +368,7 @@
|
||||
|
||||
afterEach($.proxy(function () {
|
||||
// Contacts retrieved from localStorage have chat_status of
|
||||
// "offline".
|
||||
// "offline".
|
||||
// In the next test suite, we need some online contacts, so
|
||||
// we make some online now
|
||||
for (i=0; i<5; i++) {
|
||||
@ -456,7 +456,7 @@
|
||||
expect(newchatboxes.length).toEqual(0);
|
||||
|
||||
// Lets open the controlbox again, purely for visual feedback
|
||||
open_controlbox();
|
||||
open_controlbox();
|
||||
}, converse));
|
||||
|
||||
describe("A Chat Message", $.proxy(function () {
|
||||
@ -465,8 +465,8 @@
|
||||
var sender_jid = cur_names[0].replace(' ','.').toLowerCase() + '@localhost';
|
||||
msg = $msg({
|
||||
from: sender_jid,
|
||||
to: this.connection.jid,
|
||||
type: 'chat',
|
||||
to: this.connection.jid,
|
||||
type: 'chat',
|
||||
id: (new Date()).getTime()
|
||||
}).c('body').t(message).up()
|
||||
.c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree();
|
||||
@ -498,8 +498,11 @@
|
||||
expect(msg_obj.get('delayed')).toEqual(false);
|
||||
// Now check that the message appears inside the
|
||||
// chatbox in the DOM
|
||||
var txt = chatboxview.$el.find('.chat-content').find('.chat-message').find('.chat-message-content').text();
|
||||
expect(txt).toEqual(message);
|
||||
var $chat_content = chatboxview.$el.find('.chat-content');
|
||||
var msg_txt = $chat_content.find('.chat-message').find('.chat-message-content').text();
|
||||
expect(msg_txt).toEqual(message);
|
||||
var sender_txt = $chat_content.find('span.chat-message-them').text();
|
||||
expect(sender_txt.match(/^[0-9][0-9]:[0-9][0-9] /)).toBeTruthy();
|
||||
}, converse));
|
||||
}, converse));
|
||||
|
||||
@ -531,8 +534,8 @@
|
||||
var sender_jid = cur_names[0].replace(' ','.').toLowerCase() + '@localhost';
|
||||
msg = $msg({
|
||||
from: sender_jid,
|
||||
to: this.connection.jid,
|
||||
type: 'chat',
|
||||
to: this.connection.jid,
|
||||
type: 'chat',
|
||||
id: (new Date()).getTime()
|
||||
}).c('body').t(message).up()
|
||||
.c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree();
|
||||
@ -560,8 +563,8 @@
|
||||
var sender_jid = cur_names[0].replace(' ','.').toLowerCase() + '@localhost';
|
||||
msg = $msg({
|
||||
from: sender_jid,
|
||||
to: this.connection.jid,
|
||||
type: 'chat',
|
||||
to: this.connection.jid,
|
||||
type: 'chat',
|
||||
id: (new Date()).getTime()
|
||||
}).c('body').t(message).up()
|
||||
.c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree();
|
||||
|
Loading…
Reference in New Issue
Block a user