Merge branch 'master' into roster_refactor
Conflicts: locale/en/LC_MESSAGES/converse.po
This commit is contained in:
commit
34630693b7
1
.gitignore
vendored
1
.gitignore
vendored
@ -21,6 +21,7 @@ Backbone.Overview
|
||||
tags
|
||||
stamp-npm
|
||||
stamp-bower
|
||||
stamp-bundler
|
||||
|
||||
# Sphinx
|
||||
docs/html
|
||||
|
72
Makefile
72
Makefile
@ -6,7 +6,8 @@ PHANTOMJS ?= ./node_modules/.bin/phantomjs
|
||||
SPHINXBUILD ?= ./bin/sphinx-build
|
||||
SPHINXOPTS =
|
||||
PO2JSON ?= ./node_modules/.bin/po2json
|
||||
SASS ?= sass
|
||||
SASS ?= ./.bundle/bin/sass
|
||||
BUNDLE ?= ./.bundle/bin/bundle
|
||||
GRUNT ?= ./node_modules/.bin/grunt
|
||||
HTTPSERVE ?= ./node_modules/.bin/http-server
|
||||
|
||||
@ -15,31 +16,34 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) ./d
|
||||
# the i18n builder cannot share the environment and doctrees with the others
|
||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) ./docs/source
|
||||
|
||||
.PHONY: all help clean html epub changes linkcheck gettext po pot po2json merge release css minjs build
|
||||
|
||||
all: dev
|
||||
.PHONY: all help clean html epub changes linkcheck gettext po pot po2json merge release css minjs build dev-ruby
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of the following"
|
||||
@echo " build create minified builds containing converse.js and all its dependencies"
|
||||
@echo " changes make an overview of all changed/added/deprecated items added to the documentation"
|
||||
@echo " css generate CSS from the Sass files"
|
||||
@echo " dev set up the development environment"
|
||||
@echo " epub export the documentation to epub"
|
||||
@echo " gettext make PO message catalogs of the documentation"
|
||||
@echo " html make standalone HTML files of the documentation"
|
||||
@echo " linkcheck check all documentation external links for integrity"
|
||||
@echo " cssmin minify the CSS files"
|
||||
@echo " po generate gettext PO files for each i18n language"
|
||||
@echo " po2json generate JSON files from the language PO files"
|
||||
@echo " pot generate a gettext POT file to be used for translations"
|
||||
@echo " release make a new minified release"
|
||||
@echo " serve serve this directory via a webserver on port 8000"
|
||||
@echo "Please use \`make <target>' where <target> is one of the following:"
|
||||
@echo ""
|
||||
@echo " all A synonym for 'make dev'."
|
||||
@echo " build Create minified builds of converse.js and all its dependencies."
|
||||
@echo " changes Make an overview of all changed/added/deprecated items added to the documentation."
|
||||
@echo " css Generate CSS from the Sass files."
|
||||
@echo " cssmin Minify the CSS files."
|
||||
@echo " dev Set up the development environment. To force a fresh start, run 'make clean' first."
|
||||
@echo " epub Export the documentation to epub."
|
||||
@echo " gettext Make PO message catalogs of the documentation."
|
||||
@echo " html Make standalone HTML files of the documentation."
|
||||
@echo " linkcheck Check all documentation external links for integrity."
|
||||
@echo " po Generate gettext PO files for each i18n language."
|
||||
@echo " po2json Generate JSON files from the language PO files."
|
||||
@echo " pot Generate a gettext POT file to be used for translations."
|
||||
@echo " release Make a new minified release."
|
||||
@echo " serve Serve this directory via a webserver on port 8000."
|
||||
@echo " watch Tells Sass to watch the .scss files for changes and then automatically update the CSS files."
|
||||
|
||||
all: dev
|
||||
|
||||
########################################################################
|
||||
## Miscellaneous
|
||||
|
||||
serve: dev
|
||||
serve: stamp-npm
|
||||
$(HTTPSERVE) -p 8000
|
||||
|
||||
########################################################################
|
||||
@ -84,28 +88,34 @@ stamp-bower: stamp-npm bower.json
|
||||
$(BOWER) install
|
||||
touch stamp-bower
|
||||
|
||||
clean::
|
||||
rm -f stamp-npm stamp-bower
|
||||
rm -rf node_modules components
|
||||
stamp-bundler:
|
||||
mkdir -p .bundle
|
||||
gem install --user bundler --bindir .bundle/bin
|
||||
$(BUNDLE) install --path .bundle --binstubs .bundle/bin
|
||||
touch stamp-bundler
|
||||
|
||||
dev: clean
|
||||
npm install
|
||||
$(BOWER) update;
|
||||
bundle install --path=~/
|
||||
clean::
|
||||
rm -f stamp-npm stamp-bower stamp-bundler
|
||||
rm -rf node_modules components .bundle
|
||||
|
||||
dev: stamp-bower stamp-bundler
|
||||
|
||||
########################################################################
|
||||
## Builds
|
||||
|
||||
css::
|
||||
$(SASS) sass/converse.scss > css/converse.css
|
||||
css:: dev-ruby
|
||||
$(SASS) -I .bundle/bin sass/converse.scss css/converse.css
|
||||
|
||||
watch:: dev-ruby
|
||||
$(SASS) --watch -I .bundle/bin sass/converse.scss:css/converse.css
|
||||
|
||||
jsmin:
|
||||
./node_modules/requirejs/bin/r.js -o src/build.js && ./node_modules/requirejs/bin/r.js -o src/build-no-locales-no-otr.js && ./node_modules/requirejs/bin/r.js -o src/build-no-otr.js && ./node_modules/requirejs/bin/r.js -o src/build-website.js
|
||||
|
||||
cssmin:
|
||||
cssmin: stamp-npm
|
||||
$(GRUNT) cssmin
|
||||
|
||||
build::
|
||||
build:: stamp-npm
|
||||
$(GRUNT) jst
|
||||
$(GRUNT) minify
|
||||
|
||||
|
@ -33,7 +33,7 @@ It has the following features:
|
||||
* Messages appear in all connnected chat clients `XEP 280 <http://xmpp.org/extensions/xep-0280.html>`_
|
||||
* Typing and chat state notifications `XEP 85 <http://xmpp.org/extensions/xep-0085.html>`_
|
||||
* Third person messages (/me )
|
||||
* Translated into 15 languages
|
||||
* Translated into 16 languages
|
||||
* Off-the-record encryption
|
||||
|
||||
-----------
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "converse.js",
|
||||
"description": "Web-based XMPP/Jabber chat client written in javascript",
|
||||
"version": "0.9.2",
|
||||
"version": "0.9.3",
|
||||
"license": "MPL",
|
||||
"devDependencies": {
|
||||
"jasmine": "https://github.com/jcbrand/jasmine.git#1_3_x",
|
||||
|
@ -10784,7 +10784,7 @@ define('jquery-private',['jquery'], function (jq) {
|
||||
java, location, Components, FileUtils */
|
||||
|
||||
define('text',['module'], function (module) {
|
||||
|
||||
'use strict';
|
||||
|
||||
var text, fs, Cc, Ci, xpcIsWindows,
|
||||
progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
|
||||
@ -11165,7 +11165,7 @@ define('text',['module'], function (module) {
|
||||
return text;
|
||||
});
|
||||
|
||||
// Underscore.js 1.8.2
|
||||
// Underscore.js 1.8.3
|
||||
// http://underscorejs.org
|
||||
// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||||
// Underscore may be freely distributed under the MIT license.
|
||||
@ -11222,7 +11222,7 @@ define('text',['module'], function (module) {
|
||||
}
|
||||
|
||||
// Current version.
|
||||
_.VERSION = '1.8.2';
|
||||
_.VERSION = '1.8.3';
|
||||
|
||||
// Internal function that returns an efficient (for current engines) version
|
||||
// of the passed-in callback, to be repeatedly applied in other Underscore
|
||||
@ -11289,12 +11289,20 @@ define('text',['module'], function (module) {
|
||||
return result;
|
||||
};
|
||||
|
||||
var property = function(key) {
|
||||
return function(obj) {
|
||||
return obj == null ? void 0 : obj[key];
|
||||
};
|
||||
};
|
||||
|
||||
// Helper for collection methods to determine whether a collection
|
||||
// should be iterated as an array or as an object
|
||||
// Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
|
||||
// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
|
||||
var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
|
||||
var getLength = property('length');
|
||||
var isArrayLike = function(collection) {
|
||||
var length = collection && collection.length;
|
||||
var length = getLength(collection);
|
||||
return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
|
||||
};
|
||||
|
||||
@ -11419,11 +11427,12 @@ define('text',['module'], function (module) {
|
||||
return false;
|
||||
};
|
||||
|
||||
// Determine if the array or object contains a given value (using `===`).
|
||||
// Determine if the array or object contains a given item (using `===`).
|
||||
// Aliased as `includes` and `include`.
|
||||
_.contains = _.includes = _.include = function(obj, target, fromIndex) {
|
||||
_.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
|
||||
if (!isArrayLike(obj)) obj = _.values(obj);
|
||||
return _.indexOf(obj, target, typeof fromIndex == 'number' && fromIndex) >= 0;
|
||||
if (typeof fromIndex != 'number' || guard) fromIndex = 0;
|
||||
return _.indexOf(obj, item, fromIndex) >= 0;
|
||||
};
|
||||
|
||||
// Invoke a method (with arguments) on every item in a collection.
|
||||
@ -11647,7 +11656,7 @@ define('text',['module'], function (module) {
|
||||
// Internal implementation of a recursive `flatten` function.
|
||||
var flatten = function(input, shallow, strict, startIndex) {
|
||||
var output = [], idx = 0;
|
||||
for (var i = startIndex || 0, length = input && input.length; i < length; i++) {
|
||||
for (var i = startIndex || 0, length = getLength(input); i < length; i++) {
|
||||
var value = input[i];
|
||||
if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
|
||||
//flatten current level of array or arguments object
|
||||
@ -11678,7 +11687,6 @@ define('text',['module'], function (module) {
|
||||
// been sorted, you have the option of using a faster algorithm.
|
||||
// Aliased as `unique`.
|
||||
_.uniq = _.unique = function(array, isSorted, iteratee, context) {
|
||||
if (array == null) return [];
|
||||
if (!_.isBoolean(isSorted)) {
|
||||
context = iteratee;
|
||||
iteratee = isSorted;
|
||||
@ -11687,7 +11695,7 @@ define('text',['module'], function (module) {
|
||||
if (iteratee != null) iteratee = cb(iteratee, context);
|
||||
var result = [];
|
||||
var seen = [];
|
||||
for (var i = 0, length = array.length; i < length; i++) {
|
||||
for (var i = 0, length = getLength(array); i < length; i++) {
|
||||
var value = array[i],
|
||||
computed = iteratee ? iteratee(value, i, array) : value;
|
||||
if (isSorted) {
|
||||
@ -11714,10 +11722,9 @@ define('text',['module'], function (module) {
|
||||
// Produce an array that contains every item shared between all the
|
||||
// passed-in arrays.
|
||||
_.intersection = function(array) {
|
||||
if (array == null) return [];
|
||||
var result = [];
|
||||
var argsLength = arguments.length;
|
||||
for (var i = 0, length = array.length; i < length; i++) {
|
||||
for (var i = 0, length = getLength(array); i < length; i++) {
|
||||
var item = array[i];
|
||||
if (_.contains(result, item)) continue;
|
||||
for (var j = 1; j < argsLength; j++) {
|
||||
@ -11746,7 +11753,7 @@ define('text',['module'], function (module) {
|
||||
// Complement of _.zip. Unzip accepts an array of arrays and groups
|
||||
// each array's elements on shared indices
|
||||
_.unzip = function(array) {
|
||||
var length = array && _.max(array, 'length').length || 0;
|
||||
var length = array && _.max(array, getLength).length || 0;
|
||||
var result = Array(length);
|
||||
|
||||
for (var index = 0; index < length; index++) {
|
||||
@ -11760,7 +11767,7 @@ define('text',['module'], function (module) {
|
||||
// the corresponding values.
|
||||
_.object = function(list, values) {
|
||||
var result = {};
|
||||
for (var i = 0, length = list && list.length; i < length; i++) {
|
||||
for (var i = 0, length = getLength(list); i < length; i++) {
|
||||
if (values) {
|
||||
result[list[i]] = values[i];
|
||||
} else {
|
||||
@ -11770,42 +11777,11 @@ define('text',['module'], function (module) {
|
||||
return result;
|
||||
};
|
||||
|
||||
// Return the position of the first occurrence of an item in an array,
|
||||
// or -1 if the item is not included in the array.
|
||||
// If the array is large and already in sort order, pass `true`
|
||||
// for **isSorted** to use binary search.
|
||||
_.indexOf = function(array, item, isSorted) {
|
||||
var i = 0, length = array && array.length;
|
||||
if (typeof isSorted == 'number') {
|
||||
i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;
|
||||
} else if (isSorted && length) {
|
||||
i = _.sortedIndex(array, item);
|
||||
return array[i] === item ? i : -1;
|
||||
}
|
||||
if (item !== item) {
|
||||
return _.findIndex(slice.call(array, i), _.isNaN);
|
||||
}
|
||||
for (; i < length; i++) if (array[i] === item) return i;
|
||||
return -1;
|
||||
};
|
||||
|
||||
_.lastIndexOf = function(array, item, from) {
|
||||
var idx = array ? array.length : 0;
|
||||
if (typeof from == 'number') {
|
||||
idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1);
|
||||
}
|
||||
if (item !== item) {
|
||||
return _.findLastIndex(slice.call(array, 0, idx), _.isNaN);
|
||||
}
|
||||
while (--idx >= 0) if (array[idx] === item) return idx;
|
||||
return -1;
|
||||
};
|
||||
|
||||
// Generator function to create the findIndex and findLastIndex functions
|
||||
function createIndexFinder(dir) {
|
||||
function createPredicateIndexFinder(dir) {
|
||||
return function(array, predicate, context) {
|
||||
predicate = cb(predicate, context);
|
||||
var length = array != null && array.length;
|
||||
var length = getLength(array);
|
||||
var index = dir > 0 ? 0 : length - 1;
|
||||
for (; index >= 0 && index < length; index += dir) {
|
||||
if (predicate(array[index], index, array)) return index;
|
||||
@ -11815,16 +11791,15 @@ define('text',['module'], function (module) {
|
||||
}
|
||||
|
||||
// Returns the first index on an array-like that passes a predicate test
|
||||
_.findIndex = createIndexFinder(1);
|
||||
|
||||
_.findLastIndex = createIndexFinder(-1);
|
||||
_.findIndex = createPredicateIndexFinder(1);
|
||||
_.findLastIndex = createPredicateIndexFinder(-1);
|
||||
|
||||
// Use a comparator function to figure out the smallest index at which
|
||||
// an object should be inserted so as to maintain order. Uses binary search.
|
||||
_.sortedIndex = function(array, obj, iteratee, context) {
|
||||
iteratee = cb(iteratee, context, 1);
|
||||
var value = iteratee(obj);
|
||||
var low = 0, high = array.length;
|
||||
var low = 0, high = getLength(array);
|
||||
while (low < high) {
|
||||
var mid = Math.floor((low + high) / 2);
|
||||
if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
|
||||
@ -11832,11 +11807,43 @@ define('text',['module'], function (module) {
|
||||
return low;
|
||||
};
|
||||
|
||||
// Generator function to create the indexOf and lastIndexOf functions
|
||||
function createIndexFinder(dir, predicateFind, sortedIndex) {
|
||||
return function(array, item, idx) {
|
||||
var i = 0, length = getLength(array);
|
||||
if (typeof idx == 'number') {
|
||||
if (dir > 0) {
|
||||
i = idx >= 0 ? idx : Math.max(idx + length, i);
|
||||
} else {
|
||||
length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
|
||||
}
|
||||
} else if (sortedIndex && idx && length) {
|
||||
idx = sortedIndex(array, item);
|
||||
return array[idx] === item ? idx : -1;
|
||||
}
|
||||
if (item !== item) {
|
||||
idx = predicateFind(slice.call(array, i, length), _.isNaN);
|
||||
return idx >= 0 ? idx + i : -1;
|
||||
}
|
||||
for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
|
||||
if (array[idx] === item) return idx;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
}
|
||||
|
||||
// Return the position of the first occurrence of an item in an array,
|
||||
// or -1 if the item is not included in the array.
|
||||
// If the array is large and already in sort order, pass `true`
|
||||
// for **isSorted** to use binary search.
|
||||
_.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);
|
||||
_.lastIndexOf = createIndexFinder(-1, _.findLastIndex);
|
||||
|
||||
// Generate an integer Array containing an arithmetic progression. A port of
|
||||
// the native Python `range()` function. See
|
||||
// [the Python documentation](http://docs.python.org/library/functions.html#range).
|
||||
_.range = function(start, stop, step) {
|
||||
if (arguments.length <= 1) {
|
||||
if (stop == null) {
|
||||
stop = start || 0;
|
||||
start = 0;
|
||||
}
|
||||
@ -12215,6 +12222,15 @@ define('text',['module'], function (module) {
|
||||
// Fill in a given object with default properties.
|
||||
_.defaults = createAssigner(_.allKeys, true);
|
||||
|
||||
// Creates an object that inherits from the given prototype object.
|
||||
// If additional properties are provided then they will be added to the
|
||||
// created object.
|
||||
_.create = function(prototype, props) {
|
||||
var result = baseCreate(prototype);
|
||||
if (props) _.extendOwn(result, props);
|
||||
return result;
|
||||
};
|
||||
|
||||
// Create a (shallow-cloned) duplicate of an object.
|
||||
_.clone = function(obj) {
|
||||
if (!_.isObject(obj)) return obj;
|
||||
@ -12292,7 +12308,7 @@ define('text',['module'], function (module) {
|
||||
}
|
||||
// Assume equality for cyclic structures. The algorithm for detecting cyclic
|
||||
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
|
||||
|
||||
|
||||
// Initializing stack of traversed objects.
|
||||
// It's done here since we only need them for objects and arrays comparison.
|
||||
aStack = aStack || [];
|
||||
@ -12443,11 +12459,7 @@ define('text',['module'], function (module) {
|
||||
|
||||
_.noop = function(){};
|
||||
|
||||
_.property = function(key) {
|
||||
return function(obj) {
|
||||
return obj == null ? void 0 : obj[key];
|
||||
};
|
||||
};
|
||||
_.property = property;
|
||||
|
||||
// Generates a function for a given object that returns a given property.
|
||||
_.propertyOf = function(obj) {
|
||||
@ -12456,7 +12468,7 @@ define('text',['module'], function (module) {
|
||||
};
|
||||
};
|
||||
|
||||
// Returns a predicate for checking whether an object has a given set of
|
||||
// Returns a predicate for checking whether an object has a given set of
|
||||
// `key:value` pairs.
|
||||
_.matcher = _.matches = function(attrs) {
|
||||
attrs = _.extendOwn({}, attrs);
|
||||
@ -12683,7 +12695,7 @@ define('text',['module'], function (module) {
|
||||
// Provide unwrapping proxy for some methods used in engine operations
|
||||
// such as arithmetic and JSON stringification.
|
||||
_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
|
||||
|
||||
|
||||
_.prototype.toString = function() {
|
||||
return '' + this._wrapped;
|
||||
};
|
||||
@ -12736,7 +12748,7 @@ define('text',['module'], function (module) {
|
||||
/*global define: false */
|
||||
|
||||
define('tpl',['text', 'underscore'], function (text, _) {
|
||||
|
||||
'use strict';
|
||||
|
||||
var buildMap = {},
|
||||
buildTemplateSource = "define('{pluginName}!{moduleName}', function () { return {source}; });\n";
|
||||
@ -13176,7 +13188,7 @@ __p+='\n<div class="input-group">\n <input name="'+
|
||||
((__t=(name))==null?'':__t)+
|
||||
'" type="'+
|
||||
((__t=(type))==null?'':__t)+
|
||||
'" \n ';
|
||||
'"\n ';
|
||||
if (value) {
|
||||
__p+=' value="'+
|
||||
((__t=(value))==null?'':__t)+
|
||||
@ -13186,7 +13198,9 @@ __p+='\n ';
|
||||
if (required) {
|
||||
__p+=' class="required" ';
|
||||
}
|
||||
__p+=' />\n <span>'+
|
||||
__p+=' />\n <span title="'+
|
||||
((__t=(domain))==null?'':__t)+
|
||||
'">'+
|
||||
((__t=(domain))==null?'':__t)+
|
||||
'</span>\n</div>\n';
|
||||
}
|
||||
@ -13223,13 +13237,35 @@ return __p;
|
||||
define('tpl!login_panel', [],function () { return function(obj){
|
||||
var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};
|
||||
with(obj||{}){
|
||||
__p+='<form id="converse-login" method="post">\n <label>'+
|
||||
__p+='<form id="converse-login" method="post">\n ';
|
||||
if (auto_login) {
|
||||
__p+='\n <span class="spinner login-submit"/>\n ';
|
||||
}
|
||||
__p+='\n ';
|
||||
if (!auto_login) {
|
||||
__p+='\n ';
|
||||
if (authentication == LOGIN) {
|
||||
__p+='\n <label>'+
|
||||
((__t=(label_username))==null?'':__t)+
|
||||
'</label>\n <input type="email" name="jid" placeholder="user@server">\n <label>'+
|
||||
'</label>\n <input name="jid" placeholder="user@server">\n <label>'+
|
||||
((__t=(label_password))==null?'':__t)+
|
||||
'</label>\n <input type="password" name="password" placeholder="password">\n <input class="submit" type="submit" value="'+
|
||||
'</label>\n <input type="password" name="password" placeholder="password">\n <input class="submit" type="submit" value="'+
|
||||
((__t=(label_login))==null?'':__t)+
|
||||
'">\n <span class="conn-feedback"></span>\n</form>\n';
|
||||
'">\n <span class="conn-feedback"></span>\n ';
|
||||
}
|
||||
__p+='\n ';
|
||||
if (authentication == ANONYMOUS) {
|
||||
__p+='\n <input type="submit" class="submit login-anon" value="'+
|
||||
((__t=(label_anon_login))==null?'':__t)+
|
||||
'"/>\n ';
|
||||
}
|
||||
__p+='\n ';
|
||||
if (authentication == PREBIND) {
|
||||
__p+='\n <p>Disconnected.</p>\n ';
|
||||
}
|
||||
__p+='\n ';
|
||||
}
|
||||
__p+='\n</form>\n';
|
||||
}
|
||||
return __p;
|
||||
}; });
|
||||
@ -14922,7 +14958,7 @@ return parser;
|
||||
root.utils = factory(jQuery, templates);
|
||||
}
|
||||
}(this, function ($, templates, locales) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var XFORM_TYPE_MAP = {
|
||||
'text-private': 'password',
|
||||
@ -25591,7 +25627,7 @@ return Backbone.BrowserStorage;
|
||||
factory(_, Backbone);
|
||||
}
|
||||
}(this, function (_, Backbone) {
|
||||
|
||||
"use strict";
|
||||
var Overview = Backbone.Overview = function (options) {
|
||||
/* An Overview is a View that contains and keeps track of sub-views.
|
||||
* Kind of like what a Collection is to a Model.
|
||||
@ -25649,7 +25685,7 @@ return Backbone.BrowserStorage;
|
||||
factory(jQuery, root);
|
||||
}
|
||||
}(this, function(jQuery, window) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var matched, browser;
|
||||
|
||||
@ -25812,7 +25848,7 @@ return Backbone.BrowserStorage;
|
||||
}
|
||||
}(this, function($, window) {
|
||||
var _ = function() {
|
||||
|
||||
"use strict";
|
||||
return {
|
||||
isMsie: function() {
|
||||
return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false;
|
||||
@ -25942,7 +25978,7 @@ return Backbone.BrowserStorage;
|
||||
};
|
||||
}();
|
||||
var css = function() {
|
||||
|
||||
"use strict";
|
||||
var css = {
|
||||
wrapper: {
|
||||
position: "relative",
|
||||
@ -26004,7 +26040,7 @@ return Backbone.BrowserStorage;
|
||||
return css;
|
||||
}();
|
||||
var EventBus = function() {
|
||||
|
||||
"use strict";
|
||||
var namespace = "typeahead:";
|
||||
function EventBus(o) {
|
||||
if (!o || !o.el) {
|
||||
@ -26021,7 +26057,7 @@ return Backbone.BrowserStorage;
|
||||
return EventBus;
|
||||
}();
|
||||
var EventEmitter = function() {
|
||||
|
||||
"use strict";
|
||||
var splitter = /\s+/, nextTick = getNextTick();
|
||||
return {
|
||||
onSync: onSync,
|
||||
@ -26111,7 +26147,7 @@ return Backbone.BrowserStorage;
|
||||
}
|
||||
}();
|
||||
var highlight = function(doc) {
|
||||
|
||||
"use strict";
|
||||
var defaults = {
|
||||
node: null,
|
||||
pattern: null,
|
||||
@ -26163,7 +26199,7 @@ return Backbone.BrowserStorage;
|
||||
}
|
||||
}(window.document);
|
||||
var Input = function() {
|
||||
|
||||
"use strict";
|
||||
var specialKeyCodeMap;
|
||||
specialKeyCodeMap = {
|
||||
9: "tab",
|
||||
@ -26358,7 +26394,7 @@ return Backbone.BrowserStorage;
|
||||
}
|
||||
}();
|
||||
var Dataset = function() {
|
||||
|
||||
"use strict";
|
||||
var datasetKey = "ttDataset", valueKey = "ttValue", datumKey = "ttDatum";
|
||||
function Dataset(o) {
|
||||
o = o || {};
|
||||
@ -26492,7 +26528,7 @@ return Backbone.BrowserStorage;
|
||||
}
|
||||
}();
|
||||
var Dropdown = function() {
|
||||
|
||||
"use strict";
|
||||
function Dropdown(o) {
|
||||
var that = this, onSuggestionClick, onSuggestionMouseEnter, onSuggestionMouseLeave;
|
||||
o = o || {};
|
||||
@ -26652,7 +26688,7 @@ return Backbone.BrowserStorage;
|
||||
}
|
||||
}();
|
||||
var Typeahead = function() {
|
||||
|
||||
"use strict";
|
||||
var attrsKey = "ttAttrs";
|
||||
function Typeahead(o) {
|
||||
var $menu, $input, $hint;
|
||||
@ -26899,7 +26935,7 @@ return Backbone.BrowserStorage;
|
||||
}
|
||||
}();
|
||||
(function() {
|
||||
|
||||
"use strict";
|
||||
var old, typeaheadKey, methods;
|
||||
old = $.fn.typeahead;
|
||||
typeaheadKey = "ttTypeahead";
|
||||
@ -27061,7 +27097,7 @@ define("converse-dependencies", [
|
||||
);
|
||||
}
|
||||
}(this, function (templates, $, $iq, $msg, $pres, $build, DSA, OTR, Strophe, _, moment, utils, b64_sha1) {
|
||||
//
|
||||
// "use strict";
|
||||
// Cannot use this due to Safari bug.
|
||||
// See https://github.com/jcbrand/converse.js/issues/196
|
||||
if (typeof console === "undefined" || typeof console.log === "undefined") {
|
||||
@ -27182,6 +27218,7 @@ define("converse-dependencies", [
|
||||
Strophe.addNamespace('MUC_ROOMCONF', Strophe.NS.MUC + "#roomconfig");
|
||||
Strophe.addNamespace('MUC_USER', Strophe.NS.MUC + "#user");
|
||||
Strophe.addNamespace('REGISTER', 'jabber:iq:register');
|
||||
Strophe.addNamespace('ROSTERX', 'http://jabber.org/protocol/rosterx');
|
||||
Strophe.addNamespace('XFORM', 'jabber:x:data');
|
||||
|
||||
// Add Strophe Statuses
|
||||
@ -27196,6 +27233,10 @@ define("converse-dependencies", [
|
||||
|
||||
// Constants
|
||||
// ---------
|
||||
var LOGIN = "login";
|
||||
var ANONYMOUS = "anonymous";
|
||||
var PREBIND = "prebind";
|
||||
|
||||
var UNENCRYPTED = 0;
|
||||
var UNVERIFIED= 1;
|
||||
var VERIFIED= 2;
|
||||
@ -27254,6 +27295,7 @@ define("converse-dependencies", [
|
||||
allow_registration: true,
|
||||
animate: true,
|
||||
auto_list_rooms: false,
|
||||
auto_login: false, // Currently only used in connection with anonymous login
|
||||
auto_reconnect: false,
|
||||
auto_subscribe: false,
|
||||
bosh_service_url: undefined, // The BOSH connection manager URL.
|
||||
@ -27270,7 +27312,10 @@ define("converse-dependencies", [
|
||||
message_carbons: false,
|
||||
no_trimming: false, // Set to true for phantomjs tests (where browser apparently has no width)
|
||||
play_sounds: false,
|
||||
prebind: false,
|
||||
sounds_path: '/sounds/',
|
||||
password: undefined,
|
||||
authentication: 'login', // Available values are "login", "prebind", "anonymous".
|
||||
prebind: false, // XXX: Deprecated, use "authentication" instead.
|
||||
prebind_url: null,
|
||||
providers_link: 'https://xmpp.net/directory.php', // Link to XMPP providers shown on registration page
|
||||
rid: undefined,
|
||||
@ -27298,6 +27343,16 @@ define("converse-dependencies", [
|
||||
// Allow only whitelisted configuration attributes to be overwritten
|
||||
_.extend(this, _.pick(settings, Object.keys(this.default_settings)));
|
||||
|
||||
// BBB
|
||||
if (this.prebind === true) { this.authentication = PREBIND; }
|
||||
|
||||
if (this.authentication === ANONYMOUS) {
|
||||
if (!this.jid) {
|
||||
throw("Config Error: you need to provide the server's domain via the " +
|
||||
"'jid' option when using anonymous authentication.");
|
||||
}
|
||||
}
|
||||
|
||||
if (settings.visible_toolbar_buttons) {
|
||||
_.extend(
|
||||
this.visible_toolbar_buttons,
|
||||
@ -27363,11 +27418,11 @@ define("converse-dependencies", [
|
||||
this.playNotification = function () {
|
||||
var audio;
|
||||
if (converse.play_sounds && typeof Audio !== "undefined"){
|
||||
audio = new Audio("sounds/msg_received.ogg");
|
||||
audio = new Audio(converse.sounds_path+"msg_received.ogg");
|
||||
if (audio.canPlayType('/audio/ogg')) {
|
||||
audio.play();
|
||||
} else {
|
||||
audio = new Audio("/sounds/msg_received.mp3");
|
||||
audio = new Audio(converse.sounds_path+"msg_received.mp3");
|
||||
audio.play();
|
||||
}
|
||||
}
|
||||
@ -27445,7 +27500,7 @@ define("converse-dependencies", [
|
||||
|
||||
this.reconnect = function () {
|
||||
converse.giveFeedback(__('Reconnecting'), 'error');
|
||||
if (!converse.prebind) {
|
||||
if (converse.authentication !== "prebind") {
|
||||
this.connection.connect(
|
||||
this.connection.jid,
|
||||
this.connection.pass,
|
||||
@ -27704,7 +27759,7 @@ define("converse-dependencies", [
|
||||
this.OTR = Backbone.Model.extend({
|
||||
// A model for managing OTR settings.
|
||||
getSessionPassphrase: function () {
|
||||
if (converse.prebind) {
|
||||
if (converse.authentication === 'prebind') {
|
||||
var key = b64_sha1(converse.connection.jid),
|
||||
pass = window.sessionStorage[key];
|
||||
if (typeof pass === 'undefined') {
|
||||
@ -28504,6 +28559,7 @@ define("converse-dependencies", [
|
||||
},
|
||||
|
||||
updateVCard: function () {
|
||||
if (!this.use_vcards) { return; }
|
||||
var jid = this.model.get('jid'),
|
||||
contact = converse.roster.get(jid);
|
||||
if ((contact) && (!contact.get('vcard_updated'))) {
|
||||
@ -28712,7 +28768,7 @@ define("converse-dependencies", [
|
||||
$('<li class="found-user"></li>')
|
||||
.append(
|
||||
$('<a class="subscribe-to-user" href="#" title="'+__('Click to add as a chat contact')+'"></a>')
|
||||
.attr('data-recipient', Strophe.escapeNode(obj.id)+'@'+converse.domain)
|
||||
.attr('data-recipient', Strophe.getNodeFromJid(obj.id)+"@"+Strophe.getDomainFromJid(obj.id))
|
||||
.text(obj.fullname)
|
||||
)
|
||||
);
|
||||
@ -28744,8 +28800,7 @@ define("converse-dependencies", [
|
||||
},
|
||||
|
||||
addContact: function (jid, name) {
|
||||
name = _.isEmpty(name)? jid: name;
|
||||
converse.connection.roster.add(jid, name, [], function (iq) {
|
||||
converse.connection.roster.add(jid, _.isEmpty(name)? jid: name, [], function (iq) {
|
||||
converse.connection.roster.subscribe(jid, null, converse.xmppstatus.get('fullname'));
|
||||
});
|
||||
}
|
||||
@ -29014,7 +29069,7 @@ define("converse-dependencies", [
|
||||
converse.features.on('add', this.featureAdded, this);
|
||||
// Features could have been added before the controlbox was
|
||||
// initialized. Currently we're only interested in MUC
|
||||
var feature = converse.features.findWhere({'var': 'http://jabber.org/protocol/muc'});
|
||||
var feature = converse.features.findWhere({'var': Strophe.NS.MUC});
|
||||
if (feature) {
|
||||
this.featureAdded(feature);
|
||||
}
|
||||
@ -29143,7 +29198,7 @@ define("converse-dependencies", [
|
||||
},
|
||||
|
||||
featureAdded: function (feature) {
|
||||
if ((feature.get('var') == 'http://jabber.org/protocol/muc') && (converse.allow_muc)) {
|
||||
if ((feature.get('var') == Strophe.NS.MUC) && (converse.allow_muc)) {
|
||||
this.roomspanel.model.save({muc_domain: feature.get('from')});
|
||||
var $server= this.$el.find('input.new-chatroom-server');
|
||||
if (! $server.is(':focus')) {
|
||||
@ -30092,7 +30147,13 @@ define("converse-dependencies", [
|
||||
var contact_jid, $forwarded, $received, $sent,
|
||||
msgid = $message.attr('id'),
|
||||
chatbox, resource, roster_item,
|
||||
message_from = $message.attr('from');
|
||||
message_from = $message.attr('from'),
|
||||
message_to = $message.attr('to');
|
||||
|
||||
if(!_.contains([converse.connection.jid, converse.bare_jid], message_to)) {
|
||||
// Ignore messages sent to a different resource
|
||||
return true;
|
||||
}
|
||||
if (message_from === converse.connection.jid) {
|
||||
// FIXME: Forwarded messages should be sent to specific resources,
|
||||
// not broadcasted
|
||||
@ -30153,13 +30214,6 @@ define("converse-dependencies", [
|
||||
});
|
||||
}
|
||||
if (msgid && chatbox.messages.findWhere({msgid: msgid})) {
|
||||
// FIXME: There's still a bug here..
|
||||
// If a duplicate message is received just after the chat
|
||||
// box was closed, then it'll open again (due to it being
|
||||
// created here above), with no new messages.
|
||||
// The solution is mostly likely to not let chat boxes show
|
||||
// automatically when they are created, but to require
|
||||
// "show" to be called explicitly.
|
||||
return true; // We already have this message stored.
|
||||
}
|
||||
if (!this.isOnlyChatStateNotification($message) && from !== converse.bare_jid) {
|
||||
@ -30975,7 +31029,7 @@ define("converse-dependencies", [
|
||||
if (contact.showInRoster()) {
|
||||
if (this.model.get('state') === CLOSED) {
|
||||
if (view.$el[0].style.display !== "none") { view.$el.hide(); }
|
||||
if (this.$el[0].style.display === "none") { this.$el.show(); }
|
||||
if (!this.$el.is(':visible')) { this.$el.show(); }
|
||||
} else {
|
||||
if (this.$el[0].style.display !== "block") { this.show(); }
|
||||
}
|
||||
@ -31000,10 +31054,12 @@ define("converse-dependencies", [
|
||||
},
|
||||
|
||||
show: function () {
|
||||
// FIXME: There's a bug here, if show_only_online_users is true
|
||||
// Possible solution, get the group, call _.each and check
|
||||
// showInRoster
|
||||
this.$el.nextUntil('dt').addBack().show();
|
||||
this.$el.show();
|
||||
_.each(this.getAll(), function (contactView) {
|
||||
if (contactView.model.showInRoster()) {
|
||||
contactView.$el.show();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
hide: function () {
|
||||
@ -31321,7 +31377,8 @@ define("converse-dependencies", [
|
||||
t += $(msg).find('item').length*250;
|
||||
return true;
|
||||
},
|
||||
'http://jabber.org/protocol/rosterx', 'message', null);
|
||||
Strophe.NS.ROSTERX, 'message', null
|
||||
);
|
||||
},
|
||||
|
||||
registerPresenceHandler: function () {
|
||||
@ -31716,7 +31773,7 @@ define("converse-dependencies", [
|
||||
* feature-providing Models, not here
|
||||
*/
|
||||
converse.connection.disco.addFeature(Strophe.NS.CHATSTATES);
|
||||
converse.connection.disco.addFeature('http://jabber.org/protocol/rosterx'); // Limited support
|
||||
converse.connection.disco.addFeature(Strophe.NS.ROSTERX); // Limited support
|
||||
converse.connection.disco.addFeature('jabber:x:conference');
|
||||
converse.connection.disco.addFeature('urn:xmpp:carbons:2');
|
||||
converse.connection.disco.addFeature(Strophe.NS.VCARD);
|
||||
@ -31959,7 +32016,7 @@ define("converse-dependencies", [
|
||||
*/
|
||||
var $form= this.$('form'),
|
||||
$stanza = $(stanza),
|
||||
$fields;
|
||||
$fields, $input;
|
||||
$form.empty().append(converse.templates.registration_form({
|
||||
'domain': this.domain,
|
||||
'title': this.title,
|
||||
@ -31967,16 +32024,27 @@ define("converse-dependencies", [
|
||||
}));
|
||||
if (this.form_type == 'xform') {
|
||||
$fields = $stanza.find('field');
|
||||
_.each($fields, $.proxy(function (field) {
|
||||
_.each($fields, function (field) {
|
||||
$form.append(utils.xForm2webForm.bind(this, $(field), $stanza));
|
||||
}, this));
|
||||
}.bind(this));
|
||||
} else {
|
||||
// Show fields
|
||||
_.each(Object.keys(this.fields), $.proxy(function (key) {
|
||||
$form.append('<label>'+key+'</label>');
|
||||
var $input = $('<input placeholder="'+key+'" name="'+key+'"></input>');
|
||||
if (key === 'password' || key === 'email') {
|
||||
$input.attr('type', key);
|
||||
if (key == "username") {
|
||||
$input = templates.form_username({
|
||||
domain: ' @'+this.domain,
|
||||
name: key,
|
||||
type: "text",
|
||||
label: key,
|
||||
value: '',
|
||||
required: 1
|
||||
});
|
||||
} else {
|
||||
$form.append('<label>'+key+'</label>');
|
||||
$input = $('<input placeholder="'+key+'" name="'+key+'"></input>');
|
||||
if (key === 'password' || key === 'email') {
|
||||
$input.attr('type', key);
|
||||
}
|
||||
}
|
||||
$form.append($input);
|
||||
}, this));
|
||||
@ -32052,13 +32120,19 @@ define("converse-dependencies", [
|
||||
return;
|
||||
}
|
||||
var $inputs = $(ev.target).find(':input:not([type=button]):not([type=submit])'),
|
||||
iq = $iq({type: "set"})
|
||||
.c("query", {xmlns:Strophe.NS.REGISTER})
|
||||
.c("x", {xmlns: Strophe.NS.XFORM, type: 'submit'});
|
||||
iq = $iq({type: "set"}).c("query", {xmlns:Strophe.NS.REGISTER});
|
||||
|
||||
$inputs.each(function () {
|
||||
iq.cnode(utils.webForm2xForm(this)).up();
|
||||
});
|
||||
if (this.form_type == 'xform') {
|
||||
iq.c("x", {xmlns: Strophe.NS.XFORM, type: 'submit'});
|
||||
$inputs.each(function () {
|
||||
iq.cnode(utils.webForm2xForm(this)).up();
|
||||
});
|
||||
} else {
|
||||
$inputs.each(function () {
|
||||
var $input = $(this);
|
||||
iq.c($input.attr('name'), {}, $input.val());
|
||||
});
|
||||
}
|
||||
converse.connection._addSysHandler(this._onRegisterIQ.bind(this), null, "iq", null, null);
|
||||
converse.connection.send(iq);
|
||||
this.setFields(iq.tree());
|
||||
@ -32168,8 +32242,14 @@ define("converse-dependencies", [
|
||||
initialize: function (cfg) {
|
||||
cfg.$parent.html(this.$el.html(
|
||||
converse.templates.login_panel({
|
||||
'LOGIN': LOGIN,
|
||||
'ANONYMOUS': ANONYMOUS,
|
||||
'PREBIND': PREBIND,
|
||||
'auto_login': converse.auto_login,
|
||||
'authentication': converse.authentication,
|
||||
'label_username': __('XMPP Username:'),
|
||||
'label_password': __('Password:'),
|
||||
'label_anon_login': __('Click here to log in anonymously'),
|
||||
'label_login': __('Log In')
|
||||
})
|
||||
));
|
||||
@ -32187,8 +32267,12 @@ define("converse-dependencies", [
|
||||
|
||||
authenticate: function (ev) {
|
||||
if (ev && ev.preventDefault) { ev.preventDefault(); }
|
||||
var $form = $(ev.target),
|
||||
$jid_input = $form.find('input[name=jid]'),
|
||||
var $form = $(ev.target);
|
||||
if (converse.authentication === ANONYMOUS) {
|
||||
this.connect($form, converse.jid, null);
|
||||
return;
|
||||
}
|
||||
var $jid_input = $form.find('input[name=jid]'),
|
||||
jid = $jid_input.val(),
|
||||
$pw_input = $form.find('input[name=password]'),
|
||||
password = $pw_input.val(),
|
||||
@ -32217,12 +32301,15 @@ define("converse-dependencies", [
|
||||
},
|
||||
|
||||
connect: function ($form, jid, password) {
|
||||
var resource;
|
||||
if ($form) {
|
||||
$form.find('input[type=submit]').hide().after('<span class="spinner login-submit"/>');
|
||||
}
|
||||
var resource = Strophe.getResourceFromJid(jid);
|
||||
if (!resource) {
|
||||
jid += '/converse.js-' + Math.floor(Math.random()*139749825).toString();
|
||||
if (jid) {
|
||||
resource = Strophe.getResourceFromJid(jid);
|
||||
if (!resource) {
|
||||
jid += '/converse.js-' + Math.floor(Math.random()*139749825).toString();
|
||||
}
|
||||
}
|
||||
converse.connection.connect(jid, password, converse.onConnect);
|
||||
},
|
||||
@ -32355,7 +32442,7 @@ define("converse-dependencies", [
|
||||
rid = this.session.get('rid');
|
||||
sid = this.session.get('sid');
|
||||
jid = this.session.get('jid');
|
||||
if (this.prebind) {
|
||||
if (this.authentication === "prebind") {
|
||||
if (!this.jid) {
|
||||
throw new Error("initConnection: when using 'keepalive' with 'prebind, you must supply the JID of the current user.");
|
||||
}
|
||||
@ -32373,11 +32460,23 @@ define("converse-dependencies", [
|
||||
if (rid && sid && jid) {
|
||||
this.session.save({rid: rid}); // The RID needs to be increased with each request.
|
||||
this.connection.attach(jid, sid, rid, this.onConnect);
|
||||
} else if (this.auto_login) {
|
||||
if (!this.jid) {
|
||||
throw new Error("initConnection: If you use auto_login, you also need to provide a jid value");
|
||||
}
|
||||
if (this.authentication === ANONYMOUS) {
|
||||
this.connection.connect(this.jid, null, this.onConnect);
|
||||
} else if (this.authentication === LOGIN) {
|
||||
if (!this.password) {
|
||||
throw new Error("initConnection: If you use auto_login and "+
|
||||
"authentication='login' then you also need to provide a password.");
|
||||
}
|
||||
this.connection.connect(this.jid, this.password, this.onConnect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Prebind without keepalive
|
||||
} else if (this.prebind) {
|
||||
} else if (this.authentication == "prebind") {
|
||||
// prebind is used without keepalive
|
||||
if (this.jid && this.sid && this.rid) {
|
||||
this.connection.attach(this.jid, this.sid, this.rid, this.onConnect);
|
||||
} else {
|
||||
@ -32531,7 +32630,6 @@ define("converse-dependencies", [
|
||||
converse.connection.roster.add(jid, _.isEmpty(name)? jid: name, [], function (iq) {
|
||||
converse.connection.roster.subscribe(jid, null, converse.xmppstatus.get('fullname'));
|
||||
});
|
||||
return true;
|
||||
}
|
||||
},
|
||||
'chats': {
|
||||
@ -32751,6 +32849,7 @@ require.config({
|
||||
"pl": "locale/pl/LC_MESSAGES/converse.json",
|
||||
"pt_BR": "locale/pt_BR/LC_MESSAGES/converse.json",
|
||||
"ru": "locale/ru/LC_MESSAGES/converse.json",
|
||||
"uk": "locale/uk/LC_MESSAGES/converse.json",
|
||||
"zh": "locale/zh/LC_MESSAGES/converse.json",
|
||||
|
||||
// Templates
|
||||
|
4
builds/converse-no-locales-no-otr.min.js
vendored
4
builds/converse-no-locales-no-otr.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
builds/converse-no-otr.min.js
vendored
4
builds/converse-no-otr.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
builds/converse.min.js
vendored
4
builds/converse.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
builds/converse.nojquery.min.js
vendored
4
builds/converse.nojquery.min.js
vendored
File diff suppressed because one or more lines are too long
4
builds/converse.website-no-otr.min.js
vendored
4
builds/converse.website-no-otr.min.js
vendored
File diff suppressed because one or more lines are too long
4
builds/converse.website.min.js
vendored
4
builds/converse.website.min.js
vendored
File diff suppressed because one or more lines are too long
@ -431,7 +431,7 @@ __p += '\n<div class="input-group">\n <input name="' +
|
||||
((__t = (name)) == null ? '' : __t) +
|
||||
'" type="' +
|
||||
((__t = (type)) == null ? '' : __t) +
|
||||
'" \n ';
|
||||
'"\n ';
|
||||
if (value) { ;
|
||||
__p += ' value="' +
|
||||
((__t = (value)) == null ? '' : __t) +
|
||||
@ -441,7 +441,9 @@ __p += '\n ';
|
||||
if (required) { ;
|
||||
__p += ' class="required" ';
|
||||
} ;
|
||||
__p += ' />\n <span>' +
|
||||
__p += ' />\n <span title="' +
|
||||
((__t = (domain)) == null ? '' : __t) +
|
||||
'">' +
|
||||
((__t = (domain)) == null ? '' : __t) +
|
||||
'</span>\n</div>\n';
|
||||
|
||||
@ -479,15 +481,38 @@ return __p
|
||||
|
||||
this["templates"]["login_panel"] = function(obj) {
|
||||
obj || (obj = {});
|
||||
var __t, __p = '', __e = _.escape;
|
||||
var __t, __p = '', __e = _.escape, __j = Array.prototype.join;
|
||||
function print() { __p += __j.call(arguments, '') }
|
||||
with (obj) {
|
||||
__p += '<form id="converse-login" method="post">\n <label>' +
|
||||
__p += '<form id="converse-login" method="post">\n ';
|
||||
if (auto_login) { ;
|
||||
__p += '\n <span class="spinner login-submit"/>\n ';
|
||||
} ;
|
||||
__p += '\n ';
|
||||
if (!auto_login) { ;
|
||||
__p += '\n ';
|
||||
if (authentication == LOGIN) { ;
|
||||
__p += '\n <label>' +
|
||||
((__t = (label_username)) == null ? '' : __t) +
|
||||
'</label>\n <input type="email" name="jid" placeholder="user@server">\n <label>' +
|
||||
'</label>\n <input name="jid" placeholder="user@server">\n <label>' +
|
||||
((__t = (label_password)) == null ? '' : __t) +
|
||||
'</label>\n <input type="password" name="password" placeholder="password">\n <input class="submit" type="submit" value="' +
|
||||
'</label>\n <input type="password" name="password" placeholder="password">\n <input class="submit" type="submit" value="' +
|
||||
((__t = (label_login)) == null ? '' : __t) +
|
||||
'">\n <span class="conn-feedback"></span>\n</form>\n';
|
||||
'">\n <span class="conn-feedback"></span>\n ';
|
||||
} ;
|
||||
__p += '\n ';
|
||||
if (authentication == ANONYMOUS) { ;
|
||||
__p += '\n <input type="submit" class="submit login-anon" value="' +
|
||||
((__t = (label_anon_login)) == null ? '' : __t) +
|
||||
'"/>\n ';
|
||||
} ;
|
||||
__p += '\n ';
|
||||
if (authentication == PREBIND) { ;
|
||||
__p += '\n <p>Disconnected.</p>\n ';
|
||||
} ;
|
||||
__p += '\n ';
|
||||
} ;
|
||||
__p += '\n</form>\n';
|
||||
|
||||
}
|
||||
return __p
|
||||
|
@ -1260,3 +1260,5 @@
|
||||
margin-left: 0;
|
||||
cursor: n-resize;
|
||||
z-index: 20; }
|
||||
|
||||
/*# sourceMappingURL=converse.css.map */
|
||||
|
File diff suppressed because one or more lines are too long
2
css/converse.min.css
vendored
2
css/converse.min.css
vendored
File diff suppressed because one or more lines are too long
@ -1,12 +1,13 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
0.9.3 (Undefined)
|
||||
-----------------
|
||||
0.9.3 (2015-05-01)
|
||||
------------------
|
||||
|
||||
* Add the ability to log in anonymously. [jcbrand]
|
||||
* Add the ability to log in automatically. [jcbrand]
|
||||
* Remove ``type=email`` from JID field in login form. Resulting validation error confuses people. [jcbrand]
|
||||
* Add Ukranian translations [Andriy Kopystyansky]
|
||||
* #344 Enable the path to the sound files to be configured [thierrytiti and jcbrand]
|
||||
* #370 Unable to register a new user to ejabberd 2.1.11. [gbonvehi]
|
||||
* #372 Some offline users have a visible empty <dd> in the roster. [floriancargoet]
|
||||
|
@ -48,9 +48,9 @@ copyright = u'2014, JC Brand'
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.9.2'
|
||||
version = '0.9.3'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.9.2'
|
||||
release = '0.9.3'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@ -34,6 +34,9 @@ Also make sure you have ``Git`` installed. `Details <http://git-scm.com/book/en/
|
||||
.. note::
|
||||
Windows users should use Chocolatey as recommended above.:
|
||||
|
||||
.. note::
|
||||
Debian & Ubuntu users : apt-get install git npm nodejs-legacy
|
||||
|
||||
Once you have *Node.js* and *git* installed, run the following command inside the Converse.js
|
||||
directory:
|
||||
|
||||
|
@ -151,7 +151,7 @@
|
||||
<li>Custom status messages</li>
|
||||
<li>Typing notifications</li>
|
||||
<li>Third person messages (/me )</li>
|
||||
<li>Translated into 15 languages</li>
|
||||
<li>Translated into 16 languages</li>
|
||||
<li>Off-the-record encryption
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -8,7 +8,7 @@
|
||||
},
|
||||
" e.g. conversejs.org": [
|
||||
null,
|
||||
""
|
||||
"bv. conversejs.org"
|
||||
],
|
||||
"unencrypted": [
|
||||
null,
|
||||
@ -16,7 +16,7 @@
|
||||
],
|
||||
"unverified": [
|
||||
null,
|
||||
"ongeverifieer"
|
||||
"onbevestig"
|
||||
],
|
||||
"verified": [
|
||||
null,
|
||||
@ -50,6 +50,10 @@
|
||||
null,
|
||||
"Hierdie persoon is afwesig"
|
||||
],
|
||||
"Click to hide these contacts": [
|
||||
null,
|
||||
"Kliek om hierdie kontakte te verskuil"
|
||||
],
|
||||
"My contacts": [
|
||||
null,
|
||||
"My kontakte"
|
||||
@ -108,11 +112,11 @@
|
||||
],
|
||||
"Authentication request from %1$s\n\nYour chat contact is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
|
||||
null,
|
||||
"Verifieeringsversoek van %1$s\n\nU gespreksmaat probeer om u identiteit te verifieer, deur die volgende vraag te vra \n\n%2$s"
|
||||
"Identiteitbevestigingsversoek van %1$s\n\nU gespreksmaat probeer om u identiteit te bevestig, deur die volgende vraag te vra \n\n%2$s"
|
||||
],
|
||||
"Could not verify this user's identify.": [
|
||||
null,
|
||||
"Kon nie hierdie gebruiker se identitied verifieer nie."
|
||||
"Kon nie hierdie gebruiker se identitied bevestig nie."
|
||||
],
|
||||
"Exchanging private key with contact.": [
|
||||
null,
|
||||
@ -138,6 +142,10 @@
|
||||
null,
|
||||
"het opgehou tik"
|
||||
],
|
||||
"has gone away": [
|
||||
null,
|
||||
"het weggegaan"
|
||||
],
|
||||
"Show this menu": [
|
||||
null,
|
||||
"Vertoon hierdie keuselys"
|
||||
@ -172,7 +180,7 @@
|
||||
],
|
||||
"You will be prompted to provide a security question and then an answer to that question.\n\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [
|
||||
null,
|
||||
"Daar sal van u verwag word om 'n sekuriteitsvraag te stel, en dan ook die antwoord tot daardie vraag te verskaf.\n\nU gespreksmaat sal dan daardie vraag gestel word, en indien hulle presies dieselfde antwoord (lw. hoofletters tel) verskaf, sal hul identiteit geverifieer wees."
|
||||
"Daar sal van u verwag word om 'n sekuriteitsvraag te stel, en dan ook die antwoord tot daardie vraag te verskaf.\n\nU gespreksmaat sal dan daardie vraag gestel word, en indien hulle presies dieselfde antwoord (lw. hoofletters tel) verskaf, sal hul identiteit bevestig wees."
|
||||
],
|
||||
"What is your security question?": [
|
||||
null,
|
||||
@ -186,6 +194,14 @@
|
||||
null,
|
||||
"Ongeldige verifikasiemetode verskaf"
|
||||
],
|
||||
"has gone offline": [
|
||||
null,
|
||||
"is nou aflyn"
|
||||
],
|
||||
"is busy": [
|
||||
null,
|
||||
"is besig"
|
||||
],
|
||||
"Your messages are not encrypted anymore": [
|
||||
null,
|
||||
"U boodskappe is nie meer versleutel nie"
|
||||
@ -196,7 +212,7 @@
|
||||
],
|
||||
"Your contact's identify has been verified.": [
|
||||
null,
|
||||
"U gespreksmaat se identiteit is geverifieer."
|
||||
"U gespreksmaat se identiteit is bevestig."
|
||||
],
|
||||
"Your contact has ended encryption on their end, you should do the same.": [
|
||||
null,
|
||||
@ -212,7 +228,7 @@
|
||||
],
|
||||
"Your messages are encrypted and your contact verified.": [
|
||||
null,
|
||||
"U boodskappe is versleutel en u gespreksmaat se identiteit geverifieer."
|
||||
"U boodskappe is versleutel en u gespreksmaat se identiteit bevestig."
|
||||
],
|
||||
"Your contact has closed their end of the private session, you should do the same": [
|
||||
null,
|
||||
@ -244,11 +260,11 @@
|
||||
],
|
||||
"Verify with fingerprints": [
|
||||
null,
|
||||
"Verifieer met vingerafdrukke"
|
||||
"Bevestig met vingerafdrukke"
|
||||
],
|
||||
"Verify with SMP": [
|
||||
null,
|
||||
"Verifieer met SMP"
|
||||
"Bevestig met SMP"
|
||||
],
|
||||
"What's this?": [
|
||||
null,
|
||||
@ -270,6 +286,10 @@
|
||||
null,
|
||||
"Afgemeld"
|
||||
],
|
||||
"Log out": [
|
||||
null,
|
||||
"Meld af"
|
||||
],
|
||||
"Contact name": [
|
||||
null,
|
||||
"Kontaknaam"
|
||||
@ -314,6 +334,10 @@
|
||||
null,
|
||||
"Bediener"
|
||||
],
|
||||
"Join Room": [
|
||||
null,
|
||||
"Betree kamer"
|
||||
],
|
||||
"Show rooms": [
|
||||
null,
|
||||
"Wys kamers"
|
||||
@ -438,6 +462,10 @@
|
||||
null,
|
||||
"Verban gebruiker uit hierdie kletskamer"
|
||||
],
|
||||
"Change user role to participant": [
|
||||
null,
|
||||
"Verander gebruikersrol na deelnemer"
|
||||
],
|
||||
"Kick user from room": [
|
||||
null,
|
||||
"Skop gebruiker uit hierdie kletskamer"
|
||||
@ -448,7 +476,7 @@
|
||||
],
|
||||
"Grant membership to a user": [
|
||||
null,
|
||||
""
|
||||
"Verleen lidmaatskap aan 'n gebruiker"
|
||||
],
|
||||
"Remove user's ability to post messages": [
|
||||
null,
|
||||
@ -460,11 +488,15 @@
|
||||
],
|
||||
"Grant moderator role to user": [
|
||||
null,
|
||||
""
|
||||
"Verleen moderator rol aan gebruiker"
|
||||
],
|
||||
"Grant ownership of this room": [
|
||||
null,
|
||||
"Verleen eienaarskap van hierdie kamer"
|
||||
],
|
||||
"Revoke user's membership": [
|
||||
null,
|
||||
""
|
||||
"Herroep gebruiker se lidmaatskap"
|
||||
],
|
||||
"Set room topic": [
|
||||
null,
|
||||
@ -562,6 +594,10 @@
|
||||
null,
|
||||
"<strong>%1$s</strong> is verban"
|
||||
],
|
||||
"<strong>%1$s</strong>'s nickname has changed": [
|
||||
null,
|
||||
"<strong>%1$s</strong> se bynaam het verander"
|
||||
],
|
||||
"<strong>%1$s</strong> has been kicked out": [
|
||||
null,
|
||||
"<strong>%1$s</strong> is uitgeskop"
|
||||
@ -638,6 +674,14 @@
|
||||
null,
|
||||
"Kliek om hierdie kontak te verwyder"
|
||||
],
|
||||
"Click to accept this contact request": [
|
||||
null,
|
||||
"Kliek om hierdie kontakversoek te aanvaar"
|
||||
],
|
||||
"Click to decline this contact request": [
|
||||
null,
|
||||
"Kliek om hierdie kontakversoek te weier"
|
||||
],
|
||||
"Click to chat with this contact": [
|
||||
null,
|
||||
"Kliek om met hierdie kontak te klets"
|
||||
@ -742,6 +786,10 @@
|
||||
null,
|
||||
"Wagwoord"
|
||||
],
|
||||
"Click here to log in anonymously": [
|
||||
null,
|
||||
"Kliek hier om anoniem aan te meld"
|
||||
],
|
||||
"Log In": [
|
||||
null,
|
||||
"Meld aan"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -9,23 +9,23 @@
|
||||
},
|
||||
" e.g. conversejs.org": [
|
||||
null,
|
||||
""
|
||||
"z. B. conversejs.org"
|
||||
],
|
||||
"unencrypted": [
|
||||
null,
|
||||
""
|
||||
"unverschlüsselt"
|
||||
],
|
||||
"unverified": [
|
||||
null,
|
||||
""
|
||||
"unbestätigt"
|
||||
],
|
||||
"verified": [
|
||||
null,
|
||||
""
|
||||
"bestätigt"
|
||||
],
|
||||
"finished": [
|
||||
null,
|
||||
""
|
||||
"erledigt"
|
||||
],
|
||||
"This contact is busy": [
|
||||
null,
|
||||
@ -51,6 +51,10 @@
|
||||
null,
|
||||
"Dieser Kontakt ist abwesend"
|
||||
],
|
||||
"Click to hide these contacts": [
|
||||
null,
|
||||
"Hier klicken um diesen Kontakte zu verstecken"
|
||||
],
|
||||
"My contacts": [
|
||||
null,
|
||||
"Meine Kontakte"
|
||||
@ -391,6 +395,10 @@
|
||||
null,
|
||||
""
|
||||
],
|
||||
"Occupants": [
|
||||
null,
|
||||
"Teilnehmer"
|
||||
],
|
||||
"You are about to invite %1$s to the chat room \"%2$s\". ": [
|
||||
null,
|
||||
""
|
||||
@ -411,10 +419,22 @@
|
||||
null,
|
||||
""
|
||||
],
|
||||
"Ban user from room": [
|
||||
null,
|
||||
"Verbanne einen Benutzer aus dem Raum."
|
||||
],
|
||||
"Change user role to participant": [
|
||||
null,
|
||||
""
|
||||
],
|
||||
"Kick user from room": [
|
||||
null,
|
||||
"Werfe einen Benutzer aus dem Raum."
|
||||
],
|
||||
"Write in 3rd person": [
|
||||
null,
|
||||
"In der dritten Person schreiben"
|
||||
],
|
||||
"Grant membership to a user": [
|
||||
null,
|
||||
""
|
||||
@ -435,6 +455,10 @@
|
||||
null,
|
||||
""
|
||||
],
|
||||
"Set room topic": [
|
||||
null,
|
||||
"Chatraum Thema festlegen"
|
||||
],
|
||||
"Allow muted user to post messages": [
|
||||
null,
|
||||
""
|
||||
@ -673,12 +697,16 @@
|
||||
],
|
||||
"Return": [
|
||||
null,
|
||||
""
|
||||
"Zurück"
|
||||
],
|
||||
"The provider rejected your registration attempt. ": [
|
||||
null,
|
||||
""
|
||||
],
|
||||
"XMPP Username:": [
|
||||
null,
|
||||
"XMPP Benutzername"
|
||||
],
|
||||
"Password:": [
|
||||
null,
|
||||
"Passwort:"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
804
locale/uk/LC_MESSAGES/converse.json
Normal file
804
locale/uk/LC_MESSAGES/converse.json
Normal file
@ -0,0 +1,804 @@
|
||||
{
|
||||
"domain": "converse",
|
||||
"locale_data": {
|
||||
"converse": {
|
||||
"": {
|
||||
"domain": "converse",
|
||||
"plural_forms": "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);",
|
||||
"lang": "uk"
|
||||
},
|
||||
" e.g. conversejs.org": [
|
||||
null,
|
||||
" напр. conversejs.org"
|
||||
],
|
||||
"unencrypted": [
|
||||
null,
|
||||
"некриптовано"
|
||||
],
|
||||
"unverified": [
|
||||
null,
|
||||
"неперевірено"
|
||||
],
|
||||
"verified": [
|
||||
null,
|
||||
"перевірено"
|
||||
],
|
||||
"finished": [
|
||||
null,
|
||||
"завершено"
|
||||
],
|
||||
"This contact is busy": [
|
||||
null,
|
||||
"Цей контакт зайнятий"
|
||||
],
|
||||
"This contact is online": [
|
||||
null,
|
||||
"Цей контакт на зв'язку"
|
||||
],
|
||||
"This contact is offline": [
|
||||
null,
|
||||
"Цей контакт поза мережею"
|
||||
],
|
||||
"This contact is unavailable": [
|
||||
null,
|
||||
"Цей контакт недоступний"
|
||||
],
|
||||
"This contact is away for an extended period": [
|
||||
null,
|
||||
"Цей контакт відсутній тривалий час"
|
||||
],
|
||||
"This contact is away": [
|
||||
null,
|
||||
"Цей контакт відсутній"
|
||||
],
|
||||
"Click to hide these contacts": [
|
||||
null,
|
||||
"Клацніть, щоб приховати ці контакти"
|
||||
],
|
||||
"My contacts": [
|
||||
null,
|
||||
"Мої контакти"
|
||||
],
|
||||
"Pending contacts": [
|
||||
null,
|
||||
"Контакти в очікуванні"
|
||||
],
|
||||
"Contact requests": [
|
||||
null,
|
||||
"Запити контакту"
|
||||
],
|
||||
"Ungrouped": [
|
||||
null,
|
||||
"Негруповані"
|
||||
],
|
||||
"Contacts": [
|
||||
null,
|
||||
"Контакти"
|
||||
],
|
||||
"Groups": [
|
||||
null,
|
||||
"Групи"
|
||||
],
|
||||
"Reconnecting": [
|
||||
null,
|
||||
"Перепід'єднуюсь"
|
||||
],
|
||||
"Error": [
|
||||
null,
|
||||
"Помилка"
|
||||
],
|
||||
"Connecting": [
|
||||
null,
|
||||
"Під'єднуюсь"
|
||||
],
|
||||
"Authenticating": [
|
||||
null,
|
||||
"Автентикуюсь"
|
||||
],
|
||||
"Authentication Failed": [
|
||||
null,
|
||||
"Автентикація невдала"
|
||||
],
|
||||
"Re-establishing encrypted session": [
|
||||
null,
|
||||
"Перевстановлюю криптований сеанс"
|
||||
],
|
||||
"Generating private key.": [
|
||||
null,
|
||||
"Генерація приватного ключа."
|
||||
],
|
||||
"Your browser might become unresponsive.": [
|
||||
null,
|
||||
"Ваш браузер може підвиснути."
|
||||
],
|
||||
"Authentication request from %1$s\n\nYour chat contact is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
|
||||
null,
|
||||
"Запит автентикації від %1$s\n\nВаш контакт в чаті намагається встановити Вашу особу і просить відповісти на питання нижче.\n\n%2$s"
|
||||
],
|
||||
"Could not verify this user's identify.": [
|
||||
null,
|
||||
"Не можу перевірити автентичність цього користувача."
|
||||
],
|
||||
"Exchanging private key with contact.": [
|
||||
null,
|
||||
"Обмін приватним ключем з контактом."
|
||||
],
|
||||
"Personal message": [
|
||||
null,
|
||||
"Персональна вісточка"
|
||||
],
|
||||
"Are you sure you want to clear the messages from this room?": [
|
||||
null,
|
||||
"Ви впевнені, що хочете очистити повідомлення з цієї кімнати?"
|
||||
],
|
||||
"me": [
|
||||
null,
|
||||
"я"
|
||||
],
|
||||
"is typing": [
|
||||
null,
|
||||
"друкує"
|
||||
],
|
||||
"has stopped typing": [
|
||||
null,
|
||||
"припинив друкувати"
|
||||
],
|
||||
"has gone away": [
|
||||
null,
|
||||
"пішов геть"
|
||||
],
|
||||
"Show this menu": [
|
||||
null,
|
||||
"Показати це меню"
|
||||
],
|
||||
"Write in the third person": [
|
||||
null,
|
||||
"Писати від третьої особи"
|
||||
],
|
||||
"Remove messages": [
|
||||
null,
|
||||
"Видалити повідомлення"
|
||||
],
|
||||
"Are you sure you want to clear the messages from this chat box?": [
|
||||
null,
|
||||
"Ви впевнені, що хочете очистити повідомлення з цього вікна чату?"
|
||||
],
|
||||
"Your message could not be sent": [
|
||||
null,
|
||||
"Ваше повідомлення не може бути надіслане"
|
||||
],
|
||||
"We received an unencrypted message": [
|
||||
null,
|
||||
"Ми отримали некриптоване повідомлення"
|
||||
],
|
||||
"We received an unreadable encrypted message": [
|
||||
null,
|
||||
"Ми отримали нечитабельне криптоване повідомлення"
|
||||
],
|
||||
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
|
||||
null,
|
||||
"Ось відбитки, будь-ласка, підтвердіть їх з %1$s, за межами цього чату.\n\nВідбиток для Вас, %2$s: %3$s\n\nВідбиток для %1$s: %4$s\n\nЯкщо Ви підтверджуєте відповідність відбитка, клацніть Гаразд, інакше клацніть Відміна."
|
||||
],
|
||||
"You will be prompted to provide a security question and then an answer to that question.\n\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [
|
||||
null,
|
||||
"Вас запитають таємне питання і відповідь на нього.\n\nПотім Вашого контакта запитають те саме питання, і якщо вони введуть ту саму відповідь (враховуючи регістр), їх особи будуть перевірені."
|
||||
],
|
||||
"What is your security question?": [
|
||||
null,
|
||||
"Яке Ваше таємне питання?"
|
||||
],
|
||||
"What is the answer to the security question?": [
|
||||
null,
|
||||
"Яка відповідь на таємне питання?"
|
||||
],
|
||||
"Invalid authentication scheme provided": [
|
||||
null,
|
||||
"Надана некоректна схема автентикації"
|
||||
],
|
||||
"has gone offline": [
|
||||
null,
|
||||
"тепер поза мережею"
|
||||
],
|
||||
"is busy": [
|
||||
null,
|
||||
"зайнятий"
|
||||
],
|
||||
"Your messages are not encrypted anymore": [
|
||||
null,
|
||||
"Ваші повідомлення більше не криптуються"
|
||||
],
|
||||
"Your messages are now encrypted but your contact's identity has not been verified.": [
|
||||
null,
|
||||
"Ваші повідомлення вже криптуються, але особа Вашого контакту не перевірена."
|
||||
],
|
||||
"Your contact's identify has been verified.": [
|
||||
null,
|
||||
"Особу Вашого контакту перевірено."
|
||||
],
|
||||
"Your contact has ended encryption on their end, you should do the same.": [
|
||||
null,
|
||||
"Ваш контакт припинив криптування зі свого боку, Вам слід зробити те саме."
|
||||
],
|
||||
"Your messages are not encrypted. Click here to enable OTR encryption.": [
|
||||
null,
|
||||
"Ваші повідомлення не криптуються. Клацніть тут, щоб увімкнути OTR-криптування."
|
||||
],
|
||||
"Your messages are encrypted, but your contact has not been verified.": [
|
||||
null,
|
||||
"Ваші повідомлення криптуються, але Ваш контакт не був перевірений."
|
||||
],
|
||||
"Your messages are encrypted and your contact verified.": [
|
||||
null,
|
||||
"Ваші повідомлення криптуються і Ваш контакт перевірено."
|
||||
],
|
||||
"Your contact has closed their end of the private session, you should do the same": [
|
||||
null,
|
||||
"Ваш контакт закрив зі свого боку приватну сесію, Вам слід зробити те ж саме"
|
||||
],
|
||||
"Clear all messages": [
|
||||
null,
|
||||
"Очистити всі повідомлення"
|
||||
],
|
||||
"End encrypted conversation": [
|
||||
null,
|
||||
"Завершити криптовану розмову"
|
||||
],
|
||||
"Hide the list of participants": [
|
||||
null,
|
||||
"Сховати список учасників"
|
||||
],
|
||||
"Refresh encrypted conversation": [
|
||||
null,
|
||||
"Оновити криптовану розмову"
|
||||
],
|
||||
"Start a call": [
|
||||
null,
|
||||
"Почати виклик"
|
||||
],
|
||||
"Start encrypted conversation": [
|
||||
null,
|
||||
"Почати криптовану розмову"
|
||||
],
|
||||
"Verify with fingerprints": [
|
||||
null,
|
||||
"Перевірити за відбитками"
|
||||
],
|
||||
"Verify with SMP": [
|
||||
null,
|
||||
"Перевірити за SMP"
|
||||
],
|
||||
"What's this?": [
|
||||
null,
|
||||
"Що це?"
|
||||
],
|
||||
"Online": [
|
||||
null,
|
||||
"На зв'язку"
|
||||
],
|
||||
"Busy": [
|
||||
null,
|
||||
"Зайнятий"
|
||||
],
|
||||
"Away": [
|
||||
null,
|
||||
"Далеко"
|
||||
],
|
||||
"Offline": [
|
||||
null,
|
||||
"Поза мережею"
|
||||
],
|
||||
"Log out": [
|
||||
null,
|
||||
"Вийти"
|
||||
],
|
||||
"Contact name": [
|
||||
null,
|
||||
"Назва контакту"
|
||||
],
|
||||
"Search": [
|
||||
null,
|
||||
"Пошук"
|
||||
],
|
||||
"Contact username": [
|
||||
null,
|
||||
"Логін контакту"
|
||||
],
|
||||
"Add": [
|
||||
null,
|
||||
"Додати"
|
||||
],
|
||||
"Click to add new chat contacts": [
|
||||
null,
|
||||
"Клацніть, щоб додати нові контакти до чату"
|
||||
],
|
||||
"Add a contact": [
|
||||
null,
|
||||
"Додати контакт"
|
||||
],
|
||||
"No users found": [
|
||||
null,
|
||||
"Жодного користувача не знайдено"
|
||||
],
|
||||
"Click to add as a chat contact": [
|
||||
null,
|
||||
"Клацніть, щоб додати як чат-контакт"
|
||||
],
|
||||
"Room name": [
|
||||
null,
|
||||
"Назва кімнати"
|
||||
],
|
||||
"Nickname": [
|
||||
null,
|
||||
"Прізвисько"
|
||||
],
|
||||
"Server": [
|
||||
null,
|
||||
"Сервер"
|
||||
],
|
||||
"Join Room": [
|
||||
null,
|
||||
"Приєднатися до кімнати"
|
||||
],
|
||||
"Show rooms": [
|
||||
null,
|
||||
"Показати кімнати"
|
||||
],
|
||||
"Rooms": [
|
||||
null,
|
||||
"Кімнати"
|
||||
],
|
||||
"No rooms on %1$s": [
|
||||
null,
|
||||
"Жодної кімнати на %1$s"
|
||||
],
|
||||
"Rooms on %1$s": [
|
||||
null,
|
||||
"Кімнати на %1$s"
|
||||
],
|
||||
"Click to open this room": [
|
||||
null,
|
||||
"Клацніть, щоб увійти в цю кімнату"
|
||||
],
|
||||
"Show more information on this room": [
|
||||
null,
|
||||
"Показати більше інформації про цю кімату"
|
||||
],
|
||||
"Description:": [
|
||||
null,
|
||||
"Опис:"
|
||||
],
|
||||
"Occupants:": [
|
||||
null,
|
||||
"Присутні:"
|
||||
],
|
||||
"Features:": [
|
||||
null,
|
||||
"Особливості:"
|
||||
],
|
||||
"Requires authentication": [
|
||||
null,
|
||||
"Вимагає автентикації"
|
||||
],
|
||||
"Hidden": [
|
||||
null,
|
||||
"Прихована"
|
||||
],
|
||||
"Requires an invitation": [
|
||||
null,
|
||||
"Вимагає запрошення"
|
||||
],
|
||||
"Moderated": [
|
||||
null,
|
||||
"Модерована"
|
||||
],
|
||||
"Non-anonymous": [
|
||||
null,
|
||||
"Не-анонімні"
|
||||
],
|
||||
"Open room": [
|
||||
null,
|
||||
"Увійти в кімнату"
|
||||
],
|
||||
"Permanent room": [
|
||||
null,
|
||||
"Постійна кімната"
|
||||
],
|
||||
"Public": [
|
||||
null,
|
||||
"Публічна"
|
||||
],
|
||||
"Semi-anonymous": [
|
||||
null,
|
||||
"Напів-анонімна"
|
||||
],
|
||||
"Temporary room": [
|
||||
null,
|
||||
"Тимчасова кімната"
|
||||
],
|
||||
"Unmoderated": [
|
||||
null,
|
||||
"Немодерована"
|
||||
],
|
||||
"This user is a moderator": [
|
||||
null,
|
||||
"Цей користувач є модератором"
|
||||
],
|
||||
"This user can send messages in this room": [
|
||||
null,
|
||||
"Цей користувач може слати повідомлення в цій кімнаті"
|
||||
],
|
||||
"This user can NOT send messages in this room": [
|
||||
null,
|
||||
"Цей користувач НЕ МОЖЕ слати повідомлення в цій кімнаті"
|
||||
],
|
||||
"Invite...": [
|
||||
null,
|
||||
"Запросіть..."
|
||||
],
|
||||
"Occupants": [
|
||||
null,
|
||||
"Учасники"
|
||||
],
|
||||
"You are about to invite %1$s to the chat room \"%2$s\". ": [
|
||||
null,
|
||||
"Ви запрошуєте %1$s до чату \"%2$s\". "
|
||||
],
|
||||
"You may optionally include a message, explaining the reason for the invitation.": [
|
||||
null,
|
||||
"Ви можете опціонально додати повідомлення, щоб пояснити причину запрошення."
|
||||
],
|
||||
"Message": [
|
||||
null,
|
||||
"Повідомлення"
|
||||
],
|
||||
"Error: could not execute the command": [
|
||||
null,
|
||||
"Помилка: Не можу виконати команду"
|
||||
],
|
||||
"Change user's affiliation to admin": [
|
||||
null,
|
||||
"Призначити користувача адміністратором"
|
||||
],
|
||||
"Ban user from room": [
|
||||
null,
|
||||
"Заблокувати і викинути з кімнати"
|
||||
],
|
||||
"Change user role to participant": [
|
||||
null,
|
||||
"Зробити користувача учасником"
|
||||
],
|
||||
"Kick user from room": [
|
||||
null,
|
||||
"Викинути з кімнати"
|
||||
],
|
||||
"Write in 3rd person": [
|
||||
null,
|
||||
"Писати в 3-й особі"
|
||||
],
|
||||
"Grant membership to a user": [
|
||||
null,
|
||||
"Надати членство користувачу"
|
||||
],
|
||||
"Remove user's ability to post messages": [
|
||||
null,
|
||||
"Забрати можливість слати повідомлення"
|
||||
],
|
||||
"Change your nickname": [
|
||||
null,
|
||||
"Змінити Ваше прізвисько"
|
||||
],
|
||||
"Grant moderator role to user": [
|
||||
null,
|
||||
"Надати права модератора"
|
||||
],
|
||||
"Grant ownership of this room": [
|
||||
null,
|
||||
"Передати у власність цю кімнату"
|
||||
],
|
||||
"Revoke user's membership": [
|
||||
null,
|
||||
"Забрати членство в користувача"
|
||||
],
|
||||
"Set room topic": [
|
||||
null,
|
||||
"Встановити тему кімнати"
|
||||
],
|
||||
"Allow muted user to post messages": [
|
||||
null,
|
||||
"Дозволити безголосому користувачу слати повідомлення"
|
||||
],
|
||||
"Save": [
|
||||
null,
|
||||
"Зберегти"
|
||||
],
|
||||
"Cancel": [
|
||||
null,
|
||||
"Відміна"
|
||||
],
|
||||
"An error occurred while trying to save the form.": [
|
||||
null,
|
||||
"Трапилася помилка при спробі зберегти форму."
|
||||
],
|
||||
"This chatroom requires a password": [
|
||||
null,
|
||||
"Ця кімната вимагає пароль"
|
||||
],
|
||||
"Password: ": [
|
||||
null,
|
||||
"Пароль:"
|
||||
],
|
||||
"Submit": [
|
||||
null,
|
||||
"Надіслати"
|
||||
],
|
||||
"This room is not anonymous": [
|
||||
null,
|
||||
"Ця кімната не є анонімною"
|
||||
],
|
||||
"This room now shows unavailable members": [
|
||||
null,
|
||||
"Ця кімната вже показує недоступних учасників"
|
||||
],
|
||||
"This room does not show unavailable members": [
|
||||
null,
|
||||
"Ця кімната не показує недоступних учасників"
|
||||
],
|
||||
"Non-privacy-related room configuration has changed": [
|
||||
null,
|
||||
"Змінено конфігурацію кімнати, не повязану з приватністю"
|
||||
],
|
||||
"Room logging is now enabled": [
|
||||
null,
|
||||
"Журналювання кімнати тепер ввімкнено"
|
||||
],
|
||||
"Room logging is now disabled": [
|
||||
null,
|
||||
"Журналювання кімнати тепер вимкнено"
|
||||
],
|
||||
"This room is now non-anonymous": [
|
||||
null,
|
||||
"Ця кімната тепер не-анонімна"
|
||||
],
|
||||
"This room is now semi-anonymous": [
|
||||
null,
|
||||
"Ця кімната тепер напів-анонімна"
|
||||
],
|
||||
"This room is now fully-anonymous": [
|
||||
null,
|
||||
"Ця кімната тепер повністю анонімна"
|
||||
],
|
||||
"A new room has been created": [
|
||||
null,
|
||||
"Створено нову кімнату"
|
||||
],
|
||||
"You have been banned from this room": [
|
||||
null,
|
||||
"Вам заблокували доступ до цієї кімнати"
|
||||
],
|
||||
"You have been kicked from this room": [
|
||||
null,
|
||||
"Вас викинули з цієї кімнати"
|
||||
],
|
||||
"You have been removed from this room because of an affiliation change": [
|
||||
null,
|
||||
"Вас видалено з кімнати у зв'язку зі змінами власності кімнати"
|
||||
],
|
||||
"You have been removed from this room because the room has changed to members-only and you're not a member": [
|
||||
null,
|
||||
"Вас видалено з цієї кімнати, оскільки вона тепер вимагає членства, а Ви ним не є її членом"
|
||||
],
|
||||
"You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
|
||||
null,
|
||||
"Вас видалено з цієї кімнати, тому що MUC (Чат-сервіс) припиняє роботу."
|
||||
],
|
||||
"<strong>%1$s</strong> has been banned": [
|
||||
null,
|
||||
"<strong>%1$s</strong> заблоковано"
|
||||
],
|
||||
"<strong>%1$s</strong>'s nickname has changed": [
|
||||
null,
|
||||
"Прізвисько <strong>%1$s</strong> змінено"
|
||||
],
|
||||
"<strong>%1$s</strong> has been kicked out": [
|
||||
null,
|
||||
"<strong>%1$s</strong> було викинуто звідси"
|
||||
],
|
||||
"<strong>%1$s</strong> has been removed because of an affiliation change": [
|
||||
null,
|
||||
"<strong>%1$s</strong> було видалено через зміни власності кімнати"
|
||||
],
|
||||
"<strong>%1$s</strong> has been removed for not being a member": [
|
||||
null,
|
||||
"<strong>%1$s</strong> було виделано через відсутність членства"
|
||||
],
|
||||
"Your nickname has been automatically changed to: <strong>%1$s</strong>": [
|
||||
null,
|
||||
"Ваше прізвисько було автоматично змінене на: <strong>%1$s</strong>"
|
||||
],
|
||||
"Your nickname has been changed to: <strong>%1$s</strong>": [
|
||||
null,
|
||||
"Ваше прізвисько було змінене на: <strong>%1$s</strong>"
|
||||
],
|
||||
"The reason given is: \"": [
|
||||
null,
|
||||
"Причиною вказано: \""
|
||||
],
|
||||
"You are not on the member list of this room": [
|
||||
null,
|
||||
"Ви не є у списку членів цієї кімнати"
|
||||
],
|
||||
"No nickname was specified": [
|
||||
null,
|
||||
"Не вказане прізвисько"
|
||||
],
|
||||
"You are not allowed to create new rooms": [
|
||||
null,
|
||||
"Вам не дозволено створювати нові кімнати"
|
||||
],
|
||||
"Your nickname doesn't conform to this room's policies": [
|
||||
null,
|
||||
"Ваше прізвисько не відповідає політиці кімнати"
|
||||
],
|
||||
"Your nickname is already taken": [
|
||||
null,
|
||||
"Таке прізвисько вже зайняте"
|
||||
],
|
||||
"This room does not (yet) exist": [
|
||||
null,
|
||||
"Такої кімнати (поки) не існує"
|
||||
],
|
||||
"This room has reached it's maximum number of occupants": [
|
||||
null,
|
||||
"Ця кімната досягнула максимуму учасників"
|
||||
],
|
||||
"Topic set by %1$s to: %2$s": [
|
||||
null,
|
||||
"Тема встановлена %1$s: %2$s"
|
||||
],
|
||||
"%1$s has invited you to join a chat room: %2$s": [
|
||||
null,
|
||||
"%1$s запрошує вас приєднатись до чату: %2$s"
|
||||
],
|
||||
"%1$s has invited you to join a chat room: %2$s, and left the following reason: \"%3$s\"": [
|
||||
null,
|
||||
"%1$s запрошує Вас приєднатись до чату: %2$s, аргументує ось як: \"%3$s\""
|
||||
],
|
||||
"Click to restore this chat": [
|
||||
null,
|
||||
"Клацніть, щоб відновити цей чат"
|
||||
],
|
||||
"Minimized": [
|
||||
null,
|
||||
"Мінімізовано"
|
||||
],
|
||||
"Click to remove this contact": [
|
||||
null,
|
||||
"Клацніть, щоб видалити цей контакт"
|
||||
],
|
||||
"Click to accept this contact request": [
|
||||
null,
|
||||
"Клацніть, щоб прийняти цей запит контакту"
|
||||
],
|
||||
"Click to decline this contact request": [
|
||||
null,
|
||||
"Клацніть, щоб відхилити цей запит контакту"
|
||||
],
|
||||
"Click to chat with this contact": [
|
||||
null,
|
||||
"Клацніть, щоб почати розмову з цим контактом"
|
||||
],
|
||||
"Are you sure you want to remove this contact?": [
|
||||
null,
|
||||
"Ви впевнені, що хочете видалити цей контакт?"
|
||||
],
|
||||
"Are you sure you want to decline this contact request?": [
|
||||
null,
|
||||
"Ви впевнені, що хочете відхилити цей запит контакту?"
|
||||
],
|
||||
"Type to filter": [
|
||||
null,
|
||||
"Друкуйте для фільтру"
|
||||
],
|
||||
"I am %1$s": [
|
||||
null,
|
||||
"Я %1$s"
|
||||
],
|
||||
"Click here to write a custom status message": [
|
||||
null,
|
||||
"Клацніть тут, щоб створити власний статус"
|
||||
],
|
||||
"Click to change your chat status": [
|
||||
null,
|
||||
"Клацніть, щоб змінити статус в чаті"
|
||||
],
|
||||
"Custom status": [
|
||||
null,
|
||||
"Власний статус"
|
||||
],
|
||||
"online": [
|
||||
null,
|
||||
"на зв'язку"
|
||||
],
|
||||
"busy": [
|
||||
null,
|
||||
"зайнятий"
|
||||
],
|
||||
"away for long": [
|
||||
null,
|
||||
"давно відсутній"
|
||||
],
|
||||
"away": [
|
||||
null,
|
||||
"відсутній"
|
||||
],
|
||||
"Your XMPP provider's domain name:": [
|
||||
null,
|
||||
"Домен Вашого провайдера XMPP:"
|
||||
],
|
||||
"Fetch registration form": [
|
||||
null,
|
||||
"Отримати форму реєстрації"
|
||||
],
|
||||
"Tip: A list of public XMPP providers is available": [
|
||||
null,
|
||||
"Порада: доступний перелік публічних XMPP-провайдерів"
|
||||
],
|
||||
"here": [
|
||||
null,
|
||||
"тут"
|
||||
],
|
||||
"Register": [
|
||||
null,
|
||||
"Реєстрація"
|
||||
],
|
||||
"Sorry, the given provider does not support in band account registration. Please try with a different provider.": [
|
||||
null,
|
||||
"Вибачте, вказаний провайдер не підтримує реєстрації онлайн. Спробуйте іншого провайдера."
|
||||
],
|
||||
"Requesting a registration form from the XMPP server": [
|
||||
null,
|
||||
"Запитую форму реєстрації з XMPP сервера"
|
||||
],
|
||||
"Something went wrong while establishing a connection with \"%1$s\". Are you sure it exists?": [
|
||||
null,
|
||||
"Щось пішло не так при встановленні зв'язку з \"%1$s\". Ви впевнені, що такий існує?"
|
||||
],
|
||||
"Now logging you in": [
|
||||
null,
|
||||
"Входимо"
|
||||
],
|
||||
"Registered successfully": [
|
||||
null,
|
||||
"Успішно зареєстровано"
|
||||
],
|
||||
"Return": [
|
||||
null,
|
||||
"Вернутися"
|
||||
],
|
||||
"The provider rejected your registration attempt. ": [
|
||||
null,
|
||||
"Провайдер відхилив Вашу спробу реєстрації."
|
||||
],
|
||||
"XMPP Username:": [
|
||||
null,
|
||||
"XMPP адреса:"
|
||||
],
|
||||
"Password:": [
|
||||
null,
|
||||
"Пароль:"
|
||||
],
|
||||
"Log In": [
|
||||
null,
|
||||
"Ввійти"
|
||||
],
|
||||
"Sign in": [
|
||||
null,
|
||||
"Вступити"
|
||||
],
|
||||
"Toggle chat": [
|
||||
null,
|
||||
"Включити чат"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
890
locale/uk/LC_MESSAGES/converse.po
Normal file
890
locale/uk/LC_MESSAGES/converse.po
Normal file
@ -0,0 +1,890 @@
|
||||
# Ukrainian translations for Converse.js package.
|
||||
# Copyright (C) 2015 Jan-Carel Brand
|
||||
# This file is distributed under the same license as the Converse.js package.
|
||||
# Andriy Kopystyansky <anri@polynet.lviv.ua>, 2015.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Converse.js 0.7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-05-01 12:26+0200\n"
|
||||
"PO-Revision-Date: 2015-04-28 13:39+0200\n"
|
||||
"Last-Translator: Andriy Kopystyansky <anri@polynet.lviv.ua>\n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"domain: converse\n"
|
||||
"lang: uk\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: converse.js:254
|
||||
msgid " e.g. conversejs.org"
|
||||
msgstr " напр. conversejs.org"
|
||||
|
||||
#: converse.js:331
|
||||
msgid "unencrypted"
|
||||
msgstr "некриптовано"
|
||||
|
||||
#: converse.js:332
|
||||
msgid "unverified"
|
||||
msgstr "неперевірено"
|
||||
|
||||
#: converse.js:333
|
||||
msgid "verified"
|
||||
msgstr "перевірено"
|
||||
|
||||
#: converse.js:334
|
||||
msgid "finished"
|
||||
msgstr "завершено"
|
||||
|
||||
#: converse.js:337
|
||||
msgid "This contact is busy"
|
||||
msgstr "Цей контакт зайнятий"
|
||||
|
||||
#: converse.js:338
|
||||
msgid "This contact is online"
|
||||
msgstr "Цей контакт на зв'язку"
|
||||
|
||||
#: converse.js:339
|
||||
msgid "This contact is offline"
|
||||
msgstr "Цей контакт поза мережею"
|
||||
|
||||
#: converse.js:340
|
||||
msgid "This contact is unavailable"
|
||||
msgstr "Цей контакт недоступний"
|
||||
|
||||
#: converse.js:341
|
||||
msgid "This contact is away for an extended period"
|
||||
msgstr "Цей контакт відсутній тривалий час"
|
||||
|
||||
#: converse.js:342
|
||||
msgid "This contact is away"
|
||||
msgstr "Цей контакт відсутній"
|
||||
|
||||
#: converse.js:344
|
||||
msgid "Click to hide these contacts"
|
||||
msgstr "Клацніть, щоб приховати ці контакти"
|
||||
|
||||
#: converse.js:346
|
||||
msgid "My contacts"
|
||||
msgstr "Мої контакти"
|
||||
|
||||
#: converse.js:347
|
||||
msgid "Pending contacts"
|
||||
msgstr "Контакти в очікуванні"
|
||||
|
||||
#: converse.js:348
|
||||
msgid "Contact requests"
|
||||
msgstr "Запити контакту"
|
||||
|
||||
#: converse.js:349
|
||||
msgid "Ungrouped"
|
||||
msgstr "Негруповані"
|
||||
|
||||
#: converse.js:351 converse.js:648 converse.js:691
|
||||
msgid "Contacts"
|
||||
msgstr "Контакти"
|
||||
|
||||
#: converse.js:352
|
||||
msgid "Groups"
|
||||
msgstr "Групи"
|
||||
|
||||
#: converse.js:452
|
||||
msgid "Reconnecting"
|
||||
msgstr "Перепід'єднуюсь"
|
||||
|
||||
#: converse.js:495
|
||||
msgid "Error"
|
||||
msgstr "Помилка"
|
||||
|
||||
#: converse.js:497
|
||||
msgid "Connecting"
|
||||
msgstr "Під'єднуюсь"
|
||||
|
||||
#: converse.js:499
|
||||
msgid "Authenticating"
|
||||
msgstr "Автентикуюсь"
|
||||
|
||||
#: converse.js:501 converse.js:502
|
||||
msgid "Authentication Failed"
|
||||
msgstr "Автентикація невдала"
|
||||
|
||||
#: converse.js:807
|
||||
msgid "Re-establishing encrypted session"
|
||||
msgstr "Перевстановлюю криптований сеанс"
|
||||
|
||||
#: converse.js:819
|
||||
msgid "Generating private key."
|
||||
msgstr "Генерація приватного ключа."
|
||||
|
||||
#: converse.js:820
|
||||
msgid "Your browser might become unresponsive."
|
||||
msgstr "Ваш браузер може підвиснути."
|
||||
|
||||
#: converse.js:855
|
||||
msgid ""
|
||||
"Authentication request from %1$s\n"
|
||||
"\n"
|
||||
"Your chat contact is attempting to verify your identity, by asking you the "
|
||||
"question below.\n"
|
||||
"\n"
|
||||
"%2$s"
|
||||
msgstr ""
|
||||
"Запит автентикації від %1$s\n"
|
||||
"\n"
|
||||
"Ваш контакт в чаті намагається встановити Вашу особу і просить відповісти на "
|
||||
"питання нижче.\n"
|
||||
"\n"
|
||||
"%2$s"
|
||||
|
||||
#: converse.js:864
|
||||
msgid "Could not verify this user's identify."
|
||||
msgstr "Не можу перевірити автентичність цього користувача."
|
||||
|
||||
#: converse.js:903
|
||||
msgid "Exchanging private key with contact."
|
||||
msgstr "Обмін приватним ключем з контактом."
|
||||
|
||||
#: converse.js:1049
|
||||
msgid "Personal message"
|
||||
msgstr "Персональна вісточка"
|
||||
|
||||
#: converse.js:1081
|
||||
msgid "Are you sure you want to clear the messages from this room?"
|
||||
msgstr "Ви впевнені, що хочете очистити повідомлення з цієї кімнати?"
|
||||
|
||||
#: converse.js:1103
|
||||
msgid "me"
|
||||
msgstr "я"
|
||||
|
||||
#: converse.js:1158
|
||||
msgid "is typing"
|
||||
msgstr "друкує"
|
||||
|
||||
#: converse.js:1161
|
||||
msgid "has stopped typing"
|
||||
msgstr "припинив друкувати"
|
||||
|
||||
#: converse.js:1167 converse.js:1447
|
||||
msgid "has gone away"
|
||||
msgstr "пішов геть"
|
||||
|
||||
#: converse.js:1212 converse.js:2531
|
||||
msgid "Show this menu"
|
||||
msgstr "Показати це меню"
|
||||
|
||||
#: converse.js:1213
|
||||
msgid "Write in the third person"
|
||||
msgstr "Писати від третьої особи"
|
||||
|
||||
#: converse.js:1214 converse.js:2529
|
||||
msgid "Remove messages"
|
||||
msgstr "Видалити повідомлення"
|
||||
|
||||
#: converse.js:1340
|
||||
msgid "Are you sure you want to clear the messages from this chat box?"
|
||||
msgstr "Ви впевнені, що хочете очистити повідомлення з цього вікна чату?"
|
||||
|
||||
#: converse.js:1375
|
||||
msgid "Your message could not be sent"
|
||||
msgstr "Ваше повідомлення не може бути надіслане"
|
||||
|
||||
#: converse.js:1378
|
||||
msgid "We received an unencrypted message"
|
||||
msgstr "Ми отримали некриптоване повідомлення"
|
||||
|
||||
#: converse.js:1381
|
||||
msgid "We received an unreadable encrypted message"
|
||||
msgstr "Ми отримали нечитабельне криптоване повідомлення"
|
||||
|
||||
#: converse.js:1407
|
||||
msgid ""
|
||||
"Here are the fingerprints, please confirm them with %1$s, outside of this "
|
||||
"chat.\n"
|
||||
"\n"
|
||||
"Fingerprint for you, %2$s: %3$s\n"
|
||||
"\n"
|
||||
"Fingerprint for %1$s: %4$s\n"
|
||||
"\n"
|
||||
"If you have confirmed that the fingerprints match, click OK, otherwise click "
|
||||
"Cancel."
|
||||
msgstr ""
|
||||
"Ось відбитки, будь-ласка, підтвердіть їх з %1$s, за межами цього чату.\n"
|
||||
"\n"
|
||||
"Відбиток для Вас, %2$s: %3$s\n"
|
||||
"\n"
|
||||
"Відбиток для %1$s: %4$s\n"
|
||||
"\n"
|
||||
"Якщо Ви підтверджуєте відповідність відбитка, клацніть Гаразд, інакше "
|
||||
"клацніть Відміна."
|
||||
|
||||
#: converse.js:1420
|
||||
msgid ""
|
||||
"You will be prompted to provide a security question and then an answer to "
|
||||
"that question.\n"
|
||||
"\n"
|
||||
"Your contact will then be prompted the same question and if they type the "
|
||||
"exact same answer (case sensitive), their identity will be verified."
|
||||
msgstr ""
|
||||
"Вас запитають таємне питання і відповідь на нього.\n"
|
||||
"\n"
|
||||
"Потім Вашого контакта запитають те саме питання, і якщо вони введуть ту саму "
|
||||
"відповідь (враховуючи регістр), їх особи будуть перевірені."
|
||||
|
||||
#: converse.js:1421
|
||||
msgid "What is your security question?"
|
||||
msgstr "Яке Ваше таємне питання?"
|
||||
|
||||
#: converse.js:1423
|
||||
msgid "What is the answer to the security question?"
|
||||
msgstr "Яка відповідь на таємне питання?"
|
||||
|
||||
#: converse.js:1427
|
||||
msgid "Invalid authentication scheme provided"
|
||||
msgstr "Надана некоректна схема автентикації"
|
||||
|
||||
#: converse.js:1445
|
||||
msgid "has gone offline"
|
||||
msgstr "тепер поза мережею"
|
||||
|
||||
#: converse.js:1449
|
||||
msgid "is busy"
|
||||
msgstr "зайнятий"
|
||||
|
||||
#: converse.js:1537
|
||||
msgid "Your messages are not encrypted anymore"
|
||||
msgstr "Ваші повідомлення більше не криптуються"
|
||||
|
||||
#: converse.js:1539
|
||||
msgid ""
|
||||
"Your messages are now encrypted but your contact's identity has not been "
|
||||
"verified."
|
||||
msgstr ""
|
||||
"Ваші повідомлення вже криптуються, але особа Вашого контакту не перевірена."
|
||||
|
||||
#: converse.js:1541
|
||||
msgid "Your contact's identify has been verified."
|
||||
msgstr "Особу Вашого контакту перевірено."
|
||||
|
||||
#: converse.js:1543
|
||||
msgid "Your contact has ended encryption on their end, you should do the same."
|
||||
msgstr ""
|
||||
"Ваш контакт припинив криптування зі свого боку, Вам слід зробити те саме."
|
||||
|
||||
#: converse.js:1552
|
||||
msgid "Your messages are not encrypted. Click here to enable OTR encryption."
|
||||
msgstr ""
|
||||
"Ваші повідомлення не криптуються. Клацніть тут, щоб увімкнути OTR-"
|
||||
"криптування."
|
||||
|
||||
#: converse.js:1554
|
||||
msgid "Your messages are encrypted, but your contact has not been verified."
|
||||
msgstr "Ваші повідомлення криптуються, але Ваш контакт не був перевірений."
|
||||
|
||||
#: converse.js:1556
|
||||
msgid "Your messages are encrypted and your contact verified."
|
||||
msgstr "Ваші повідомлення криптуються і Ваш контакт перевірено."
|
||||
|
||||
#: converse.js:1558
|
||||
msgid ""
|
||||
"Your contact has closed their end of the private session, you should do the "
|
||||
"same"
|
||||
msgstr ""
|
||||
"Ваш контакт закрив зі свого боку приватну сесію, Вам слід зробити те ж саме"
|
||||
|
||||
#: converse.js:1568
|
||||
msgid "Clear all messages"
|
||||
msgstr "Очистити всі повідомлення"
|
||||
|
||||
#: converse.js:1569
|
||||
msgid "End encrypted conversation"
|
||||
msgstr "Завершити криптовану розмову"
|
||||
|
||||
#: converse.js:1570
|
||||
msgid "Hide the list of participants"
|
||||
msgstr "Сховати список учасників"
|
||||
|
||||
#: converse.js:1571
|
||||
msgid "Refresh encrypted conversation"
|
||||
msgstr "Оновити криптовану розмову"
|
||||
|
||||
#: converse.js:1572
|
||||
msgid "Start a call"
|
||||
msgstr "Почати виклик"
|
||||
|
||||
#: converse.js:1573
|
||||
msgid "Start encrypted conversation"
|
||||
msgstr "Почати криптовану розмову"
|
||||
|
||||
#: converse.js:1574
|
||||
msgid "Verify with fingerprints"
|
||||
msgstr "Перевірити за відбитками"
|
||||
|
||||
#: converse.js:1575
|
||||
msgid "Verify with SMP"
|
||||
msgstr "Перевірити за SMP"
|
||||
|
||||
#: converse.js:1576
|
||||
msgid "What's this?"
|
||||
msgstr "Що це?"
|
||||
|
||||
#: converse.js:1668
|
||||
msgid "Online"
|
||||
msgstr "На зв'язку"
|
||||
|
||||
#: converse.js:1669
|
||||
msgid "Busy"
|
||||
msgstr "Зайнятий"
|
||||
|
||||
#: converse.js:1670
|
||||
msgid "Away"
|
||||
msgstr "Далеко"
|
||||
|
||||
#: converse.js:1671
|
||||
msgid "Offline"
|
||||
msgstr "Поза мережею"
|
||||
|
||||
#: converse.js:1672
|
||||
msgid "Log out"
|
||||
msgstr "Вийти"
|
||||
|
||||
#: converse.js:1678
|
||||
msgid "Contact name"
|
||||
msgstr "Назва контакту"
|
||||
|
||||
#: converse.js:1679
|
||||
msgid "Search"
|
||||
msgstr "Пошук"
|
||||
|
||||
#: converse.js:1683
|
||||
msgid "Contact username"
|
||||
msgstr "Логін контакту"
|
||||
|
||||
#: converse.js:1684
|
||||
msgid "Add"
|
||||
msgstr "Додати"
|
||||
|
||||
#: converse.js:1689
|
||||
msgid "Click to add new chat contacts"
|
||||
msgstr "Клацніть, щоб додати нові контакти до чату"
|
||||
|
||||
#: converse.js:1690
|
||||
msgid "Add a contact"
|
||||
msgstr "Додати контакт"
|
||||
|
||||
#: converse.js:1714
|
||||
msgid "No users found"
|
||||
msgstr "Жодного користувача не знайдено"
|
||||
|
||||
#: converse.js:1720
|
||||
msgid "Click to add as a chat contact"
|
||||
msgstr "Клацніть, щоб додати як чат-контакт"
|
||||
|
||||
#: converse.js:1784
|
||||
msgid "Room name"
|
||||
msgstr "Назва кімнати"
|
||||
|
||||
#: converse.js:1785
|
||||
msgid "Nickname"
|
||||
msgstr "Прізвисько"
|
||||
|
||||
#: converse.js:1786
|
||||
msgid "Server"
|
||||
msgstr "Сервер"
|
||||
|
||||
#: converse.js:1787
|
||||
msgid "Join Room"
|
||||
msgstr "Приєднатися до кімнати"
|
||||
|
||||
#: converse.js:1788
|
||||
msgid "Show rooms"
|
||||
msgstr "Показати кімнати"
|
||||
|
||||
#: converse.js:1792
|
||||
msgid "Rooms"
|
||||
msgstr "Кімнати"
|
||||
|
||||
#. For translators: %1$s is a variable and will be replaced with the XMPP server name
|
||||
#: converse.js:1812
|
||||
msgid "No rooms on %1$s"
|
||||
msgstr "Жодної кімнати на %1$s"
|
||||
|
||||
#. For translators: %1$s is a variable and will be
|
||||
#. replaced with the XMPP server name
|
||||
#: converse.js:1827
|
||||
msgid "Rooms on %1$s"
|
||||
msgstr "Кімнати на %1$s"
|
||||
|
||||
#: converse.js:1836
|
||||
msgid "Click to open this room"
|
||||
msgstr "Клацніть, щоб увійти в цю кімнату"
|
||||
|
||||
#: converse.js:1837
|
||||
msgid "Show more information on this room"
|
||||
msgstr "Показати більше інформації про цю кімату"
|
||||
|
||||
#: converse.js:1909
|
||||
msgid "Description:"
|
||||
msgstr "Опис:"
|
||||
|
||||
#: converse.js:1910
|
||||
msgid "Occupants:"
|
||||
msgstr "Присутні:"
|
||||
|
||||
#: converse.js:1911
|
||||
msgid "Features:"
|
||||
msgstr "Особливості:"
|
||||
|
||||
#: converse.js:1912
|
||||
msgid "Requires authentication"
|
||||
msgstr "Вимагає автентикації"
|
||||
|
||||
#: converse.js:1913
|
||||
msgid "Hidden"
|
||||
msgstr "Прихована"
|
||||
|
||||
#: converse.js:1914
|
||||
msgid "Requires an invitation"
|
||||
msgstr "Вимагає запрошення"
|
||||
|
||||
#: converse.js:1915
|
||||
msgid "Moderated"
|
||||
msgstr "Модерована"
|
||||
|
||||
#: converse.js:1916
|
||||
msgid "Non-anonymous"
|
||||
msgstr "Не-анонімні"
|
||||
|
||||
#: converse.js:1917
|
||||
msgid "Open room"
|
||||
msgstr "Увійти в кімнату"
|
||||
|
||||
#: converse.js:1918
|
||||
msgid "Permanent room"
|
||||
msgstr "Постійна кімната"
|
||||
|
||||
#: converse.js:1919
|
||||
msgid "Public"
|
||||
msgstr "Публічна"
|
||||
|
||||
#: converse.js:1920
|
||||
msgid "Semi-anonymous"
|
||||
msgstr "Напів-анонімна"
|
||||
|
||||
#: converse.js:1921
|
||||
msgid "Temporary room"
|
||||
msgstr "Тимчасова кімната"
|
||||
|
||||
#: converse.js:1922
|
||||
msgid "Unmoderated"
|
||||
msgstr "Немодерована"
|
||||
|
||||
#: converse.js:2191
|
||||
msgid "This user is a moderator"
|
||||
msgstr "Цей користувач є модератором"
|
||||
|
||||
#: converse.js:2192
|
||||
msgid "This user can send messages in this room"
|
||||
msgstr "Цей користувач може слати повідомлення в цій кімнаті"
|
||||
|
||||
#: converse.js:2193
|
||||
msgid "This user can NOT send messages in this room"
|
||||
msgstr "Цей користувач НЕ МОЖЕ слати повідомлення в цій кімнаті"
|
||||
|
||||
#: converse.js:2221
|
||||
msgid "Invite..."
|
||||
msgstr "Запросіть..."
|
||||
|
||||
#: converse.js:2222
|
||||
msgid "Occupants"
|
||||
msgstr "Учасники"
|
||||
|
||||
#: converse.js:2318
|
||||
msgid "You are about to invite %1$s to the chat room \"%2$s\". "
|
||||
msgstr "Ви запрошуєте %1$s до чату \"%2$s\". "
|
||||
|
||||
#: converse.js:2319
|
||||
msgid ""
|
||||
"You may optionally include a message, explaining the reason for the "
|
||||
"invitation."
|
||||
msgstr ""
|
||||
"Ви можете опціонально додати повідомлення, щоб пояснити причину запрошення."
|
||||
|
||||
#: converse.js:2400
|
||||
msgid "Message"
|
||||
msgstr "Повідомлення"
|
||||
|
||||
#: converse.js:2452
|
||||
msgid "Error: could not execute the command"
|
||||
msgstr "Помилка: Не можу виконати команду"
|
||||
|
||||
#: converse.js:2527
|
||||
msgid "Change user's affiliation to admin"
|
||||
msgstr "Призначити користувача адміністратором"
|
||||
|
||||
#: converse.js:2528
|
||||
msgid "Ban user from room"
|
||||
msgstr "Заблокувати і викинути з кімнати"
|
||||
|
||||
#: converse.js:2530
|
||||
msgid "Change user role to participant"
|
||||
msgstr "Зробити користувача учасником"
|
||||
|
||||
#: converse.js:2532
|
||||
msgid "Kick user from room"
|
||||
msgstr "Викинути з кімнати"
|
||||
|
||||
#: converse.js:2533
|
||||
msgid "Write in 3rd person"
|
||||
msgstr "Писати в 3-й особі"
|
||||
|
||||
#: converse.js:2534
|
||||
msgid "Grant membership to a user"
|
||||
msgstr "Надати членство користувачу"
|
||||
|
||||
#: converse.js:2535
|
||||
msgid "Remove user's ability to post messages"
|
||||
msgstr "Забрати можливість слати повідомлення"
|
||||
|
||||
#: converse.js:2536
|
||||
msgid "Change your nickname"
|
||||
msgstr "Змінити Ваше прізвисько"
|
||||
|
||||
#: converse.js:2537
|
||||
msgid "Grant moderator role to user"
|
||||
msgstr "Надати права модератора"
|
||||
|
||||
#: converse.js:2538
|
||||
msgid "Grant ownership of this room"
|
||||
msgstr "Передати у власність цю кімнату"
|
||||
|
||||
#: converse.js:2539
|
||||
msgid "Revoke user's membership"
|
||||
msgstr "Забрати членство в користувача"
|
||||
|
||||
#: converse.js:2540
|
||||
msgid "Set room topic"
|
||||
msgstr "Встановити тему кімнати"
|
||||
|
||||
#: converse.js:2541
|
||||
msgid "Allow muted user to post messages"
|
||||
msgstr "Дозволити безголосому користувачу слати повідомлення"
|
||||
|
||||
#: converse.js:2686 converse.js:4629
|
||||
msgid "Save"
|
||||
msgstr "Зберегти"
|
||||
|
||||
#: converse.js:2687 converse.js:4894 converse.js:5009
|
||||
msgid "Cancel"
|
||||
msgstr "Відміна"
|
||||
|
||||
#: converse.js:2730
|
||||
msgid "An error occurred while trying to save the form."
|
||||
msgstr "Трапилася помилка при спробі зберегти форму."
|
||||
|
||||
#: converse.js:2777
|
||||
msgid "This chatroom requires a password"
|
||||
msgstr "Ця кімната вимагає пароль"
|
||||
|
||||
#: converse.js:2778
|
||||
msgid "Password: "
|
||||
msgstr "Пароль:"
|
||||
|
||||
#: converse.js:2779
|
||||
msgid "Submit"
|
||||
msgstr "Надіслати"
|
||||
|
||||
#: converse.js:2814
|
||||
msgid "This room is not anonymous"
|
||||
msgstr "Ця кімната не є анонімною"
|
||||
|
||||
#: converse.js:2815
|
||||
msgid "This room now shows unavailable members"
|
||||
msgstr "Ця кімната вже показує недоступних учасників"
|
||||
|
||||
#: converse.js:2816
|
||||
msgid "This room does not show unavailable members"
|
||||
msgstr "Ця кімната не показує недоступних учасників"
|
||||
|
||||
#: converse.js:2817
|
||||
msgid "Non-privacy-related room configuration has changed"
|
||||
msgstr "Змінено конфігурацію кімнати, не повязану з приватністю"
|
||||
|
||||
#: converse.js:2818
|
||||
msgid "Room logging is now enabled"
|
||||
msgstr "Журналювання кімнати тепер ввімкнено"
|
||||
|
||||
#: converse.js:2819
|
||||
msgid "Room logging is now disabled"
|
||||
msgstr "Журналювання кімнати тепер вимкнено"
|
||||
|
||||
#: converse.js:2820
|
||||
msgid "This room is now non-anonymous"
|
||||
msgstr "Ця кімната тепер не-анонімна"
|
||||
|
||||
#: converse.js:2821
|
||||
msgid "This room is now semi-anonymous"
|
||||
msgstr "Ця кімната тепер напів-анонімна"
|
||||
|
||||
#: converse.js:2822
|
||||
msgid "This room is now fully-anonymous"
|
||||
msgstr "Ця кімната тепер повністю анонімна"
|
||||
|
||||
#: converse.js:2823
|
||||
msgid "A new room has been created"
|
||||
msgstr "Створено нову кімнату"
|
||||
|
||||
#: converse.js:2827 converse.js:2926
|
||||
msgid "You have been banned from this room"
|
||||
msgstr "Вам заблокували доступ до цієї кімнати"
|
||||
|
||||
#: converse.js:2828
|
||||
msgid "You have been kicked from this room"
|
||||
msgstr "Вас викинули з цієї кімнати"
|
||||
|
||||
#: converse.js:2829
|
||||
msgid "You have been removed from this room because of an affiliation change"
|
||||
msgstr "Вас видалено з кімнати у зв'язку зі змінами власності кімнати"
|
||||
|
||||
#: converse.js:2830
|
||||
msgid ""
|
||||
"You have been removed from this room because the room has changed to members-"
|
||||
"only and you're not a member"
|
||||
msgstr ""
|
||||
"Вас видалено з цієї кімнати, оскільки вона тепер вимагає членства, а Ви ним "
|
||||
"не є її членом"
|
||||
|
||||
#: converse.js:2831
|
||||
msgid ""
|
||||
"You have been removed from this room because the MUC (Multi-user chat) "
|
||||
"service is being shut down."
|
||||
msgstr "Вас видалено з цієї кімнати, тому що MUC (Чат-сервіс) припиняє роботу."
|
||||
|
||||
#: converse.js:2845
|
||||
msgid "<strong>%1$s</strong> has been banned"
|
||||
msgstr "<strong>%1$s</strong> заблоковано"
|
||||
|
||||
#: converse.js:2846
|
||||
msgid "<strong>%1$s</strong>'s nickname has changed"
|
||||
msgstr "Прізвисько <strong>%1$s</strong> змінено"
|
||||
|
||||
#: converse.js:2847
|
||||
msgid "<strong>%1$s</strong> has been kicked out"
|
||||
msgstr "<strong>%1$s</strong> було викинуто звідси"
|
||||
|
||||
#: converse.js:2848
|
||||
msgid "<strong>%1$s</strong> has been removed because of an affiliation change"
|
||||
msgstr "<strong>%1$s</strong> було видалено через зміни власності кімнати"
|
||||
|
||||
#: converse.js:2849
|
||||
msgid "<strong>%1$s</strong> has been removed for not being a member"
|
||||
msgstr "<strong>%1$s</strong> було виделано через відсутність членства"
|
||||
|
||||
#: converse.js:2853
|
||||
msgid "Your nickname has been automatically changed to: <strong>%1$s</strong>"
|
||||
msgstr "Ваше прізвисько було автоматично змінене на: <strong>%1$s</strong>"
|
||||
|
||||
#: converse.js:2854
|
||||
msgid "Your nickname has been changed to: <strong>%1$s</strong>"
|
||||
msgstr "Ваше прізвисько було змінене на: <strong>%1$s</strong>"
|
||||
|
||||
#: converse.js:2902 converse.js:2912
|
||||
msgid "The reason given is: \""
|
||||
msgstr "Причиною вказано: \""
|
||||
|
||||
#: converse.js:2924
|
||||
msgid "You are not on the member list of this room"
|
||||
msgstr "Ви не є у списку членів цієї кімнати"
|
||||
|
||||
#: converse.js:2930
|
||||
msgid "No nickname was specified"
|
||||
msgstr "Не вказане прізвисько"
|
||||
|
||||
#: converse.js:2934
|
||||
msgid "You are not allowed to create new rooms"
|
||||
msgstr "Вам не дозволено створювати нові кімнати"
|
||||
|
||||
#: converse.js:2936
|
||||
msgid "Your nickname doesn't conform to this room's policies"
|
||||
msgstr "Ваше прізвисько не відповідає політиці кімнати"
|
||||
|
||||
#: converse.js:2940
|
||||
msgid "Your nickname is already taken"
|
||||
msgstr "Таке прізвисько вже зайняте"
|
||||
|
||||
#: converse.js:2942
|
||||
msgid "This room does not (yet) exist"
|
||||
msgstr "Такої кімнати (поки) не існує"
|
||||
|
||||
#: converse.js:2944
|
||||
msgid "This room has reached it's maximum number of occupants"
|
||||
msgstr "Ця кімната досягнула максимуму учасників"
|
||||
|
||||
#: converse.js:2988
|
||||
msgid "Topic set by %1$s to: %2$s"
|
||||
msgstr "Тема встановлена %1$s: %2$s"
|
||||
|
||||
#: converse.js:3066
|
||||
msgid "%1$s has invited you to join a chat room: %2$s"
|
||||
msgstr "%1$s запрошує вас приєднатись до чату: %2$s"
|
||||
|
||||
#: converse.js:3070
|
||||
msgid ""
|
||||
"%1$s has invited you to join a chat room: %2$s, and left the following "
|
||||
"reason: \"%3$s\""
|
||||
msgstr ""
|
||||
"%1$s запрошує Вас приєднатись до чату: %2$s, аргументує ось як: \"%3$s\""
|
||||
|
||||
#: converse.js:3339
|
||||
msgid "Click to restore this chat"
|
||||
msgstr "Клацніть, щоб відновити цей чат"
|
||||
|
||||
#: converse.js:3481
|
||||
msgid "Minimized"
|
||||
msgstr "Мінімізовано"
|
||||
|
||||
#: converse.js:3582 converse.js:3600
|
||||
msgid "Click to remove this contact"
|
||||
msgstr "Клацніть, щоб видалити цей контакт"
|
||||
|
||||
#: converse.js:3589
|
||||
msgid "Click to accept this contact request"
|
||||
msgstr "Клацніть, щоб прийняти цей запит контакту"
|
||||
|
||||
#: converse.js:3590
|
||||
msgid "Click to decline this contact request"
|
||||
msgstr "Клацніть, щоб відхилити цей запит контакту"
|
||||
|
||||
#: converse.js:3599
|
||||
msgid "Click to chat with this contact"
|
||||
msgstr "Клацніть, щоб почати розмову з цим контактом"
|
||||
|
||||
#: converse.js:3616
|
||||
msgid "Are you sure you want to remove this contact?"
|
||||
msgstr "Ви впевнені, що хочете видалити цей контакт?"
|
||||
|
||||
#: converse.js:3639
|
||||
msgid "Are you sure you want to decline this contact request?"
|
||||
msgstr "Ви впевнені, що хочете відхилити цей запит контакту?"
|
||||
|
||||
#: converse.js:4166
|
||||
msgid "Type to filter"
|
||||
msgstr "Друкуйте для фільтру"
|
||||
|
||||
#. For translators: the %1$s part gets replaced with the status
|
||||
#. Example, I am online
|
||||
#: converse.js:4600 converse.js:4673
|
||||
msgid "I am %1$s"
|
||||
msgstr "Я %1$s"
|
||||
|
||||
#: converse.js:4602 converse.js:4678
|
||||
msgid "Click here to write a custom status message"
|
||||
msgstr "Клацніть тут, щоб створити власний статус"
|
||||
|
||||
#: converse.js:4603 converse.js:4679
|
||||
msgid "Click to change your chat status"
|
||||
msgstr "Клацніть, щоб змінити статус в чаті"
|
||||
|
||||
#: converse.js:4628
|
||||
msgid "Custom status"
|
||||
msgstr "Власний статус"
|
||||
|
||||
#: converse.js:4656 converse.js:4664
|
||||
msgid "online"
|
||||
msgstr "на зв'язку"
|
||||
|
||||
#: converse.js:4658
|
||||
msgid "busy"
|
||||
msgstr "зайнятий"
|
||||
|
||||
#: converse.js:4660
|
||||
msgid "away for long"
|
||||
msgstr "давно відсутній"
|
||||
|
||||
#: converse.js:4662
|
||||
msgid "away"
|
||||
msgstr "відсутній"
|
||||
|
||||
#: converse.js:4779
|
||||
msgid "Your XMPP provider's domain name:"
|
||||
msgstr "Домен Вашого провайдера XMPP:"
|
||||
|
||||
#: converse.js:4780
|
||||
msgid "Fetch registration form"
|
||||
msgstr "Отримати форму реєстрації"
|
||||
|
||||
#: converse.js:4781
|
||||
msgid "Tip: A list of public XMPP providers is available"
|
||||
msgstr "Порада: доступний перелік публічних XMPP-провайдерів"
|
||||
|
||||
#: converse.js:4782
|
||||
msgid "here"
|
||||
msgstr "тут"
|
||||
|
||||
#: converse.js:4787 converse.js:5007
|
||||
msgid "Register"
|
||||
msgstr "Реєстрація"
|
||||
|
||||
#: converse.js:4834
|
||||
msgid ""
|
||||
"Sorry, the given provider does not support in band account registration. "
|
||||
"Please try with a different provider."
|
||||
msgstr ""
|
||||
"Вибачте, вказаний провайдер не підтримує реєстрації онлайн. Спробуйте іншого "
|
||||
"провайдера."
|
||||
|
||||
#: converse.js:4895
|
||||
msgid "Requesting a registration form from the XMPP server"
|
||||
msgstr "Запитую форму реєстрації з XMPP сервера"
|
||||
|
||||
#: converse.js:4930
|
||||
msgid ""
|
||||
"Something went wrong while establishing a connection with \"%1$s\". Are you "
|
||||
"sure it exists?"
|
||||
msgstr ""
|
||||
"Щось пішло не так при встановленні зв'язку з \"%1$s\". Ви впевнені, що такий "
|
||||
"існує?"
|
||||
|
||||
#: converse.js:4949
|
||||
msgid "Now logging you in"
|
||||
msgstr "Входимо"
|
||||
|
||||
#: converse.js:4953
|
||||
msgid "Registered successfully"
|
||||
msgstr "Успішно зареєстровано"
|
||||
|
||||
#: converse.js:5012
|
||||
msgid "Return"
|
||||
msgstr "Вернутися"
|
||||
|
||||
#: converse.js:5044
|
||||
msgid "The provider rejected your registration attempt. "
|
||||
msgstr "Провайдер відхилив Вашу спробу реєстрації."
|
||||
|
||||
#: converse.js:5200
|
||||
msgid "XMPP Username:"
|
||||
msgstr "XMPP адреса:"
|
||||
|
||||
#: converse.js:5201
|
||||
msgid "Password:"
|
||||
msgstr "Пароль:"
|
||||
|
||||
#: converse.js:5202
|
||||
#, fuzzy
|
||||
msgid "Click here to log in anonymously"
|
||||
msgstr "Ця кімната не є анонімною"
|
||||
|
||||
#: converse.js:5203
|
||||
msgid "Log In"
|
||||
msgstr "Ввійти"
|
||||
|
||||
#: converse.js:5210
|
||||
msgid "Sign in"
|
||||
msgstr "Вступити"
|
||||
|
||||
#: converse.js:5291
|
||||
msgid "Toggle chat"
|
||||
msgstr "Включити чат"
|
File diff suppressed because it is too large
Load Diff
1
main.js
1
main.js
@ -79,6 +79,7 @@ require.config({
|
||||
"pl": "locale/pl/LC_MESSAGES/converse.json",
|
||||
"pt_BR": "locale/pt_BR/LC_MESSAGES/converse.json",
|
||||
"ru": "locale/ru/LC_MESSAGES/converse.json",
|
||||
"uk": "locale/uk/LC_MESSAGES/converse.json",
|
||||
"zh": "locale/zh/LC_MESSAGES/converse.json",
|
||||
|
||||
// Templates
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "converse.js",
|
||||
"version": "0.9.2",
|
||||
"version": "0.9.3",
|
||||
"description": "Browser based XMPP instant messaging client",
|
||||
"main": "main.js",
|
||||
"directories": {
|
||||
|
@ -21,6 +21,7 @@
|
||||
'text!pl',
|
||||
'text!pt_BR',
|
||||
'text!ru',
|
||||
'text!uk',
|
||||
'text!zh'
|
||||
], function ($, Jed) {
|
||||
root.locales = {
|
||||
@ -39,7 +40,8 @@
|
||||
'pl': arguments[14],
|
||||
'pt-br': arguments[15],
|
||||
'ru': arguments[16],
|
||||
'zh': arguments[17]
|
||||
'uk': arguments[17],
|
||||
'zh': arguments[18]
|
||||
};
|
||||
return root.locales;
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user