From feda23587c7e24dec0cfc8be9f2f444e009f967f Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 13 Aug 2019 16:53:04 -0700 Subject: illegal offset warning (prevents encrypted signatures from being used for encrypted messages). Not fatal but can leak metadata. --- include/zot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/zot.php b/include/zot.php index 53c3d4d86..60bada1d6 100644 --- a/include/zot.php +++ b/include/zot.php @@ -304,7 +304,7 @@ function zot_zot($url, $data, $channel = null,$crypto = null) { if($channel) { $headers['X-Zot-Token'] = random_string(); $headers['X-Zot-Digest'] = \Zotlabs\Web\HTTPSig::generate_digest_header($data); - $h = \Zotlabs\Web\HTTPSig::create_sig($headers,$channel['channel_prvkey'],'acct:' . channel_reddress($channel),false,'sha512',(($crypto) ? $crypto['hubloc_sitekey'] : ''), (($crypto) ? zot_best_algorithm($crypto['site_crypto']) : '')); + $h = \Zotlabs\Web\HTTPSig::create_sig($headers,$channel['channel_prvkey'],'acct:' . channel_reddress($channel),false,'sha512',(($crypto) ? [ 'key' => $crypto['hubloc_sitekey'], 'algorithm' => $crypto['site_crypto'] ] : false)); } $redirects = 0; -- cgit v1.2.3 From 9a2fbdde200eae4e9ff8163cfa0c47e1111966b6 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 14 Aug 2019 17:55:56 -0700 Subject: zot6 compatibility: when posting from a non-primary clone the actor->id is that of the primary, resulting in an author/owner identity mismatch. Solution is to always post with the actor->id set to the sender if it is a local channel. --- Zotlabs/Lib/Activity.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index f86dc1604..5f5f74ca9 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -668,8 +668,24 @@ class Activity { } $ret = []; + $c = ((array_key_exists('channel_id',$p)) ? $p : channelx_by_hash($p['xchan_hash'])); + $ret['type'] = 'Person'; - $ret['id'] = $p['xchan_url']; + + if ($c) { + $role = get_pconfig($c['channel_id'],'system','permissions_role'); + if (strpos($role,'forum') !== false) { + $ret['type'] = 'Group'; + } + } + + if ($c) { + $ret['id'] = channel_url($c); + } + else { + $ret['id'] = ((strpos($p['xchan_hash'],'http') === 0) ? $p['xchan_hash'] : $p['xchan_url']); + } + if($p['xchan_addr'] && strpos($p['xchan_addr'],'@')) $ret['preferredUsername'] = substr($p['xchan_addr'],0,strpos($p['xchan_addr'],'@')); $ret['name'] = $p['xchan_name']; -- cgit v1.2.3 From beeafc6bc5eb1d564a60986bbc2de3f7b06bfdc1 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 15 Aug 2019 16:28:06 -0700 Subject: fix bitrot in util/zotsh --- Zotlabs/Module/Admin/Addons.php | 31 +- Zotlabs/Module/Cloud.php | 7 - Zotlabs/Module/Dav.php | 2 + Zotlabs/Storage/Directory.php | 9 +- util/zotsh/README.txt | 7 + util/zotsh/easywebdav/__init__.pyc | Bin 457 -> 483 bytes util/zotsh/easywebdav/__version__.pyc | Bin 174 -> 187 bytes util/zotsh/easywebdav/client.py | 404 ++++++++++----------- util/zotsh/easywebdav/client.pyc | Bin 8871 -> 9211 bytes util/zotsh/zotsh.py | 637 +++++++++++++++++----------------- 10 files changed, 546 insertions(+), 551 deletions(-) diff --git a/Zotlabs/Module/Admin/Addons.php b/Zotlabs/Module/Admin/Addons.php index b8e3e3a2e..243eb242f 100644 --- a/Zotlabs/Module/Admin/Addons.php +++ b/Zotlabs/Module/Admin/Addons.php @@ -2,6 +2,7 @@ namespace Zotlabs\Module\Admin; +use App; use \Zotlabs\Storage\GitRepo; use \Michelf\MarkdownExtra; @@ -253,14 +254,14 @@ class Addons { * Single plugin */ - if (\App::$argc == 3){ - $plugin = \App::$argv[2]; + if (App::$argc == 3){ + $plugin = App::$argv[2]; if (!is_file("addon/$plugin/$plugin.php")){ notice( t("Item not found.") ); return ''; } - $enabled = in_array($plugin,\App::$plugins); + $enabled = in_array($plugin,App::$plugins); $info = get_plugin_info($plugin); $x = check_plugin_versions($info); @@ -268,11 +269,11 @@ class Addons { if($enabled && ! $x) { $enabled = false; - $idz = array_search($plugin, \App::$plugins); + $idz = array_search($plugin, App::$plugins); if ($idz !== false) { - unset(\App::$plugins[$idz]); + unset(App::$plugins[$idz]); uninstall_plugin($plugin); - set_config("system","addon", implode(", ",\App::$plugins)); + set_config("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); @@ -281,19 +282,19 @@ class Addons { check_form_security_token_redirectOnErr('/admin/addons', 'admin_addons', 't'); $pinstalled = false; // Toggle plugin status - $idx = array_search($plugin, \App::$plugins); + $idx = array_search($plugin, App::$plugins); if ($idx !== false){ - unset(\App::$plugins[$idx]); + unset(App::$plugins[$idx]); uninstall_plugin($plugin); $pinstalled = false; info( sprintf( t("Plugin %s disabled."), $plugin ) ); } else { - \App::$plugins[] = $plugin; + App::$plugins[] = $plugin; install_plugin($plugin); $pinstalled = true; info( sprintf( t("Plugin %s enabled."), $plugin ) ); } - set_config("system","addon", implode(", ",\App::$plugins)); + set_config("system","addon", implode(", ",App::$plugins)); if($pinstalled) { @require_once("addon/$plugin/$plugin.php"); @@ -305,7 +306,7 @@ class Addons { // display plugin details - if (in_array($plugin, \App::$plugins)){ + if (in_array($plugin, App::$plugins)){ $status = 'on'; $action = t('Disable'); } else { @@ -380,18 +381,18 @@ class Addons { list($tmp, $id) = array_map('trim', explode('/', $file)); $info = get_plugin_info($id); - $enabled = in_array($id,\App::$plugins); + $enabled = in_array($id,App::$plugins); $x = check_plugin_versions($info); // disable plugins which are installed but incompatible versions if($enabled && ! $x) { $enabled = false; - $idz = array_search($id, \App::$plugins); + $idz = array_search($id, App::$plugins); if ($idz !== false) { - unset(\App::$plugins[$idz]); + unset(App::$plugins[$idz]); uninstall_plugin($id); - set_config("system","addon", implode(", ",\App::$plugins)); + set_config("system","addon", implode(", ",App::$plugins)); } } $info['disabled'] = 1-intval($x); diff --git a/Zotlabs/Module/Cloud.php b/Zotlabs/Module/Cloud.php index 1b330ecba..f595e0fac 100644 --- a/Zotlabs/Module/Cloud.php +++ b/Zotlabs/Module/Cloud.php @@ -35,13 +35,6 @@ class Cloud extends \Zotlabs\Web\Controller { if (argc() > 1) $which = argv(1); - - if (argc() < 2 && intval(get_config('system','cloud_disable_siteroot'))) { - notice( t('Permission denied.') . EOL); - construct_page(); - killme(); - } - $profile = 0; if ($which) diff --git a/Zotlabs/Module/Dav.php b/Zotlabs/Module/Dav.php index 866520461..e8ce6a703 100644 --- a/Zotlabs/Module/Dav.php +++ b/Zotlabs/Module/Dav.php @@ -95,6 +95,8 @@ class Dav extends \Zotlabs\Web\Controller { $auth = new \Zotlabs\Storage\BasicAuth(); + $auth->observer = get_observer_hash(); + $auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . ' ' . 'WebDAV'); $rootDirectory = new \Zotlabs\Storage\Directory('/', $auth); diff --git a/Zotlabs/Storage/Directory.php b/Zotlabs/Storage/Directory.php index b30aecf92..ae36fc1c0 100644 --- a/Zotlabs/Storage/Directory.php +++ b/Zotlabs/Storage/Directory.php @@ -720,7 +720,11 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo * @return array Directory[] */ function ChannelList(&$auth) { - $ret = array(); + $ret = []; + + if (intval(get_config('system','cloud_disable_siteroot'))) { + return $ret; + } $r = q("SELECT channel_id, channel_address, profile.publish FROM channel left join profile on profile.uid = channel.channel_id WHERE channel_removed = 0 AND channel_system = 0 AND (channel_pageflags & %d) = 0", intval(PAGE_HIDDEN) @@ -730,8 +734,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo foreach ($r as $rr) { if (perm_is_allowed($rr['channel_id'], $auth->observer, 'view_storage') && $rr['publish']) { logger('found channel: /cloud/' . $rr['channel_address'], LOGGER_DATA); - // @todo can't we drop '/cloud'? It gets stripped off anyway in RedDirectory - $ret[] = new Directory('/cloud/' . $rr['channel_address'], $auth); + $ret[] = new Directory($rr['channel_address'], $auth); } } } diff --git a/util/zotsh/README.txt b/util/zotsh/README.txt index facddc850..58e8d4bd0 100644 --- a/util/zotsh/README.txt +++ b/util/zotsh/README.txt @@ -16,6 +16,13 @@ Extract somewere and launch zotsh.py Description ----------- +Update: 2019-08-14 + +Have just looked at this after several years of bitrot and made some updates. +it functions for cli DAV access on your assigned hub, but magic-auth to dav repos on other hubs +(e.g. the host command) needs to be updated to work with openwebauth. + +---- ZotSH is a command line WebDAV client for Hubzilla. It knows how to magic-auth to remote hubs using Zot. diff --git a/util/zotsh/easywebdav/__init__.pyc b/util/zotsh/easywebdav/__init__.pyc index 4f30c1871..b69303d1b 100644 Binary files a/util/zotsh/easywebdav/__init__.pyc and b/util/zotsh/easywebdav/__init__.pyc differ diff --git a/util/zotsh/easywebdav/__version__.pyc b/util/zotsh/easywebdav/__version__.pyc index b19bf50b0..bdc53441f 100644 Binary files a/util/zotsh/easywebdav/__version__.pyc and b/util/zotsh/easywebdav/__version__.pyc differ diff --git a/util/zotsh/easywebdav/client.py b/util/zotsh/easywebdav/client.py index da7bf325a..3b420b143 100644 --- a/util/zotsh/easywebdav/client.py +++ b/util/zotsh/easywebdav/client.py @@ -1,202 +1,202 @@ -import requests -import platform -from numbers import Number -import xml.etree.cElementTree as xml -from collections import namedtuple - -py_majversion, py_minversion, py_revversion = platform.python_version_tuple() - -if py_majversion == '2': - from httplib import responses as HTTP_CODES - from urlparse import urlparse -else: - from http.client import responses as HTTP_CODES - from urllib.parse import urlparse - -DOWNLOAD_CHUNK_SIZE_BYTES = 1 * 1024 * 1024 - -class WebdavException(Exception): - pass - -class ConnectionFailed(WebdavException): - pass - - -def codestr(code): - return HTTP_CODES.get(code, 'UNKNOWN') - - -File = namedtuple('File', ['name', 'size', 'mtime', 'ctime', 'contenttype']) - - -def prop(elem, name, default=None): - child = elem.find('.//{DAV:}' + name) - return default if child is None else child.text - - -def elem2file(elem): - return File( - prop(elem, 'href'), - int(prop(elem, 'getcontentlength', 0)), - prop(elem, 'getlastmodified', ''), - prop(elem, 'creationdate', ''), - prop(elem, 'getcontenttype', ''), - ) - - -class OperationFailed(WebdavException): - _OPERATIONS = dict( - HEAD = "get header", - GET = "download", - PUT = "upload", - DELETE = "delete", - MKCOL = "create directory", - PROPFIND = "list directory", - ) - - def __init__(self, method, path, expected_code, actual_code): - self.method = method - self.path = path - self.expected_code = expected_code - self.actual_code = actual_code - operation_name = self._OPERATIONS[method] - self.reason = 'Failed to {operation_name} "{path}"'.format(**locals()) - expected_codes = (expected_code,) if isinstance(expected_code, Number) else expected_code - expected_codes_str = ", ".join('{0} {1}'.format(code, codestr(code)) for code in expected_codes) - actual_code_str = codestr(actual_code) - msg = '''\ -{self.reason}. - Operation : {method} {path} - Expected code : {expected_codes_str} - Actual code : {actual_code} {actual_code_str}'''.format(**locals()) - super(OperationFailed, self).__init__(msg) - -class Client(object): - def __init__(self, host, port=0, auth=None, username=None, password=None, - protocol='http', verify_ssl=True, path=None, cert=None, session=None): - if not port: - port = 443 if protocol == 'https' else 80 - self.baseurl = '{0}://{1}:{2}'.format(protocol, host, port) - if path: - self.baseurl = '{0}/{1}'.format(self.baseurl, path) - self.cwd = '/' - if session is None: - self.session = requests.session() - else: - self.session = session - self.session.verify = verify_ssl - self.session.stream = True - - if cert: - self.session.cert = cert - - if auth: - self.session.auth = auth - elif username and password: - self.session.auth = (username, password) - - def _send(self, method, path, expected_code, **kwargs): - url = self._get_url(path).strip(".") - #~ print self.session - #~ print self.session.verify - #~ print self.session.params - #~ print self.session.cookies - response = self.session.request(method, url, allow_redirects=False, **kwargs) - #~ print response.request.method - #~ print response.request.url - if isinstance(expected_code, Number) and response.status_code != expected_code \ - or not isinstance(expected_code, Number) and response.status_code not in expected_code: - raise OperationFailed(method, path, expected_code, response.status_code) - return response - - def _get_url(self, path): - path = str(path).strip() - if path.startswith('/'): - return self.baseurl + path - return "".join((self.baseurl, self.cwd, path)) - - def cd(self, path): - path = path.strip() - if not path: - return - stripped_path = '/'.join(part for part in path.split('/') if part) + '/' - - if stripped_path == '/': - self.cwd = stripped_path - elif path.startswith('/'): - self.cwd = '/' + stripped_path - elif stripped_path == "./": - return - elif stripped_path == "../": - self.cwd ='/'.join( self.cwd.split('/')[:-2] ) + '/' - else: - self.cwd += stripped_path - - def mkdir(self, path, safe=False): - expected_codes = 201 if not safe else (201, 301, 405) - self._send('MKCOL', path, expected_codes) - - def mkdirs(self, path): - dirs = [d for d in path.split('/') if d] - if not dirs: - return - if path.startswith('/'): - dirs[0] = '/' + dirs[0] - old_cwd = self.cwd - try: - for dir in dirs: - try: - self.mkdir(dir, safe=True) - except Exception as e: - if e.actual_code == 409: - raise - finally: - self.cd(dir) - finally: - self.cd(old_cwd) - - def rmdir(self, path, safe=False): - path = str(path).rstrip('/') + '/' - expected_codes = 204 if not safe else (204, 404) - self._send('DELETE', path, expected_codes) - - def delete(self, path): - self._send('DELETE', path, 204) - - def upload(self, local_path_or_fileobj, remote_path): - if isinstance(local_path_or_fileobj, basestring): - with open(local_path_or_fileobj, 'rb') as f: - self._upload(f, remote_path) - else: - self._upload(local_path_or_fileobj, remote_path) - - def _upload(self, fileobj, remote_path): - self._send('PUT', remote_path, (200, 201, 204), data=fileobj) - - def download(self, remote_path, local_path_or_fileobj): - response = self._send('GET', remote_path, 200, stream=True) - if isinstance(local_path_or_fileobj, basestring): - with open(local_path_or_fileobj, 'wb') as f: - self._download(f, response) - else: - self._download(local_path_or_fileobj, response) - - def _download(self, fileobj, response): - for chunk in response.iter_content(DOWNLOAD_CHUNK_SIZE_BYTES): - fileobj.write(chunk) - - def ls(self, remote_path='.'): - headers = {'Depth': '1'} - response = self._send('PROPFIND', remote_path, (207, 301), headers=headers) - - # Redirect - if response.status_code == 301: - url = urlparse(response.headers['location']) - return self.ls(url.path) - - tree = xml.fromstring(response.content) - return [elem2file(elem) for elem in tree.findall('{DAV:}response')] - - def exists(self, remote_path): - response = self._send('HEAD', remote_path, (200, 301, 404)) - return True if response.status_code != 404 else False +import requests +import platform +from numbers import Number +import xml.etree.cElementTree as xml +from collections import namedtuple + +py_majversion, py_minversion, py_revversion = platform.python_version_tuple() + +if py_majversion == '2': + from httplib import responses as HTTP_CODES + from urlparse import urlparse +else: + from http.client import responses as HTTP_CODES + from urllib.parse import urlparse + +DOWNLOAD_CHUNK_SIZE_BYTES = 1 * 1024 * 1024 + +class WebdavException(Exception): + pass + +class ConnectionFailed(WebdavException): + pass + + +def codestr(code): + return HTTP_CODES.get(code, 'UNKNOWN') + + +File = namedtuple('File', ['name', 'size', 'mtime', 'ctime', 'contenttype']) + + +def prop(elem, name, default=None): + child = elem.find('.//{DAV:}' + name) + return default if child is None or child.text is None else child.text + + +def elem2file(elem): + return File( + prop(elem, 'href'), + int(prop(elem, 'getcontentlength', 0)), + prop(elem, 'getlastmodified', ''), + prop(elem, 'creationdate', ''), + prop(elem, 'getcontenttype', ''), + ) + + +class OperationFailed(WebdavException): + _OPERATIONS = dict( + HEAD = "get header", + GET = "download", + PUT = "upload", + DELETE = "delete", + MKCOL = "create directory", + PROPFIND = "list directory", + ) + + def __init__(self, method, path, expected_code, actual_code): + self.method = method + self.path = path + self.expected_code = expected_code + self.actual_code = actual_code + operation_name = self._OPERATIONS[method] + self.reason = 'Failed to {operation_name} "{path}"'.format(**locals()) + expected_codes = (expected_code,) if isinstance(expected_code, Number) else expected_code + expected_codes_str = ", ".join('{0} {1}'.format(code, codestr(code)) for code in expected_codes) + actual_code_str = codestr(actual_code) + msg = '''\ +{self.reason}. + Operation : {method} {path} + Expected code : {expected_codes_str} + Actual code : {actual_code} {actual_code_str}'''.format(**locals()) + super(OperationFailed, self).__init__(msg) + +class Client(object): + def __init__(self, host, port=0, auth=None, username=None, password=None, + protocol='http', verify_ssl=True, path=None, cert=None, session=None): + if not port: + port = 443 if protocol == 'https' else 80 + self.baseurl = '{0}://{1}:{2}'.format(protocol, host, port) + if path: + self.baseurl = '{0}/{1}'.format(self.baseurl, path) + self.cwd = '/' + if session is None: + self.session = requests.session() + else: + self.session = session + self.session.verify = verify_ssl + self.session.stream = True + + if cert: + self.session.cert = cert + + if auth: + self.session.auth = auth + elif username and password: + self.session.auth = (username, password) + + def _send(self, method, path, expected_code, **kwargs): + url = self._get_url(path).strip(".") + #~ print self.session + #~ print self.session.verify + #~ print self.session.params + #~ print self.session.cookies + response = self.session.request(method, url, allow_redirects=False, **kwargs) + #~ print response.request.method + #~ print response.request.url + if isinstance(expected_code, Number) and response.status_code != expected_code \ + or not isinstance(expected_code, Number) and response.status_code not in expected_code: + raise OperationFailed(method, path, expected_code, response.status_code) + return response + + def _get_url(self, path): + path = str(path).strip() + if path.startswith('/'): + return self.baseurl + path + return "".join((self.baseurl, self.cwd, path)) + + def cd(self, path): + path = path.strip() + if not path: + return + stripped_path = '/'.join(part for part in path.split('/') if part) + '/' + + if stripped_path == '/': + self.cwd = stripped_path + elif path.startswith('/'): + self.cwd = '/' + stripped_path + elif stripped_path == "./": + return + elif stripped_path == "../": + self.cwd ='/'.join( self.cwd.split('/')[:-2] ) + '/' + else: + self.cwd += stripped_path + + def mkdir(self, path, safe=False): + expected_codes = 201 if not safe else (201, 301, 405) + self._send('MKCOL', path, expected_codes) + + def mkdirs(self, path): + dirs = [d for d in path.split('/') if d] + if not dirs: + return + if path.startswith('/'): + dirs[0] = '/' + dirs[0] + old_cwd = self.cwd + try: + for dir in dirs: + try: + self.mkdir(dir, safe=True) + except Exception as e: + if e.actual_code == 409: + raise + finally: + self.cd(dir) + finally: + self.cd(old_cwd) + + def rmdir(self, path, safe=False): + path = str(path).rstrip('/') + '/' + expected_codes = 204 if not safe else (204, 404) + self._send('DELETE', path, expected_codes) + + def delete(self, path): + self._send('DELETE', path, 204) + + def upload(self, local_path_or_fileobj, remote_path): + if isinstance(local_path_or_fileobj, basestring): + with open(local_path_or_fileobj, 'rb') as f: + self._upload(f, remote_path) + else: + self._upload(local_path_or_fileobj, remote_path) + + def _upload(self, fileobj, remote_path): + self._send('PUT', remote_path, (200, 201, 204), data=fileobj) + + def download(self, remote_path, local_path_or_fileobj): + response = self._send('GET', remote_path, 200, stream=True) + if isinstance(local_path_or_fileobj, basestring): + with open(local_path_or_fileobj, 'wb') as f: + self._download(f, response) + else: + self._download(local_path_or_fileobj, response) + + def _download(self, fileobj, response): + for chunk in response.iter_content(DOWNLOAD_CHUNK_SIZE_BYTES): + fileobj.write(chunk) + + def ls(self, remote_path='.'): + headers = {'Depth': '1'} + response = self._send('PROPFIND', remote_path, (207, 301), headers=headers) + + # Redirect + if response.status_code == 301: + url = urlparse(response.headers['location']) + return self.ls(url.path) + + tree = xml.fromstring(response.content) + return [elem2file(elem) for elem in tree.findall('{DAV:}response')] + + def exists(self, remote_path): + response = self._send('HEAD', remote_path, (200, 301, 404)) + return True if response.status_code != 404 else False diff --git a/util/zotsh/easywebdav/client.pyc b/util/zotsh/easywebdav/client.pyc index cf074d522..d53caed92 100644 Binary files a/util/zotsh/easywebdav/client.pyc and b/util/zotsh/easywebdav/client.pyc differ diff --git a/util/zotsh/zotsh.py b/util/zotsh/zotsh.py index 36506b39d..89865fcbe 100755 --- a/util/zotsh/zotsh.py +++ b/util/zotsh/zotsh.py @@ -1,324 +1,313 @@ -#!/usr/bin/env python2 -import sys, os -import ConfigParser -import requests -from requests.auth import HTTPBasicAuth -import easywebdav -import easywebdav.__version__ as easywebdavversion - -__version__= "0.0.2" - -SERVER = None -USER = None -PASSWD = None -VERIFY_SSL=True - -##################################################### - -class CommandNotFound(Exception): - pass - -class ZotSH(object): - commands = ['cd','ls','exists','mkdir','mkdirs','rmdir','delete','upload','download', - 'host', 'pwd','cat', - 'lcd','lpwd', 'lls', - 'quit', 'help'] - def __init__(self, host, session=None, davclient=None): - self.sessions = {} - self.host = host - self.session = session - self.davclient = davclient - - - @property - def host(self): - return self._host - - @host.setter - def host(self, host): - self._host = host - self._hostname = host.replace("https:","").replace("/","") - - @property - def hostname(self): - return self._hostname - - @hostname.setter - def hostname(self, hostname): - self._host = "https://%s/" % (hostname) - self._hostname = hostname - - @property - def session(self): - return self._session - - @session.setter - def session(self, session): - self._session = session - self.davclient = easywebdav.connect( self.hostname, protocol='https', session=session, path="cloud", verify_ssl=VERIFY_SSL) - - @property - def PS1(self): - if self.davclient is None: - return "[!]> " - return "%s:%s> " % (self.hostname, self.davclient.cwd) - - def get_host_session(self, host=None): - #~ if host is None: - #~ host = self.host - #~ if not host.startswith("https"): - #~ host = "https://%s/" % (host) - #~ if host in self.sessions: - #~ session = self.sessions[host] - #~ else: - #~ session = requests.Session() - #~ self.sessions[host] = session - #~ if not host == SERVER - #~ session.params.update({'davguest':1}) - #~ return session - - if self.session is None: - session = requests.Session() - #session.params.update({'davguest':1}) - else: - session = self.session - session.params.update({'davguest': (not host == SERVER) }) - return session - - def do(self, command, *args): - if not command in self.commands: - raise CommandNotFound("Unknow command '%s'" % command) - - cmd = getattr(self, "cmd_%s"%command, None) - if cmd is None: - cmd = getattr(self.davclient, command) - - return cmd(*args) - - def cmd_exists(self, *args): - if (len(args)==0): - return - return self.davclient.exists(args[0]) - - def cmd_mkdir(self, *args): - if (len(args)==0): - return - return self.davclient.mkdir(args[0]) - - def cmd_mkdirs(self, *args): - if (len(args)==0): - return - return self.davclient.mkdirs(args[0]) - - def cmd_rmdir(self, *args): - if (len(args)==0): - return - return self.davclient.rmdir(args[0]) - - def cmd_delete(self, *args): - if (len(args)==0): - return - return self.davclient.delete(args[0]) - - def cmd_upload(self, *args): - if (len(args)==0): - return - args = list(args) - if (len(args)==1): - args.append(args[0]) - - return self.davclient.upload(args[0], args[1]) - - def cmd_download(self, *args): - if (len(args)==0): - return - args = list(args) - if (len(args)==1): - args.append(args[0]) - - return self.davclient.download(args[0], args[1]) - - def cmd_host(self, *args): - if (len(args)==0): - return - newhostname = args[0] - newhost = "https://%s/" % newhostname - if newhostname == "~" or newhost == SERVER: - # bach to home server - self.host = SERVER - self.session = self.get_host_session(SERVER) - return - - session_remote = self.get_host_session(newhost) - session_home = self.get_host_session(SERVER) - - # call /magic on SERVER - r = session_home.get( - SERVER + "magic", - params={'dest': newhost}, - allow_redirects=False, - verify=VERIFY_SSL ) - - if not 'location' in r.headers: - raise Exception("Cannot start magic auth to '%s'" % newhostname) - auth_url = r.headers['location'] - - - # call auth_url with "test" param - - r = session_remote.get( - auth_url, - params={'test': 1 }, - verify=VERIFY_SSL ) - - if r.json()['success']: - self.hostname = newhostname - self.session = session_remote - else: - raise Exception("Cannot magic auth to '%s'" % newhostname) - - - def cmd_pwd(self, *args): - return "%s%s" % ( self.davclient.baseurl, self.davclient.cwd ) - - def cmd_ls(self, *args): - extra_args = ["-a", "-l", "-d"] - - show_hidden = "-a" in args - show_list = "-l" in args - show_only_dir = "-d" in args - args = [ a for a in args if not a in extra_args ] - - - r = self.davclient.ls(*args) - l = max([ len(str(f.size)) for f in r ] + [7,]) - - def _fmt(type, size, name): - if show_list: - return "%s %*d %s" % (type, l, f.size , name) - else: - return name - - if show_hidden : - print _fmt('d', 0, "./") - if self.davclient.cwd!="/": - print _fmt('d', 0, "../") - - for f in r: - name = f.name.replace("/cloud"+self.davclient.cwd,"") - type = "-" - if name.endswith("/"): - type = "d" - if name!="": - if show_hidden or not name.startswith("."): - if not show_only_dir or type=="d": - print _fmt(type, f.size , name) - - def cmd_lpwd(self, *args): - return os.getcwd() - - def cmd_lcd(self, *args): - if (len(args)==0): - return - os.chdir(args[0]) - - def cmd_lls(self, *args): - for f in os.listdir(os.getcwd()): - if os.path.isdir(f): - f=f+"/" - print f - - def cmd_help(self, *args): - print "ZotSH",__version__ - print - print "Commands:" - for c in self.commands: - print "\t",c - print - print "easywebdav", easywebdavversion.__version__, "(mod)" - print "requests", requests.__version__ - - def cmd_cat(self,*args): - if (len(args)==0): - return - rfile = args[0] - resp = self.davclient._send('GET', rfile, (200,)) - print resp.text - -def load_conf(): - global SERVER,USER,PASSWD,VERIFY_SSL - homedir = os.getenv("HOME") - if homedir is None: - homedir = os.path.join(os.getenv("HOMEDRIVE"), os.getenv("HOMEPATH")) - - optsfile = ".zotshrc" - if not os.path.isfile(optsfile): - optsfile = os.path.join(homedir, ".zotshrc") - - if not os.path.isfile(optsfile): - print "Please create a configuration file called '.zotshrc':" - print "[zotsh]" - print "host = https://yourhost.com/" - print "username = your_username" - print "password = your_password" - sys.exit(-1) - - config = ConfigParser.ConfigParser() - config.read(optsfile) - SERVER = config.get('zotsh', 'host') - USER = config.get('zotsh', 'username') - PASSWD = config.get('zotsh', 'password') - if config.has_option('zotsh', 'verify_ssl'): - VERIFY_SSL = config.getboolean('zotsh', 'verify_ssl') - - -def zotsh(): - - zotsh = ZotSH( SERVER) - - session_home = zotsh.get_host_session() - - #~ #login on home server - print "loggin in..." - r = session_home.get( - SERVER + "api/account/verify_credentials", - auth=HTTPBasicAuth(USER, PASSWD), - verify=VERIFY_SSL ) - - print "Hi", r.json()['name'] - - zotsh.session = session_home - - # command loop - input = raw_input(zotsh.PS1) - while (input != "quit"): - input = input.strip() - if len(input)>0: - toks = [ x.strip() for x in input.split(" ") ] - - command = toks[0] - args = toks[1:] - try: - ret = zotsh.do(command, *args) - except easywebdav.client.OperationFailed, e: - print e - except CommandNotFound, e: - print e - else: - if ret is not None: - print ret - - - input = raw_input(zotsh.PS1) - - - - -if __name__=="__main__": - load_conf() - zotsh() - sys.exit() - - - - +#!/usr/bin/env python + +import sys, os +import ConfigParser +import requests +from requests.auth import HTTPBasicAuth +import easywebdav +import easywebdav.__version__ as easywebdavversion +import base64 + +__version__= "0.0.2" + +SERVER = None +USER = None +PASSWD = None +VERIFY_SSL=True + +##################################################### + +class CommandNotFound(Exception): + pass + +class ZotSH(object): + commands = ['cd','ls','exists','mkdir','mkdirs','rmdir','delete','upload','download', + 'host', 'pwd','cat', + 'lcd','lpwd', 'lls', + 'quit', 'help'] + def __init__(self, host, session=None, davclient=None): + self.sessions = {} + self.host = host + self.session = session + self.davclient = davclient + + + @property + def host(self): + return self._host + + @host.setter + def host(self, host): + self._host = host + self._hostname = host.replace("https:","").replace("/","") + + @property + def hostname(self): + return self._hostname + + @hostname.setter + def hostname(self, hostname): + self._host = "https://%s/" % (hostname) + self._hostname = hostname + + @property + def session(self): + return self._session + + @session.setter + def session(self, session): + self._session = session + self.davclient = easywebdav.connect( self.hostname, protocol='https', session=session, path="dav", verify_ssl=VERIFY_SSL) + + @property + def PS1(self): + if self.davclient is None: + return "[!]> " + return "%s:%s> " % (self.hostname, self.davclient.cwd) + + def get_host_session(self, host=None): + #~ if host is None: + #~ host = self.host + #~ if not host.startswith("https"): + #~ host = "https://%s/" % (host) + #~ if host in self.sessions: + #~ session = self.sessions[host] + #~ else: + #~ session = requests.Session() + #~ self.sessions[host] = session + #~ if not host == SERVER + #~ session.params.update({'davguest':1}) + #~ return session + + if self.session is None: + session = requests.Session() + #session.params.update({'davguest':1}) + else: + session = self.session + #session.params.update({'davguest': (not host == SERVER) }) + return session + + def do(self, command, *args): + if not command in self.commands: + raise CommandNotFound("Unknown command '%s'" % command) + + cmd = getattr(self, "cmd_%s"%command, None) + if cmd is None: + cmd = getattr(self.davclient, command) + + return cmd(*args) + + def cmd_exists(self, *args): + if (len(args)==0): + return + return self.davclient.exists(args[0]) + + def cmd_mkdir(self, *args): + if (len(args)==0): + return + return self.davclient.mkdir(args[0]) + + def cmd_mkdirs(self, *args): + if (len(args)==0): + return + return self.davclient.mkdirs(args[0]) + + def cmd_rmdir(self, *args): + if (len(args)==0): + return + return self.davclient.rmdir(args[0]) + + def cmd_delete(self, *args): + if (len(args)==0): + return + return self.davclient.delete(args[0]) + + def cmd_upload(self, *args): + if (len(args)==0): + return + args = list(args) + if (len(args)==1): + args.append(args[0]) + + return self.davclient.upload(args[0], args[1]) + + def cmd_download(self, *args): + if (len(args)==0): + return + args = list(args) + if (len(args)==1): + args.append(args[0]) + + return self.davclient.download(args[0], args[1]) + + def cmd_host(self, *args): + if (len(args)==0): + return + newhostname = args[0] + newhost = "https://%s/" % newhostname + if newhostname == "~" or newhost == SERVER: + # bach to home server + self.host = SERVER + self.session = self.get_host_session(SERVER) + return + + session_remote = self.get_host_session(newhost) + session_home = self.get_host_session(SERVER) + + bnewhost = newhost + 'dav' + bnewhost = bnewhost.encode('hex') + + r = session_home.get( + SERVER + "magic", + params={'bdest': bnewhost, 'owa': 1}, + allow_redirects=True, + verify=VERIFY_SSL ) + + self.hostname = newhostname + self.session = session_remote + + + def cmd_pwd(self, *args): + return "%s%s" % ( self.davclient.baseurl, self.davclient.cwd ) + + def cmd_ls(self, *args): + extra_args = ["-a", "-l", "-d"] + + show_hidden = "-a" in args + show_list = "-l" in args + show_only_dir = "-d" in args + args = [ a for a in args if not a in extra_args ] + + + r = self.davclient.ls(*args) + l = max([ len(str(f.size)) for f in r ] + [7,]) + + def _fmt(type, size, name): + if show_list: + return "%s %*d %s" % (type, l, f.size , name) + else: + return name + + if show_hidden : + print _fmt('d', 0, "./") + if self.davclient.cwd!="/": + print _fmt('d', 0, "../") + + for f in r: + name = f.name.replace("/dav"+self.davclient.cwd,"") + type = "-" + if name.endswith("/"): + type = "d" + if name!="": + if show_hidden or not name.startswith("."): + if not show_only_dir or type=="d": + print _fmt(type, f.size , name) + + def cmd_lpwd(self, *args): + return os.getcwd() + + def cmd_lcd(self, *args): + if (len(args)==0): + return + os.chdir(args[0]) + + def cmd_lls(self, *args): + for f in os.listdir(os.getcwd()): + if os.path.isdir(f): + f=f+"/" + print f + + def cmd_help(self, *args): + print "ZotSH",__version__ + print + print "Commands:" + for c in self.commands: + print "\t",c + print + print "easywebdav", easywebdavversion.__version__, "(mod)" + print "requests", requests.__version__ + + def cmd_cat(self,*args): + if (len(args)==0): + return + rfile = args[0] + resp = self.davclient._send('GET', rfile, (200,)) + print resp.text + +def load_conf(): + global SERVER,USER,PASSWD,VERIFY_SSL + homedir = os.getenv("HOME") + if homedir is None: + homedir = os.path.join(os.getenv("HOMEDRIVE"), os.getenv("HOMEPATH")) + + optsfile = ".zotshrc" + if not os.path.isfile(optsfile): + optsfile = os.path.join(homedir, ".zotshrc") + + if not os.path.isfile(optsfile): + print "Please create a configuration file called '.zotshrc':" + print "[zotsh]" + print "host = https://yourhost.com/" + print "username = your_username" + print "password = your_password" + sys.exit(-1) + + config = ConfigParser.ConfigParser() + config.read(optsfile) + SERVER = config.get('zotsh', 'host') + USER = config.get('zotsh', 'username') + PASSWD = config.get('zotsh', 'password') + if config.has_option('zotsh', 'verify_ssl'): + VERIFY_SSL = config.getboolean('zotsh', 'verify_ssl') + + +def zotsh(): + + zotsh = ZotSH( SERVER) + + session_home = zotsh.get_host_session() + + #~ #login on home server + print "loggin in..." + r = session_home.get( + SERVER + "api/account/verify_credentials", + auth=HTTPBasicAuth(USER, PASSWD), + verify=VERIFY_SSL ) + + print "Hi", r.json()['name'] + + zotsh.session = session_home + + # command loop + input = raw_input(zotsh.PS1) + while (input != "quit"): + input = input.strip() + if len(input)>0: + toks = [ x.strip() for x in input.split(" ") ] + + command = toks[0] + args = toks[1:] + try: + ret = zotsh.do(command, *args) + except easywebdav.client.OperationFailed, e: + print e + except CommandNotFound, e: + print e + else: + if ret is not None: + print ret + + + input = raw_input(zotsh.PS1) + + + + +if __name__=="__main__": + load_conf() + zotsh() + sys.exit() + + + + -- cgit v1.2.3 From 808baf203d8c7aa57d89a3d5412742a4c84934b6 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 15 Aug 2019 19:18:46 -0700 Subject: show correct profile photo when previewing and editing profiles --- include/channel.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/channel.php b/include/channel.php index 0280cd1cd..7c0397e11 100644 --- a/include/channel.php +++ b/include/channel.php @@ -1262,7 +1262,7 @@ function channel_export_items_page($channel_id, $start, $finish, $page = 0, $lim */ function profile_load($nickname, $profile = '') { -// logger('profile_load: ' . $nickname . (($profile) ? ' profile: ' . $profile : '')); + //logger('profile_load: ' . $nickname . (($profile) ? ' profile: ' . $profile : '')); $user = q("select channel_id from channel where channel_address = '%s' and channel_removed = 0 limit 1", dbesc($nickname) @@ -1303,6 +1303,14 @@ function profile_load($nickname, $profile = '') { dbesc($nickname), dbesc($profile) ); + if (! $p) { + $p = q("SELECT profile.uid AS profile_uid, profile.*, channel.* FROM profile + LEFT JOIN channel ON profile.uid = channel.channel_id + WHERE channel.channel_address = '%s' AND profile.id = %d LIMIT 1", + dbesc($nickname), + intval($profile) + ); + } } if(! $p) { -- cgit v1.2.3 From ac05a2ede7023495618b316635b93274416b69d8 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 15 Aug 2019 21:30:47 -0700 Subject: support "bearcaps" in Activity library --- Zotlabs/Lib/Activity.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 5f5f74ca9..0757eec37 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -63,12 +63,31 @@ class Activity { } else { $m = parse_url($url); + + // handle bearcaps + if ($m['scheme'] === 'bear') { + $params = explode('&',$m['query']); + if ($params) { + foreach ($params as $p) { + if (substr($p,0,2) === 'u=') { + $url = substr($p,2); + } + if (substr($p,0,2) === 't=') { + $token = substr($p,2); + } + } + } + } + $headers = [ 'Accept' => 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"', 'Host' => $m['host'], '(request-target)' => 'get ' . get_request_string($url), 'Date' => datetime_convert('UTC','UTC','now','D, d M Y H:i:s') . ' UTC' ]; + if (isset($token)) { + $headers['Authorization'] = 'Bearer ' . $token; + } $h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false); $x = z_fetch_url($url, true, $redirects, [ 'headers' => $h ] ); } -- cgit v1.2.3 From e5539c0d01c1be0b9235aee4aec38f7860cc6959 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Fri, 16 Aug 2019 20:19:49 +0200 Subject: update changelog --- CHANGELOG | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 3813bc1a9..d97314674 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +Hubzilla 4.4.1 (2019-08-16) + - Fix wrong profile photo displayed when previewing and editing profiles + - Fix regression from 4.4 which prevented encrypted signatures from being used for encrypted messages + - Fix typo in queueworker addon which broke filtering of duplicate work + + Hubzilla 4.4 (2019-08-13) - Change primary directory from zotadel.net to hub.netzgemeinde.eu (requested by zotadel admin) - Add Russian context help files -- cgit v1.2.3 From e800e2db2b6149cb1a3d32bb111fc23eb8bcc2c4 Mon Sep 17 00:00:00 2001 From: "DM42.Net Zap Dev" Date: Mon, 19 Aug 2019 23:13:19 -0400 Subject: Return in the case of further processing --- Zotlabs/Daemon/Cron.php | 2 +- Zotlabs/Daemon/CurlAuth.php | 6 +++--- Zotlabs/Daemon/Master.php | 2 +- Zotlabs/Daemon/Poller.php | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php index fe356bcbf..a08d2b7d2 100644 --- a/Zotlabs/Daemon/Cron.php +++ b/Zotlabs/Daemon/Cron.php @@ -215,7 +215,7 @@ class Cron { $restart = true; $generation = intval($argv[2]); if(! $generation) - killme(); + return; } reload_plugins(); diff --git a/Zotlabs/Daemon/CurlAuth.php b/Zotlabs/Daemon/CurlAuth.php index be12bc779..de41382e3 100644 --- a/Zotlabs/Daemon/CurlAuth.php +++ b/Zotlabs/Daemon/CurlAuth.php @@ -13,7 +13,7 @@ class CurlAuth { static public function run($argc,$argv) { if($argc != 2) - killme(); + return; \App::$session->start(); @@ -50,6 +50,6 @@ class CurlAuth { file_put_contents($c,$x); - killme(); + return; } -} \ No newline at end of file +} diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php index 67a3acc0a..8c3a7e570 100644 --- a/Zotlabs/Daemon/Master.php +++ b/Zotlabs/Daemon/Master.php @@ -9,7 +9,7 @@ if(array_search( __file__ , get_included_files()) === 0) { if($argc) Master::Release($argc,$argv); - killme(); + return; } diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php index 84bf7e923..ebc0584ba 100644 --- a/Zotlabs/Daemon/Poller.php +++ b/Zotlabs/Daemon/Poller.php @@ -47,7 +47,7 @@ class Poller { $restart = true; $generation = intval($argv[2]); if(! $generation) - killme(); + return; } if(($argc > 1) && intval($argv[1])) { -- cgit v1.2.3 From d2565519070255af7f127c90b4dadef9c24328f8 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 21 Aug 2019 18:49:11 -0700 Subject: possible for DB to return hublocs with no sitekey --- Zotlabs/Lib/Queue.php | 2 +- include/queue_fn.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Zotlabs/Lib/Queue.php b/Zotlabs/Lib/Queue.php index baa1da70d..49891a55b 100644 --- a/Zotlabs/Lib/Queue.php +++ b/Zotlabs/Lib/Queue.php @@ -250,7 +250,7 @@ class Queue { $host_crypto = null; if($channel && $base) { - $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' order by hubloc_id desc limit 1", + $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' and hubloc_sitekey != '' order by hubloc_id desc limit 1", dbesc($base) ); if($h) { diff --git a/include/queue_fn.php b/include/queue_fn.php index 85f98aaf9..865228041 100644 --- a/include/queue_fn.php +++ b/include/queue_fn.php @@ -286,7 +286,7 @@ function queue_deliver($outq, $immediate = false) { $host_crypto = null; if($channel && $base) { - $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' order by hubloc_id desc limit 1", + $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' and hubloc_sitekey != '' order by hubloc_id desc limit 1", dbesc($base) ); if($h) { -- cgit v1.2.3 From cf9ef615c96d0b74ad4d676f48cb67e41a56f5d5 Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Thu, 22 Aug 2019 20:17:22 +0200 Subject: Fix spoiler displaying while convert BBcode to markdown --- include/markdown.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/markdown.php b/include/markdown.php index 7d1f16958..0a8076799 100644 --- a/include/markdown.php +++ b/include/markdown.php @@ -264,6 +264,9 @@ function bb_to_markdown($Text, $options = []) { // Remove empty zrl links $Text = preg_replace("/\[zrl\=\].*?\[\/zrl\]/is", "", $Text); + + // Remove unprocessed spoiler HTML tags + $Text = strip_tags(preg_replace("/(<\/div>)(>.+)$/im", "$1\n$2", $Text)); $Text = trim($Text); -- cgit v1.2.3 From 58d7c7f6aed50d8b40334c011490b1b26eee4ede Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Thu, 22 Aug 2019 20:20:54 +0200 Subject: Fix attach permissions sync for clonned channel --- include/import.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/import.php b/include/import.php index 1d3b7c035..d3e8f7091 100644 --- a/include/import.php +++ b/include/import.php @@ -1190,9 +1190,9 @@ function sync_files($channel, $files) { logger('sync_files duplicate check: attach_by_hash() returned ' . print_r($x,true), LOGGER_DEBUG); if($x['success']) { - $orig_attach = $x[0]; + $orig_attach = $x['data']; $attach_exists = true; - $attach_id = $x[0]['id']; + $attach_id = $orig_attach['id']; } $newfname = 'store/' . $channel['channel_address'] . '/' . get_attach_binname($att['content']); -- cgit v1.2.3 From 8cc40038375c33886f7c6f7d429c33a47eab8fb9 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 22 Aug 2019 19:39:11 -0700 Subject: issues with image import to zot6 - wrong mid. Also label source project of zotfeed since it is not completely compatible across projects. --- Zotlabs/Lib/Activity.php | 2 +- Zotlabs/Module/Zotfeed.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 0757eec37..12b6cbdfd 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -596,7 +596,7 @@ class Activity { $i['obj'] = json_decode($i['obj'],true); } if($i['obj']['type'] === ACTIVITY_OBJ_PHOTO) { - $i['obj']['id'] = $i['id']; + $i['obj']['id'] = $i['mid']; } $obj = self::encode_object($i['obj']); diff --git a/Zotlabs/Module/Zotfeed.php b/Zotlabs/Module/Zotfeed.php index 381e3acb2..8c13682b4 100644 --- a/Zotlabs/Module/Zotfeed.php +++ b/Zotlabs/Module/Zotfeed.php @@ -42,7 +42,7 @@ class Zotfeed extends \Zotlabs\Web\Controller { } logger('zotfeed request: ' . $r[0]['channel_name'], LOGGER_DEBUG); - + $result['project'] = 'Hubzilla'; $result['messages'] = zot_feed($r[0]['channel_id'],$observer['xchan_hash'],array('mindate' => $mindate)); $result['success'] = true; json_return_and_die($result); -- cgit v1.2.3 From 60919488f17ded7bcd1dd48429baaca530475161 Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Fri, 23 Aug 2019 23:58:07 +0200 Subject: Better spoiler BBcode tag conversion to Markdown --- include/markdown.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/markdown.php b/include/markdown.php index 0a8076799..213986867 100644 --- a/include/markdown.php +++ b/include/markdown.php @@ -266,7 +266,7 @@ function bb_to_markdown($Text, $options = []) { $Text = preg_replace("/\[zrl\=\].*?\[\/zrl\]/is", "", $Text); // Remove unprocessed spoiler HTML tags - $Text = strip_tags(preg_replace("/(<\/div>)(>.+)$/im", "$1\n$2", $Text)); + $Text = preg_replace("/([^<]+)<.+>(>.+)$/im", "$1\n$2", $Text); $Text = trim($Text); -- cgit v1.2.3 From 51954c7f3de4940bb9bdc545f8a2a26e6ea7b101 Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Fri, 30 Aug 2019 00:51:46 +0200 Subject: Add CalDAV / CardDAV autodiscovery --- Zotlabs/Module/Well_known.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Zotlabs/Module/Well_known.php b/Zotlabs/Module/Well_known.php index 09e743788..d322c016c 100644 --- a/Zotlabs/Module/Well_known.php +++ b/Zotlabs/Module/Well_known.php @@ -63,6 +63,18 @@ class Well_known extends \Zotlabs\Web\Controller { case 'dnt-policy.txt': echo file_get_contents('doc/dnt-policy.txt'); killme(); + + case 'caldav': + if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') { + http_status('301', 'moved permanently'); + goaway(z_root() . '/cdav'); + }; + + case 'caldav': + if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') { + http_status('301', 'moved permanently'); + goaway(z_root() . '/cdav'); + }; default: if(file_exists(\App::$cmd)) { -- cgit v1.2.3 From d267dd251579c28346882a3c69c5749fa4b6962d Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Fri, 30 Aug 2019 00:55:36 +0200 Subject: Update Well_known.php --- Zotlabs/Module/Well_known.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Module/Well_known.php b/Zotlabs/Module/Well_known.php index d322c016c..140ab260d 100644 --- a/Zotlabs/Module/Well_known.php +++ b/Zotlabs/Module/Well_known.php @@ -70,7 +70,7 @@ class Well_known extends \Zotlabs\Web\Controller { goaway(z_root() . '/cdav'); }; - case 'caldav': + case 'carddav': if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') { http_status('301', 'moved permanently'); goaway(z_root() . '/cdav'); -- cgit v1.2.3 From 1f8d29a22171138c90377007496c4af2033b1095 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 31 Aug 2019 14:04:10 -0700 Subject: improved conversion of emoji reactions from zot to zot6 --- Zotlabs/Lib/Activity.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 12b6cbdfd..721ed10fd 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -516,6 +516,25 @@ class Activity { xchan_query($p,true); $p = fetch_post_tags($p,true); $i['obj'] = self::encode_item($p[0]); + + // convert to zot6 emoji reaction encoding which uses the target object to indicate the + // specific emoji instead of overloading the verb or type. + + $im = explode('#',$i['verb']); + if($im && count($im) > 1) + $emoji = $im[1]; + if(preg_match("/\[img(.*?)\](.*?)\[\/img\]/ism", $i['body'], $match)) { + $ln = $match[2]; + } + + $i['tgt_type'] = 'Image'; + + $i['target'] = [ + 'type' => 'Image', + 'name' => $emoji, + 'url' => (($ln) ? $ln : z_root() . '/images/emoji/' . $emoji . '.png') + ]; + } } -- cgit v1.2.3 From bbc98db6b4071296ea02cea1a8c89fd33b251b1c Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 31 Aug 2019 14:43:08 -0700 Subject: Clarify private mail deletion policy. Related to issue #1391. --- include/connections.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/connections.php b/include/connections.php index e942503f0..51df18b70 100644 --- a/include/connections.php +++ b/include/connections.php @@ -299,6 +299,11 @@ function remove_all_xchan_resources($xchan, $channel_id = 0) { $r = q("delete from pgrp_member where xchan = '%s'", dbesc($xchan) ); + + // Cannot delete just one side of the conversation since we do not allow + // you to block private mail replies. This would leave open a gateway for abuse. + // Both participants are owners of the conversation and both can remove it. + $r = q("delete from mail where ( from_xchan = '%s' or to_xchan = '%s' )", dbesc($xchan), dbesc($xchan) -- cgit v1.2.3 From 93ec01e0a1fcf7a5574d8bf6ac044331b5b94724 Mon Sep 17 00:00:00 2001 From: Terrox Date: Tue, 3 Sep 2019 14:32:52 +0200 Subject: More nofollow tags to discourage backlink farmers --- Zotlabs/Module/Directory.php | 2 +- include/channel.php | 4 ++-- view/tpl/conv_item.tpl | 2 +- view/tpl/conv_list.tpl | 2 +- view/tpl/usermenu.tpl | 2 +- view/tpl/xchan_vcard.tpl | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php index 8f5db6635..dee22721d 100644 --- a/Zotlabs/Module/Directory.php +++ b/Zotlabs/Module/Directory.php @@ -345,7 +345,7 @@ class Directory extends \Zotlabs\Web\Controller { 'pdesc_label' => t('Description:'), 'marital' => $marital, 'homepage' => $homepage, - 'homepageurl' => linkify($homepageurl), + 'homepageurl' => linkify($homepageurl, true), 'hometown' => $hometown, 'hometown_label' => t('Hometown:'), 'about' => $about, diff --git a/include/channel.php b/include/channel.php index 7c0397e11..5d583e4f1 100644 --- a/include/channel.php +++ b/include/channel.php @@ -1718,9 +1718,9 @@ function advanced_profile() { if(App::$profile['sexual']) $profile['sexual'] = array( t('Sexual Preference:'), App::$profile['sexual'] ); - if(App::$profile['homepage']) $profile['homepage'] = array( t('Homepage:'), linkify(App::$profile['homepage']) ); + if(App::$profile['homepage']) $profile['homepage'] = array( t('Homepage:'), linkify(App::$profile['homepage'], true) ); - if(App::$profile['hometown']) $profile['hometown'] = array( t('Hometown:'), linkify(App::$profile['hometown']) ); + if(App::$profile['hometown']) $profile['hometown'] = array( t('Hometown:'), linkify(App::$profile['hometown'], true) ); if(App::$profile['politic']) $profile['politic'] = array( t('Political Views:'), App::$profile['politic']); diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl index 09a2e05e0..186551e2d 100755 --- a/view/tpl/conv_item.tpl +++ b/view/tpl/conv_item.tpl @@ -20,7 +20,7 @@ {{/if}} {{if $item.title && !$item.event}}
- {{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}}{{$item.title}}{{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}} + {{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}}{{$item.title}}{{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}}
{{if ! $item.is_new}}
diff --git a/view/tpl/conv_list.tpl b/view/tpl/conv_list.tpl index a0c2cf827..8c5b47bf3 100755 --- a/view/tpl/conv_list.tpl +++ b/view/tpl/conv_list.tpl @@ -20,7 +20,7 @@ {{/if}} {{if $item.title && !$item.event}}
- {{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}}{{$item.title}}{{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}} + {{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}}{{$item.title}}{{if $item.title_tosource}}{{if $item.plink}}{{/if}}{{/if}}
{{if ! $item.is_new}}
diff --git a/view/tpl/usermenu.tpl b/view/tpl/usermenu.tpl index 8bbfedd07..535d5b5a8 100644 --- a/view/tpl/usermenu.tpl +++ b/view/tpl/usermenu.tpl @@ -8,7 +8,7 @@ '; } echo "\n"; }; ob_start(); - echo "
    "; + echo '
      '; $traverse('{DAV:}all', ['aggregates' => $this->getValue()]); echo "
    \n"; return ob_get_clean(); - } - - /** - * Serializes a property + * Serializes a property. * * This is a recursive function. * * @param Writer $writer * @param string $privName - * @param array $privilege - * @return void + * @param array $privilege */ - private function serializePriv(Writer $writer, $privName, $privilege) { - + private function serializePriv(Writer $writer, $privName, $privilege) + { $writer->startElement('{DAV:}supported-privilege'); $writer->startElement('{DAV:}privilege'); @@ -154,7 +149,5 @@ class SupportedPrivilegeSet implements XmlSerializable, HtmlOutput { } $writer->endElement(); // supported-privilege - } - } diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php index 0aa2f29a5..17b37afab 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/AclPrincipalPropSetReport.php @@ -1,5 +1,7 @@ pushContext(); $reader->elementMap['{DAV:}prop'] = 'Sabre\Xml\Deserializer\enum'; @@ -61,7 +64,5 @@ class AclPrincipalPropSetReport implements XmlDeserializable { } return $report; - } - } diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php index a9938ba5b..393308cd2 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/ExpandPropertyReport.php @@ -1,5 +1,7 @@ parseInnerTree(); $obj = new self(); $obj->properties = self::traverse($elems); return $obj; - } /** @@ -69,15 +71,15 @@ class ExpandPropertyReport implements XmlDeserializable { * {DAV:}property elements. * * @param array $elems - * @return void + * + * @return array */ - private static function traverse($elems) { - + private static function traverse($elems) + { $result = []; foreach ($elems as $elem) { - - if ($elem['name'] !== '{DAV:}property') { + if ('{DAV:}property' !== $elem['name']) { continue; } @@ -85,7 +87,7 @@ class ExpandPropertyReport implements XmlDeserializable { $elem['attributes']['namespace'] : 'DAV:'; - $propName = '{' . $namespace . '}' . $elem['attributes']['name']; + $propName = '{'.$namespace.'}'.$elem['attributes']['name']; $value = null; if (is_array($elem['value'])) { @@ -93,11 +95,8 @@ class ExpandPropertyReport implements XmlDeserializable { } $result[$propName] = $value; - } return $result; - } - } diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php index 1be15ab2d..f868cc9df 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalMatchReport.php @@ -1,5 +1,7 @@ pushContext(); $reader->elementMap['{DAV:}prop'] = 'Sabre\Xml\Deserializer\enum'; @@ -101,7 +104,5 @@ class PrincipalMatchReport implements XmlDeserializable { } return $principalMatch; - } - } diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php index b0cf0e408..26468fd21 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalPropertySearchReport.php @@ -1,5 +1,7 @@ test = 'allof'; - if ($reader->getAttribute('test') === 'anyof') { + if ('anyof' === $reader->getAttribute('test')) { $self->test = 'anyof'; } $elemMap = [ '{DAV:}property-search' => 'Sabre\\Xml\\Element\\KeyValue', - '{DAV:}prop' => 'Sabre\\Xml\\Element\\KeyValue', + '{DAV:}prop' => 'Sabre\\Xml\\Element\\KeyValue', ]; - - foreach ($reader->parseInnerTree($elemMap) as $elem) { + foreach ($reader->parseInnerTree($elemMap) as $elem) { switch ($elem['name']) { - - case '{DAV:}prop' : + case '{DAV:}prop': $self->properties = array_keys($elem['value']); break; - case '{DAV:}property-search' : + case '{DAV:}property-search': $foundSearchProp = true; // This property has two sub-elements: // {DAV:}prop - The property to be searched on. This may @@ -109,19 +110,15 @@ class PrincipalPropertySearchReport implements XmlDeserializable { $self->searchProperties[$propName] = $elem['value']['{DAV:}match']; } break; - case '{DAV:}apply-to-principal-collection-set' : + case '{DAV:}apply-to-principal-collection-set': $self->applyToPrincipalCollectionSet = true; break; - } - } if (!$foundSearchProp) { throw new BadRequest('The {DAV:}principal-property-search report must contain at least 1 {DAV:}property-search element'); } return $self; - } - } diff --git a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php index 64d1f7f86..37bc2cfbf 100644 --- a/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php +++ b/vendor/sabre/dav/lib/DAVACL/Xml/Request/PrincipalSearchPropertySetReport.php @@ -1,5 +1,7 @@ isEmptyElement) { throw new BadRequest('The {DAV:}principal-search-property-set element must be empty'); } @@ -51,8 +54,7 @@ class PrincipalSearchPropertySetReport implements XmlDeserializable { $reader->next(); $self = new self(); - return $self; + return $self; } - } diff --git a/vendor/sabre/dav/phpstan.neon b/vendor/sabre/dav/phpstan.neon new file mode 100644 index 000000000..e50c5be6e --- /dev/null +++ b/vendor/sabre/dav/phpstan.neon @@ -0,0 +1,3 @@ +parameters: + level: 0 + bootstrap: %currentWorkingDirectory%/vendor/autoload.php diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php index 406dbe0e8..80de750dc 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php @@ -1,5 +1,7 @@ dropTables([ 'calendarobjects', 'calendars', @@ -26,72 +28,66 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->createSchema('calendars'); $this->pdo = $this->getDb(); - } - function testConstruct() { - + public function testConstruct() + { $backend = new PDO($this->pdo); $this->assertTrue($backend instanceof PDO); - } /** * @depends testConstruct */ - function testGetCalendarsForUserNoCalendars() { - + public function testGetCalendarsForUserNoCalendars() + { $backend = new PDO($this->pdo); $calendars = $backend->getCalendarsForUser('principals/user2'); $this->assertEquals([], $calendars); - } /** * @depends testConstruct */ - function testCreateCalendarAndFetch() { - + public function testCreateCalendarAndFetch() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']), - '{DAV:}displayname' => 'Hello!', - '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), + '{DAV:}displayname' => 'Hello!', + '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), ]); $calendars = $backend->getCalendarsForUser('principals/user2'); $elementCheck = [ - 'uri' => 'somerandomid', - '{DAV:}displayname' => 'Hello!', - '{urn:ietf:params:xml:ns:caldav}calendar-description' => '', + 'uri' => 'somerandomid', + '{DAV:}displayname' => 'Hello!', + '{urn:ietf:params:xml:ns:caldav}calendar-description' => '', '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), - 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, + 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, ]; $this->assertInternalType('array', $calendars); $this->assertEquals(1, count($calendars)); foreach ($elementCheck as $name => $value) { - $this->assertArrayHasKey($name, $calendars[0]); $this->assertEquals($value, $calendars[0][$name]); - } - } /** * @depends testConstruct */ - function testUpdateCalendarAndFetch() { - + public function testUpdateCalendarAndFetch() + { $backend = new PDO($this->pdo); //Creating a new calendar $newId = $backend->createCalendar('principals/user2', 'somerandomid', []); $propPatch = new PropPatch([ - '{DAV:}displayname' => 'myCalendar', + '{DAV:}displayname' => 'myCalendar', '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), ]); @@ -107,12 +103,12 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { // Checking if all the information is still correct $elementCheck = [ - 'id' => $newId, - 'uri' => 'somerandomid', - '{DAV:}displayname' => 'myCalendar', - '{urn:ietf:params:xml:ns:caldav}calendar-description' => '', - '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => '', - '{http://calendarserver.org/ns/}getctag' => 'http://sabre.io/ns/sync/2', + 'id' => $newId, + 'uri' => 'somerandomid', + '{DAV:}displayname' => 'myCalendar', + '{urn:ietf:params:xml:ns:caldav}calendar-description' => '', + '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => '', + '{http://calendarserver.org/ns/}getctag' => 'http://sabre.io/ns/sync/2', '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), ]; @@ -120,40 +116,36 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(1, count($calendars)); foreach ($elementCheck as $name => $value) { - $this->assertArrayHasKey($name, $calendars[0]); $this->assertEquals($value, $calendars[0][$name]); - } - } /** * @depends testConstruct * @expectedException \InvalidArgumentException */ - function testUpdateCalendarBadId() { - + public function testUpdateCalendarBadId() + { $backend = new PDO($this->pdo); //Creating a new calendar $newId = $backend->createCalendar('principals/user2', 'somerandomid', []); $propPatch = new PropPatch([ - '{DAV:}displayname' => 'myCalendar', + '{DAV:}displayname' => 'myCalendar', '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), ]); // Updating the calendar $backend->updateCalendar('raaaa', $propPatch); - } /** * @depends testUpdateCalendarAndFetch */ - function testUpdateCalendarUnknownProperty() { - + public function testUpdateCalendarUnknownProperty() + { $backend = new PDO($this->pdo); //Creating a new calendar @@ -161,7 +153,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $propPatch = new PropPatch([ '{DAV:}displayname' => 'myCalendar', - '{DAV:}yourmom' => 'wittycomment', + '{DAV:}yourmom' => 'wittycomment', ]); // Updating the calendar @@ -170,63 +162,59 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { // Verifying the result of the update $this->assertEquals([ - '{DAV:}yourmom' => 403, + '{DAV:}yourmom' => 403, '{DAV:}displayname' => 424, ], $propPatch->getResult()); - } /** * @depends testCreateCalendarAndFetch */ - function testDeleteCalendar() { - + public function testDeleteCalendar() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']), - '{DAV:}displayname' => 'Hello!', + '{DAV:}displayname' => 'Hello!', ]); $backend->deleteCalendar($returnedId); $calendars = $backend->getCalendarsForUser('principals/user2'); $this->assertEquals([], $calendars); - } /** * @depends testCreateCalendarAndFetch * @expectedException \InvalidArgumentException */ - function testDeleteCalendarBadID() { - + public function testDeleteCalendarBadID() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']), - '{DAV:}displayname' => 'Hello!', + '{DAV:}displayname' => 'Hello!', ]); $backend->deleteCalendar('bad-id'); - } /** * @depends testCreateCalendarAndFetch * @expectedException \Sabre\DAV\Exception */ - function testCreateCalendarIncorrectComponentSet() {; - + public function testCreateCalendarIncorrectComponentSet() + { $backend = new PDO($this->pdo); //Creating a new calendar $newId = $backend->createCalendar('principals/user2', 'somerandomid', [ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => 'blabla', ]); - } - function testCreateCalendarObject() { - + public function testCreateCalendarObject() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -242,17 +230,17 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals([ - 'etag' => md5($object), - 'size' => strlen($object), - 'calendardata' => $object, + 'etag' => md5($object), + 'size' => strlen($object), + 'calendardata' => $object, 'firstoccurence' => strtotime('20120101'), - 'lastoccurence' => strtotime('20120101') + (3600 * 24), - 'componenttype' => 'VEVENT', + 'lastoccurence' => strtotime('20120101') + (3600 * 24), + 'componenttype' => 'VEVENT', ], $row); - } - function testGetMultipleObjects() { + public function testGetMultipleObjects() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -263,18 +251,18 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $check = [ [ - 'id' => 1, - 'etag' => '"' . md5($object) . '"', - 'uri' => 'id-1', - 'size' => strlen($object), + 'id' => 1, + 'etag' => '"'.md5($object).'"', + 'uri' => 'id-1', + 'size' => strlen($object), 'calendardata' => $object, 'lastmodified' => null, ], [ - 'id' => 2, - 'etag' => '"' . md5($object) . '"', - 'uri' => 'id-2', - 'size' => strlen($object), + 'id' => 2, + 'etag' => '"'.md5($object).'"', + 'uri' => 'id-2', + 'size' => strlen($object), 'calendardata' => $object, 'lastmodified' => null, ], @@ -283,62 +271,54 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result = $backend->getMultipleCalendarObjects($returnedId, ['id-1', 'id-2']); foreach ($check as $index => $props) { - foreach ($props as $key => $expected) { - $actual = $result[$index][$key]; switch ($key) { - case 'lastmodified' : + case 'lastmodified': $this->assertInternalType('int', $actual); break; - case 'calendardata' : + case 'calendardata': if (is_resource($actual)) { $actual = stream_get_contents($actual); } // no break intentional - default : + default: $this->assertEquals($expected, $actual); - } - } - } - } /** * @depends testGetMultipleObjects * @expectedException \InvalidArgumentException */ - function testGetMultipleObjectsBadId() { - + public function testGetMultipleObjectsBadId() + { $backend = new PDO($this->pdo); $backend->getMultipleCalendarObjects('bad-id', ['foo-bar']); - } /** - * @expectedException Sabre\DAV\Exception\BadRequest + * @expectedException \Sabre\DAV\Exception\BadRequest * @depends testCreateCalendarObject */ - function testCreateCalendarObjectNoComponent() { - + public function testCreateCalendarObjectNoComponent() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); $object = "BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nEND:VCALENDAR\r\n"; $backend->createCalendarObject($returnedId, 'random-id', $object); - } /** * @depends testCreateCalendarObject */ - function testCreateCalendarObjectDuration() { - + public function testCreateCalendarObjectDuration() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -354,37 +334,34 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals([ - 'etag' => md5($object), - 'size' => strlen($object), - 'calendardata' => $object, + 'etag' => md5($object), + 'size' => strlen($object), + 'calendardata' => $object, 'firstoccurence' => strtotime('20120101'), - 'lastoccurence' => strtotime('20120101') + (3600 * 48), - 'componenttype' => 'VEVENT', + 'lastoccurence' => strtotime('20120101') + (3600 * 48), + 'componenttype' => 'VEVENT', ], $row); - } /** * @depends testCreateCalendarObject * @expectedException \InvalidArgumentException */ - function testCreateCalendarObjectBadId() { - + public function testCreateCalendarObjectBadId() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nDURATION:P2D\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"; $backend->createCalendarObject('bad-id', 'random-id', $object); - } - /** * @depends testCreateCalendarObject */ - function testCreateCalendarObjectNoDTEND() { - + public function testCreateCalendarObjectNoDTEND() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -399,21 +376,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals([ - 'etag' => md5($object), - 'size' => strlen($object), - 'calendardata' => $object, + 'etag' => md5($object), + 'size' => strlen($object), + 'calendardata' => $object, 'firstoccurence' => strtotime('2012-01-01 10:00:00'), - 'lastoccurence' => strtotime('2012-01-01 10:00:00'), - 'componenttype' => 'VEVENT', + 'lastoccurence' => strtotime('2012-01-01 10:00:00'), + 'componenttype' => 'VEVENT', ], $row); - } /** * @depends testCreateCalendarObject */ - function testCreateCalendarObjectWithDTEND() { - + public function testCreateCalendarObjectWithDTEND() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -428,21 +404,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals([ - 'etag' => md5($object), - 'size' => strlen($object), - 'calendardata' => $object, + 'etag' => md5($object), + 'size' => strlen($object), + 'calendardata' => $object, 'firstoccurence' => strtotime('2012-01-01 10:00:00'), - 'lastoccurence' => strtotime('2012-01-01 11:00:00'), - 'componenttype' => 'VEVENT', + 'lastoccurence' => strtotime('2012-01-01 11:00:00'), + 'componenttype' => 'VEVENT', ], $row); - } /** * @depends testCreateCalendarObject */ - function testCreateCalendarObjectInfiniteRecurrence() { - + public function testCreateCalendarObjectInfiniteRecurrence() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -457,21 +432,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals([ - 'etag' => md5($object), - 'size' => strlen($object), - 'calendardata' => $object, + 'etag' => md5($object), + 'size' => strlen($object), + 'calendardata' => $object, 'firstoccurence' => strtotime('2012-01-01 10:00:00'), - 'lastoccurence' => strtotime(PDO::MAX_DATE), - 'componenttype' => 'VEVENT', + 'lastoccurence' => strtotime(PDO::MAX_DATE), + 'componenttype' => 'VEVENT', ], $row); - } /** * @depends testCreateCalendarObject */ - function testCreateCalendarObjectEndingRecurrence() { - + public function testCreateCalendarObjectEndingRecurrence() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -486,21 +460,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals([ - 'etag' => md5($object), - 'size' => strlen($object), - 'calendardata' => $object, + 'etag' => md5($object), + 'size' => strlen($object), + 'calendardata' => $object, 'firstoccurence' => strtotime('2012-01-01 10:00:00'), - 'lastoccurence' => strtotime('2012-01-01 11:00:00') + (3600 * 24 * 999), - 'componenttype' => 'VEVENT', + 'lastoccurence' => strtotime('2012-01-01 11:00:00') + (3600 * 24 * 999), + 'componenttype' => 'VEVENT', ], $row); - } /** * @depends testCreateCalendarObject */ - function testCreateCalendarObjectTask() { - + public function testCreateCalendarObjectTask() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -515,21 +488,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals([ - 'etag' => md5($object), - 'size' => strlen($object), - 'calendardata' => $object, + 'etag' => md5($object), + 'size' => strlen($object), + 'calendardata' => $object, 'firstoccurence' => null, - 'lastoccurence' => null, - 'componenttype' => 'VTODO', + 'lastoccurence' => null, + 'componenttype' => 'VTODO', ], $row); - } /** * @depends testCreateCalendarObject */ - function testGetCalendarObjects() { - + public function testGetCalendarObjects() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -543,36 +515,33 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals('random-id', $data['uri']); $this->assertEquals(strlen($object), $data['size']); - } /** * @depends testGetCalendarObjects * @expectedException \InvalidArgumentException */ - function testGetCalendarObjectsBadId() { - + public function testGetCalendarObjectsBadId() + { $backend = new PDO($this->pdo); $backend->getCalendarObjects('bad-id'); - } /** * @depends testGetCalendarObjects * @expectedException \InvalidArgumentException */ - function testGetCalendarObjectBadId() { - + public function testGetCalendarObjectBadId() + { $backend = new PDO($this->pdo); $backend->getCalendarObject('bad-id', 'foo-bar'); - } /** * @depends testCreateCalendarObject */ - function testGetCalendarObjectByUID() { - + public function testGetCalendarObjectByUID() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -586,14 +555,13 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { 'somerandomid/random-id', $backend->getCalendarObjectByUID('principals/user2', 'foo') ); - } /** * @depends testCreateCalendarObject */ - function testUpdateCalendarObject() { - + public function testUpdateCalendarObject() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -610,26 +578,23 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals($object2, $data['calendardata']); $this->assertEquals('random-id', $data['uri']); - - } /** * @depends testUpdateCalendarObject * @expectedException \InvalidArgumentException */ - function testUpdateCalendarObjectBadId() { - + public function testUpdateCalendarObjectBadId() + { $backend = new PDO($this->pdo); $backend->updateCalendarObject('bad-id', 'object-id', 'objectdata'); - } /** * @depends testCreateCalendarObject */ - function testDeleteCalendarObject() { - + public function testDeleteCalendarObject() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); @@ -639,222 +604,215 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $data = $backend->getCalendarObject($returnedId, 'random-id'); $this->assertNull($data); - } /** * @depends testDeleteCalendarObject * @expectedException \InvalidArgumentException */ - function testDeleteCalendarObjectBadId() { - + public function testDeleteCalendarObjectBadId() + { $backend = new PDO($this->pdo); $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []); $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"; $backend->createCalendarObject($returnedId, 'random-id', $object); $backend->deleteCalendarObject('bad-id', 'random-id'); - } - function testCalendarQueryNoResult() { - + public function testCalendarQueryNoResult() + { $abstract = new PDO($this->pdo); $filters = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VJOURNAL', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VJOURNAL', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $this->assertEquals([ ], $abstract->calendarQuery([1, 1], $filters)); - } /** * @expectedException \InvalidArgumentException * @depends testCalendarQueryNoResult */ - function testCalendarQueryBadId() { - + public function testCalendarQueryBadId() + { $abstract = new PDO($this->pdo); $filters = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VJOURNAL', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VJOURNAL', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $abstract->calendarQuery('bad-id', $filters); - } - function testCalendarQueryTodo() { - + public function testCalendarQueryTodo() + { $backend = new PDO($this->pdo); - $backend->createCalendarObject([1, 1], "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); - $backend->createCalendarObject([1, 1], "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'todo', "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'event', "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $filters = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VTODO', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VTODO', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $this->assertEquals([ - "todo", + 'todo', ], $backend->calendarQuery([1, 1], $filters)); - } - function testCalendarQueryTodoNotMatch() { + public function testCalendarQueryTodoNotMatch() + { $backend = new PDO($this->pdo); - $backend->createCalendarObject([1, 1], "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); - $backend->createCalendarObject([1, 1], "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'todo', "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'event', "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $filters = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VTODO', + 'name' => 'VTODO', 'comp-filters' => [], 'prop-filters' => [ [ - 'name' => 'summary', - 'text-match' => null, - 'time-range' => null, - 'param-filters' => [], + 'name' => 'summary', + 'text-match' => null, + 'time-range' => null, + 'param-filters' => [], 'is-not-defined' => false, ], ], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $this->assertEquals([ ], $backend->calendarQuery([1, 1], $filters)); - } - function testCalendarQueryNoFilter() { - + public function testCalendarQueryNoFilter() + { $backend = new PDO($this->pdo); - $backend->createCalendarObject([1, 1], "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); - $backend->createCalendarObject([1, 1], "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'todo', "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'event', "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $filters = [ - 'name' => 'VCALENDAR', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VCALENDAR', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $result = $backend->calendarQuery([1, 1], $filters); $this->assertTrue(in_array('todo', $result)); $this->assertTrue(in_array('event', $result)); - } - function testCalendarQueryTimeRange() { - + public function testCalendarQueryTimeRange() + { $backend = new PDO($this->pdo); - $backend->createCalendarObject([1, 1], "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); - $backend->createCalendarObject([1, 1], "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); - $backend->createCalendarObject([1, 1], "event2", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'todo', "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'event', "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'event2', "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $filters = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('20120103'), - 'end' => new \DateTime('20120104'), + 'end' => new \DateTime('20120104'), ], ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $this->assertEquals([ - "event2", + 'event2', ], $backend->calendarQuery([1, 1], $filters)); - } - function testCalendarQueryTimeRangeNoEnd() { + public function testCalendarQueryTimeRangeNoEnd() + { $backend = new PDO($this->pdo); - $backend->createCalendarObject([1, 1], "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); - $backend->createCalendarObject([1, 1], "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); - $backend->createCalendarObject([1, 1], "event2", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'todo', "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'event', "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); + $backend->createCalendarObject([1, 1], 'event2', "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $filters = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('20120102'), - 'end' => null, + 'end' => null, ], ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $this->assertEquals([ - "event2", + 'event2', ], $backend->calendarQuery([1, 1], $filters)); - } - function testGetChanges() { - + public function testGetChanges() + { $backend = new PDO($this->pdo); $id = $backend->createCalendar( 'principals/user1', @@ -865,37 +823,37 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals([ 'syncToken' => 1, - 'modified' => [], - 'deleted' => [], - 'added' => [], + 'modified' => [], + 'deleted' => [], + 'added' => [], ], $result); $currentToken = $result['syncToken']; $dummyTodo = "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n"; - $backend->createCalendarObject($id, "todo1.ics", $dummyTodo); - $backend->createCalendarObject($id, "todo2.ics", $dummyTodo); - $backend->createCalendarObject($id, "todo3.ics", $dummyTodo); - $backend->updateCalendarObject($id, "todo1.ics", $dummyTodo); - $backend->deleteCalendarObject($id, "todo2.ics"); + $backend->createCalendarObject($id, 'todo1.ics', $dummyTodo); + $backend->createCalendarObject($id, 'todo2.ics', $dummyTodo); + $backend->createCalendarObject($id, 'todo3.ics', $dummyTodo); + $backend->updateCalendarObject($id, 'todo1.ics', $dummyTodo); + $backend->deleteCalendarObject($id, 'todo2.ics'); $result = $backend->getChangesForCalendar($id, $currentToken, 1); $this->assertEquals([ 'syncToken' => 6, - 'modified' => ["todo1.ics"], - 'deleted' => ["todo2.ics"], - 'added' => ["todo3.ics"], + 'modified' => ['todo1.ics'], + 'deleted' => ['todo2.ics'], + 'added' => ['todo3.ics'], ], $result); $result = $backend->getChangesForCalendar($id, null, 1); $this->assertEquals([ 'syncToken' => 6, - 'modified' => [], - 'deleted' => [], - 'added' => ["todo1.ics", "todo3.ics"], + 'modified' => [], + 'deleted' => [], + 'added' => ['todo1.ics', 'todo3.ics'], ], $result); } @@ -903,8 +861,8 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { * @depends testGetChanges * @expectedException \InvalidArgumentException */ - function testGetChangesBadId() { - + public function testGetChangesBadId() + { $backend = new PDO($this->pdo); $id = $backend->createCalendar( 'principals/user1', @@ -912,16 +870,15 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { [] ); $backend->getChangesForCalendar('bad-id', null, 1); - } - function testCreateSubscriptions() { - + public function testCreateSubscriptions() + { $props = [ - '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), - '{DAV:}displayname' => 'cal', - '{http://apple.com/ns/ical/}refreshrate' => 'P1W', - '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', + '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), + '{DAV:}displayname' => 'cal', + '{http://apple.com/ns/ical/}refreshrate' => 'P1W', + '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', '{http://calendarserver.org/ns/}subscribed-strip-todos' => true, //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true, '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true, @@ -944,29 +901,27 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { foreach ($expected as $k => $v) { $this->assertEquals($subs[0][$k], $expected[$k]); } - } /** * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testCreateSubscriptionFail() { - + public function testCreateSubscriptionFail() + { $props = [ ]; $backend = new PDO($this->pdo); $backend->createSubscription('principals/user1', 'sub1', $props); - } - function testUpdateSubscriptions() { - + public function testUpdateSubscriptions() + { $props = [ - '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), - '{DAV:}displayname' => 'cal', - '{http://apple.com/ns/ical/}refreshrate' => 'P1W', - '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', + '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), + '{DAV:}displayname' => 'cal', + '{http://apple.com/ns/ical/}refreshrate' => 'P1W', + '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', '{http://calendarserver.org/ns/}subscribed-strip-todos' => true, //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true, '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true, @@ -976,7 +931,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $backend->createSubscription('principals/user1', 'sub1', $props); $newProps = [ - '{DAV:}displayname' => 'new displayname', + '{DAV:}displayname' => 'new displayname', '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal2.ics', false), ]; @@ -1000,16 +955,15 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { foreach ($expected as $k => $v) { $this->assertEquals($subs[0][$k], $expected[$k]); } - } - function testUpdateSubscriptionsFail() { - + public function testUpdateSubscriptionsFail() + { $props = [ - '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), - '{DAV:}displayname' => 'cal', - '{http://apple.com/ns/ical/}refreshrate' => 'P1W', - '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', + '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), + '{DAV:}displayname' => 'cal', + '{http://apple.com/ns/ical/}refreshrate' => 'P1W', + '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', '{http://calendarserver.org/ns/}subscribed-strip-todos' => true, //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true, '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true, @@ -1019,29 +973,28 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $backend->createSubscription('principals/user1', 'sub1', $props); $propPatch = new DAV\PropPatch([ - '{DAV:}displayname' => 'new displayname', + '{DAV:}displayname' => 'new displayname', '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal2.ics', false), - '{DAV:}unknown' => 'foo', + '{DAV:}unknown' => 'foo', ]); $backend->updateSubscription(1, $propPatch); $propPatch->commit(); $this->assertEquals([ - '{DAV:}unknown' => 403, - '{DAV:}displayname' => 424, + '{DAV:}unknown' => 403, + '{DAV:}displayname' => 424, '{http://calendarserver.org/ns/}source' => 424, ], $propPatch->getResult()); - } - function testDeleteSubscriptions() { - + public function testDeleteSubscriptions() + { $props = [ - '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), - '{DAV:}displayname' => 'cal', - '{http://apple.com/ns/ical/}refreshrate' => 'P1W', - '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', + '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false), + '{DAV:}displayname' => 'cal', + '{http://apple.com/ns/ical/}refreshrate' => 'P1W', + '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF', '{http://calendarserver.org/ns/}subscribed-strip-todos' => true, //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true, '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true, @@ -1051,7 +1004,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $backend->createSubscription('principals/user1', 'sub1', $props); $newProps = [ - '{DAV:}displayname' => 'new displayname', + '{DAV:}displayname' => 'new displayname', '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal2.ics', false), ]; @@ -1061,8 +1014,8 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(0, count($subs)); } - function testSchedulingMethods() { - + public function testSchedulingMethods() + { $backend = new PDO($this->pdo); $calData = "BEGIN:VCALENDAR\r\nEND:VCALENDAR\r\n"; @@ -1075,9 +1028,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = [ 'calendardata' => $calData, - 'uri' => 'schedule1.ics', - 'etag' => '"' . md5($calData) . '"', - 'size' => strlen($calData) + 'uri' => 'schedule1.ics', + 'etag' => '"'.md5($calData).'"', + 'size' => strlen($calData), ]; $result = $backend->getSchedulingObject('principals/user1', 'schedule1.ics'); @@ -1104,11 +1057,10 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result = $backend->getSchedulingObject('principals/user1', 'schedule1.ics'); $this->assertNull($result); - } - function testGetInvites() { - + public function testGetInvites() + { $backend = new PDO($this->pdo); // creating a new calendar @@ -1118,23 +1070,22 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result = $backend->getInvites($calendar['id']); $expected = [ new Sharee([ - 'href' => 'principals/user1', - 'principal' => 'principals/user1', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, + 'href' => 'principals/user1', + 'principal' => 'principals/user1', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, - ]) + ]), ]; $this->assertEquals($expected, $result); - } /** * @depends testGetInvites * @expectedException \InvalidArgumentException */ - function testGetInvitesBadId() { - + public function testGetInvitesBadId() + { $backend = new PDO($this->pdo); // creating a new calendar @@ -1142,14 +1093,13 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar = $backend->getCalendarsForUser('principals/user1')[0]; $backend->getInvites('bad-id'); - } /** * @depends testCreateCalendarAndFetch */ - function testUpdateInvites() { - + public function testUpdateInvites() + { $backend = new PDO($this->pdo); // creating a new calendar @@ -1157,9 +1107,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar = $backend->getCalendarsForUser('principals/user1')[0]; $ownerSharee = new Sharee([ - 'href' => 'principals/user1', - 'principal' => 'principals/user1', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, + 'href' => 'principals/user1', + 'principal' => 'principals/user1', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, ]); @@ -1168,12 +1118,12 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar['id'], [ new Sharee([ - 'href' => 'mailto:user@example.org', - 'principal' => 'principals/user2', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, + 'href' => 'mailto:user@example.org', + 'principal' => 'principals/user2', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, - 'properties' => ['{DAV:}displayname' => 'User 2'], - ]) + 'properties' => ['{DAV:}displayname' => 'User 2'], + ]), ] ); @@ -1181,26 +1131,26 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = [ $ownerSharee, new Sharee([ - 'href' => 'mailto:user@example.org', - 'principal' => 'principals/user2', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, + 'href' => 'mailto:user@example.org', + 'principal' => 'principals/user2', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, - 'properties' => [ + 'properties' => [ '{DAV:}displayname' => 'User 2', ], - ]) + ]), ]; $this->assertEquals($expected, $result); // Checking calendar_instances too $expectedCalendar = [ - 'id' => [1,2], - 'principaluri' => 'principals/user2', + 'id' => [1, 2], + 'principaluri' => 'principals/user2', '{http://calendarserver.org/ns/}getctag' => 'http://sabre.io/ns/sync/1', - '{http://sabredav.org/ns}sync-token' => '1', - 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, - 'read-only' => true, - 'share-resource-uri' => '/ns/share/1', + '{http://sabredav.org/ns}sync-token' => '1', + 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, + 'read-only' => true, + 'share-resource-uri' => '/ns/share/1', ]; $calendars = $backend->getCalendarsForUser('principals/user2'); @@ -1208,21 +1158,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals( $v, $calendars[0][$k], - "Key " . $k . " in calendars array did not have the expected value." + 'Key '.$k.' in calendars array did not have the expected value.' ); } - // Updating an invite $backend->updateInvites( $calendar['id'], [ new Sharee([ - 'href' => 'mailto:user@example.org', - 'principal' => 'principals/user2', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE, + 'href' => 'mailto:user@example.org', + 'principal' => 'principals/user2', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, - ]) + ]), ] ); @@ -1230,14 +1179,14 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = [ $ownerSharee, new Sharee([ - 'href' => 'mailto:user@example.org', - 'principal' => 'principals/user2', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE, + 'href' => 'mailto:user@example.org', + 'principal' => 'principals/user2', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, - 'properties' => [ + 'properties' => [ '{DAV:}displayname' => 'User 2', ], - ]) + ]), ]; $this->assertEquals($expected, $result); @@ -1246,15 +1195,15 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar['id'], [ new Sharee([ - 'href' => 'mailto:user@example.org', + 'href' => 'mailto:user@example.org', 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_NOACCESS, - ]) + ]), ] ); $result = $backend->getInvites($calendar['id']); $expected = [ - $ownerSharee + $ownerSharee, ]; $this->assertEquals($expected, $result); @@ -1263,45 +1212,43 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar['id'], [ new Sharee([ - 'href' => 'principals/user2', + 'href' => 'principals/user2', 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_NOACCESS, - ]) + ]), ] ); $result = $backend->getInvites($calendar['id']); $expected = [ new Sharee([ - 'href' => 'principals/user1', - 'principal' => 'principals/user1', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, + 'href' => 'principals/user1', + 'principal' => 'principals/user1', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, ]), ]; $this->assertEquals($expected, $result); - } /** * @depends testUpdateInvites * @expectedException \InvalidArgumentException */ - function testUpdateInvitesBadId() { - + public function testUpdateInvitesBadId() + { $backend = new PDO($this->pdo); // Add a new invite $backend->updateInvites( 'bad-id', [] ); - } /** * @depends testUpdateInvites */ - function testUpdateInvitesNoPrincipal() { - + public function testUpdateInvitesNoPrincipal() + { $backend = new PDO($this->pdo); // creating a new calendar @@ -1309,9 +1256,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar = $backend->getCalendarsForUser('principals/user1')[0]; $ownerSharee = new Sharee([ - 'href' => 'principals/user1', - 'principal' => 'principals/user1', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, + 'href' => 'principals/user1', + 'principal' => 'principals/user1', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, ]); @@ -1320,12 +1267,12 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar['id'], [ new Sharee([ - 'href' => 'mailto:user@example.org', - 'principal' => null, - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, + 'href' => 'mailto:user@example.org', + 'principal' => null, + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, - 'properties' => ['{DAV:}displayname' => 'User 2'], - ]) + 'properties' => ['{DAV:}displayname' => 'User 2'], + ]), ] ); @@ -1333,24 +1280,23 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = [ $ownerSharee, new Sharee([ - 'href' => 'mailto:user@example.org', - 'principal' => null, - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, + 'href' => 'mailto:user@example.org', + 'principal' => null, + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_INVALID, - 'properties' => [ + 'properties' => [ '{DAV:}displayname' => 'User 2', ], - ]) + ]), ]; $this->assertEquals($expected, $result, null, 0.0, 10, true); // Last argument is $canonicalize = true, which allows us to compare, ignoring the order, because it's different between MySQL and Sqlite. - } /** * @depends testUpdateInvites */ - function testDeleteSharedCalendar() { - + public function testDeleteSharedCalendar() + { $backend = new PDO($this->pdo); // creating a new calendar @@ -1358,9 +1304,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar = $backend->getCalendarsForUser('principals/user1')[0]; $ownerSharee = new Sharee([ - 'href' => 'principals/user1', - 'principal' => 'principals/user1', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, + 'href' => 'principals/user1', + 'principal' => 'principals/user1', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, ]); @@ -1369,23 +1315,23 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $calendar['id'], [ new Sharee([ - 'href' => 'mailto:user@example.org', - 'principal' => 'principals/user2', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, + 'href' => 'mailto:user@example.org', + 'principal' => 'principals/user2', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, - 'properties' => ['{DAV:}displayname' => 'User 2'], - ]) + 'properties' => ['{DAV:}displayname' => 'User 2'], + ]), ] ); $expectedCalendar = [ - 'id' => [1,2], - 'principaluri' => 'principals/user2', + 'id' => [1, 2], + 'principaluri' => 'principals/user2', '{http://calendarserver.org/ns/}getctag' => 'http://sabre.io/ns/sync/1', - '{http://sabredav.org/ns}sync-token' => '1', - 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, - 'read-only' => true, - 'share-resource-uri' => '/ns/share/1', + '{http://sabredav.org/ns}sync-token' => '1', + 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READ, + 'read-only' => true, + 'share-resource-uri' => '/ns/share/1', ]; $calendars = $backend->getCalendarsForUser('principals/user2'); @@ -1393,7 +1339,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals( $v, $calendars[0][$k], - "Key " . $k . " in calendars array did not have the expected value." + 'Key '.$k.' in calendars array did not have the expected value.' ); } @@ -1408,24 +1354,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result = $backend->getInvites($calendar['id']); $expected = [ new Sharee([ - 'href' => 'principals/user1', - 'principal' => 'principals/user1', - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, + 'href' => 'principals/user1', + 'principal' => 'principals/user1', + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_SHAREDOWNER, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_ACCEPTED, ]), ]; $this->assertEquals($expected, $result); - } /** * @expectedException \Sabre\DAV\Exception\NotImplemented */ - function testSetPublishStatus() { - + public function testSetPublishStatus() + { $backend = new PDO($this->pdo); $backend->setPublishStatus([1, 1], true); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php index 7f642efc9..166de1dab 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php @@ -1,14 +1,16 @@ 'anything']); @@ -16,36 +18,34 @@ class AbstractTest extends \PHPUnit_Framework_TestCase { $result = $propPatch->commit(); $this->assertFalse($result); - } - function testCalendarQuery() { - + public function testCalendarQuery() + { $abstract = new AbstractMock(); $filters = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $this->assertEquals([ 'event1.ics', ], $abstract->calendarQuery(1, $filters)); - } - function testGetCalendarObjectByUID() { - + public function testGetCalendarObjectByUID() + { $abstract = new AbstractMock(); $this->assertNull( $abstract->getCalendarObjectByUID('principal1', 'zim') @@ -60,11 +60,10 @@ class AbstractTest extends \PHPUnit_Framework_TestCase { $this->assertNull( $abstract->getCalendarObjectByUID('principal1', 'shared') ); - } - function testGetMultipleCalendarObjects() { - + public function testGetMultipleCalendarObjects() + { $abstract = new AbstractMock(); $result = $abstract->getMultipleCalendarObjects(1, [ 'event1.ics', @@ -73,106 +72,113 @@ class AbstractTest extends \PHPUnit_Framework_TestCase { $expected = [ [ - 'id' => 1, - 'calendarid' => 1, - 'uri' => 'event1.ics', + 'id' => 1, + 'calendarid' => 1, + 'uri' => 'event1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", ], [ - 'id' => 2, - 'calendarid' => 1, - 'uri' => 'task1.ics', + 'id' => 2, + 'calendarid' => 1, + 'uri' => 'task1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n", ], ]; $this->assertEquals($expected, $result); - - } - } -class AbstractMock extends AbstractBackend { - - function getCalendarsForUser($principalUri) { - +class AbstractMock extends AbstractBackend +{ + public function getCalendarsForUser($principalUri) + { return [ [ - 'id' => 1, + 'id' => 1, 'principaluri' => 'principal1', - 'uri' => 'cal1', + 'uri' => 'cal1', ], [ - 'id' => 2, - 'principaluri' => 'principal1', + 'id' => 2, + 'principaluri' => 'principal1', '{http://sabredav.org/ns}owner-principal' => 'principal2', - 'uri' => 'cal1', + 'uri' => 'cal1', ], ]; + } + + public function createCalendar($principalUri, $calendarUri, array $properties) + { + } + public function deleteCalendar($calendarId) + { } - function createCalendar($principalUri, $calendarUri, array $properties) { } - function deleteCalendar($calendarId) { } - function getCalendarObjects($calendarId) { + public function getCalendarObjects($calendarId) + { switch ($calendarId) { case 1: return [ [ - 'id' => 1, + 'id' => 1, 'calendarid' => 1, - 'uri' => 'event1.ics', + 'uri' => 'event1.ics', ], [ - 'id' => 2, + 'id' => 2, 'calendarid' => 1, - 'uri' => 'task1.ics', + 'uri' => 'task1.ics', ], ]; case 2: return [ [ - 'id' => 3, + 'id' => 3, 'calendarid' => 2, - 'uri' => 'shared-event.ics', - ] + 'uri' => 'shared-event.ics', + ], ]; } - } - function getCalendarObject($calendarId, $objectUri) { - + public function getCalendarObject($calendarId, $objectUri) + { switch ($objectUri) { - - case 'event1.ics' : + case 'event1.ics': return [ - 'id' => 1, - 'calendarid' => 1, - 'uri' => 'event1.ics', + 'id' => 1, + 'calendarid' => 1, + 'uri' => 'event1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", ]; - case 'task1.ics' : + case 'task1.ics': return [ - 'id' => 2, - 'calendarid' => 1, - 'uri' => 'task1.ics', + 'id' => 2, + 'calendarid' => 1, + 'uri' => 'task1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n", ]; - case 'shared-event.ics' : + case 'shared-event.ics': return [ - 'id' => 3, - 'calendarid' => 2, - 'uri' => 'event1.ics', + 'id' => 3, + 'calendarid' => 2, + 'uri' => 'event1.ics', 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:shared\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", ]; - } + } + public function createCalendarObject($calendarId, $objectUri, $calendarData) + { } - function createCalendarObject($calendarId, $objectUri, $calendarData) { } - function updateCalendarObject($calendarId, $objectUri, $calendarData) { } - function deleteCalendarObject($calendarId, $objectUri) { } + public function updateCalendarObject($calendarId, $objectUri, $calendarData) + { + } + + public function deleteCalendarObject($calendarId, $objectUri) + { + } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php index cc665cd8f..9f18eeb72 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php @@ -1,17 +1,19 @@ calendars = $calendars; $this->calendarData = $calendarData; - } /** @@ -38,10 +39,11 @@ class Mock extends AbstractBackend { * common one is '{DAV:}displayname'. * * @param string $principalUri + * * @return array */ - function getCalendarsForUser($principalUri) { - + public function getCalendarsForUser($principalUri) + { $r = []; foreach ($this->calendars as $row) { if ($row['principaluri'] == $principalUri) { @@ -50,7 +52,6 @@ class Mock extends AbstractBackend { } return $r; - } /** @@ -64,21 +65,21 @@ class Mock extends AbstractBackend { * * @param string $principalUri * @param string $calendarUri - * @param array $properties + * @param array $properties + * * @return string|int */ - function createCalendar($principalUri, $calendarUri, array $properties) { - + public function createCalendar($principalUri, $calendarUri, array $properties) + { $id = DAV\UUIDUtil::getUUID(); $this->calendars[] = array_merge([ - 'id' => $id, - 'principaluri' => $principalUri, - 'uri' => $calendarUri, - '{' . CalDAV\Plugin::NS_CALDAV . '}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']), + 'id' => $id, + 'principaluri' => $principalUri, + 'uri' => $calendarUri, + '{'.CalDAV\Plugin::NS_CALDAV.'}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']), ], $properties); return $id; - } /** @@ -93,16 +94,13 @@ class Mock extends AbstractBackend { * * Read the PropPatch documentation for more info and examples. * - * @param mixed $calendarId + * @param mixed $calendarId * @param \Sabre\DAV\PropPatch $propPatch - * @return void */ - function updateCalendar($calendarId, \Sabre\DAV\PropPatch $propPatch) { - - $propPatch->handleRemaining(function($props) use ($calendarId) { - + public function updateCalendar($calendarId, \Sabre\DAV\PropPatch $propPatch) + { + $propPatch->handleRemaining(function ($props) use ($calendarId) { foreach ($this->calendars as $k => $calendar) { - if ($calendar['id'] === $calendarId) { foreach ($props as $propName => $propValue) { if (is_null($propValue)) { @@ -111,30 +109,25 @@ class Mock extends AbstractBackend { $this->calendars[$k][$propName] = $propValue; } } - return true; + return true; } - } - }); - } /** - * Delete a calendar and all it's objects + * Delete a calendar and all it's objects. * * @param string $calendarId - * @return void */ - function deleteCalendar($calendarId) { - + public function deleteCalendar($calendarId) + { foreach ($this->calendars as $k => $calendar) { if ($calendar['id'] === $calendarId) { unset($this->calendars[$k]); } } - } /** @@ -157,12 +150,14 @@ class Mock extends AbstractBackend { * calendardata. * * @param string $calendarId + * * @return array */ - function getCalendarObjects($calendarId) { - - if (!isset($this->calendarData[$calendarId])) + public function getCalendarObjects($calendarId) + { + if (!isset($this->calendarData[$calendarId])) { return []; + } $objects = $this->calendarData[$calendarId]; @@ -171,8 +166,8 @@ class Mock extends AbstractBackend { $object['uri'] = $uri; $object['lastmodified'] = null; } - return $objects; + return $objects; } /** @@ -187,12 +182,13 @@ class Mock extends AbstractBackend { * * This method must return null if the object did not exist. * - * @param mixed $calendarId + * @param mixed $calendarId * @param string $objectUri + * * @return array|null */ - function getCalendarObject($calendarId, $objectUri) { - + public function getCalendarObject($calendarId, $objectUri) + { if (!isset($this->calendarData[$calendarId][$objectUri])) { return null; } @@ -200,8 +196,8 @@ class Mock extends AbstractBackend { $object['calendarid'] = $calendarId; $object['uri'] = $objectUri; $object['lastmodified'] = null; - return $object; + return $object; } /** @@ -210,17 +206,16 @@ class Mock extends AbstractBackend { * @param string $calendarId * @param string $objectUri * @param string $calendarData - * @return void */ - function createCalendarObject($calendarId, $objectUri, $calendarData) { - + public function createCalendarObject($calendarId, $objectUri, $calendarData) + { $this->calendarData[$calendarId][$objectUri] = [ 'calendardata' => $calendarData, - 'calendarid' => $calendarId, - 'uri' => $objectUri, + 'calendarid' => $calendarId, + 'uri' => $objectUri, ]; - return '"' . md5($calendarData) . '"'; + return '"'.md5($calendarData).'"'; } /** @@ -229,17 +224,16 @@ class Mock extends AbstractBackend { * @param string $calendarId * @param string $objectUri * @param string $calendarData - * @return void */ - function updateCalendarObject($calendarId, $objectUri, $calendarData) { - + public function updateCalendarObject($calendarId, $objectUri, $calendarData) + { $this->calendarData[$calendarId][$objectUri] = [ 'calendardata' => $calendarData, - 'calendarid' => $calendarId, - 'uri' => $objectUri, + 'calendarid' => $calendarId, + 'uri' => $objectUri, ]; - return '"' . md5($calendarData) . '"'; + return '"'.md5($calendarData).'"'; } /** @@ -247,12 +241,9 @@ class Mock extends AbstractBackend { * * @param string $calendarId * @param string $objectUri - * @return void */ - function deleteCalendarObject($calendarId, $objectUri) { - + public function deleteCalendarObject($calendarId, $objectUri) + { unset($this->calendarData[$calendarId][$objectUri]); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php index e068ff1e7..66388def4 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php @@ -1,9 +1,10 @@ backend = TestUtil::getBackend(); $calendars = $this->backend->getCalendarsForUser('principals/user1'); $this->assertEquals(2, count($calendars)); $this->calendar = new Calendar($this->backend, $calendars[0]); - } - function teardown() { - + public function teardown() + { unset($this->calendar); unset($this->backend); - } - function testSetup() { - + public function testSetup() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); @@ -42,54 +42,50 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase { $this->assertInternalType('string', $children[0]->get()); $this->assertInternalType('string', $children[0]->getETag()); $this->assertEquals('text/calendar; charset=utf-8', $children[0]->getContentType()); - } /** - * @expectedException InvalidArgumentException + * @expectedException \InvalidArgumentException */ - function testInvalidArg1() { - + public function testInvalidArg1() + { $obj = new CalendarObject( new Backend\Mock([], []), [], [] ); - } /** - * @expectedException InvalidArgumentException + * @expectedException \InvalidArgumentException */ - function testInvalidArg2() { - + public function testInvalidArg2() + { $obj = new CalendarObject( new Backend\Mock([], []), [], ['calendarid' => '1'] ); - } /** * @depends testSetup */ - function testPut() { - + public function testPut() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); $newData = TestUtil::getTestCalendarData(); $children[0]->put($newData); $this->assertEquals($newData, $children[0]->get()); - } /** * @depends testSetup */ - function testPutStream() { - + public function testPutStream() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); $newData = TestUtil::getTestCalendarData(); @@ -99,15 +95,13 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase { rewind($stream); $children[0]->put($stream); $this->assertEquals($newData, $children[0]->get()); - } - /** * @depends testSetup */ - function testDelete() { - + public function testDelete() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); @@ -116,14 +110,13 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase { $children2 = $this->calendar->getChildren(); $this->assertEquals(count($children) - 1, count($children2)); - } /** * @depends testSetup */ - function testGetLastModified() { - + public function testGetLastModified() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); @@ -131,14 +124,13 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase { $lastMod = $obj->getLastModified(); $this->assertTrue(is_int($lastMod) || ctype_digit($lastMod) || is_null($lastMod)); - } /** * @depends testSetup */ - function testGetSize() { - + public function testGetSize() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); @@ -146,31 +138,28 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase { $size = $obj->getSize(); $this->assertInternalType('int', $size); - } - function testGetOwner() { - + public function testGetOwner() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); $obj = $children[0]; $this->assertEquals('principals/user1', $obj->getOwner()); - } - function testGetGroup() { - + public function testGetGroup() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); $obj = $children[0]; $this->assertNull($obj->getGroup()); - } - function testGetACL() { - + public function testGetACL() + { $expected = [ [ 'privilege' => '{DAV:}read', @@ -204,11 +193,10 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase { $obj = $children[0]; $this->assertEquals($expected, $obj->getACL()); - } - function testDefaultACL() { - + public function testDefaultACL() + { $backend = new Backend\Mock([], []); $calendarObject = new CalendarObject($backend, ['principaluri' => 'principals/user1'], ['calendarid' => 1, 'uri' => 'foo']); $expected = [ @@ -229,31 +217,28 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase { ], ]; $this->assertEquals($expected, $calendarObject->getACL()); - - } /** * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetACL() { - + public function testSetACL() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); $obj = $children[0]; $obj->setACL([]); - } - function testGet() { - + public function testGet() + { $children = $this->calendar->getChildren(); $this->assertTrue($children[0] instanceof CalendarObject); $obj = $children[0]; - $expected = "BEGIN:VCALENDAR + $expected = 'BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Apple Inc.//iCal 4.0.1//EN CALSCALE:GREGORIAN @@ -284,100 +269,91 @@ DTEND;TZID=Asia/Seoul:20100223T070000 ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com SEQUENCE:2 END:VEVENT -END:VCALENDAR"; - - +END:VCALENDAR'; $this->assertEquals($expected, $obj->get()); - } - function testGetRefetch() { - + public function testGetRefetch() + { $backend = new Backend\Mock([], [ 1 => [ 'foo' => [ 'calendardata' => 'foo', - 'uri' => 'foo' + 'uri' => 'foo', ], - ] + ], ]); $obj = new CalendarObject($backend, ['id' => 1], ['uri' => 'foo']); $this->assertEquals('foo', $obj->get()); - } - function testGetEtag1() { - + public function testGetEtag1() + { $objectInfo = [ 'calendardata' => 'foo', - 'uri' => 'foo', - 'etag' => 'bar', - 'calendarid' => 1 + 'uri' => 'foo', + 'etag' => 'bar', + 'calendarid' => 1, ]; $backend = new Backend\Mock([], []); $obj = new CalendarObject($backend, [], $objectInfo); $this->assertEquals('bar', $obj->getETag()); - } - function testGetEtag2() { - + public function testGetEtag2() + { $objectInfo = [ 'calendardata' => 'foo', - 'uri' => 'foo', - 'calendarid' => 1 + 'uri' => 'foo', + 'calendarid' => 1, ]; $backend = new Backend\Mock([], []); $obj = new CalendarObject($backend, [], $objectInfo); - $this->assertEquals('"' . md5('foo') . '"', $obj->getETag()); - + $this->assertEquals('"'.md5('foo').'"', $obj->getETag()); } - function testGetSupportedPrivilegesSet() { - + public function testGetSupportedPrivilegesSet() + { $objectInfo = [ 'calendardata' => 'foo', - 'uri' => 'foo', - 'calendarid' => 1 + 'uri' => 'foo', + 'calendarid' => 1, ]; $backend = new Backend\Mock([], []); $obj = new CalendarObject($backend, [], $objectInfo); $this->assertNull($obj->getSupportedPrivilegeSet()); - } - function testGetSize1() { - + public function testGetSize1() + { $objectInfo = [ 'calendardata' => 'foo', - 'uri' => 'foo', - 'calendarid' => 1 + 'uri' => 'foo', + 'calendarid' => 1, ]; $backend = new Backend\Mock([], []); $obj = new CalendarObject($backend, [], $objectInfo); $this->assertEquals(3, $obj->getSize()); - } - function testGetSize2() { - + public function testGetSize2() + { $objectInfo = [ - 'uri' => 'foo', + 'uri' => 'foo', 'calendarid' => 1, - 'size' => 4, + 'size' => 4, ]; $backend = new Backend\Mock([], []); $obj = new CalendarObject($backend, [], $objectInfo); $this->assertEquals(4, $obj->getSize()); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php index ca06d8ffa..660832ba4 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php @@ -1,17 +1,19 @@ createComponent('VEVENT'); @@ -23,29 +25,28 @@ class CalendarQueryVAlarmTest extends \PHPUnit_Framework_TestCase { $valarm->TRIGGER = '-P15D'; $vevent->add($valarm); - $vcalendar->add($vevent); $filter = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'is-not-defined' => false, - 'time-range' => null, - 'prop-filters' => [], - 'comp-filters' => [ + 'time-range' => null, + 'prop-filters' => [], + 'comp-filters' => [ [ - 'name' => 'VEVENT', + 'name' => 'VEVENT', 'is-not-defined' => false, - 'time-range' => null, - 'prop-filters' => [], - 'comp-filters' => [ + 'time-range' => null, + 'prop-filters' => [], + 'comp-filters' => [ [ - 'name' => 'VALARM', + 'name' => 'VALARM', 'is-not-defined' => false, - 'prop-filters' => [], - 'comp-filters' => [], - 'time-range' => [ + 'prop-filters' => [], + 'comp-filters' => [], + 'time-range' => [ 'start' => new \DateTime('2012-05-10'), - 'end' => new \DateTime('2012-05-20'), + 'end' => new \DateTime('2012-05-20'), ], ], ], @@ -73,8 +74,8 @@ class CalendarQueryVAlarmTest extends \PHPUnit_Framework_TestCase { $this->assertFalse($validator->validate($vcalendar, $filter)); } - function testAlarmWayBefore() { - + public function testAlarmWayBefore() + { $vcalendar = new VObject\Component\VCalendar(); $vevent = $vcalendar->createComponent('VEVENT'); @@ -88,25 +89,25 @@ class CalendarQueryVAlarmTest extends \PHPUnit_Framework_TestCase { $vcalendar->add($vevent); $filter = [ - 'name' => 'VCALENDAR', + 'name' => 'VCALENDAR', 'is-not-defined' => false, - 'time-range' => null, - 'prop-filters' => [], - 'comp-filters' => [ + 'time-range' => null, + 'prop-filters' => [], + 'comp-filters' => [ [ - 'name' => 'VEVENT', + 'name' => 'VEVENT', 'is-not-defined' => false, - 'time-range' => null, - 'prop-filters' => [], - 'comp-filters' => [ + 'time-range' => null, + 'prop-filters' => [], + 'comp-filters' => [ [ - 'name' => 'VALARM', + 'name' => 'VALARM', 'is-not-defined' => false, - 'prop-filters' => [], - 'comp-filters' => [], - 'time-range' => [ + 'prop-filters' => [], + 'comp-filters' => [], + 'time-range' => [ 'start' => new \DateTime('2011-12-10'), - 'end' => new \DateTime('2011-12-20'), + 'end' => new \DateTime('2011-12-20'), ], ], ], @@ -116,7 +117,5 @@ class CalendarQueryVAlarmTest extends \PHPUnit_Framework_TestCase { $validator = new CalendarQueryValidator(); $this->assertTrue($validator->validate($vcalendar, $filter)); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php index f3305163b..9dc8ce188 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php @@ -1,13 +1,15 @@ assertFalse($validator->validate($vcal, ['name' => 'VFOO'])); - } /** * @param string $icalObject - * @param array $filters - * @param int $outcome + * @param array $filters + * @param int $outcome * @dataProvider provider */ - function testValid($icalObject, $filters, $outcome) { - + public function testValid($icalObject, $filters, $outcome) + { $validator = new CalendarQueryValidator(); // Wrapping filter in a VCALENDAR component filter, as this is always // there anyway. $filters = [ - 'name' => 'VCALENDAR', - 'comp-filters' => [$filters], - 'prop-filters' => [], + 'name' => 'VCALENDAR', + 'comp-filters' => [$filters], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $vObject = VObject\Reader::read($icalObject); switch ($outcome) { - case 0 : + case 0: $this->assertFalse($validator->validate($vObject, $filters)); break; - case 1 : + case 1: $this->assertTrue($validator->validate($vObject, $filters)); break; - case -1 : + case -1: try { $validator->validate($vObject, $filters); $this->fail('This test was supposed to fail'); @@ -62,13 +63,11 @@ ICS; $this->assertTrue(true); } break; - } - } - function provider() { - + public function provider() + { $blob1 = << 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $filter2 = $filter1; $filter2['name'] = 'VTODO'; @@ -415,21 +412,21 @@ yow; $filter5 = $filter1; $filter5['comp-filters'] = [ [ - 'name' => 'VALARM', + 'name' => 'VALARM', 'is-not-defined' => false, - 'comp-filters' => [], - 'prop-filters' => [], - 'time-range' => null, + 'comp-filters' => [], + 'prop-filters' => [], + 'time-range' => null, ], ]; $filter6 = $filter1; $filter6['prop-filters'] = [ [ - 'name' => 'SUMMARY', + 'name' => 'SUMMARY', 'is-not-defined' => false, - 'param-filters' => [], - 'time-range' => null, - 'text-match' => null, + 'param-filters' => [], + 'time-range' => null, + 'text-match' => null, ], ]; $filter7 = $filter6; @@ -448,13 +445,13 @@ yow; $filter11 = $filter1; $filter11['prop-filters'] = [ [ - 'name' => 'DTSTART', + 'name' => 'DTSTART', 'is-not-defined' => false, - 'param-filters' => [ + 'param-filters' => [ [ - 'name' => 'VALUE', + 'name' => 'VALUE', 'is-not-defined' => false, - 'text-match' => null, + 'text-match' => null, ], ], 'time-range' => null, @@ -474,8 +471,8 @@ yow; // Param text filter $filter15 = $filter11; $filter15['prop-filters'][0]['param-filters'][0]['text-match'] = [ - 'collation' => 'i;ascii-casemap', - 'value' => 'dAtE', + 'collation' => 'i;ascii-casemap', + 'value' => 'dAtE', 'negate-condition' => false, ]; $filter16 = $filter15; @@ -492,13 +489,13 @@ yow; $filter19 = $filter5; $filter19['comp-filters'][0]['prop-filters'] = [ [ - 'name' => 'action', + 'name' => 'action', 'is-not-defined' => false, - 'time-range' => null, - 'param-filters' => [], - 'text-match' => [ - 'collation' => 'i;ascii-casemap', - 'value' => 'display', + 'time-range' => null, + 'param-filters' => [], + 'text-match' => [ + 'collation' => 'i;ascii-casemap', + 'value' => 'display', 'negate-condition' => false, ], ], @@ -506,13 +503,13 @@ yow; // Time range $filter20 = [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), ], ]; // Time range, no end date @@ -527,102 +524,102 @@ yow; $filter23 = $filter20; $filter23['time-range'] = [ 'start' => new \DateTime('2011-02-01 10:00:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')), ]; // Time range $filter24 = [ - 'name' => 'VTODO', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VTODO', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), ], ]; // Time range, other dates (1 month in the future) $filter25 = $filter24; $filter25['time-range'] = [ 'start' => new \DateTime('2011-02-01 10:00:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')), ]; $filter26 = $filter24; $filter26['time-range'] = [ 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), ]; // Time range for VJOURNAL $filter27 = [ - 'name' => 'VJOURNAL', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VJOURNAL', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), ], ]; $filter28 = $filter27; $filter28['time-range'] = [ 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), ]; // Time range for VFREEBUSY $filter29 = [ - 'name' => 'VFREEBUSY', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VFREEBUSY', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')), ], ]; // Time range filter on property $filter30 = [ - 'name' => 'VEVENT', + 'name' => 'VEVENT', 'comp-filters' => [], 'prop-filters' => [ [ - 'name' => 'DTSTART', + 'name' => 'DTSTART', 'is-not-defined' => false, - 'param-filters' => [], - 'time-range' => [ + 'param-filters' => [], + 'time-range' => [ 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), ], 'text-match' => null, ], ], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; // Time range for alarm $filter31 = [ - 'name' => 'VEVENT', + 'name' => 'VEVENT', 'prop-filters' => [], 'comp-filters' => [ [ - 'name' => 'VALARM', + 'name' => 'VALARM', 'is-not-defined' => false, - 'comp-filters' => [], - 'prop-filters' => [], - 'time-range' => [ + 'comp-filters' => [], + 'prop-filters' => [], + 'time-range' => [ 'start' => new \DateTime('2011-01-01 10:45:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 11:15:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 11:15:00', new \DateTimeZone('GMT')), ], 'text-match' => null, ], ], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $filter32 = $filter31; $filter32['comp-filters'][0]['time-range'] = [ 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')), ]; $filter33 = $filter31; @@ -636,55 +633,54 @@ yow; // Time range filter on non-datetime property $filter37 = [ - 'name' => 'VEVENT', + 'name' => 'VEVENT', 'comp-filters' => [], 'prop-filters' => [ [ - 'name' => 'SUMMARY', + 'name' => 'SUMMARY', 'is-not-defined' => false, - 'param-filters' => [], - 'time-range' => [ + 'param-filters' => [], + 'time-range' => [ 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')), - 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), + 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')), ], 'text-match' => null, ], ], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $filter38 = [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2012-07-01 00:00:00', new \DateTimeZone('UTC')), - 'end' => new \DateTime('2012-08-01 00:00:00', new \DateTimeZone('UTC')), - ] + 'end' => new \DateTime('2012-08-01 00:00:00', new \DateTimeZone('UTC')), + ], ]; $filter39 = [ - 'name' => 'VEVENT', + 'name' => 'VEVENT', 'comp-filters' => [ [ - 'name' => 'VALARM', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VALARM', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2012-09-01 00:00:00', new \DateTimeZone('UTC')), - 'end' => new \DateTime('2012-10-01 00:00:00', new \DateTimeZone('UTC')), - ] + 'end' => new \DateTime('2012-10-01 00:00:00', new \DateTimeZone('UTC')), + ], ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; return [ - // Component check [$blob1, $filter1, 1], @@ -823,7 +819,5 @@ yow; // Event in timerange, but filtered alarm is in the far future (88). [$blob34, $filter39, 0], ]; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php index df85b6ded..7d6414a80 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php @@ -1,13 +1,15 @@ backend = TestUtil::getBackend(); $this->calendars = $this->backend->getCalendarsForUser('principals/user1'); $this->assertEquals(2, count($this->calendars)); $this->calendar = new Calendar($this->backend, $this->calendars[0]); - - } - function teardown() { - + public function teardown() + { unset($this->backend); - } - function testSimple() { - + public function testSimple() + { $this->assertEquals($this->calendars[0]['uri'], $this->calendar->getName()); - } /** * @depends testSimple */ - function testUpdateProperties() { - + public function testUpdateProperties() + { $propPatch = new PropPatch([ '{DAV:}displayname' => 'NewName', ]); @@ -61,87 +59,80 @@ class CalendarTest extends \PHPUnit_Framework_TestCase { $calendars2 = $this->backend->getCalendarsForUser('principals/user1'); $this->assertEquals('NewName', $calendars2[0]['{DAV:}displayname']); - } /** * @depends testSimple */ - function testGetProperties() { - + public function testGetProperties() + { $question = [ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set', ]; $result = $this->calendar->getProperties($question); - foreach ($question as $q) $this->assertArrayHasKey($q, $result); + foreach ($question as $q) { + $this->assertArrayHasKey($q, $result); + } $this->assertEquals(['VEVENT', 'VTODO'], $result['{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set']->getValue()); - } /** - * @expectedException Sabre\DAV\Exception\NotFound + * @expectedException \Sabre\DAV\Exception\NotFound * @depends testSimple */ - function testGetChildNotFound() { - + public function testGetChildNotFound() + { $this->calendar->getChild('randomname'); - } /** * @depends testSimple */ - function testGetChildren() { - + public function testGetChildren() + { $children = $this->calendar->getChildren(); $this->assertEquals(1, count($children)); $this->assertTrue($children[0] instanceof CalendarObject); - } /** * @depends testGetChildren */ - function testChildExists() { - + public function testChildExists() + { $this->assertFalse($this->calendar->childExists('foo')); $children = $this->calendar->getChildren(); $this->assertTrue($this->calendar->childExists($children[0]->getName())); } - - /** - * @expectedException Sabre\DAV\Exception\MethodNotAllowed + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ - function testCreateDirectory() { - + public function testCreateDirectory() + { $this->calendar->createDirectory('hello'); - } /** - * @expectedException Sabre\DAV\Exception\MethodNotAllowed + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ - function testSetName() { - + public function testSetName() + { $this->calendar->setName('hello'); - } - function testGetLastModified() { - + public function testGetLastModified() + { $this->assertNull($this->calendar->getLastModified()); - } - function testCreateFile() { - + public function testCreateFile() + { $file = fopen('php://memory', 'r+'); fwrite($file, TestUtil::getTestCalendarData()); rewind($file); @@ -150,11 +141,10 @@ class CalendarTest extends \PHPUnit_Framework_TestCase { $file = $this->calendar->getChild('hello'); $this->assertTrue($file instanceof CalendarObject); - } - function testCreateFileNoSupportedComponents() { - + public function testCreateFileNoSupportedComponents() + { $file = fopen('php://memory', 'r+'); fwrite($file, TestUtil::getTestCalendarData()); rewind($file); @@ -164,31 +154,28 @@ class CalendarTest extends \PHPUnit_Framework_TestCase { $file = $calendar->getChild('hello'); $this->assertTrue($file instanceof CalendarObject); - } - function testDelete() { - + public function testDelete() + { $this->calendar->delete(); $calendars = $this->backend->getCalendarsForUser('principals/user1'); $this->assertEquals(1, count($calendars)); } - function testGetOwner() { - + public function testGetOwner() + { $this->assertEquals('principals/user1', $this->calendar->getOwner()); - } - function testGetGroup() { - + public function testGetGroup() + { $this->assertNull($this->calendar->getGroup()); - } - function testGetACL() { - + public function testGetACL() + { $expected = [ [ 'privilege' => '{DAV:}read', @@ -206,7 +193,7 @@ class CalendarTest extends \PHPUnit_Framework_TestCase { 'protected' => true, ], [ - 'privilege' => '{' . Plugin::NS_CALDAV . '}read-free-busy', + 'privilege' => '{'.Plugin::NS_CALDAV.'}read-free-busy', 'principal' => '{DAV:}authenticated', 'protected' => true, ], @@ -222,35 +209,29 @@ class CalendarTest extends \PHPUnit_Framework_TestCase { ], ]; $this->assertEquals($expected, $this->calendar->getACL()); - } /** * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetACL() { - + public function testSetACL() + { $this->calendar->setACL([]); - } - function testGetSyncToken() { - + public function testGetSyncToken() + { $this->assertNull($this->calendar->getSyncToken()); - } - function testGetSyncTokenNoSyncSupport() { - + public function testGetSyncTokenNoSyncSupport() + { $calendar = new Calendar(new Backend\Mock([], []), []); $this->assertNull($calendar->getSyncToken()); - } - function testGetChanges() { - + public function testGetChanges() + { $this->assertNull($this->calendar->getChanges(1, 1)); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php index 9a3d47828..49252744d 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php @@ -1,29 +1,31 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -52,13 +54,13 @@ END:VCALENDAR ], ]; - function testExpand() { - + public function testExpand() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -91,7 +93,7 @@ END:VCALENDAR try { $vObject = VObject\Reader::read($body); } catch (VObject\ParseException $e) { - $this->fail('Could not parse object. Error:' . $e->getMessage() . ' full object: ' . $response->getBodyAsString()); + $this->fail('Could not parse object. Error:'.$e->getMessage().' full object: '.$response->getBodyAsString()); } // check if DTSTARTs and DTENDs are correct @@ -99,15 +101,14 @@ END:VCALENDAR /** @var $vevent Sabre\VObject\Component\VEvent */ foreach ($vevent->children() as $child) { /** @var $child Sabre\VObject\Property */ - if ($child->name == 'DTSTART') { + if ('DTSTART' == $child->name) { // DTSTART has to be one of three valid values - $this->assertContains($child->getValue(), ['20120207T171500Z', '20120208T171500Z', '20120209T171500Z'], 'DTSTART is not a valid value: ' . $child->getValue()); - } elseif ($child->name == 'DTEND') { + $this->assertContains($child->getValue(), ['20120207T171500Z', '20120208T171500Z', '20120209T171500Z'], 'DTSTART is not a valid value: '.$child->getValue()); + } elseif ('DTEND' == $child->name) { // DTEND has to be one of three valid values - $this->assertContains($child->getValue(), ['20120207T181500Z', '20120208T181500Z', '20120209T181500Z'], 'DTEND is not a valid value: ' . $child->getValue()); + $this->assertContains($child->getValue(), ['20120207T181500Z', '20120208T181500Z', '20120209T181500Z'], 'DTEND is not a valid value: '.$child->getValue()); } } } } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php index efc49673f..3a982fcfa 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php @@ -1,28 +1,30 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -43,13 +45,13 @@ END:VCALENDAR ], ]; - function testExpandRecurringByDayEvent() { - + public function testExpandRecurringByDayEvent() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -88,15 +90,14 @@ END:VCALENDAR /** @var $vevent Sabre\VObject\Component\VEvent */ foreach ($vevent->children() as $child) { /** @var $child Sabre\VObject\Property */ - if ($child->name == 'DTSTART') { + if ('DTSTART' == $child->name) { // DTSTART has to be one of two valid values - $this->assertContains($child->getValue(), ['20120214T171500Z', '20120216T171500Z'], 'DTSTART is not a valid value: ' . $child->getValue()); - } elseif ($child->name == 'DTEND') { + $this->assertContains($child->getValue(), ['20120214T171500Z', '20120216T171500Z'], 'DTSTART is not a valid value: '.$child->getValue()); + } elseif ('DTEND' == $child->name) { // DTEND has to be one of two valid values - $this->assertContains($child->getValue(), ['20120214T181500Z', '20120216T181500Z'], 'DTEND is not a valid value: ' . $child->getValue()); + $this->assertContains($child->getValue(), ['20120214T181500Z', '20120216T181500Z'], 'DTEND is not a valid value: '.$child->getValue()); } } } } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php index 3a22e03d4..90897f1c5 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php @@ -1,5 +1,7 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -54,13 +56,13 @@ END:VCALENDAR ], ]; - function testExpand() { - + public function testExpand() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -93,11 +95,9 @@ END:VCALENDAR $vObject = VObject\Reader::read($body); // We only expect 3 events - $this->assertEquals(3, count($vObject->VEVENT), 'We got 6 events instead of 3. Output: ' . $body); + $this->assertEquals(3, count($vObject->VEVENT), 'We got 6 events instead of 3. Output: '.$body); // TZID should be gone $this->assertFalse(isset($vObject->VEVENT->DTSTART['TZID'])); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php index 7604c7f4c..3d4b36313 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php @@ -1,15 +1,14 @@ [ 'obj1' => [ - 'calendarid' => 1, - 'uri' => 'event1.ics', + 'calendarid' => 1, + 'uri' => 'event1.ics', 'calendardata' => $obj1, ], 'obj2' => [ - 'calendarid' => 1, - 'uri' => 'event2.ics', - 'calendardata' => $obj2 + 'calendarid' => 1, + 'uri' => 'event2.ics', + 'calendardata' => $obj2, ], 'obj3' => [ - 'calendarid' => 1, - 'uri' => 'event3.ics', - 'calendardata' => $obj3 - ] + 'calendarid' => 1, + 'uri' => 'event3.ics', + 'calendardata' => $obj3, + ], ], ]; - $caldavBackend = new Backend\Mock([], $calendarData); $calendar = new Calendar($caldavBackend, [ - 'id' => 1, - 'uri' => 'calendar', - 'principaluri' => 'principals/user1', - '{' . Plugin::NS_CALDAV . '}calendar-timezone' => "BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\nEND:VCALENDAR", + 'id' => 1, + 'uri' => 'calendar', + 'principaluri' => 'principals/user1', + '{'.Plugin::NS_CALDAV.'}calendar-timezone' => "BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\nEND:VCALENDAR", ]); $this->server = new DAV\Server([$calendar]); - $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_URI' => '/calendar', - ]); + $request = new HTTP\Request('GET', '/calendar'); $this->server->httpRequest = $request; $this->server->httpResponse = new HTTP\ResponseMock(); $this->plugin = new Plugin(); $this->server->addPlugin($this->plugin); - } - function testFreeBusyReport() { - + public function testFreeBusyReport() + { $reportXML = << @@ -108,17 +103,16 @@ XML; $this->assertEquals(200, $this->server->httpResponse->status); $this->assertEquals('text/calendar', $this->server->httpResponse->getHeader('Content-Type')); - $this->assertTrue(strpos($this->server->httpResponse->body, 'BEGIN:VFREEBUSY') !== false); - $this->assertTrue(strpos($this->server->httpResponse->body, '20111005T120000Z/20111005T130000Z') !== false); - $this->assertTrue(strpos($this->server->httpResponse->body, '20111006T100000Z/20111006T110000Z') !== false); - + $this->assertTrue(false !== strpos($this->server->httpResponse->body, 'BEGIN:VFREEBUSY')); + $this->assertTrue(false !== strpos($this->server->httpResponse->body, '20111005T120000Z/20111005T130000Z')); + $this->assertTrue(false !== strpos($this->server->httpResponse->body, '20111006T100000Z/20111006T110000Z')); } /** - * @expectedException Sabre\DAV\Exception\BadRequest + * @expectedException \Sabre\DAV\Exception\BadRequest */ - function testFreeBusyReportNoTimeRange() { - + public function testFreeBusyReportNoTimeRange() + { $reportXML = << @@ -126,17 +120,14 @@ XML; XML; $report = $this->server->xml->parse($reportXML, null, $rootElem); - } /** - * @expectedException Sabre\DAV\Exception\NotImplemented + * @expectedException \Sabre\DAV\Exception\NotImplemented */ - function testFreeBusyReportWrongNode() { - - $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_URI' => '/', - ]); + public function testFreeBusyReportWrongNode() + { + $request = new HTTP\Request('REPORT', '/'); $this->server->httpRequest = $request; $reportXML = <<server->xml->parse($reportXML, null, $rootElem); $this->plugin->report($rootElem, $report, null); - } /** - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testFreeBusyReportNoACLPlugin() { - + public function testFreeBusyReportNoACLPlugin() + { $this->server = new DAV\Server(); + $this->server->httpRequest = new HTTP\Request('REPORT', '/'); $this->plugin = new Plugin(); $this->server->addPlugin($this->plugin); @@ -169,6 +160,5 @@ XML; $report = $this->server->xml->parse($reportXML, null, $rootElem); $this->plugin->report($rootElem, $report, null); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php index 5fd8d29a1..6cb2b609e 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php @@ -1,27 +1,29 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -45,14 +47,14 @@ END:VCALENDAR ], ]; - function testQueryTimerange() { - + public function testQueryTimerange() + { $request = new HTTP\Request( 'REPORT', '/calendars/user1/calendar1', [ 'Content-Type' => 'application/xml', - 'Depth' => '1', + 'Depth' => '1', ] ); @@ -75,8 +77,6 @@ END:VCALENDAR $response = $this->request($request); - $this->assertTrue(strpos($response->body, 'BEGIN:VCALENDAR') !== false); - + $this->assertTrue(false !== strpos($response->body, 'BEGIN:VCALENDAR')); } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php index 75412577e..c139e5b5c 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php @@ -1,5 +1,7 @@ icsExportPlugin = new ICSExportPlugin(); $this->server->addPlugin( @@ -25,7 +27,7 @@ class ICSExportPluginTest extends \Sabre\DAVServerTest { 'principals/admin', 'UUID-123467', [ - '{DAV:}displayname' => 'Hello!', + '{DAV:}displayname' => 'Hello!', '{http://apple.com/ns/ical/}calendar-color' => '#AA0000FF', ] ); @@ -56,23 +58,20 @@ END:VTODO END:VCALENDAR ICS ); - - } - function testInit() { - + public function testInit() + { $this->assertEquals( $this->icsExportPlugin, $this->server->getPlugin('ics-export') ); $this->assertEquals($this->icsExportPlugin, $this->server->getPlugin('ics-export')); $this->assertEquals('ics-export', $this->icsExportPlugin->getPluginInfo()['name']); - } - function testBeforeMethod() { - + public function testBeforeMethod() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export' @@ -89,15 +88,15 @@ ICS $this->assertEquals(1, count($obj->VERSION)); $this->assertEquals(1, count($obj->CALSCALE)); $this->assertEquals(1, count($obj->PRODID)); - $this->assertTrue(strpos((string)$obj->PRODID, DAV\Version::VERSION) !== false); + $this->assertTrue(false !== strpos((string) $obj->PRODID, DAV\Version::VERSION)); $this->assertEquals(1, count($obj->VTIMEZONE)); $this->assertEquals(1, count($obj->VEVENT)); - $this->assertEquals("Hello!", $obj->{"X-WR-CALNAME"}); - $this->assertEquals("#AA0000FF", $obj->{"X-APPLE-CALENDAR-COLOR"}); - + $this->assertEquals('Hello!', $obj->{'X-WR-CALNAME'}); + $this->assertEquals('#AA0000FF', $obj->{'X-APPLE-CALENDAR-COLOR'}); } - function testBeforeMethodNoVersion() { + public function testBeforeMethodNoVersion() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export' @@ -115,25 +114,23 @@ ICS $this->assertEquals(1, count($obj->VERSION)); $this->assertEquals(1, count($obj->CALSCALE)); $this->assertEquals(1, count($obj->PRODID)); - $this->assertFalse(strpos((string)$obj->PRODID, DAV\Version::VERSION) !== false); + $this->assertFalse(false !== strpos((string) $obj->PRODID, DAV\Version::VERSION)); $this->assertEquals(1, count($obj->VTIMEZONE)); $this->assertEquals(1, count($obj->VEVENT)); - } - function testBeforeMethodNoExport() { - + public function testBeforeMethodNoExport() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467' ); $response = new HTTP\Response(); $this->assertNull($this->icsExportPlugin->httpGet($request, $response)); - } - function testACLIntegrationBlocked() { - + public function testACLIntegrationBlocked() + { $aclPlugin = new DAVACL\Plugin(); $aclPlugin->allowUnauthenticatedAccess = false; $this->server->addPlugin( @@ -146,11 +143,10 @@ ICS ); $this->request($request, 403); - } - function testACLIntegrationNotBlocked() { - + public function testACLIntegrationNotBlocked() + { $aclPlugin = new DAVACL\Plugin(); $aclPlugin->allowUnauthenticatedAccess = false; $this->server->addPlugin( @@ -176,34 +172,31 @@ ICS $this->assertEquals(1, count($obj->VERSION)); $this->assertEquals(1, count($obj->CALSCALE)); $this->assertEquals(1, count($obj->PRODID)); - $this->assertTrue(strpos((string)$obj->PRODID, DAV\Version::VERSION) !== false); + $this->assertTrue(false !== strpos((string) $obj->PRODID, DAV\Version::VERSION)); $this->assertEquals(1, count($obj->VTIMEZONE)); $this->assertEquals(1, count($obj->VEVENT)); - } - function testBadStartParam() { - + public function testBadStartParam() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&start=foo' ); $this->request($request, 400); - } - function testBadEndParam() { - + public function testBadEndParam() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&end=foo' ); $this->request($request, 400); - } - function testFilterStartEnd() { - + public function testFilterStartEnd() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&start=1&end=2' @@ -212,23 +205,21 @@ ICS $obj = VObject\Reader::read($response->getBody()); - $this->assertEquals(0, count($obj->VTIMEZONE)); - $this->assertEquals(0, count($obj->VEVENT)); - + $this->assertNull($obj->VTIMEZONE); + $this->assertNull($obj->VEVENT); } - function testExpandNoStart() { - + public function testExpandNoStart() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&expand=1&end=2' ); $this->request($request, 400); - } - function testExpand() { - + public function testExpand() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&start=1&end=2000000000&expand=1' @@ -237,13 +228,12 @@ ICS $obj = VObject\Reader::read($response->getBody()); - $this->assertEquals(0, count($obj->VTIMEZONE)); + $this->assertNull($obj->VTIMEZONE); $this->assertEquals(1, count($obj->VEVENT)); - } - function testJCal() { - + public function testJCal() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export', @@ -252,11 +242,10 @@ ICS $response = $this->request($request, 200); $this->assertEquals('application/calendar+json', $response->getHeader('Content-Type')); - } - function testJCalInUrl() { - + public function testJCalInUrl() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&accept=jcal' @@ -264,11 +253,10 @@ ICS $response = $this->request($request, 200); $this->assertEquals('application/calendar+json', $response->getHeader('Content-Type')); - } - function testNegotiateDefault() { - + public function testNegotiateDefault() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export', @@ -277,11 +265,10 @@ ICS $response = $this->request($request, 200); $this->assertEquals('text/calendar', $response->getHeader('Content-Type')); - } - function testFilterComponentVEVENT() { - + public function testFilterComponentVEVENT() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&componentType=VEVENT' @@ -292,12 +279,11 @@ ICS $obj = VObject\Reader::read($response->body); $this->assertEquals(1, count($obj->VTIMEZONE)); $this->assertEquals(1, count($obj->VEVENT)); - $this->assertEquals(0, count($obj->VTODO)); - + $this->assertNull($obj->VTODO); } - function testFilterComponentVTODO() { - + public function testFilterComponentVTODO() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&componentType=VTODO' @@ -307,25 +293,23 @@ ICS $obj = VObject\Reader::read($response->body); - $this->assertEquals(0, count($obj->VTIMEZONE)); - $this->assertEquals(0, count($obj->VEVENT)); + $this->assertNull($obj->VTIMEZONE); + $this->assertNull($obj->VEVENT); $this->assertEquals(1, count($obj->VTODO)); - } - function testFilterComponentBadComponent() { - + public function testFilterComponentBadComponent() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export&componentType=VVOODOO' ); $response = $this->request($request, 400); - } - function testContentDisposition() { - + public function testContentDisposition() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export' @@ -334,14 +318,13 @@ ICS $response = $this->request($request, 200); $this->assertEquals('text/calendar', $response->getHeader('Content-Type')); $this->assertEquals( - 'attachment; filename="UUID-123467-' . date('Y-m-d') . '.ics"', + 'attachment; filename="UUID-123467-'.date('Y-m-d').'.ics"', $response->getHeader('Content-Disposition') ); - } - function testContentDispositionJson() { - + public function testContentDispositionJson() + { $request = new HTTP\Request( 'GET', '/calendars/admin/UUID-123467?export', @@ -351,19 +334,18 @@ ICS $response = $this->request($request, 200); $this->assertEquals('application/calendar+json', $response->getHeader('Content-Type')); $this->assertEquals( - 'attachment; filename="UUID-123467-' . date('Y-m-d') . '.json"', + 'attachment; filename="UUID-123467-'.date('Y-m-d').'.json"', $response->getHeader('Content-Disposition') ); - } - function testContentDispositionBadChars() { - + public function testContentDispositionBadChars() + { $this->caldavBackend->createCalendar( 'principals/admin', 'UUID-b_ad"(ch)ars', [ - '{DAV:}displayname' => 'Test bad characters', + '{DAV:}displayname' => 'Test bad characters', '{http://apple.com/ns/ical/}calendar-color' => '#AA0000FF', ] ); @@ -377,10 +359,8 @@ ICS $response = $this->request($request, 200); $this->assertEquals('application/calendar+json', $response->getHeader('Content-Type')); $this->assertEquals( - 'attachment; filename="UUID-b_adchars-' . date('Y-m-d') . '.json"', + 'attachment; filename="UUID-b_adchars-'.date('Y-m-d').'.json"', $response->getHeader('Content-Disposition') ); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue166Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue166Test.php index a1a9b7c04..02d39fe84 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue166Test.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue166Test.php @@ -1,13 +1,15 @@ 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2011-12-01'), - 'end' => new \DateTime('2012-02-01'), + 'end' => new \DateTime('2012-02-01'), ], ], ], - 'prop-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => null, + 'time-range' => null, ]; $input = VObject\Reader::read($input); $this->assertTrue($validator->validate($input, $filters)); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue172Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue172Test.php index e2b85c2bc..83120fe6a 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue172Test.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue172Test.php @@ -1,13 +1,16 @@ 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2012-01-18 21:00:00 GMT-08:00'), - 'end' => new \DateTime('2012-01-18 21:00:00 GMT-08:00'), + 'end' => new \DateTime('2012-01-18 21:00:00 GMT-08:00'), ], ], ], @@ -39,7 +42,8 @@ HI; } // Pacific Standard Time, translates to America/Los_Angeles (GMT-8 in January) - function testOutlookTimezoneName() { + public function testOutlookTimezoneName() + { $input = << 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), - 'end' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), + 'end' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), ], ], ], @@ -86,7 +90,8 @@ HI; } // X-LIC-LOCATION, translates to America/Los_Angeles (GMT-8 in January) - function testLibICalLocationName() { + public function testLibICalLocationName() + { $input = << 'VCALENDAR', + 'name' => 'VCALENDAR', 'comp-filters' => [ [ - 'name' => 'VEVENT', - 'comp-filters' => [], - 'prop-filters' => [], + 'name' => 'VEVENT', + 'comp-filters' => [], + 'prop-filters' => [], 'is-not-defined' => false, - 'time-range' => [ + 'time-range' => [ 'start' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), - 'end' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), + 'end' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), ], ], ], diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php index 369e9a70c..0700024cf 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php @@ -1,28 +1,30 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -56,13 +58,13 @@ END:VCALENDAR ], ]; - function testIssue203() { - + public function testIssue203() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -96,24 +98,22 @@ END:VCALENDAR $this->assertEquals(2, count($vObject->VEVENT)); - $expectedEvents = [ [ 'DTSTART' => '20120326T135200Z', - 'DTEND' => '20120326T145200Z', + 'DTEND' => '20120326T145200Z', 'SUMMARY' => 'original summary', ], [ - 'DTSTART' => '20120328T135200Z', - 'DTEND' => '20120328T145200Z', - 'SUMMARY' => 'overwritten summary', + 'DTSTART' => '20120328T135200Z', + 'DTEND' => '20120328T145200Z', + 'SUMMARY' => 'overwritten summary', 'RECURRENCE-ID' => '20120327T135200Z', - ] + ], ]; // try to match agains $expectedEvents array foreach ($expectedEvents as $expectedEvent) { - $matching = false; foreach ($vObject->VEVENT as $vevent) { @@ -131,7 +131,7 @@ END:VCALENDAR break; } - $this->assertTrue($matching, 'Did not find the following event in the response: ' . var_export($expectedEvent, true)); + $this->assertTrue($matching, 'Did not find the following event in the response: '.var_export($expectedEvent, true)); } } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php index ce40a90b0..60c944d1d 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php @@ -1,28 +1,30 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -49,13 +51,13 @@ END:VCALENDAR ], ]; - function testIssue205() { - + public function testIssue205() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -79,8 +81,8 @@ END:VCALENDAR $response = $this->request($request); - $this->assertFalse(strpos($response->body, 'Exception'), 'Exception occurred: ' . $response->body); - $this->assertFalse(strpos($response->body, 'Unknown or bad format'), 'DateTime unknown format Exception: ' . $response->body); + $this->assertFalse(strpos($response->body, 'Exception'), 'Exception occurred: '.$response->body); + $this->assertFalse(strpos($response->body, 'Unknown or bad format'), 'DateTime unknown format Exception: '.$response->body); // Everts super awesome xml parser. $body = substr( @@ -93,6 +95,5 @@ END:VCALENDAR $vObject = VObject\Reader::read($body); $this->assertEquals(1, count($vObject->VEVENT)); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php index 950629fd8..10c9af50c 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php @@ -1,27 +1,29 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -53,13 +55,13 @@ END:VCALENDAR ], ]; - function testIssue211() { - + public function testIssue211() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -84,6 +86,5 @@ END:VCALENDAR // if this assert is reached, the endless loop is gone // There should be no matching events $this->assertFalse(strpos('BEGIN:VEVENT', $response->body)); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php index c3c0b5b48..46f5ca205 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php @@ -1,27 +1,29 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -63,13 +65,13 @@ END:VCALENDAR ], ]; - function testIssue220() { - + public function testIssue220() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -91,8 +93,8 @@ END:VCALENDAR $response = $this->request($request); - $this->assertFalse(strpos($response->body, 'PHPUnit_Framework_Error_Warning'), 'Error Warning occurred: ' . $response->body); - $this->assertFalse(strpos($response->body, 'Invalid argument supplied for foreach()'), 'Invalid argument supplied for foreach(): ' . $response->body); + $this->assertFalse(strpos($response->body, 'PHPUnit_Framework_Error_Warning'), 'Error Warning occurred: '.$response->body); + $this->assertFalse(strpos($response->body, 'Invalid argument supplied for foreach()'), 'Invalid argument supplied for foreach(): '.$response->body); $this->assertEquals(207, $response->status); } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php index d0783701d..a8b855ca3 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php @@ -1,27 +1,29 @@ 1, - 'name' => 'Calendar', + 'id' => 1, + 'name' => 'Calendar', 'principaluri' => 'principals/user1', - 'uri' => 'calendar1', - ] + 'uri' => 'calendar1', + ], ]; protected $caldavCalendarObjects = [ @@ -43,13 +45,13 @@ END:VCALENDAR ], ]; - function testIssue228() { - + public function testIssue228() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'REPORT', + 'REQUEST_METHOD' => 'REPORT', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'REQUEST_URI' => '/calendars/user1/calendar1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/calendars/user1/calendar1', + 'HTTP_DEPTH' => '1', ]); $request->setBody(' @@ -74,6 +76,5 @@ END:VCALENDAR // We must check if absolutely nothing was returned from this query. $this->assertFalse(strpos($response->body, 'BEGIN:VCALENDAR')); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php index 6585f85c3..eceb0b87f 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php @@ -1,58 +1,56 @@ principalUri = 'principals/user1'; $this->notification = new CalDAV\Xml\Notification\SystemStatus(1, '"1"'); $this->caldavBackend = new CalDAV\Backend\MockSharing([], [], [ 'principals/user1' => [ - $this->notification - ] + $this->notification, + ], ]); return new Collection($this->caldavBackend, $this->principalUri); - } - function testGetChildren() { - + public function testGetChildren() + { $col = $this->getInstance(); $this->assertEquals('notifications', $col->getName()); $this->assertEquals([ - new Node($this->caldavBackend, $this->principalUri, $this->notification) + new Node($this->caldavBackend, $this->principalUri, $this->notification), ], $col->getChildren()); - } - function testGetOwner() { - + public function testGetOwner() + { $col = $this->getInstance(); $this->assertEquals('principals/user1', $col->getOwner()); - } - function testGetGroup() { - + public function testGetGroup() + { $col = $this->getInstance(); $this->assertNull($col->getGroup()); - } - function testGetACL() { - + public function testGetACL() + { $col = $this->getInstance(); $expected = [ [ @@ -63,23 +61,20 @@ class CollectionTest extends \PHPUnit_Framework_TestCase { ]; $this->assertEquals($expected, $col->getACL()); - } /** * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetACL() { - + public function testSetACL() + { $col = $this->getInstance(); $col->setACL([]); - } - function testGetSupportedPrivilegeSet() { - + public function testGetSupportedPrivilegeSet() + { $col = $this->getInstance(); $this->assertNull($col->getSupportedPrivilegeSet()); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php index 6c6e02da8..cb19ef962 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php @@ -1,69 +1,66 @@ systemStatus = new CalDAV\Xml\Notification\SystemStatus(1, '"1"'); $this->caldavBackend = new CalDAV\Backend\MockSharing([], [], [ 'principals/user1' => [ - $this->systemStatus - ] + $this->systemStatus, + ], ]); $node = new Node($this->caldavBackend, 'principals/user1', $this->systemStatus); - return $node; + return $node; } - function testGetId() { - + public function testGetId() + { $node = $this->getInstance(); - $this->assertEquals($this->systemStatus->getId() . '.xml', $node->getName()); - + $this->assertEquals($this->systemStatus->getId().'.xml', $node->getName()); } - function testGetEtag() { - + public function testGetEtag() + { $node = $this->getInstance(); $this->assertEquals('"1"', $node->getETag()); - } - function testGetNotificationType() { - + public function testGetNotificationType() + { $node = $this->getInstance(); $this->assertEquals($this->systemStatus, $node->getNotificationType()); - } - function testDelete() { - + public function testDelete() + { $node = $this->getInstance(); $node->delete(); $this->assertEquals([], $this->caldavBackend->getNotificationsForPrincipal('principals/user1')); - } - function testGetGroup() { - + public function testGetGroup() + { $node = $this->getInstance(); $this->assertNull($node->getGroup()); - } - function testGetACL() { - + public function testGetACL() + { $node = $this->getInstance(); $expected = [ [ @@ -74,23 +71,20 @@ class NodeTest extends \PHPUnit_Framework_TestCase { ]; $this->assertEquals($expected, $node->getACL()); - } /** * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetACL() { - + public function testSetACL() + { $node = $this->getInstance(); $node->setACL([]); - } - function testGetSupportedPrivilegeSet() { - + public function testGetSupportedPrivilegeSet() + { $node = $this->getInstance(); $this->assertNull($node->getSupportedPrivilegeSet()); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php index 859f6aa0c..711cc0ac7 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php @@ -1,5 +1,7 @@ caldavBackend = new Backend\Mock([ [ - 'id' => 1, - 'uri' => 'UUID-123467', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'user1 calendar', - $caldavNS . 'calendar-description' => 'Calendar description', - '{http://apple.com/ns/ical/}calendar-order' => '1', - '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', - $caldavNS . 'supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']), + 'id' => 1, + 'uri' => 'UUID-123467', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'user1 calendar', + $caldavNS.'calendar-description' => 'Calendar description', + '{http://apple.com/ns/ical/}calendar-order' => '1', + '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', + $caldavNS.'supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']), ], [ - 'id' => 2, - 'uri' => 'UUID-123468', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'user1 calendar2', - $caldavNS . 'calendar-description' => 'Calendar description', - '{http://apple.com/ns/ical/}calendar-order' => '1', - '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', - $caldavNS . 'supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']), - ] + 'id' => 2, + 'uri' => 'UUID-123468', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'user1 calendar2', + $caldavNS.'calendar-description' => 'Calendar description', + '{http://apple.com/ns/ical/}calendar-order' => '1', + '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', + $caldavNS.'supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']), + ], ], [ 1 => [ 'UUID-2345' => [ 'calendardata' => TestUtil::getTestCalendarData(), - ] - ] + ], + ], ]); $principalBackend = new DAVACL\PrincipalBackend\Mock(); $principalBackend->setGroupMemberSet('principals/admin/calendar-proxy-read', ['principals/user1']); @@ -89,41 +91,45 @@ class PluginTest extends \PHPUnit_Framework_TestCase { $authBackend = new DAV\Auth\Backend\Mock(); $authBackend->setPrincipal('principals/user1'); $authPlugin = new DAV\Auth\Plugin($authBackend); - $authPlugin->beforeMethod(new \Sabre\HTTP\Request(), new \Sabre\HTTP\Response()); + $authPlugin->beforeMethod(new \Sabre\HTTP\Request('GET', '/'), new \Sabre\HTTP\Response()); $this->server->addPlugin($authPlugin); // This forces a login - $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response()); + $authPlugin->beforeMethod(new HTTP\Request('GET', '/'), new HTTP\Response()); $this->response = new HTTP\ResponseMock(); $this->server->httpResponse = $this->response; - } - function testSimple() { - + public function testSimple() + { $this->assertEquals(['MKCALENDAR'], $this->plugin->getHTTPMethods('calendars/user1/randomnewcalendar')); $this->assertEquals(['calendar-access', 'calendar-proxy'], $this->plugin->getFeatures()); $this->assertEquals( 'caldav', $this->plugin->getPluginInfo()['name'] ); - } - function testUnknownMethodPassThrough() { - + public function testUnknownMethodPassThrough() + { $request = new HTTP\Request('MKBREAKFAST', '/'); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(501, $this->response->status, 'Incorrect status returned. Full response body:' . $this->response->body); - + $this->assertEquals(501, $this->response->status, 'Incorrect status returned. Full response body:'.$this->response->body); } - function testReportPassThrough() { + public function testGetWithoutContentType() + { + $request = new HTTP\Request('GET', '/'); + $this->plugin->httpAfterGet($request, $this->response); + $this->assertTrue(true); + } + public function testReportPassThrough() + { $request = new HTTP\Request('REPORT', '/', ['Content-Type' => 'application/xml']); $request->setBody(''); @@ -131,11 +137,10 @@ class PluginTest extends \PHPUnit_Framework_TestCase { $this->server->exec(); $this->assertEquals(415, $this->response->status); - } - function testMkCalendarBadLocation() { - + public function testMkCalendarBadLocation() + { $request = new HTTP\Request('MKCALENDAR', '/blabla'); $body = ' @@ -181,11 +186,10 @@ class PluginTest extends \PHPUnit_Framework_TestCase { $this->server->exec(); $this->assertEquals(403, $this->response->status); - } - function testMkCalendarNoParentNode() { - + public function testMkCalendarNoParentNode() + { $request = new HTTP\Request('MKCALENDAR', '/doesntexist/calendar'); $body = ' @@ -231,14 +235,13 @@ class PluginTest extends \PHPUnit_Framework_TestCase { $this->server->exec(); $this->assertEquals(409, $this->response->status); - } - function testMkCalendarExistingCalendar() { - + public function testMkCalendarExistingCalendar() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'MKCALENDAR', - 'REQUEST_URI' => '/calendars/user1/UUID-123467', + 'REQUEST_URI' => '/calendars/user1/UUID-123467', ]); $body = ' @@ -284,11 +287,10 @@ class PluginTest extends \PHPUnit_Framework_TestCase { $this->server->exec(); $this->assertEquals(405, $this->response->status); - } - function testMkCalendarSucceed() { - + public function testMkCalendarSucceed() + { $request = new HTTP\Request('MKCALENDAR', '/calendars/user1/NEWCALENDAR'); $timezone = 'BEGIN:VCALENDAR @@ -325,7 +327,7 @@ END:VCALENDAR'; - + '; @@ -334,89 +336,87 @@ END:VCALENDAR'; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(201, $this->response->status, 'Invalid response code received. Full response body: ' . $this->response->body); + $this->assertEquals(201, $this->response->status, 'Invalid response code received. Full response body: '.$this->response->body); $calendars = $this->caldavBackend->getCalendarsForUser('principals/user1'); $this->assertEquals(3, count($calendars)); $newCalendar = null; foreach ($calendars as $calendar) { - if ($calendar['uri'] === 'NEWCALENDAR') { + if ('NEWCALENDAR' === $calendar['uri']) { $newCalendar = $calendar; break; - } + } } $this->assertInternalType('array', $newCalendar); $keys = [ - 'uri' => 'NEWCALENDAR', - 'id' => null, - '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar restricted to events.', - '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => $timezone, - '{DAV:}displayname' => 'Lisa\'s Events', + 'uri' => 'NEWCALENDAR', + 'id' => null, + '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar restricted to events.', + '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => $timezone, + '{DAV:}displayname' => 'Lisa\'s Events', '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => null, ]; foreach ($keys as $key => $value) { - $this->assertArrayHasKey($key, $newCalendar); - if (is_null($value)) continue; + if (is_null($value)) { + continue; + } $this->assertEquals($value, $newCalendar[$key]); - } $sccs = '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set'; $this->assertTrue($newCalendar[$sccs] instanceof Xml\Property\SupportedCalendarComponentSet); $this->assertEquals(['VEVENT'], $newCalendar[$sccs]->getValue()); - } - function testMkCalendarEmptyBodySucceed() { - + public function testMkCalendarEmptyBodySucceed() + { $request = new HTTP\Request('MKCALENDAR', '/calendars/user1/NEWCALENDAR'); $request->setBody(''); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(201, $this->response->status, 'Invalid response code received. Full response body: ' . $this->response->body); + $this->assertEquals(201, $this->response->status, 'Invalid response code received. Full response body: '.$this->response->body); $calendars = $this->caldavBackend->getCalendarsForUser('principals/user1'); $this->assertEquals(3, count($calendars)); $newCalendar = null; foreach ($calendars as $calendar) { - if ($calendar['uri'] === 'NEWCALENDAR') { + if ('NEWCALENDAR' === $calendar['uri']) { $newCalendar = $calendar; break; - } + } } $this->assertInternalType('array', $newCalendar); $keys = [ - 'uri' => 'NEWCALENDAR', - 'id' => null, + 'uri' => 'NEWCALENDAR', + 'id' => null, '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => null, ]; foreach ($keys as $key => $value) { - $this->assertArrayHasKey($key, $newCalendar); - if (is_null($value)) continue; + if (is_null($value)) { + continue; + } $this->assertEquals($value, $newCalendar[$key]); - } $sccs = '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set'; $this->assertTrue($newCalendar[$sccs] instanceof Xml\Property\SupportedCalendarComponentSet); $this->assertEquals(['VEVENT', 'VTODO'], $newCalendar[$sccs]->getValue()); - } - function testMkCalendarBadXml() { - + public function testMkCalendarBadXml() + { $request = new HTTP\Request('MKCALENDAR', '/blabla'); $body = 'This is not xml'; @@ -425,26 +425,24 @@ END:VCALENDAR'; $this->server->exec(); $this->assertEquals(400, $this->response->status); - } - function testPrincipalProperties() { - + public function testPrincipalProperties() + { $httpRequest = new HTTP\Request('FOO', '/blabla', ['Host' => 'sabredav.org']); $this->server->httpRequest = $httpRequest; $props = $this->server->getPropertiesForPath('/principals/user1', [ - '{' . Plugin::NS_CALDAV . '}calendar-home-set', - '{' . Plugin::NS_CALENDARSERVER . '}calendar-proxy-read-for', - '{' . Plugin::NS_CALENDARSERVER . '}calendar-proxy-write-for', - '{' . Plugin::NS_CALENDARSERVER . '}notification-URL', - '{' . Plugin::NS_CALENDARSERVER . '}email-address-set', + '{'.Plugin::NS_CALDAV.'}calendar-home-set', + '{'.Plugin::NS_CALENDARSERVER.'}calendar-proxy-read-for', + '{'.Plugin::NS_CALENDARSERVER.'}calendar-proxy-write-for', + '{'.Plugin::NS_CALENDARSERVER.'}notification-URL', + '{'.Plugin::NS_CALENDARSERVER.'}email-address-set', ]); $this->assertArrayHasKey(0, $props); $this->assertArrayHasKey(200, $props[0]); - $this->assertArrayHasKey('{urn:ietf:params:xml:ns:caldav}calendar-home-set', $props[0][200]); $prop = $props[0][200]['{urn:ietf:params:xml:ns:caldav}calendar-home-set']; $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $prop); @@ -460,15 +458,14 @@ END:VCALENDAR'; $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $prop); $this->assertEquals(['principals/admin/'], $prop->getHrefs()); - $this->assertArrayHasKey('{' . Plugin::NS_CALENDARSERVER . '}email-address-set', $props[0][200]); - $prop = $props[0][200]['{' . Plugin::NS_CALENDARSERVER . '}email-address-set']; + $this->assertArrayHasKey('{'.Plugin::NS_CALENDARSERVER.'}email-address-set', $props[0][200]); + $prop = $props[0][200]['{'.Plugin::NS_CALENDARSERVER.'}email-address-set']; $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\EmailAddressSet', $prop); $this->assertEquals(['user1.sabredav@sabredav.org'], $prop->getValue()); - } - function testSupportedReportSetPropertyNonCalendar() { - + public function testSupportedReportSetPropertyNonCalendar() + { $props = $this->server->getPropertiesForPath('/calendars/user1', [ '{DAV:}supported-report-set', ]); @@ -487,14 +484,13 @@ END:VCALENDAR'; '{DAV:}principal-search-property-set', ]; $this->assertEquals($value, $prop->getValue()); - } /** * @depends testSupportedReportSetPropertyNonCalendar */ - function testSupportedReportSetProperty() { - + public function testSupportedReportSetProperty() + { $props = $this->server->getPropertiesForPath('/calendars/user1/UUID-123467', [ '{DAV:}supported-report-set', ]); @@ -513,14 +509,13 @@ END:VCALENDAR'; '{DAV:}expand-property', '{DAV:}principal-match', '{DAV:}principal-property-search', - '{DAV:}principal-search-property-set' + '{DAV:}principal-search-property-set', ]; $this->assertEquals($value, $prop->getValue()); - } - function testSupportedReportSetUserCalendars() { - + public function testSupportedReportSetUserCalendars() + { $this->server->addPlugin(new \Sabre\DAV\Sync\Plugin()); $props = $this->server->getPropertiesForPath('/calendars/user1', [ @@ -542,22 +537,21 @@ END:VCALENDAR'; '{DAV:}principal-search-property-set', ]; $this->assertEquals($value, $prop->getValue()); - } /** * @depends testSupportedReportSetProperty */ - function testCalendarMultiGetReport() { - + public function testCalendarMultiGetReport() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - '' . - '/calendars/user1/UUID-123467/UUID-2345' . + ''. + ''. + ''. + ' '. + ' '. + ''. + '/calendars/user1/UUID-123467/UUID-2345'. ''; $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']); @@ -587,24 +581,23 @@ END:VCALENDAR'; XML; $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString()); - } /** * @depends testCalendarMultiGetReport */ - function testCalendarMultiGetReportExpand() { - + public function testCalendarMultiGetReportExpand() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '/calendars/user1/UUID-123467/UUID-2345' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + '/calendars/user1/UUID-123467/UUID-2345'. ''; $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']); @@ -613,7 +606,7 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Invalid HTTP status received. Full response body: '.$this->response->body); $expectedIcal = TestUtil::getTestCalendarData(); $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal); @@ -640,29 +633,28 @@ XML; XML; $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString()); - } /** * @depends testSupportedReportSetProperty * @depends testCalendarMultiGetReport */ - function testCalendarQueryReport() { - + public function testCalendarQueryReport() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '' . - ' ' . - ' ' . - ' ' . - '' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + ''. + ' '. + ' '. + ' '. + ''. ''; $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', ['Depth' => '1']); @@ -671,7 +663,7 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: '.$this->response->body); $expectedIcal = TestUtil::getTestCalendarData(); $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal); @@ -698,33 +690,32 @@ XML; XML; $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString()); - } /** * @depends testSupportedReportSetProperty * @depends testCalendarMultiGetReport */ - function testCalendarQueryReportWindowsPhone() { - + public function testCalendarQueryReportWindowsPhone() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '' . - ' ' . - ' ' . - ' ' . - '' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + ''. + ' '. + ' '. + ' '. + ''. ''; $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', [ - 'Depth' => '0', + 'Depth' => '0', 'User-Agent' => 'MSFT-WP/8.10.14219 (gzip)', ]); @@ -733,7 +724,7 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: '.$this->response->body); $expectedIcal = TestUtil::getTestCalendarData(); $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal); @@ -760,29 +751,28 @@ XML; XML; $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString()); - } /** * @depends testSupportedReportSetProperty * @depends testCalendarMultiGetReport */ - function testCalendarQueryReportBadDepth() { - + public function testCalendarQueryReportBadDepth() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '' . - ' ' . - ' ' . - ' ' . - '' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + ''. + ' '. + ' '. + ' '. + ''. ''; $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', [ @@ -793,26 +783,25 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(400, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body); - + $this->assertEquals(400, $this->response->status, 'Received an unexpected status. Full response body: '.$this->response->body); } /** * @depends testCalendarQueryReport */ - function testCalendarQueryReportNoCalData() { - + public function testCalendarQueryReportNoCalData() + { $body = - '' . - '' . - '' . - ' ' . - '' . - '' . - ' ' . - ' ' . - ' ' . - '' . + ''. + ''. + ''. + ' '. + ''. + ''. + ' '. + ' '. + ' '. + ''. ''; $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', [ @@ -823,7 +812,7 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: '.$this->response->body); $expected = << @@ -841,21 +830,20 @@ XML; XML; $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString()); - } /** * @depends testCalendarQueryReport */ - function testCalendarQueryReportNoFilters() { - + public function testCalendarQueryReportNoFilters() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - '' . + ''. + ''. + ''. + ' '. + ' '. + ''. ''; $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467'); @@ -864,30 +852,29 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(400, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body); - + $this->assertEquals(400, $this->response->status, 'Received an unexpected status. Full response body: '.$this->response->body); } /** * @depends testSupportedReportSetProperty * @depends testCalendarMultiGetReport */ - function testCalendarQueryReport1Object() { - + public function testCalendarQueryReport1Object() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '' . - ' ' . - ' ' . - ' ' . - '' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + ''. + ' '. + ' '. + ' '. + ''. ''; $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467/UUID-2345', ['Depth' => '0']); @@ -896,7 +883,7 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: '.$this->response->body); $expectedIcal = TestUtil::getTestCalendarData(); $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal); @@ -923,26 +910,25 @@ XML; XML; $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString()); - } /** * @depends testSupportedReportSetProperty * @depends testCalendarMultiGetReport */ - function testCalendarQueryReport1ObjectNoCalData() { - + public function testCalendarQueryReport1ObjectNoCalData() + { $body = - '' . - '' . - '' . - ' ' . - '' . - '' . - ' ' . - ' ' . - ' ' . - '' . + ''. + ''. + ''. + ' '. + ''. + ''. + ' '. + ' '. + ' '. + ''. ''; $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467/UUID-2345', ['Depth' => '0']); @@ -951,7 +937,7 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: '.$this->response->body); $expected = << @@ -969,34 +955,32 @@ XML; XML; $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString()); - } - function testHTMLActionsPanel() { - + public function testHTMLActionsPanel() + { $output = ''; $r = $this->server->emit('onHTMLActionsPanel', [$this->server->tree->getNodeForPath('calendars/user1'), &$output]); $this->assertFalse($r); - $this->assertTrue(!!strpos($output, 'Display name')); - + $this->assertTrue((bool) strpos($output, 'Display name')); } /** * @depends testCalendarMultiGetReport */ - function testCalendarMultiGetReportNoEnd() { - + public function testCalendarMultiGetReportNoEnd() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '/calendars/user1/UUID-123467/UUID-2345' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + '/calendars/user1/UUID-123467/UUID-2345'. ''; $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']); @@ -1005,25 +989,24 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body); - + $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: '.$this->response->body); } /** * @depends testCalendarMultiGetReport */ - function testCalendarMultiGetReportNoStart() { - + public function testCalendarMultiGetReportNoStart() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '/calendars/user1/UUID-123467/UUID-2345' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + '/calendars/user1/UUID-123467/UUID-2345'. ''; $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']); @@ -1032,25 +1015,24 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body); - + $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: '.$this->response->body); } /** * @depends testCalendarMultiGetReport */ - function testCalendarMultiGetReportEndBeforeStart() { - + public function testCalendarMultiGetReportEndBeforeStart() + { $body = - '' . - '' . - '' . - ' ' . - ' ' . - ' ' . - ' ' . - '' . - '/calendars/user1/UUID-123467/UUID-2345' . + ''. + ''. + ''. + ' '. + ' '. + ' '. + ' '. + ''. + '/calendars/user1/UUID-123467/UUID-2345'. ''; $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']); @@ -1059,28 +1041,25 @@ XML; $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body); - + $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: '.$this->response->body); } /** * @depends testSupportedReportSetPropertyNonCalendar */ - function testCalendarProperties() { - + public function testCalendarProperties() + { $ns = '{urn:ietf:params:xml:ns:caldav}'; $props = $this->server->getProperties('calendars/user1/UUID-123467', [ - $ns . 'max-resource-size', - $ns . 'supported-calendar-data', - $ns . 'supported-collation-set', + $ns.'max-resource-size', + $ns.'supported-calendar-data', + $ns.'supported-collation-set', ]); $this->assertEquals([ - $ns . 'max-resource-size' => 10000000, - $ns . 'supported-calendar-data' => new Xml\Property\SupportedCalendarData(), - $ns . 'supported-collation-set' => new Xml\Property\SupportedCollationSet(), + $ns.'max-resource-size' => 10000000, + $ns.'supported-calendar-data' => new Xml\Property\SupportedCalendarData(), + $ns.'supported-collation-set' => new Xml\Property\SupportedCollationSet(), ], $props); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/CollectionTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/CollectionTest.php index 23c248825..277de0664 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/CollectionTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/CollectionTest.php @@ -1,20 +1,20 @@ getChildForPrincipal([ 'uri' => 'principals/admin', ]); $this->assertInstanceOf('Sabre\\CalDAV\\Principal\\User', $r); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php index fe07f0131..8036635b2 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php @@ -1,102 +1,95 @@ 'principal/user', ]); $this->backend = $backend; - return $principal; - } - - function testGetName() { + return $principal; + } + public function testGetName() + { $i = $this->getInstance(); $this->assertEquals('calendar-proxy-read', $i->getName()); - } - function testGetDisplayName() { + public function testGetDisplayName() + { $i = $this->getInstance(); $this->assertEquals('calendar-proxy-read', $i->getDisplayName()); - } - function testGetLastModified() { - + public function testGetLastModified() + { $i = $this->getInstance(); $this->assertNull($i->getLastModified()); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testDelete() { - + public function testDelete() + { $i = $this->getInstance(); $i->delete(); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetName() { - + public function testSetName() + { $i = $this->getInstance(); $i->setName('foo'); - } - function testGetAlternateUriSet() { - + public function testGetAlternateUriSet() + { $i = $this->getInstance(); $this->assertEquals([], $i->getAlternateUriSet()); - } - function testGetPrincipalUri() { - + public function testGetPrincipalUri() + { $i = $this->getInstance(); $this->assertEquals('principal/user/calendar-proxy-read', $i->getPrincipalUrl()); - } - function testGetGroupMemberSet() { - + public function testGetGroupMemberSet() + { $i = $this->getInstance(); $this->assertEquals([], $i->getGroupMemberSet()); - } - function testGetGroupMembership() { - + public function testGetGroupMembership() + { $i = $this->getInstance(); $this->assertEquals([], $i->getGroupMembership()); - } - function testSetGroupMemberSet() { - + public function testSetGroupMemberSet() + { $i = $this->getInstance(); $i->setGroupMemberSet(['principals/foo']); $expected = [ - $i->getPrincipalUrl() => ['principals/foo'] + $i->getPrincipalUrl() => ['principals/foo'], ]; $this->assertEquals($expected, $this->backend->groupMembers); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyWriteTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyWriteTest.php index 6cdb9b30e..df1715ee5 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyWriteTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/ProxyWriteTest.php @@ -1,40 +1,39 @@ 'principal/user', ]); $this->backend = $backend; - return $principal; + return $principal; } - function testGetName() { - + public function testGetName() + { $i = $this->getInstance(); $this->assertEquals('calendar-proxy-write', $i->getName()); - } - function testGetDisplayName() { + public function testGetDisplayName() + { $i = $this->getInstance(); $this->assertEquals('calendar-proxy-write', $i->getDisplayName()); - } - function testGetPrincipalUri() { - + public function testGetPrincipalUri() + { $i = $this->getInstance(); $this->assertEquals('principal/user/calendar-proxy-write', $i->getPrincipalUrl()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php index 420bb3b1a..2c690c65d 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php @@ -1,13 +1,15 @@ addPrincipal([ 'uri' => 'principals/user/calendar-proxy-read', @@ -18,89 +20,81 @@ class UserTest extends \PHPUnit_Framework_TestCase { $backend->addPrincipal([ 'uri' => 'principals/user/random', ]); + return new User($backend, [ 'uri' => 'principals/user', ]); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testCreateFile() { - + public function testCreateFile() + { $u = $this->getInstance(); $u->createFile('test'); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testCreateDirectory() { - + public function testCreateDirectory() + { $u = $this->getInstance(); $u->createDirectory('test'); - } - function testGetChildProxyRead() { - + public function testGetChildProxyRead() + { $u = $this->getInstance(); $child = $u->getChild('calendar-proxy-read'); $this->assertInstanceOf('Sabre\\CalDAV\\Principal\\ProxyRead', $child); - } - function testGetChildProxyWrite() { - + public function testGetChildProxyWrite() + { $u = $this->getInstance(); $child = $u->getChild('calendar-proxy-write'); $this->assertInstanceOf('Sabre\\CalDAV\\Principal\\ProxyWrite', $child); - } /** - * @expectedException Sabre\DAV\Exception\NotFound + * @expectedException \Sabre\DAV\Exception\NotFound */ - function testGetChildNotFound() { - + public function testGetChildNotFound() + { $u = $this->getInstance(); $child = $u->getChild('foo'); - } /** - * @expectedException Sabre\DAV\Exception\NotFound + * @expectedException \Sabre\DAV\Exception\NotFound */ - function testGetChildNotFound2() { - + public function testGetChildNotFound2() + { $u = $this->getInstance(); $child = $u->getChild('random'); - } - function testGetChildren() { - + public function testGetChildren() + { $u = $this->getInstance(); $children = $u->getChildren(); $this->assertEquals(2, count($children)); $this->assertInstanceOf('Sabre\\CalDAV\\Principal\\ProxyRead', $children[0]); $this->assertInstanceOf('Sabre\\CalDAV\\Principal\\ProxyWrite', $children[1]); - } - function testChildExist() { - + public function testChildExist() + { $u = $this->getInstance(); $this->assertTrue($u->childExists('calendar-proxy-read')); $this->assertTrue($u->childExists('calendar-proxy-write')); $this->assertFalse($u->childExists('foo')); - } - function testGetACL() { - + public function testGetACL() + { $expected = [ [ 'privilege' => '{DAV:}all', @@ -121,7 +115,5 @@ class UserTest extends \PHPUnit_Framework_TestCase { $u = $this->getInstance(); $this->assertEquals($expected, $u->getACL()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php index 04d4b1237..df70fe7ec 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php @@ -1,14 +1,15 @@ assertEquals('outbox', $outbox->getName()); $this->assertEquals([], $outbox->getChildren()); @@ -17,7 +18,7 @@ class OutboxTest extends \PHPUnit_Framework_TestCase { $this->assertEquals([ [ - 'privilege' => '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-send', + 'privilege' => '{'.CalDAV\Plugin::NS_CALDAV.'}schedule-send', 'principal' => 'principals/user1', 'protected' => true, ], @@ -27,7 +28,7 @@ class OutboxTest extends \PHPUnit_Framework_TestCase { 'protected' => true, ], [ - 'privilege' => '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-send', + 'privilege' => '{'.CalDAV\Plugin::NS_CALDAV.'}schedule-send', 'principal' => 'principals/user1/calendar-proxy-write', 'protected' => true, ], @@ -42,7 +43,5 @@ class OutboxTest extends \PHPUnit_Framework_TestCase { 'protected' => true, ], ], $outbox->getACL()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php index f71c19523..735bbef41 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php @@ -1,24 +1,26 @@ 1, + 'id' => 1, '{http://calendarserver.org/ns/}shared-url' => 'calendars/owner/original', - '{http://sabredav.org/ns}owner-principal' => 'principals/owner', - '{http://sabredav.org/ns}read-only' => false, - 'share-access' => Sharing\Plugin::ACCESS_READWRITE, - 'principaluri' => 'principals/sharee', + '{http://sabredav.org/ns}owner-principal' => 'principals/owner', + '{http://sabredav.org/ns}read-only' => false, + 'share-access' => Sharing\Plugin::ACCESS_READWRITE, + 'principaluri' => 'principals/sharee', ]; } @@ -35,11 +37,10 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase { $this->backend->updateInvites(1, [$sharee]); return new SharedCalendar($this->backend, $props); - } - function testGetInvites() { - + public function testGetInvites() + { $sharee = new Sharee(); $sharee->href = 'mailto:removeme@example.org'; $sharee->properties['{DAV:}displayname'] = 'To be removed'; @@ -50,15 +51,15 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase { [$sharee], $this->getInstance()->getInvites() ); - } - function testGetOwner() { + public function testGetOwner() + { $this->assertEquals('principals/sharee', $this->getInstance()->getOwner()); } - function testGetACL() { - + public function testGetACL() + { $expected = [ [ 'privilege' => '{DAV:}write', @@ -96,18 +97,17 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase { 'protected' => true, ], [ - 'privilege' => '{' . Plugin::NS_CALDAV . '}read-free-busy', + 'privilege' => '{'.Plugin::NS_CALDAV.'}read-free-busy', 'principal' => '{DAV:}authenticated', 'protected' => true, ], ]; $this->assertEquals($expected, $this->getInstance()->getACL()); - } - function testGetChildACL() { - + public function testGetChildACL() + { $expected = [ [ 'privilege' => '{DAV:}write', @@ -134,19 +134,17 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase { 'principal' => 'principals/sharee/calendar-proxy-read', 'protected' => true, ], - ]; $this->assertEquals($expected, $this->getInstance()->getChildACL()); - } - function testUpdateInvites() { - + public function testUpdateInvites() + { $instance = $this->getInstance(); $newSharees = [ new Sharee(), - new Sharee() + new Sharee(), ]; $newSharees[0]->href = 'mailto:test@example.org'; $newSharees[0]->properties['{DAV:}displayname'] = 'Foo Bar'; @@ -159,18 +157,16 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase { $instance->updateInvites($newSharees); $expected = [ - clone $newSharees[0] + clone $newSharees[0], ]; $expected[0]->inviteStatus = Sharing\Plugin::INVITE_NORESPONSE; $this->assertEquals($expected, $instance->getInvites()); - } - function testPublish() { - + public function testPublish() + { $instance = $this->getInstance(); $this->assertNull($instance->setPublishStatus(true)); $this->assertNull($instance->setPublishStatus(false)); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php index 9589176a3..57732cd06 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php @@ -1,36 +1,38 @@ caldavCalendars = [ [ 'principaluri' => 'principals/user1', - 'id' => 1, - 'uri' => 'cal1', + 'id' => 1, + 'uri' => 'cal1', ], [ 'principaluri' => 'principals/user1', - 'id' => 2, - 'uri' => 'cal2', + 'id' => 2, + 'uri' => 'cal2', 'share-access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE, ], [ 'principaluri' => 'principals/user1', - 'id' => 3, - 'uri' => 'cal3', + 'id' => 3, + 'uri' => 'cal3', ], ]; @@ -38,86 +40,79 @@ class SharingPluginTest extends \Sabre\DAVServerTest { // Making the logged in user an admin, for full access: $this->aclPlugin->adminPrincipals[] = 'principals/user2'; - } - function testSimple() { - + public function testSimple() + { $this->assertInstanceOf('Sabre\\CalDAV\\SharingPlugin', $this->server->getPlugin('caldav-sharing')); $this->assertEquals( 'caldav-sharing', $this->caldavSharingPlugin->getPluginInfo()['name'] ); - } /** * @expectedException \LogicException */ - function testSetupWithoutCoreSharingPlugin() { - + public function testSetupWithoutCoreSharingPlugin() + { $server = new DAV\Server(); $server->addPlugin( new SharingPlugin() ); - } - function testGetFeatures() { - + public function testGetFeatures() + { $this->assertEquals(['calendarserver-sharing'], $this->caldavSharingPlugin->getFeatures()); - } - function testBeforeGetShareableCalendar() { - + public function testBeforeGetShareableCalendar() + { // Forcing the server to authenticate: - $this->authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response()); + $this->authPlugin->beforeMethod(new HTTP\Request('GET', '/'), new HTTP\Response()); $props = $this->server->getProperties('calendars/user1/cal1', [ - '{' . Plugin::NS_CALENDARSERVER . '}invite', - '{' . Plugin::NS_CALENDARSERVER . '}allowed-sharing-modes', + '{'.Plugin::NS_CALENDARSERVER.'}invite', + '{'.Plugin::NS_CALENDARSERVER.'}allowed-sharing-modes', ]); - $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\Invite', $props['{' . Plugin::NS_CALENDARSERVER . '}invite']); - $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\AllowedSharingModes', $props['{' . Plugin::NS_CALENDARSERVER . '}allowed-sharing-modes']); - + $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\Invite', $props['{'.Plugin::NS_CALENDARSERVER.'}invite']); + $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\AllowedSharingModes', $props['{'.Plugin::NS_CALENDARSERVER.'}allowed-sharing-modes']); } - function testBeforeGetSharedCalendar() { - + public function testBeforeGetSharedCalendar() + { $props = $this->server->getProperties('calendars/user1/cal2', [ - '{' . Plugin::NS_CALENDARSERVER . '}shared-url', - '{' . Plugin::NS_CALENDARSERVER . '}invite', + '{'.Plugin::NS_CALENDARSERVER.'}shared-url', + '{'.Plugin::NS_CALENDARSERVER.'}invite', ]); - $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\Invite', $props['{' . Plugin::NS_CALENDARSERVER . '}invite']); + $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\Invite', $props['{'.Plugin::NS_CALENDARSERVER.'}invite']); //$this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $props['{' . Plugin::NS_CALENDARSERVER . '}shared-url']); - } - function testUpdateResourceType() { - + public function testUpdateResourceType() + { $this->caldavBackend->updateInvites(1, [ new Sharee([ 'href' => 'mailto:joe@example.org', - ]) + ]), ] ); $result = $this->server->updateProperties('calendars/user1/cal1', [ - '{DAV:}resourcetype' => new DAV\Xml\Property\ResourceType(['{DAV:}collection']) + '{DAV:}resourcetype' => new DAV\Xml\Property\ResourceType(['{DAV:}collection']), ]); $this->assertEquals([ - '{DAV:}resourcetype' => 200 + '{DAV:}resourcetype' => 200, ], $result); $this->assertEquals(0, count($this->caldavBackend->getInvites(1))); - } - function testUpdatePropertiesPassThru() { - + public function testUpdatePropertiesPassThru() + { $result = $this->server->updateProperties('calendars/user1/cal3', [ '{DAV:}foo' => 'bar', ]); @@ -125,52 +120,48 @@ class SharingPluginTest extends \Sabre\DAVServerTest { $this->assertEquals([ '{DAV:}foo' => 200, ], $result); - } - function testUnknownMethodNoPOST() { - + public function testUnknownMethodNoPOST() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PATCH', - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', ]); $response = $this->request($request); $this->assertEquals(501, $response->status, $response->body); - } - function testUnknownMethodNoXML() { - + public function testUnknownMethodNoXML() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'POST', - 'REQUEST_URI' => '/', - 'CONTENT_TYPE' => 'text/plain', + 'REQUEST_URI' => '/', + 'CONTENT_TYPE' => 'text/plain', ]); $response = $this->request($request); $this->assertEquals(501, $response->status, $response->body); - } - function testUnknownMethodNoNode() { - + public function testUnknownMethodNoNode() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'POST', - 'REQUEST_URI' => '/foo', - 'CONTENT_TYPE' => 'text/xml', + 'REQUEST_URI' => '/foo', + 'CONTENT_TYPE' => 'text/xml', ]); $response = $this->request($request); $this->assertEquals(501, $response->status, $response->body); - } - function testShareRequest() { - + public function testShareRequest() + { $request = new HTTP\Request('POST', '/calendars/user1/cal1', ['Content-Type' => 'text/xml']); $xml = <<assertEquals( [ new Sharee([ - 'href' => 'mailto:joe@example.org', + 'href' => 'mailto:joe@example.org', 'properties' => [ '{DAV:}displayname' => 'Joe Shmoe', ], - 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE, + 'access' => \Sabre\DAV\Sharing\Plugin::ACCESS_READWRITE, 'inviteStatus' => \Sabre\DAV\Sharing\Plugin::INVITE_NORESPONSE, - 'comment' => '', + 'comment' => '', ]), ], $this->caldavBackend->getInvites(1) @@ -214,11 +205,10 @@ RRR; $this->assertTrue( $props['{DAV:}resourcetype']->is('{http://calendarserver.org/ns/}shared-owner') ); - } - function testShareRequestNoShareableCalendar() { - + public function testShareRequestNoShareableCalendar() + { $request = new HTTP\Request( 'POST', '/calendars/user1/cal2', @@ -226,7 +216,7 @@ RRR; ); $xml = ' - + mailto:joe@example.org Joe Shmoe @@ -241,19 +231,18 @@ RRR; $request->setBody($xml); $response = $this->request($request, 403); - } - function testInviteReply() { - + public function testInviteReply() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'POST', - 'REQUEST_URI' => '/calendars/user1', - 'CONTENT_TYPE' => 'text/xml', + 'REQUEST_URI' => '/calendars/user1', + 'CONTENT_TYPE' => 'text/xml', ]); $xml = ' - + /principals/owner @@ -262,37 +251,35 @@ RRR; $request->setBody($xml); $response = $this->request($request); $this->assertEquals(200, $response->status, $response->body); - } - function testInviteBadXML() { - + public function testInviteBadXML() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'POST', - 'REQUEST_URI' => '/calendars/user1', - 'CONTENT_TYPE' => 'text/xml', + 'REQUEST_URI' => '/calendars/user1', + 'CONTENT_TYPE' => 'text/xml', ]); $xml = ' - + '; $request->setBody($xml); $response = $this->request($request); $this->assertEquals(400, $response->status, $response->body); - } - function testInviteWrongUrl() { - + public function testInviteWrongUrl() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'POST', - 'REQUEST_URI' => '/calendars/user1/cal1', - 'CONTENT_TYPE' => 'text/xml', + 'REQUEST_URI' => '/calendars/user1/cal1', + 'CONTENT_TYPE' => 'text/xml', ]); $xml = ' - + /principals/owner '; @@ -303,27 +290,33 @@ RRR; // If the plugin did not handle this request, it must ensure that the // body is still accessible by other plugins. $this->assertEquals($xml, $request->getBody(true)); - } - function testPublish() { + public function testPostWithoutContentType() + { + $request = new HTTP\Request('POST', '/'); + $response = new HTTP\ResponseMock(); + + $this->caldavSharingPlugin->httpPost($request, $response); + $this->assertTrue(true); + } + public function testPublish() + { $request = new HTTP\Request('POST', '/calendars/user1/cal1', ['Content-Type' => 'text/xml']); $xml = ' - + '; $request->setBody($xml); $response = $this->request($request); $this->assertEquals(202, $response->status, $response->body); - } - - function testUnpublish() { - + public function testUnpublish() + { $request = new HTTP\Request( 'POST', '/calendars/user1/cal1', @@ -331,18 +324,17 @@ RRR; ); $xml = ' - + '; $request->setBody($xml); $response = $this->request($request); $this->assertEquals(200, $response->status, $response->body); - } - function testPublishWrongUrl() { - + public function testPublishWrongUrl() + { $request = new HTTP\Request( 'POST', '/calendars/user1', @@ -350,34 +342,31 @@ RRR; ); $xml = ' - + '; $request->setBody($xml); $this->request($request, 501); - } - function testUnpublishWrongUrl() { - + public function testUnpublishWrongUrl() + { $request = new HTTP\Request( 'POST', '/calendars/user1', ['Content-Type' => 'text/xml'] ); $xml = ' - + '; $request->setBody($xml); $this->request($request, 501); - } - function testUnknownXmlDoc() { - - + public function testUnknownXmlDoc() + { $request = new HTTP\Request( 'POST', '/calendars/user1/cal2', @@ -385,12 +374,11 @@ RRR; ); $xml = ' -'; +'; $request->setBody($xml); $response = $this->request($request); $this->assertEquals(501, $response->status, $response->body); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php b/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php index 673d39c0a..72b5080af 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/TestUtil.php @@ -1,39 +1,41 @@ createCalendar( 'principals/user1', 'UUID-123467', [ - '{DAV:}displayname' => 'user1 calendar', + '{DAV:}displayname' => 'user1 calendar', '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar description', - '{http://apple.com/ns/ical/}calendar-order' => '1', - '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', + '{http://apple.com/ns/ical/}calendar-order' => '1', + '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', ] ); $backend->createCalendar( 'principals/user1', 'UUID-123468', [ - '{DAV:}displayname' => 'user1 calendar2', + '{DAV:}displayname' => 'user1 calendar2', '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar description', - '{http://apple.com/ns/ical/}calendar-order' => '1', - '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', + '{http://apple.com/ns/ical/}calendar-order' => '1', + '{http://apple.com/ns/ical/}calendar-color' => '#FF0000', ] ); $backend->createCalendarObject($calendarId, 'UUID-2345', self::getTestCalendarData()); - return $backend; + return $backend; } - static function getTestCalendarData($type = 1) { - + public static function getTestCalendarData($type = 1) + { $calendarData = 'BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Apple Inc.//iCal 4.0.1//EN @@ -62,108 +64,104 @@ SUMMARY:Something here DTSTAMP:20100228T130202Z'; switch ($type) { - case 1 : + case 1: $calendarData .= "\nDTSTART;TZID=Asia/Seoul:20100223T060000\nDTEND;TZID=Asia/Seoul:20100223T070000\n"; break; - case 2 : + case 2: $calendarData .= "\nDTSTART:20100223T060000\nDTEND:20100223T070000\n"; break; - case 3 : + case 3: $calendarData .= "\nDTSTART;VALUE=DATE:20100223\nDTEND;VALUE=DATE:20100223\n"; break; - case 4 : + case 4: $calendarData .= "\nDTSTART;TZID=Asia/Seoul:20100223T060000\nDURATION:PT1H\n"; break; - case 5 : + case 5: $calendarData .= "\nDTSTART;TZID=Asia/Seoul:20100223T060000\nDURATION:-P5D\n"; break; - case 6 : + case 6: $calendarData .= "\nDTSTART;VALUE=DATE:20100223\n"; break; - case 7 : + case 7: $calendarData .= "\nDTSTART;VALUE=DATETIME:20100223T060000\n"; break; // No DTSTART, so intentionally broken - case 'X' : + case 'X': $calendarData .= "\n"; break; } - $calendarData .= 'ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com SEQUENCE:2 END:VEVENT END:VCALENDAR'; return $calendarData; - } - static function getTestTODO($type = 'due') { - + public static function getTestTODO($type = 'due') + { switch ($type) { - - case 'due' : - $extra = "DUE:20100104T000000Z"; + case 'due': + $extra = 'DUE:20100104T000000Z'; break; - case 'due2' : - $extra = "DUE:20060104T000000Z"; + case 'due2': + $extra = 'DUE:20060104T000000Z'; break; - case 'due_date' : - $extra = "DUE;VALUE=DATE:20060104"; + case 'due_date': + $extra = 'DUE;VALUE=DATE:20060104'; break; - case 'due_tz' : - $extra = "DUE;TZID=Asia/Seoul:20060104T000000Z"; + case 'due_tz': + $extra = 'DUE;TZID=Asia/Seoul:20060104T000000Z'; break; - case 'due_dtstart' : + case 'due_dtstart': $extra = "DTSTART:20050223T060000Z\nDUE:20060104T000000Z"; break; - case 'due_dtstart2' : + case 'due_dtstart2': $extra = "DTSTART:20090223T060000Z\nDUE:20100104T000000Z"; break; - case 'dtstart' : + case 'dtstart': $extra = 'DTSTART:20100223T060000Z'; break; - case 'dtstart2' : + case 'dtstart2': $extra = 'DTSTART:20060223T060000Z'; break; - case 'dtstart_date' : + case 'dtstart_date': $extra = 'DTSTART;VALUE=DATE:20100223'; break; - case 'dtstart_tz' : + case 'dtstart_tz': $extra = 'DTSTART;TZID=Asia/Seoul:20100223T060000Z'; break; - case 'dtstart_duration' : + case 'dtstart_duration': $extra = "DTSTART:20061023T060000Z\nDURATION:PT1H"; break; - case 'dtstart_duration2' : + case 'dtstart_duration2': $extra = "DTSTART:20101023T060000Z\nDURATION:PT1H"; break; - case 'completed' : + case 'completed': $extra = 'COMPLETED:20060601T000000Z'; break; - case 'completed2' : + case 'completed2': $extra = 'COMPLETED:20090601T000000Z'; break; - case 'created' : + case 'created': $extra = 'CREATED:20060601T000000Z'; break; - case 'created2' : + case 'created2': $extra = 'CREATED:20090601T000000Z'; break; - case 'completedcreated' : + case 'completedcreated': $extra = "CREATED:20060601T000000Z\nCOMPLETED:20070101T000000Z"; break; - case 'completedcreated2' : + case 'completedcreated2': $extra = "CREATED:20090601T000000Z\nCOMPLETED:20100101T000000Z"; break; - case 'notime' : + case 'notime': $extra = 'X-FILLER:oh hello'; break; - default : - throw new Exception('Unknown type: ' . $type); - + default: + throw new Exception('Unknown type: '.$type); } $todo = 'BEGIN:VCALENDAR @@ -171,7 +169,7 @@ VERSION:2.0 PRODID:-//Example Corp.//CalDAV Client//EN BEGIN:VTODO DTSTAMP:20060205T235335Z -' . $extra . ' +'.$extra.' STATUS:NEEDS-ACTION SUMMARY:Task #1 UID:DDDEEB7915FA61233B861457@example.com @@ -183,7 +181,5 @@ END:VTODO END:VCALENDAR'; return $todo; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php index 629df90c1..e6d1edace 100644 --- a/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php +++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php @@ -1,5 +1,7 @@ 'calendar1', - 'principaluri' => 'principals/admin', - 'uri' => 'calendar1', + 'id' => 'calendar1', + 'principaluri' => 'principals/admin', + 'uri' => 'calendar1', '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO', 'VJOURNAL']), ], [ - 'id' => 'calendar2', - 'principaluri' => 'principals/admin', - 'uri' => 'calendar2', + 'id' => 'calendar2', + 'principaluri' => 'principals/admin', + 'uri' => 'calendar2', '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VTODO', 'VJOURNAL']), - ] + ], ]; $this->calBackend = new Backend\Mock($calendars, []); @@ -52,33 +54,30 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase { $response = new HTTP\ResponseMock(); $this->server->httpResponse = $response; - } - function request(HTTP\Request $request) { - + public function request(HTTP\Request $request) + { $this->server->httpRequest = $request; $this->server->exec(); return $this->server->httpResponse; - } - function testCreateFile() { - + public function testCreateFile() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', ]); $response = $this->request($request); $this->assertEquals(415, $response->status); - } - function testCreateFileValid() { - + public function testCreateFileValid() + { $request = new HTTP\Request( 'PUT', '/calendars/admin/calendar1/blabla.ics', @@ -101,26 +100,25 @@ ICS; $response = $this->request($request); - $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); + $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: '.$response->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . md5($ics) . '"'], + 'Content-Length' => ['0'], + 'ETag' => ['"'.md5($ics).'"'], ], $response->getHeaders()); $expected = [ - 'uri' => 'blabla.ics', + 'uri' => 'blabla.ics', 'calendardata' => $ics, - 'calendarid' => 'calendar1', + 'calendarid' => 'calendar1', 'lastmodified' => null, ]; $this->assertEquals($expected, $this->calBackend->getCalendarObject('calendar1', 'blabla.ics')); - } - function testCreateFileNoVersion() { - + public function testCreateFileNoVersion() + { $request = new HTTP\Request( 'PUT', '/calendars/admin/calendar1/blabla.ics', @@ -142,12 +140,11 @@ ICS; $response = $this->request($request); - $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testCreateFileNoVersionFixed() { - + public function testCreateFileNoVersionFixed() + { $request = new HTTP\Request( 'PUT', '/calendars/admin/calendar1/blabla.ics', @@ -169,10 +166,10 @@ ICS; $response = $this->request($request); - $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); + $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: '.$response->body); $this->assertEquals([ - 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], + 'X-Sabre-Version' => [DAV\Version::VERSION], + 'Content-Length' => ['0'], 'X-Sabre-Ew-Gross' => ['iCalendar validation warning: VERSION MUST appear exactly once in a VCALENDAR component'], ], $response->getHeaders()); @@ -190,18 +187,17 @@ END:VCALENDAR\r ICS; $expected = [ - 'uri' => 'blabla.ics', + 'uri' => 'blabla.ics', 'calendardata' => $ics, - 'calendarid' => 'calendar1', + 'calendarid' => 'calendar1', 'lastmodified' => null, ]; $this->assertEquals($expected, $this->calBackend->getCalendarObject('calendar1', 'blabla.ics')); - } - function testCreateFileNoComponents() { - + public function testCreateFileNoComponents() + { $request = new HTTP\Request( 'PUT', '/calendars/admin/calendar1/blabla.ics', @@ -217,96 +213,89 @@ ICS; $request->setBody($ics); $response = $this->request($request); - $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testCreateFileNoUID() { - + public function testCreateFileNoUID() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', ]); $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $response = $this->request($request); - $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testCreateFileVCard() { - + public function testCreateFileVCard() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', ]); $request->setBody("BEGIN:VCARD\r\nEND:VCARD\r\n"); $response = $this->request($request); - $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testCreateFile2Components() { - + public function testCreateFile2Components() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', ]); $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nBEGIN:VJOURNAL\r\nUID:foo\r\nEND:VJOURNAL\r\nEND:VCALENDAR\r\n"); $response = $this->request($request); - $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testCreateFile2UIDS() { - + public function testCreateFile2UIDS() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', ]); $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nBEGIN:VEVENT\r\nUID:bar\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $response = $this->request($request); - $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testCreateFileWrongComponent() { - + public function testCreateFileWrongComponent() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', ]); $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nBEGIN:VFREEBUSY\r\nUID:foo\r\nEND:VFREEBUSY\r\nEND:VCALENDAR\r\n"); $response = $this->request($request); - $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testUpdateFile() { - + public function testUpdateFile() + { $this->calBackend->createCalendarObject('calendar1', 'blabla.ics', 'foo'); $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics', ]); $response = $this->request($request); $this->assertEquals(415, $response->status); - } - function testUpdateFileParsableBody() { - + public function testUpdateFileParsableBody() + { $this->calBackend->createCalendarObject('calendar1', 'blabla.ics', 'foo'); $request = new HTTP\Request( 'PUT', @@ -330,43 +319,40 @@ ICS; $this->assertEquals(204, $response->status); $expected = [ - 'uri' => 'blabla.ics', + 'uri' => 'blabla.ics', 'calendardata' => $ics, - 'calendarid' => 'calendar1', + 'calendarid' => 'calendar1', 'lastmodified' => null, ]; $this->assertEquals($expected, $this->calBackend->getCalendarObject('calendar1', 'blabla.ics')); - } - function testCreateFileInvalidComponent() { - + public function testCreateFileInvalidComponent() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar2/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar2/blabla.ics', ]); $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $response = $this->request($request); - $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testUpdateFileInvalidComponent() { - + public function testUpdateFileInvalidComponent() + { $this->calBackend->createCalendarObject('calendar2', 'blabla.ics', 'foo'); $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/calendars/admin/calendar2/blabla.ics', + 'REQUEST_URI' => '/calendars/admin/calendar2/blabla.ics', ]); $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"); $response = $this->request($request); - $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } /** @@ -376,8 +362,8 @@ ICS; * More importantly. If any transformation happens, the etag must no longer * be returned by the server. */ - function testCreateFileModified() { - + public function testCreateFileModified() + { $request = new HTTP\Request( 'PUT', '/calendars/admin/calendar1/blabla.ics' @@ -399,8 +385,7 @@ ICS; $response = $this->request($request); - $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); + $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: '.$response->body); $this->assertNull($response->getHeader('ETag')); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php index 552e2ba77..c945e2c58 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php @@ -1,13 +1,15 @@ backend = new Backend\Mock(); $principalBackend = new DAVACL\PrincipalBackend\Mock(); $tree = [ new AddressBookRoot($principalBackend, $this->backend), - new DAVACL\PrincipalCollection($principalBackend) + new DAVACL\PrincipalCollection($principalBackend), ]; $this->plugin = new Plugin(); @@ -37,7 +39,5 @@ abstract class AbstractPluginTest extends \PHPUnit_Framework_TestCase { $this->server->sapi = new HTTP\SapiMock(); $this->server->addPlugin($this->plugin); $this->server->debugExceptions = true; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php index f8da38a16..6e7e13106 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php @@ -1,5 +1,7 @@ server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -47,21 +49,19 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->assertEquals([ '/addressbooks/user1/book1/card1' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD").'"', ], ], '/addressbooks/user1/book1/card2' => [ 404 => [ '{DAV:}getetag' => null, ], - ] + ], ], $result); - - } - function testQueryDepth0() { - + public function testQueryDepth0() + { $request = new HTTP\Request( 'REPORT', '/addressbooks/user1/book1/card1', @@ -87,7 +87,7 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -97,16 +97,14 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->assertEquals([ '/addressbooks/user1/book1/card1' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD").'"', ], ], ], $result); - - } - function testQueryNoMatch() { - + public function testQueryNoMatch() + { $request = new HTTP\Request( 'REPORT', '/addressbooks/user1/book1', @@ -132,7 +130,7 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -140,15 +138,14 @@ class AddressBookQueryTest extends AbstractPluginTest { $result = $client->parseMultiStatus($response->body); $this->assertEquals([], $result); - } - function testQueryLimit() { - + public function testQueryLimit() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'REPORT', - 'REQUEST_URI' => '/addressbooks/user1/book1', - 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/addressbooks/user1/book1', + 'HTTP_DEPTH' => '1', ]); $request->setBody( @@ -171,7 +168,7 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -181,16 +178,14 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->assertEquals([ '/addressbooks/user1/book1/card1' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD").'"', ], ], ], $result); - - } - function testJson() { - + public function testJson() + { $request = new HTTP\Request( 'REPORT', '/addressbooks/user1/book1/card1', @@ -214,7 +209,7 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -226,16 +221,15 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->assertEquals([ '/addressbooks/user1/book1/card1' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"', - '{urn:ietf:params:xml:ns:carddav}address-data' => '["vcard",[["version",{},"text","4.0"],["prodid",{},"text","-\/\/Sabre\/\/Sabre VObject ' . $vobjVersion . '\/\/EN"],["uid",{},"text","12345"]]]', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD").'"', + '{urn:ietf:params:xml:ns:carddav}address-data' => '["vcard",[["version",{},"text","4.0"],["prodid",{},"text","-\/\/Sabre\/\/Sabre VObject '.$vobjVersion.'\/\/EN"],["uid",{},"text","12345"]]]', ], ], ], $result); - } - function testVCard4() { - + public function testVCard4() + { $request = new HTTP\Request( 'REPORT', '/addressbooks/user1/book1/card1', @@ -259,7 +253,7 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -271,16 +265,15 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->assertEquals([ '/addressbooks/user1/book1/card1' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD").'"', '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject $vobjVersion//EN\r\nUID:12345\r\nEND:VCARD\r\n", ], ], ], $result); - } - function testAddressBookDepth0() { - + public function testAddressBookDepth0() + { $request = new HTTP\Request( 'REPORT', '/addressbooks/user1/book1', @@ -304,11 +297,11 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(415, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(415, $response->status, 'Incorrect status code. Full response body:'.$response->body); } - function testAddressBookProperties() { - + public function testAddressBookProperties() + { $request = new HTTP\Request( 'REPORT', '/addressbooks/user1/book3', @@ -335,7 +328,7 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -345,11 +338,10 @@ class AddressBookQueryTest extends AbstractPluginTest { $this->assertEquals([ '/addressbooks/user1/book3/card3' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nFN:Test-Card\nEMAIL;TYPE=home:bar@example.org\nEND:VCARD") . '"', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nFN:Test-Card\nEMAIL;TYPE=home:bar@example.org\nEND:VCARD").'"', '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\r\nVERSION:3.0\r\nUID:12345\r\nFN:Test-Card\r\nEND:VCARD\r\n", ], ], ], $result); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php index fc20480f2..c4aff2712 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php @@ -1,22 +1,23 @@ assertEquals('addressbooks', $root->getName()); - } - function testGetChildForPrincipal() { - + public function testGetChildForPrincipal() + { $pBackend = new DAVACL\PrincipalBackend\Mock(); $cBackend = new Backend\Mock(); $root = new AddressBookRoot($pBackend, $cBackend); @@ -26,6 +27,5 @@ class AddressBookRootTest extends \PHPUnit_Framework_TestCase { $this->assertInstanceOf('Sabre\\CardDAV\\AddressBookHome', $children[0]); $this->assertEquals('user1', $children[0]->getName()); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php index 1f0064dd3..879816803 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php @@ -1,11 +1,13 @@ backend = new Backend\Mock(); $this->ab = new AddressBook( $this->backend, [ - 'uri' => 'book1', - 'id' => 'foo', + 'uri' => 'book1', + 'id' => 'foo', '{DAV:}displayname' => 'd-name', - 'principaluri' => 'principals/user1', + 'principaluri' => 'principals/user1', ] ); - } - function testGetName() { - + public function testGetName() + { $this->assertEquals('book1', $this->ab->getName()); - } - function testGetChild() { - + public function testGetChild() + { $card = $this->ab->getChild('card1'); $this->assertInstanceOf('Sabre\\CardDAV\\Card', $card); $this->assertEquals('card1', $card->getName()); - } /** - * @expectedException Sabre\DAV\Exception\NotFound + * @expectedException \Sabre\DAV\Exception\NotFound */ - function testGetChildNotFound() { - + public function testGetChildNotFound() + { $card = $this->ab->getChild('card3'); - } - function testGetChildren() { - + public function testGetChildren() + { $cards = $this->ab->getChildren(); $this->assertEquals(2, count($cards)); $this->assertEquals('card1', $cards[0]->getName()); $this->assertEquals('card2', $cards[1]->getName()); - } /** - * @expectedException Sabre\DAV\Exception\MethodNotAllowed + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ - function testCreateDirectory() { - + public function testCreateDirectory() + { $this->ab->createDirectory('name'); - } - function testCreateFile() { - + public function testCreateFile() + { $file = fopen('php://memory', 'r+'); fwrite($file, 'foo'); rewind($file); $this->ab->createFile('card2', $file); $this->assertEquals('foo', $this->backend->cards['foo']['card2']); - } - function testDelete() { - + public function testDelete() + { $this->ab->delete(); $this->assertEquals(1, count($this->backend->addressBooks)); - } /** - * @expectedException Sabre\DAV\Exception\MethodNotAllowed + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ - function testSetName() { - + public function testSetName() + { $this->ab->setName('foo'); - } - function testGetLastModified() { - + public function testGetLastModified() + { $this->assertNull($this->ab->getLastModified()); - } - function testUpdateProperties() { - + public function testUpdateProperties() + { $propPatch = new PropPatch([ '{DAV:}displayname' => 'barrr', ]); @@ -113,20 +105,18 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase { $this->assertTrue($propPatch->commit()); $this->assertEquals('barrr', $this->backend->addressBooks[0]['{DAV:}displayname']); - } - function testGetProperties() { - + public function testGetProperties() + { $props = $this->ab->getProperties(['{DAV:}displayname']); $this->assertEquals([ '{DAV:}displayname' => 'd-name', ], $props); - } - function testACLMethods() { - + public function testACLMethods() + { $this->assertEquals('principals/user1', $this->ab->getOwner()); $this->assertNull($this->ab->getGroup()); $this->assertEquals([ @@ -136,39 +126,35 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase { 'protected' => true, ], ], $this->ab->getACL()); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetACL() { - - $this->ab->setACL([]); - + public function testSetACL() + { + $this->ab->setACL([]); } - function testGetSupportedPrivilegeSet() { - + public function testGetSupportedPrivilegeSet() + { $this->assertNull( $this->ab->getSupportedPrivilegeSet() ); - } - function testGetSyncTokenNoSyncSupport() { - + public function testGetSyncTokenNoSyncSupport() + { $this->assertNull($this->ab->getSyncToken()); - } - function testGetChangesNoSyncSupport() { + public function testGetChangesNoSyncSupport() + { $this->assertNull($this->ab->getChanges(1, null)); - } - function testGetSyncToken() { - + public function testGetSyncToken() + { $this->driver = 'sqlite'; $this->dropTables(['addressbooks', 'cards', 'addressbookchanges']); $this->createSchema('addressbooks'); @@ -179,8 +165,8 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(2, $ab->getSyncToken()); } - function testGetSyncToken2() { - + public function testGetSyncToken2() + { $this->driver = 'sqlite'; $this->dropTables(['addressbooks', 'cards', 'addressbookchanges']); $this->createSchema('addressbooks'); @@ -190,5 +176,4 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase { $ab = new AddressBook($backend, ['id' => 1, '{http://sabredav.org/ns}sync-token' => 2]); $this->assertEquals(2, $ab->getSyncToken()); } - } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php index f62bfb1ae..e5bd088fc 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php @@ -1,12 +1,14 @@ dropTables([ 'addressbooks', 'cards', @@ -26,36 +28,34 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->backend = new PDO($pdo); $pdo->exec("INSERT INTO addressbooks (principaluri, displayname, uri, description, synctoken) VALUES ('principals/user1', 'book1', 'book1', 'addressbook 1', 1)"); - $pdo->exec("INSERT INTO cards (addressbookid, carddata, uri, lastmodified, etag, size) VALUES (1, 'card1', 'card1', 0, '" . md5('card1') . "', 5)"); - + $pdo->exec("INSERT INTO cards (addressbookid, carddata, uri, lastmodified, etag, size) VALUES (1, 'card1', 'card1', 0, '".md5('card1')."', 5)"); } - function testGetAddressBooksForUser() { - + public function testGetAddressBooksForUser() + { $result = $this->backend->getAddressBooksForUser('principals/user1'); $expected = [ [ - 'id' => 1, - 'uri' => 'book1', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'book1', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1', - '{http://calendarserver.org/ns/}getctag' => 1, - '{http://sabredav.org/ns}sync-token' => 1 - ] + 'id' => 1, + 'uri' => 'book1', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'book1', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'addressbook 1', + '{http://calendarserver.org/ns/}getctag' => 1, + '{http://sabredav.org/ns}sync-token' => 1, + ], ]; $this->assertEquals($expected, $result); - } - function testUpdateAddressBookInvalidProp() { - + public function testUpdateAddressBookInvalidProp() + { $propPatch = new PropPatch([ - '{DAV:}displayname' => 'updated', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated', - '{DAV:}foo' => 'bar', + '{DAV:}displayname' => 'updated', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'updated', + '{DAV:}foo' => 'bar', ]); $this->backend->updateAddressBook(1, $propPatch); @@ -67,22 +67,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = [ [ - 'id' => 1, - 'uri' => 'book1', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'book1', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1', - '{http://calendarserver.org/ns/}getctag' => 1, - '{http://sabredav.org/ns}sync-token' => 1 - ] + 'id' => 1, + 'uri' => 'book1', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'book1', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'addressbook 1', + '{http://calendarserver.org/ns/}getctag' => 1, + '{http://sabredav.org/ns}sync-token' => 1, + ], ]; $this->assertEquals($expected, $result); - } - function testUpdateAddressBookNoProps() { - + public function testUpdateAddressBookNoProps() + { $propPatch = new PropPatch([ ]); @@ -94,26 +93,24 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = [ [ - 'id' => 1, - 'uri' => 'book1', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'book1', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1', - '{http://calendarserver.org/ns/}getctag' => 1, - '{http://sabredav.org/ns}sync-token' => 1 - ] + 'id' => 1, + 'uri' => 'book1', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'book1', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'addressbook 1', + '{http://calendarserver.org/ns/}getctag' => 1, + '{http://sabredav.org/ns}sync-token' => 1, + ], ]; $this->assertEquals($expected, $result); - - } - function testUpdateAddressBookSuccess() { - + public function testUpdateAddressBookSuccess() + { $propPatch = new PropPatch([ - '{DAV:}displayname' => 'updated', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated', + '{DAV:}displayname' => 'updated', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'updated', ]); $this->backend->updateAddressBook(1, $propPatch); @@ -125,101 +122,95 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = [ [ - 'id' => 1, - 'uri' => 'book1', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'updated', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated', - '{http://calendarserver.org/ns/}getctag' => 2, - '{http://sabredav.org/ns}sync-token' => 2 - ] + 'id' => 1, + 'uri' => 'book1', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'updated', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'updated', + '{http://calendarserver.org/ns/}getctag' => 2, + '{http://sabredav.org/ns}sync-token' => 2, + ], ]; $this->assertEquals($expected, $result); - - } - function testDeleteAddressBook() { - + public function testDeleteAddressBook() + { $this->backend->deleteAddressBook(1); $this->assertEquals([], $this->backend->getAddressBooksForUser('principals/user1')); - } /** - * @expectedException Sabre\DAV\Exception\BadRequest + * @expectedException \Sabre\DAV\Exception\BadRequest */ - function testCreateAddressBookUnsupportedProp() { - + public function testCreateAddressBookUnsupportedProp() + { $this->backend->createAddressBook('principals/user1', 'book2', [ '{DAV:}foo' => 'bar', ]); - } - function testCreateAddressBookSuccess() { - + public function testCreateAddressBookSuccess() + { $this->backend->createAddressBook('principals/user1', 'book2', [ - '{DAV:}displayname' => 'book2', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 2', + '{DAV:}displayname' => 'book2', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'addressbook 2', ]); $expected = [ [ - 'id' => 1, - 'uri' => 'book1', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'book1', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1', - '{http://calendarserver.org/ns/}getctag' => 1, - '{http://sabredav.org/ns}sync-token' => 1, + 'id' => 1, + 'uri' => 'book1', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'book1', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'addressbook 1', + '{http://calendarserver.org/ns/}getctag' => 1, + '{http://sabredav.org/ns}sync-token' => 1, ], [ - 'id' => 2, - 'uri' => 'book2', - 'principaluri' => 'principals/user1', - '{DAV:}displayname' => 'book2', - '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 2', - '{http://calendarserver.org/ns/}getctag' => 1, - '{http://sabredav.org/ns}sync-token' => 1, - ] + 'id' => 2, + 'uri' => 'book2', + 'principaluri' => 'principals/user1', + '{DAV:}displayname' => 'book2', + '{'.CardDAV\Plugin::NS_CARDDAV.'}addressbook-description' => 'addressbook 2', + '{http://calendarserver.org/ns/}getctag' => 1, + '{http://sabredav.org/ns}sync-token' => 1, + ], ]; $result = $this->backend->getAddressBooksForUser('principals/user1'); $this->assertEquals($expected, $result); - } - function testGetCards() { - + public function testGetCards() + { $result = $this->backend->getCards(1); $expected = [ [ - 'id' => 1, - 'uri' => 'card1', + 'id' => 1, + 'uri' => 'card1', 'lastmodified' => 0, - 'etag' => '"' . md5('card1') . '"', - 'size' => 5 - ] + 'etag' => '"'.md5('card1').'"', + 'size' => 5, + ], ]; $this->assertEquals($expected, $result); - } - function testGetCard() { - + public function testGetCard() + { $result = $this->backend->getCard(1, 'card1'); $expected = [ - 'id' => 1, - 'uri' => 'card1', - 'carddata' => 'card1', + 'id' => 1, + 'uri' => 'card1', + 'carddata' => 'card1', 'lastmodified' => 0, - 'etag' => '"' . md5('card1') . '"', - 'size' => 5 + 'etag' => '"'.md5('card1').'"', + 'size' => 5, ]; if (is_resource($result['carddata'])) { @@ -227,16 +218,15 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { } $this->assertEquals($expected, $result); - } /** * @depends testGetCard */ - function testCreateCard() { - + public function testCreateCard() + { $result = $this->backend->createCard(1, 'card2', 'data2'); - $this->assertEquals('"' . md5('data2') . '"', $result); + $this->assertEquals('"'.md5('data2').'"', $result); $result = $this->backend->getCard(1, 'card2'); $this->assertEquals(2, $result['id']); $this->assertEquals('card2', $result['uri']); @@ -244,33 +234,32 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result['carddata'] = stream_get_contents($result['carddata']); } $this->assertEquals('data2', $result['carddata']); - } /** * @depends testCreateCard */ - function testGetMultiple() { - + public function testGetMultiple() + { $result = $this->backend->createCard(1, 'card2', 'data2'); $result = $this->backend->createCard(1, 'card3', 'data3'); $check = [ [ - 'id' => 1, - 'uri' => 'card1', - 'carddata' => 'card1', + 'id' => 1, + 'uri' => 'card1', + 'carddata' => 'card1', 'lastmodified' => 0, ], [ - 'id' => 2, - 'uri' => 'card2', - 'carddata' => 'data2', + 'id' => 2, + 'uri' => 'card2', + 'carddata' => 'data2', 'lastmodified' => time(), ], [ - 'id' => 3, - 'uri' => 'card3', - 'carddata' => 'data3', + 'id' => 3, + 'uri' => 'card3', + 'carddata' => 'data3', 'lastmodified' => time(), ], ]; @@ -278,40 +267,34 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result = $this->backend->getMultipleCards(1, ['card1', 'card2', 'card3']); foreach ($check as $index => $node) { - foreach ($node as $k => $v) { - $expected = $v; $actual = $result[$index][$k]; switch ($k) { - case 'lastmodified' : + case 'lastmodified': $this->assertInternalType('int', $actual); break; - case 'carddata' : + case 'carddata': if (is_resource($actual)) { $actual = stream_get_contents($actual); } - // No break intended. - default : + // no break intended. + default: $this->assertEquals($expected, $actual); break; } - } - } - - } /** * @depends testGetCard */ - function testUpdateCard() { - + public function testUpdateCard() + { $result = $this->backend->updateCard(1, 'card1', 'newdata'); - $this->assertEquals('"' . md5('newdata') . '"', $result); + $this->assertEquals('"'.md5('newdata').'"', $result); $result = $this->backend->getCard(1, 'card1'); $this->assertEquals(1, $result['id']); @@ -319,22 +302,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result['carddata'] = stream_get_contents($result['carddata']); } $this->assertEquals('newdata', $result['carddata']); - } /** * @depends testGetCard */ - function testDeleteCard() { - + public function testDeleteCard() + { $this->backend->deleteCard(1, 'card1'); $result = $this->backend->getCard(1, 'card1'); $this->assertFalse($result); - } - function testGetChanges() { - + public function testGetChanges() + { $backend = $this->backend; $id = $backend->createAddressBook( 'principals/user1', @@ -345,29 +326,28 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals([ 'syncToken' => 1, - "added" => [], - 'modified' => [], - 'deleted' => [], + 'added' => [], + 'modified' => [], + 'deleted' => [], ], $result); $currentToken = $result['syncToken']; $dummyCard = "BEGIN:VCARD\r\nEND:VCARD\r\n"; - $backend->createCard($id, "card1.ics", $dummyCard); - $backend->createCard($id, "card2.ics", $dummyCard); - $backend->createCard($id, "card3.ics", $dummyCard); - $backend->updateCard($id, "card1.ics", $dummyCard); - $backend->deleteCard($id, "card2.ics"); + $backend->createCard($id, 'card1.ics', $dummyCard); + $backend->createCard($id, 'card2.ics', $dummyCard); + $backend->createCard($id, 'card3.ics', $dummyCard); + $backend->updateCard($id, 'card1.ics', $dummyCard); + $backend->deleteCard($id, 'card2.ics'); $result = $backend->getChangesForAddressBook($id, $currentToken, 1); $this->assertEquals([ 'syncToken' => 6, - 'modified' => ["card1.ics"], - 'deleted' => ["card2.ics"], - "added" => ["card3.ics"], + 'modified' => ['card1.ics'], + 'deleted' => ['card2.ics'], + 'added' => ['card3.ics'], ], $result); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php index 8638dc74a..f7e20fbfb 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php @@ -1,29 +1,31 @@ addressBooks = $addressBooks; $this->cards = $cards; if (is_null($this->addressBooks)) { $this->addressBooks = [ [ - 'id' => 'foo', - 'uri' => 'book1', - 'principaluri' => 'principals/user1', + 'id' => 'foo', + 'uri' => 'book1', + 'principaluri' => 'principals/user1', '{DAV:}displayname' => 'd-name', ], [ - 'id' => 'bar', - 'uri' => 'book3', - 'principaluri' => 'principals/user1', + 'id' => 'bar', + 'uri' => 'book3', + 'principaluri' => 'principals/user1', '{DAV:}displayname' => 'd-name', ], ]; @@ -41,20 +43,18 @@ class Mock extends AbstractBackend { ], ]; } - } - - function getAddressBooksForUser($principalUri) { - + public function getAddressBooksForUser($principalUri) + { $books = []; foreach ($this->addressBooks as $book) { if ($book['principaluri'] === $principalUri) { $books[] = $book; } } - return $books; + return $books; } /** @@ -69,45 +69,43 @@ class Mock extends AbstractBackend { * * Read the PropPatch documentation for more info and examples. * - * @param string $addressBookId + * @param string $addressBookId * @param \Sabre\DAV\PropPatch $propPatch - * @return void */ - function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) { - + public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) + { foreach ($this->addressBooks as &$book) { - if ($book['id'] !== $addressBookId) + if ($book['id'] !== $addressBookId) { continue; + } - $propPatch->handleRemaining(function($mutations) use (&$book) { + $propPatch->handleRemaining(function ($mutations) use (&$book) { foreach ($mutations as $key => $value) { $book[$key] = $value; } + return true; }); - } - } - function createAddressBook($principalUri, $url, array $properties) { - + public function createAddressBook($principalUri, $url, array $properties) + { $this->addressBooks[] = array_merge($properties, [ - 'id' => $url, - 'uri' => $url, + 'id' => $url, + 'uri' => $url, 'principaluri' => $principalUri, ]); - } - function deleteAddressBook($addressBookId) { - + public function deleteAddressBook($addressBookId) + { foreach ($this->addressBooks as $key => $value) { - if ($value['id'] === $addressBookId) + if ($value['id'] === $addressBookId) { unset($this->addressBooks[$key]); + } } unset($this->cards[$addressBookId]); - } /** @@ -127,28 +125,29 @@ class Mock extends AbstractBackend { * This may speed up certain requests, especially with large cards. * * @param mixed $addressBookId + * * @return array */ - function getCards($addressBookId) { - + public function getCards($addressBookId) + { $cards = []; foreach ($this->cards[$addressBookId] as $uri => $data) { if (is_resource($data)) { $cards[] = [ - 'uri' => $uri, + 'uri' => $uri, 'carddata' => $data, ]; } else { $cards[] = [ - 'uri' => $uri, + 'uri' => $uri, 'carddata' => $data, - 'etag' => '"' . md5($data) . '"', - 'size' => strlen($data) + 'etag' => '"'.md5($data).'"', + 'size' => strlen($data), ]; } } - return $cards; + return $cards; } /** @@ -159,24 +158,25 @@ class Mock extends AbstractBackend { * * If the card does not exist, you must return false. * - * @param mixed $addressBookId + * @param mixed $addressBookId * @param string $cardUri + * * @return array */ - function getCard($addressBookId, $cardUri) { - + public function getCard($addressBookId, $cardUri) + { if (!isset($this->cards[$addressBookId][$cardUri])) { return false; } $data = $this->cards[$addressBookId][$cardUri]; + return [ - 'uri' => $cardUri, + 'uri' => $cardUri, 'carddata' => $data, - 'etag' => '"' . md5($data) . '"', - 'size' => strlen($data) + 'etag' => '"'.md5($data).'"', + 'size' => strlen($data), ]; - } /** @@ -199,19 +199,20 @@ class Mock extends AbstractBackend { * * If you don't return an ETag, you can just return null. * - * @param mixed $addressBookId + * @param mixed $addressBookId * @param string $cardUri * @param string $cardData + * * @return string|null */ - function createCard($addressBookId, $cardUri, $cardData) { - + public function createCard($addressBookId, $cardUri, $cardData) + { if (is_resource($cardData)) { $cardData = stream_get_contents($cardData); } $this->cards[$addressBookId][$cardUri] = $cardData; - return '"' . md5($cardData) . '"'; + return '"'.md5($cardData).'"'; } /** @@ -234,25 +235,24 @@ class Mock extends AbstractBackend { * * If you don't return an ETag, you can just return null. * - * @param mixed $addressBookId + * @param mixed $addressBookId * @param string $cardUri * @param string $cardData + * * @return string|null */ - function updateCard($addressBookId, $cardUri, $cardData) { - + public function updateCard($addressBookId, $cardUri, $cardData) + { if (is_resource($cardData)) { $cardData = stream_get_contents($cardData); } $this->cards[$addressBookId][$cardUri] = $cardData; - return '"' . md5($cardData) . '"'; + return '"'.md5($cardData).'"'; } - function deleteCard($addressBookId, $cardUri) { - + public function deleteCard($addressBookId, $cardUri) + { unset($this->cards[$addressBookId][$cardUri]); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php index c1b0e274e..718eec6be 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php @@ -1,9 +1,10 @@ backend = new Backend\Mock(); $this->card = new Card( $this->backend, [ - 'uri' => 'book1', - 'id' => 'foo', + 'uri' => 'book1', + 'id' => 'foo', 'principaluri' => 'principals/user1', ], [ - 'uri' => 'card1', + 'uri' => 'card1', 'addressbookid' => 'foo', - 'carddata' => 'card', + 'carddata' => 'card', ] ); - } - function testGet() { - + public function testGet() + { $result = $this->card->get(); $this->assertEquals('card', $result); - } - function testGet2() { + public function testGet2() + { $this->card = new Card( $this->backend, [ - 'uri' => 'book1', - 'id' => 'foo', + 'uri' => 'book1', + 'id' => 'foo', 'principaluri' => 'principals/user1', ], [ - 'uri' => 'card1', + 'uri' => 'card1', 'addressbookid' => 'foo', ] ); $result = $this->card->get(); $this->assertEquals("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD", $result); - } - /** * @depends testGet */ - function testPut() { - + public function testPut() + { $file = fopen('php://memory', 'r+'); fwrite($file, 'newdata'); rewind($file); $this->card->put($file); $result = $this->card->get(); $this->assertEquals('newdata', $result); - } - - function testDelete() { - + public function testDelete() + { $this->card->delete(); $this->assertEquals(1, count($this->backend->cards['foo'])); - } - function testGetContentType() { - + public function testGetContentType() + { $this->assertEquals('text/vcard; charset=utf-8', $this->card->getContentType()); - } - function testGetETag() { - - $this->assertEquals('"' . md5('card') . '"', $this->card->getETag()); - + public function testGetETag() + { + $this->assertEquals('"'.md5('card').'"', $this->card->getETag()); } - function testGetETag2() { - + public function testGetETag2() + { $card = new Card( $this->backend, [ - 'uri' => 'book1', - 'id' => 'foo', + 'uri' => 'book1', + 'id' => 'foo', 'principaluri' => 'principals/user1', ], [ - 'uri' => 'card1', + 'uri' => 'card1', 'addressbookid' => 'foo', - 'carddata' => 'card', - 'etag' => '"blabla"', + 'carddata' => 'card', + 'etag' => '"blabla"', ] ); $this->assertEquals('"blabla"', $card->getETag()); - } - function testGetLastModified() { - + public function testGetLastModified() + { $this->assertEquals(null, $this->card->getLastModified()); - } - function testGetSize() { - + public function testGetSize() + { $this->assertEquals(4, $this->card->getSize()); $this->assertEquals(4, $this->card->getSize()); - } - function testGetSize2() { - + public function testGetSize2() + { $card = new Card( $this->backend, [ - 'uri' => 'book1', - 'id' => 'foo', + 'uri' => 'book1', + 'id' => 'foo', 'principaluri' => 'principals/user1', ], [ - 'uri' => 'card1', + 'uri' => 'card1', 'addressbookid' => 'foo', - 'etag' => '"blabla"', - 'size' => 4, + 'etag' => '"blabla"', + 'size' => 4, ] ); $this->assertEquals(4, $card->getSize()); - } - function testACLMethods() { - + public function testACLMethods() + { $this->assertEquals('principals/user1', $this->card->getOwner()); $this->assertNull($this->card->getGroup()); $this->assertEquals([ @@ -156,22 +146,22 @@ class CardTest extends \PHPUnit_Framework_TestCase { 'protected' => true, ], ], $this->card->getACL()); - } - function testOverrideACL() { + public function testOverrideACL() + { $card = new Card( $this->backend, [ - 'uri' => 'book1', - 'id' => 'foo', + 'uri' => 'book1', + 'id' => 'foo', 'principaluri' => 'principals/user1', ], [ - 'uri' => 'card1', + 'uri' => 'card1', 'addressbookid' => 'foo', - 'carddata' => 'card', - 'acl' => [ + 'carddata' => 'card', + 'acl' => [ [ 'privilege' => '{DAV:}read', 'principal' => 'principals/user1', @@ -187,24 +177,20 @@ class CardTest extends \PHPUnit_Framework_TestCase { 'protected' => true, ], ], $card->getACL()); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetACL() { - - $this->card->setACL([]); - + public function testSetACL() + { + $this->card->setACL([]); } - function testGetSupportedPrivilegeSet() { - + public function testGetSupportedPrivilegeSet() + { $this->assertNull( $this->card->getSupportedPrivilegeSet() ); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/IDirectoryTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/IDirectoryTest.php index 4796a131f..760749f6c 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/IDirectoryTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/IDirectoryTest.php @@ -1,15 +1,17 @@ addPlugin($plugin); $props = $server->getProperties('directory', ['{DAV:}resourcetype']); - $this->assertTrue($props['{DAV:}resourcetype']->is('{' . Plugin::NS_CARDDAV . '}directory')); - + $this->assertTrue($props['{DAV:}resourcetype']->is('{'.Plugin::NS_CARDDAV.'}directory')); } - } -class DirectoryMock extends DAV\SimpleCollection implements IDirectory { - - - +class DirectoryMock extends DAV\SimpleCollection implements IDirectory +{ } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php index 2d57c6ae7..4e3276ed3 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php @@ -1,5 +1,7 @@ 'REPORT', - 'REQUEST_URI' => '/addressbooks/user1/book1', + 'REQUEST_URI' => '/addressbooks/user1/book1', ]); $request->setBody( @@ -34,7 +36,7 @@ class MultiGetTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); @@ -44,19 +46,18 @@ class MultiGetTest extends AbstractPluginTest { $this->assertEquals([ '/addressbooks/user1/book1/card1' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD").'"', '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD", - ] - ] + ], + ], ], $result); - } - function testMultiGetVCard4() { - + public function testMultiGetVCard4() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'REPORT', - 'REQUEST_URI' => '/addressbooks/user1/book1', + 'REQUEST_URI' => '/addressbooks/user1/book1', ]); $request->setBody( @@ -77,23 +78,22 @@ class MultiGetTest extends AbstractPluginTest { $this->server->exec(); - $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body); + $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:'.$response->body); // using the client for parsing $client = new DAV\Client(['baseUri' => '/']); $result = $client->parseMultiStatus($response->body); - $prodId = "PRODID:-//Sabre//Sabre VObject " . \Sabre\VObject\Version::VERSION . "//EN"; + $prodId = 'PRODID:-//Sabre//Sabre VObject '.\Sabre\VObject\Version::VERSION.'//EN'; $this->assertEquals([ '/addressbooks/user1/book1/card1' => [ 200 => [ - '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"', + '{DAV:}getetag' => '"'.md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD").'"', '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\r\nVERSION:4.0\r\n$prodId\r\nUID:12345\r\nEND:VCARD\r\n", - ] - ] + ], + ], ], $result); - } } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php index 6962e7830..b5a68dc48 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php @@ -1,102 +1,101 @@ assertEquals('{' . Plugin::NS_CARDDAV . '}addressbook', $this->server->resourceTypeMapping['Sabre\\CardDAV\\IAddressBook']); +class PluginTest extends AbstractPluginTest +{ + public function testConstruct() + { + $this->assertEquals('{'.Plugin::NS_CARDDAV.'}addressbook', $this->server->resourceTypeMapping['Sabre\\CardDAV\\IAddressBook']); $this->assertTrue(in_array('addressbook', $this->plugin->getFeatures())); $this->assertEquals('carddav', $this->plugin->getPluginInfo()['name']); - } - function testSupportedReportSet() { - + public function testSupportedReportSet() + { $this->assertEquals([ - '{' . Plugin::NS_CARDDAV . '}addressbook-multiget', - '{' . Plugin::NS_CARDDAV . '}addressbook-query', + '{'.Plugin::NS_CARDDAV.'}addressbook-multiget', + '{'.Plugin::NS_CARDDAV.'}addressbook-query', ], $this->plugin->getSupportedReportSet('addressbooks/user1/book1')); - } - function testSupportedReportSetEmpty() { - + public function testSupportedReportSetEmpty() + { $this->assertEquals([ ], $this->plugin->getSupportedReportSet('')); - } - function testAddressBookHomeSet() { - - $result = $this->server->getProperties('principals/user1', ['{' . Plugin::NS_CARDDAV . '}addressbook-home-set']); + public function testAddressBookHomeSet() + { + $result = $this->server->getProperties('principals/user1', ['{'.Plugin::NS_CARDDAV.'}addressbook-home-set']); $this->assertEquals(1, count($result)); - $this->assertTrue(isset($result['{' . Plugin::NS_CARDDAV . '}addressbook-home-set'])); - $this->assertEquals('addressbooks/user1/', $result['{' . Plugin::NS_CARDDAV . '}addressbook-home-set']->getHref()); - + $this->assertTrue(isset($result['{'.Plugin::NS_CARDDAV.'}addressbook-home-set'])); + $this->assertEquals('addressbooks/user1/', $result['{'.Plugin::NS_CARDDAV.'}addressbook-home-set']->getHref()); } - function testDirectoryGateway() { - - $result = $this->server->getProperties('principals/user1', ['{' . Plugin::NS_CARDDAV . '}directory-gateway']); + public function testDirectoryGateway() + { + $result = $this->server->getProperties('principals/user1', ['{'.Plugin::NS_CARDDAV.'}directory-gateway']); $this->assertEquals(1, count($result)); - $this->assertTrue(isset($result['{' . Plugin::NS_CARDDAV . '}directory-gateway'])); - $this->assertEquals(['directory'], $result['{' . Plugin::NS_CARDDAV . '}directory-gateway']->getHrefs()); - + $this->assertTrue(isset($result['{'.Plugin::NS_CARDDAV.'}directory-gateway'])); + $this->assertEquals(['directory'], $result['{'.Plugin::NS_CARDDAV.'}directory-gateway']->getHrefs()); } - function testReportPassThrough() { - + public function testReportPassThrough() + { $this->assertNull($this->plugin->report('{DAV:}foo', new \DomDocument(), '')); - } - function testHTMLActionsPanel() { - + public function testHTMLActionsPanel() + { $output = ''; $r = $this->server->emit('onHTMLActionsPanel', [$this->server->tree->getNodeForPath('addressbooks/user1'), &$output]); $this->assertFalse($r); - $this->assertTrue(!!strpos($output, 'Display name')); - + $this->assertTrue((bool) strpos($output, 'Display name')); } - function testAddressbookPluginProperties() { - - $ns = '{' . Plugin::NS_CARDDAV . '}'; + public function testAddressbookPluginProperties() + { + $ns = '{'.Plugin::NS_CARDDAV.'}'; $propFind = new DAV\PropFind('addressbooks/user1/book1', [ - $ns . 'supported-address-data', - $ns . 'supported-collation-set', + $ns.'supported-address-data', + $ns.'supported-collation-set', ]); $node = $this->server->tree->getNodeForPath('addressbooks/user1/book1'); $this->plugin->propFindEarly($propFind, $node); $this->assertInstanceOf( 'Sabre\\CardDAV\\Xml\\Property\\SupportedAddressData', - $propFind->get($ns . 'supported-address-data') + $propFind->get($ns.'supported-address-data') ); $this->assertInstanceOf( 'Sabre\\CardDAV\\Xml\\Property\\SupportedCollationSet', - $propFind->get($ns . 'supported-collation-set') + $propFind->get($ns.'supported-collation-set') ); - - } - function testGetTransform() { - - $request = new \Sabre\HTTP\Request('GET', '/addressbooks/user1/book1/card1', ['Accept: application/vcard+json']); + public function testGetTransform() + { + $request = new \Sabre\HTTP\Request('GET', '/addressbooks/user1/book1/card1', ['Accept' => 'application/vcard+json']); $response = new \Sabre\HTTP\ResponseMock(); $this->server->invokeMethod($request, $response); $this->assertEquals(200, $response->getStatus()); - } + public function testGetWithoutContentType() + { + $request = new \Sabre\HTTP\Request('GET', '/'); + $response = new \Sabre\HTTP\ResponseMock(); + $this->plugin->httpAfterGet($request, $response); + $this->assertTrue(true); + } } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php index d4bc48098..8d045569c 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php @@ -1,17 +1,19 @@ 1, - 'uri' => 'book1', + 'id' => 1, + 'uri' => 'book1', 'principaluri' => 'principals/user1', ], ]; @@ -21,27 +23,27 @@ class SogoStripContentTypeTest extends \Sabre\DAVServerTest { ], ]; - function testDontStrip() { - + public function testDontStrip() + { $result = $this->server->getProperties('addressbooks/user1/book1/card1.vcf', ['{DAV:}getcontenttype']); $this->assertEquals([ - '{DAV:}getcontenttype' => 'text/vcard; charset=utf-8' + '{DAV:}getcontenttype' => 'text/vcard; charset=utf-8', ], $result); - } - function testStrip() { - $this->server->httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 Lightning/1.2.1', + public function testStrip() + { + $this->server->httpRequest = new HTTP\Request('GET', '/', [ + 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 Lightning/1.2.1', ]); $result = $this->server->getProperties('addressbooks/user1/book1/card1.vcf', ['{DAV:}getcontenttype']); $this->assertEquals([ - '{DAV:}getcontenttype' => 'text/x-vcard' + '{DAV:}getcontenttype' => 'text/x-vcard', ], $result); - } - function testDontTouchOtherMimeTypes() { + public function testDontTouchOtherMimeTypes() + { $this->server->httpRequest = new HTTP\Request('GET', '/addressbooks/user1/book1/card1.vcf', [ 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 Lightning/1.2.1', ]); @@ -50,7 +52,16 @@ class SogoStripContentTypeTest extends \Sabre\DAVServerTest { $propFind->set('{DAV:}getcontenttype', 'text/plain'); $this->carddavPlugin->propFindLate($propFind, new \Sabre\DAV\SimpleCollection('foo')); $this->assertEquals('text/plain', $propFind->get('{DAV:}getcontenttype')); - } + public function testStripWithoutGetContentType() + { + $this->server->httpRequest = new HTTP\Request('GET', '/addressbooks/user1/book1/card1.vcf', [ + 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 Lightning/1.2.1', + ]); + + $propFind = new PropFind('hello', ['{DAV:}getcontenttype']); + $this->carddavPlugin->propFindLate($propFind, new \Sabre\DAV\SimpleCollection('foo')); + $this->assertEquals(null, $propFind->get('{DAV:}getcontenttype')); // Property not present + } } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php b/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php index ec8a3501e..0bdf07df5 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php @@ -1,18 +1,20 @@ 'user1 addressbook', + '{DAV:}displayname' => 'user1 addressbook', '{urn:ietf:params:xml:ns:carddav}addressbook-description' => 'AddressBook description', ] ); @@ -29,22 +31,23 @@ class TestUtil { 'principals/user1', 'UUID-123468', [ - '{DAV:}displayname' => 'user1 addressbook2', + '{DAV:}displayname' => 'user1 addressbook2', '{urn:ietf:params:xml:ns:carddav}addressbook-description' => 'AddressBook description', ] ); $backend->createCard($addressbookId, 'UUID-2345', self::getTestCardData()); - return $pdo; + return $pdo; } - static function deleteSQLiteDB() { + public static function deleteSQLiteDB() + { $sqliteTest = new Backend\PDOSqliteTest(); $pdo = $sqliteTest->tearDown(); } - static function getTestCardData() { - + public static function getTestCardData() + { $addressbookData = 'BEGIN:VCARD VERSION:3.0 PRODID:-//Acme Inc.//RoadRunner 1.0//EN @@ -56,7 +59,5 @@ REV:2012-06-20T07:00:39+00:00 END:VCARD'; return $addressbookData; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php index 82d82fadd..d8acc3c14 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php @@ -1,43 +1,44 @@ 'book1', - 'uri' => 'book1', + 'id' => 'book1', + 'uri' => 'book1', 'principaluri' => 'principals/user1', - ] + ], ]; protected $carddavCards = [ 'book1' => [ - "card1" => "BEGIN:VCARD\r\nFN:Person1\r\nEND:VCARD\r\n", - "card2" => "BEGIN:VCARD\r\nFN:Person2\r\nEND:VCARD", - "card3" => "BEGIN:VCARD\r\nFN:Person3\r\nEND:VCARD\r\n", - "card4" => "BEGIN:VCARD\nFN:Person4\nEND:VCARD\n", - ] + 'card1' => "BEGIN:VCARD\r\nFN:Person1\r\nEND:VCARD\r\n", + 'card2' => "BEGIN:VCARD\r\nFN:Person2\r\nEND:VCARD", + 'card3' => "BEGIN:VCARD\r\nFN:Person3\r\nEND:VCARD\r\n", + 'card4' => "BEGIN:VCARD\nFN:Person4\nEND:VCARD\n", + ], ]; - function setUp() { - + public function setUp() + { parent::setUp(); $plugin = new VCFExportPlugin(); $this->server->addPlugin( $plugin ); - } - function testSimple() { - + public function testSimple() + { $plugin = $this->server->getPlugin('vcf-export'); $this->assertInstanceOf('Sabre\\CardDAV\\VCFExportPlugin', $plugin); @@ -45,21 +46,20 @@ class VCFExportTest extends \Sabre\DAVServerTest { 'vcf-export', $plugin->getPluginInfo()['name'] ); - } - function testExport() { - + public function testExport() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_URI' => '/addressbooks/user1/book1?export', - 'QUERY_STRING' => 'export', + 'REQUEST_URI' => '/addressbooks/user1/book1?export', + 'QUERY_STRING' => 'export', 'REQUEST_METHOD' => 'GET', ]); $response = $this->request($request); $this->assertEquals(200, $response->status, $response->body); - $expected = "BEGIN:VCARD + $expected = 'BEGIN:VCARD FN:Person1 END:VCARD BEGIN:VCARD @@ -71,26 +71,24 @@ END:VCARD BEGIN:VCARD FN:Person4 END:VCARD -"; +'; // We actually expected windows line endings $expected = str_replace("\n", "\r\n", $expected); $this->assertEquals($expected, $response->body); - } - function testBrowserIntegration() { - + public function testBrowserIntegration() + { $plugin = $this->server->getPlugin('vcf-export'); $actions = ''; $addressbook = new AddressBook($this->carddavBackend, []); $this->server->emit('browserButtonActions', ['/foo', $addressbook, &$actions]); $this->assertContains('/foo?export', $actions); - } - function testContentDisposition() { - + public function testContentDisposition() + { $request = new HTTP\Request( 'GET', '/addressbooks/user1/book1?export' @@ -99,14 +97,13 @@ END:VCARD $response = $this->request($request, 200); $this->assertEquals('text/directory', $response->getHeader('Content-Type')); $this->assertEquals( - 'attachment; filename="book1-' . date('Y-m-d') . '.vcf"', + 'attachment; filename="book1-'.date('Y-m-d').'.vcf"', $response->getHeader('Content-Disposition') ); - } - function testContentDispositionBadChars() { - + public function testContentDispositionBadChars() + { $this->carddavBackend->createAddressBook( 'principals/user1', 'book-b_ad"(ch)ars', @@ -126,10 +123,8 @@ END:VCARD $response = $this->request($request, 200); $this->assertEquals('text/directory', $response->getHeader('Content-Type')); $this->assertEquals( - 'attachment; filename="book-b_adchars-' . date('Y-m-d') . '.vcf"', + 'attachment; filename="book-b_adchars-'.date('Y-m-d').'.vcf"', $response->getHeader('Content-Disposition') ); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php index 03c468f86..753efc73d 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateFilterTest.php @@ -1,31 +1,32 @@ assertTrue($this->plugin->validateFilters($input, $filters, $test), $message); } else { $this->assertFalse($this->plugin->validateFilters($input, $filters, $test), $message); } - } - function data() { - + public function data() + { $body1 = << 'tel', + 'name' => 'tel', 'is-not-defined' => false, - 'test' => 'anyof', - 'param-filters' => [ + 'test' => 'anyof', + 'param-filters' => [ [ - 'name' => 'type', + 'name' => 'type', 'is-not-defined' => false, - 'text-match' => null + 'text-match' => null, ], ], 'text-matches' => [], @@ -107,16 +108,16 @@ HELLO; // Check if URL contains 'google' $filter11 = [ - 'name' => 'url', + 'name' => 'url', 'is-not-defined' => false, - 'test' => 'anyof', - 'param-filters' => [], - 'text-matches' => [ + 'test' => 'anyof', + 'param-filters' => [], + 'text-matches' => [ [ - 'match-type' => 'contains', - 'value' => 'google', + 'match-type' => 'contains', + 'value' => 'google', 'negate-condition' => false, - 'collation' => 'i;octet', + 'collation' => 'i;octet', ], ], ]; @@ -137,22 +138,21 @@ HELLO; // Param filter with text $filter15 = $filter5; $filter15['param-filters'][0]['text-match'] = [ - 'match-type' => 'contains', - 'value' => 'WORK', - 'collation' => 'i;octet', + 'match-type' => 'contains', + 'value' => 'WORK', + 'collation' => 'i;octet', 'negate-condition' => false, ]; $filter16 = $filter15; $filter16['param-filters'][0]['text-match']['negate-condition'] = true; - // Param filter + text filter $filter17 = $filter5; $filter17['test'] = 'anyof'; $filter17['text-matches'][] = [ - 'match-type' => 'contains', - 'value' => '444', - 'collation' => 'i;octet', + 'match-type' => 'contains', + 'value' => '444', + 'collation' => 'i;octet', 'negate-condition' => false, ]; @@ -162,20 +162,19 @@ HELLO; $filter18['test'] = 'allof'; return [ - // Basic filters - [$body1, [$filter1], 'anyof',true], - [$body1, [$filter2], 'anyof',false], - [$body1, [$filter3], 'anyof',false], - [$body1, [$filter4], 'anyof',true], + [$body1, [$filter1], 'anyof', true], + [$body1, [$filter2], 'anyof', false], + [$body1, [$filter3], 'anyof', false], + [$body1, [$filter4], 'anyof', true], // Combinations - [$body1, [$filter1, $filter2], 'anyof',true], - [$body1, [$filter1, $filter2], 'allof',false], - [$body1, [$filter1, $filter4], 'anyof',true], - [$body1, [$filter1, $filter4], 'allof',true], - [$body1, [$filter2, $filter3], 'anyof',false], - [$body1, [$filter2, $filter3], 'allof',false], + [$body1, [$filter1, $filter2], 'anyof', true], + [$body1, [$filter1, $filter2], 'allof', false], + [$body1, [$filter1, $filter4], 'anyof', true], + [$body1, [$filter1, $filter4], 'allof', true], + [$body1, [$filter2, $filter3], 'anyof', false], + [$body1, [$filter2, $filter3], 'allof', false], // Basic parameters [$body1, [$filter5], 'anyof', true, 'TEL;TYPE is defined, so this should return true'], @@ -203,7 +202,5 @@ HELLO; [$body1, [$filter18], 'anyof', false], [$body1, [$filter18], 'anyof', false], ]; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php index acba2cfc8..2317b86cc 100644 --- a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php +++ b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php @@ -1,5 +1,7 @@ 'addressbook1', + 'id' => 'addressbook1', 'principaluri' => 'principals/admin', - 'uri' => 'addressbook1', - ] + 'uri' => 'addressbook1', + ], ]; $this->cardBackend = new Backend\Mock($addressbooks, []); @@ -39,21 +41,19 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase { $response = new HTTP\ResponseMock(); $this->server->httpResponse = $response; - } - function request(HTTP\Request $request, $expectedStatus = null) { - + public function request(HTTP\Request $request, $expectedStatus = null) + { $this->server->httpRequest = $request; $this->server->exec(); if ($expectedStatus) { - $realStatus = $this->server->httpResponse->getStatus(); $msg = ''; if ($realStatus !== $expectedStatus) { - $msg = 'Response body: ' . $this->server->httpResponse->getBodyAsString(); + $msg = 'Response body: '.$this->server->httpResponse->getBodyAsString(); } $this->assertEquals( $expectedStatus, @@ -63,24 +63,22 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase { } return $this->server->httpResponse; - } - function testCreateFile() { - + public function testCreateFile() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf', + 'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf', ]); $response = $this->request($request); $this->assertEquals(415, $response->status); - } - function testCreateFileValid() { - + public function testCreateFileValid() + { $request = new HTTP\Request( 'PUT', '/addressbooks/admin/addressbook1/blabla.vcf' @@ -104,20 +102,18 @@ VCF; ); // Valid, non-auto-fixed responses should contain an ETag. $this->assertTrue( - $response->getHeader('ETag') !== null, + null !== $response->getHeader('ETag'), 'We did not receive an etag' ); - $expected = [ - 'uri' => 'blabla.vcf', + 'uri' => 'blabla.vcf', 'carddata' => $vcard, - 'size' => strlen($vcard), - 'etag' => '"' . md5($vcard) . '"', + 'size' => strlen($vcard), + 'etag' => '"'.md5($vcard).'"', ]; $this->assertEquals($expected, $this->cardBackend->getCard('addressbook1', 'blabla.vcf')); - } /** @@ -126,8 +122,8 @@ VCF; * * @depends testCreateFileValid */ - function testCreateVCardAutoFix() { - + public function testCreateVCardAutoFix() + { $request = new HTTP\Request( 'PUT', '/addressbooks/admin/addressbook1/blabla.vcf' @@ -168,14 +164,13 @@ END:VCARD\r VCF; $expected = [ - 'uri' => 'blabla.vcf', + 'uri' => 'blabla.vcf', 'carddata' => $expectedVCard, - 'size' => strlen($expectedVCard), - 'etag' => '"' . md5($expectedVCard) . '"', + 'size' => strlen($expectedVCard), + 'etag' => '"'.md5($expectedVCard).'"', ]; $this->assertEquals($expected, $this->cardBackend->getCard('addressbook1', 'blabla.vcf')); - } /** @@ -187,8 +182,8 @@ VCF; * * @depends testCreateFileValid */ - function testCreateVCardStrictFail() { - + public function testCreateVCardStrictFail() + { $request = new HTTP\Request( 'PUT', '/addressbooks/admin/addressbook1/blabla.vcf', @@ -209,11 +204,10 @@ VCF; $request->setBody($vcard); $this->request($request, 415); - } - function testCreateFileNoUID() { - + public function testCreateFileNoUID() + { $request = new HTTP\Request( 'PUT', '/addressbooks/admin/addressbook1/blabla.vcf' @@ -231,13 +225,13 @@ VCF; $foo = $this->cardBackend->getCard('addressbook1', 'blabla.vcf'); $this->assertTrue( - strpos($foo['carddata'], 'UID') !== false, + false !== strpos($foo['carddata'], 'UID'), print_r($foo, true) ); } - function testCreateFileJson() { - + public function testCreateFileJson() + { $request = new HTTP\Request( 'PUT', '/addressbooks/admin/addressbook1/blabla.vcf' @@ -246,29 +240,27 @@ VCF; $response = $this->request($request); - $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); + $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: '.$response->body); $foo = $this->cardBackend->getCard('addressbook1', 'blabla.vcf'); $this->assertEquals("BEGIN:VCARD\r\nVERSION:4.0\r\nUID:foo\r\nFN:FirstName LastName\r\nEND:VCARD\r\n", $foo['carddata']); - } - function testCreateFileVCalendar() { - + public function testCreateFileVCalendar() + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf', + 'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf', ]); $request->setBody("BEGIN:VCALENDAR\r\nEND:VCALENDAR\r\n"); $response = $this->request($request); - $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body); - + $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: '.$response->body); } - function testUpdateFile() { - + public function testUpdateFile() + { $this->cardBackend->createCard('addressbook1', 'blabla.vcf', 'foo'); $request = new HTTP\Request( 'PUT', @@ -276,11 +268,10 @@ VCF; ); $response = $this->request($request, 415); - } - function testUpdateFileParsableBody() { - + public function testUpdateFileParsableBody() + { $this->cardBackend->createCard('addressbook1', 'blabla.vcf', 'foo'); $request = new HTTP\Request( 'PUT', @@ -293,13 +284,12 @@ VCF; $response = $this->request($request, 204); $expected = [ - 'uri' => 'blabla.vcf', + 'uri' => 'blabla.vcf', 'carddata' => $body, - 'size' => strlen($body), - 'etag' => '"' . md5($body) . '"', + 'size' => strlen($body), + 'etag' => '"'.md5($body).'"', ]; $this->assertEquals($expected, $this->cardBackend->getCard('addressbook1', 'blabla.vcf')); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php b/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php index 6a8d389a0..5f5d666f9 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php @@ -1,11 +1,13 @@ response = new HTTP\ResponseMock(); $this->server = new Server($this->getRootNode()); $this->server->sapi = new HTTP\SapiMock(); $this->server->httpResponse = $this->response; $this->server->debugExceptions = true; $this->deleteTree(SABRE_TEMPDIR, false); - file_put_contents(SABRE_TEMPDIR . '/test.txt', 'Test contents'); - mkdir(SABRE_TEMPDIR . '/dir'); - file_put_contents(SABRE_TEMPDIR . '/dir/child.txt', 'Child contents'); - - + file_put_contents(SABRE_TEMPDIR.'/test.txt', 'Test contents'); + mkdir(SABRE_TEMPDIR.'/dir'); + file_put_contents(SABRE_TEMPDIR.'/dir/child.txt', 'Child contents'); } - function tearDown() { - + public function tearDown() + { $this->deleteTree(SABRE_TEMPDIR, false); - } - protected function getRootNode() { - + protected function getRootNode() + { return new FS\Directory(SABRE_TEMPDIR); - } - private function deleteTree($path, $deleteRoot = true) { - + private function deleteTree($path, $deleteRoot = true) + { foreach (scandir($path) as $node) { - - if ($node == '.' || $node == '.svn' || $node == '..') continue; - $myPath = $path . '/' . $node; + if ('.' == $node || '.svn' == $node || '..' == $node) { + continue; + } + $myPath = $path.'/'.$node; if (is_file($myPath)) { unlink($myPath); } else { $this->deleteTree($myPath); } - } - if ($deleteRoot) rmdir($path); - + if ($deleteRoot) { + rmdir($path); + } } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php index 917f5ec3f..ebc1e3f7b 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php @@ -1,14 +1,16 @@ assertFalse( $backend->check($request, $response)[0] ); - } - function testCheckUnknownUser() { - + public function testCheckUnknownUser() + { $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'PHP_AUTH_USER' => 'username', - 'PHP_AUTH_PW' => 'wrongpassword', + 'PHP_AUTH_PW' => 'wrongpassword', ]); $response = new HTTP\Response(); @@ -32,14 +35,15 @@ class AbstractBasicTest extends \PHPUnit_Framework_TestCase { $this->assertFalse( $backend->check($request, $response)[0] ); - } - function testCheckSuccess() { - + public function testCheckSuccess() + { $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'PHP_AUTH_USER' => 'username', - 'PHP_AUTH_PW' => 'password', + 'PHP_AUTH_PW' => 'password', ]); $response = new HTTP\Response(); @@ -48,44 +52,39 @@ class AbstractBasicTest extends \PHPUnit_Framework_TestCase { [true, 'principals/username'], $backend->check($request, $response) ); - } - function testRequireAuth() { - - $request = new HTTP\Request(); + public function testRequireAuth() + { + $request = new HTTP\Request('GET', '/'); $response = new HTTP\Response(); $backend = new AbstractBasicMock(); $backend->setRealm('writing unittests on a saturday night'); $backend->challenge($request, $response); - $this->assertContains( - 'Basic realm="writing unittests on a saturday night"', + $this->assertEquals( + 'Basic realm="writing unittests on a saturday night", charset="UTF-8"', $response->getHeader('WWW-Authenticate') ); - } - } - -class AbstractBasicMock extends AbstractBasic { - +class AbstractBasicMock extends AbstractBasic +{ /** - * Validates a username and password + * Validates a username and password. * * This method should return true or false depending on if login * succeeded. * * @param string $username * @param string $password + * * @return bool */ - function validateUserPass($username, $password) { - - return ($username == 'username' && $password == 'password'); - + public function validateUserPass($username, $password) + { + return 'username' == $username && 'password' == $password; } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php index 14c72aaa0..d9af326fe 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php @@ -1,27 +1,30 @@ assertFalse( $backend->check($request, $response)[0] ); - } - function testCheckBadGetUserInfoResponse() { - + public function testCheckBadGetUserInfoResponse() + { $header = 'username=null, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1'; $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'PHP_AUTH_DIGEST' => $header, ]); $response = new HTTP\Response(); @@ -30,16 +33,17 @@ class AbstractDigestTest extends \PHPUnit_Framework_TestCase { $this->assertFalse( $backend->check($request, $response)[0] ); - } /** - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testCheckBadGetUserInfoResponse2() { - + public function testCheckBadGetUserInfoResponse2() + { $header = 'username=array, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1'; $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'PHP_AUTH_DIGEST' => $header, ]); @@ -47,13 +51,14 @@ class AbstractDigestTest extends \PHPUnit_Framework_TestCase { $backend = new AbstractDigestMock(); $backend->check($request, $response); - } - function testCheckUnknownUser() { - + public function testCheckUnknownUser() + { $header = 'username=false, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1'; $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'PHP_AUTH_DIGEST' => $header, ]); @@ -63,15 +68,15 @@ class AbstractDigestTest extends \PHPUnit_Framework_TestCase { $this->assertFalse( $backend->check($request, $response)[0] ); - } - function testCheckBadPassword() { - + public function testCheckBadPassword() + { $header = 'username=user, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1'; $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'PUT', + 'REQUEST_URI' => '/', 'PHP_AUTH_DIGEST' => $header, - 'REQUEST_METHOD' => 'PUT', ]); $response = new HTTP\Response(); @@ -80,17 +85,16 @@ class AbstractDigestTest extends \PHPUnit_Framework_TestCase { $this->assertFalse( $backend->check($request, $response)[0] ); - } - function testCheck() { - - $digestHash = md5('HELLO:12345:1:1:auth:' . md5('GET:/')); - $header = 'username=user, realm=myRealm, nonce=12345, uri=/, response=' . $digestHash . ', opaque=1, qop=auth, nc=1, cnonce=1'; + public function testCheck() + { + $digestHash = md5('HELLO:12345:1:1:auth:'.md5('GET:/')); + $header = 'username=user, realm=myRealm, nonce=12345, uri=/, response='.$digestHash.', opaque=1, qop=auth, nc=1, cnonce=1'; $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'GET', + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'PHP_AUTH_DIGEST' => $header, - 'REQUEST_URI' => '/', ]); $response = new HTTP\Response(); @@ -100,12 +104,11 @@ class AbstractDigestTest extends \PHPUnit_Framework_TestCase { [true, 'principals/user'], $backend->check($request, $response) ); - } - function testRequireAuth() { - - $request = new HTTP\Request(); + public function testRequireAuth() + { + $request = new HTTP\Request('GET', '/'); $response = new HTTP\Response(); $backend = new AbstractDigestMock(); @@ -116,23 +119,18 @@ class AbstractDigestTest extends \PHPUnit_Framework_TestCase { 'Digest realm="writing unittests on a saturday night"', $response->getHeader('WWW-Authenticate') ); - } - } - -class AbstractDigestMock extends AbstractDigest { - - function getDigestHash($realm, $userName) { - +class AbstractDigestMock extends AbstractDigest +{ + public function getDigestHash($realm, $userName) + { switch ($userName) { - case 'null' : return null; - case 'false' : return false; - case 'array' : return []; - case 'user' : return 'HELLO'; + case 'null': return null; + case 'false': return false; + case 'array': return []; + case 'user': return 'HELLO'; } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php index b14e9fa2e..5e34f9c49 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php @@ -1,36 +1,35 @@ dropTables('users'); $this->createSchema('users'); $this->getPDO()->query( "INSERT INTO users (username,digesta1) VALUES ('user','hash')" - ); - } - function testConstruct() { - + public function testConstruct() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $this->assertTrue($backend instanceof PDO); - } /** * @depends testConstruct */ - function testUserInfo() { - + public function testUserInfo() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); @@ -39,7 +38,5 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $expected = 'hash'; $this->assertEquals($expected, $backend->getDigestHash('realm', 'user')); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php index 29cbc2162..a0086518f 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php @@ -1,33 +1,35 @@ assertInstanceOf('Sabre\DAV\Auth\Backend\Apache', $backend); - } - function testNoHeader() { - - $request = new HTTP\Request(); + public function testNoHeader() + { + $request = new HTTP\Request('GET', '/'); $response = new HTTP\Response(); $backend = new Apache(); $this->assertFalse( $backend->check($request, $response)[0] ); - } - function testRemoteUser() { - + public function testRemoteUser() + { $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'REMOTE_USER' => 'username', ]); $response = new HTTP\Response(); @@ -37,12 +39,13 @@ class ApacheTest extends \PHPUnit_Framework_TestCase { [true, 'principals/username'], $backend->check($request, $response) ); - } - function testRedirectRemoteUser() { - + public function testRedirectRemoteUser() + { $request = HTTP\Sapi::createFromServerArray([ + 'REQUEST_METHOD' => 'GET', + 'REQUEST_URI' => '/', 'REDIRECT_REMOTE_USER' => 'username', ]); $response = new HTTP\Response(); @@ -52,12 +55,11 @@ class ApacheTest extends \PHPUnit_Framework_TestCase { [true, 'principals/username'], $backend->check($request, $response) ); - } - function testRequireAuth() { - - $request = new HTTP\Request(); + public function testRequireAuth() + { + $request = new HTTP\Request('GET', '/'); $response = new HTTP\Response(); $backend = new Apache(); @@ -66,6 +68,5 @@ class ApacheTest extends \PHPUnit_Framework_TestCase { $this->assertNull( $response->getHeader('WWW-Authenticate') ); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php index f694f4806..0297b17f9 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php @@ -1,41 +1,40 @@ assertTrue($file instanceof File); - } /** - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testLoadFileBroken() { - - file_put_contents(SABRE_TEMPDIR . '/backend', 'user:realm:hash'); - $file = new File(SABRE_TEMPDIR . '/backend'); - + public function testLoadFileBroken() + { + file_put_contents(SABRE_TEMPDIR.'/backend', 'user:realm:hash'); + $file = new File(SABRE_TEMPDIR.'/backend'); } - function testLoadFile() { - - file_put_contents(SABRE_TEMPDIR . '/backend', 'user:realm:' . md5('user:realm:password')); + public function testLoadFile() + { + file_put_contents(SABRE_TEMPDIR.'/backend', 'user:realm:'.md5('user:realm:password')); $file = new File(); - $file->loadFile(SABRE_TEMPDIR . '/backend'); + $file->loadFile(SABRE_TEMPDIR.'/backend'); $this->assertFalse($file->getDigestHash('realm', 'blabla')); $this->assertEquals(md5('user:realm:password'), $file->getDigestHash('realm', 'user')); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php index 369bc249e..730f2a975 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php @@ -1,22 +1,23 @@ principal = $principal; - } /** @@ -43,20 +44,21 @@ class Mock implements BackendInterface { * * principals/users/[username] * - * @param RequestInterface $request + * @param RequestInterface $request * @param ResponseInterface $response + * * @return array */ - function check(RequestInterface $request, ResponseInterface $response) { - + public function check(RequestInterface $request, ResponseInterface $response) + { if ($this->invalidCheckResponse) { return 'incorrect!'; } if ($this->fail) { - return [false, "fail!"]; + return [false, 'fail!']; } - return [true, $this->principal]; + return [true, $this->principal]; } /** @@ -76,12 +78,10 @@ class Mock implements BackendInterface { * append your own WWW-Authenticate header instead of overwriting the * existing one. * - * @param RequestInterface $request + * @param RequestInterface $request * @param ResponseInterface $response - * @return void */ - function challenge(RequestInterface $request, ResponseInterface $response) { - + public function challenge(RequestInterface $request, ResponseInterface $response) + { } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php index 18f59793a..6ad7906c4 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php @@ -1,9 +1,10 @@ assertTrue($plugin instanceof Plugin); $fakeServer->addPlugin($plugin); $this->assertEquals($plugin, $fakeServer->getPlugin('auth')); $this->assertInternalType('array', $plugin->getPluginInfo()); - } /** * @depends testInit */ - function testAuthenticate() { - + public function testAuthenticate() + { $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $plugin = new Plugin(new Backend\Mock()); $fakeServer->addPlugin($plugin); $this->assertTrue( - $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]) + $fakeServer->emit('beforeMethod:GET', [new HTTP\Request('GET', '/'), new HTTP\Response()]) ); - } /** * @depends testInit - * @expectedException Sabre\DAV\Exception\NotAuthenticated + * @expectedException \Sabre\DAV\Exception\NotAuthenticated */ - function testAuthenticateFail() { - + public function testAuthenticateFail() + { $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $backend = new Backend\Mock(); $backend->fail = true; $plugin = new Plugin($backend); $fakeServer->addPlugin($plugin); - $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]); - + $fakeServer->emit('beforeMethod:GET', [new HTTP\Request('GET', '/'), new HTTP\Response()]); } /** * @depends testAuthenticateFail */ - function testAuthenticateFailDontAutoRequire() { - + public function testAuthenticateFailDontAutoRequire() + { $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $backend = new Backend\Mock(); $backend->fail = true; @@ -61,17 +60,16 @@ class PluginTest extends \PHPUnit_Framework_TestCase { $plugin->autoRequireLogin = false; $fakeServer->addPlugin($plugin); $this->assertTrue( - $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]) + $fakeServer->emit('beforeMethod:GET', [new HTTP\Request('GET', '/'), new HTTP\Response()]) ); $this->assertEquals(1, count($plugin->getLoginFailedReasons())); - } /** * @depends testAuthenticate */ - function testMultipleBackend() { - + public function testMultipleBackend() + { $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $backend1 = new Backend\Mock(); $backend2 = new Backend\Mock(); @@ -82,52 +80,48 @@ class PluginTest extends \PHPUnit_Framework_TestCase { $plugin->addBackend($backend2); $fakeServer->addPlugin($plugin); - $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]); + $fakeServer->emit('beforeMethod:GET', [new HTTP\Request('GET', '/'), new HTTP\Response()]); $this->assertEquals('principals/admin', $plugin->getCurrentPrincipal()); - } /** * @depends testInit - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testNoAuthBackend() { - + public function testNoAuthBackend() + { $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $plugin = new Plugin(); $fakeServer->addPlugin($plugin); - $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]); - + $fakeServer->emit('beforeMethod:GET', [new HTTP\Request('GET', '/'), new HTTP\Response()]); } + /** * @depends testInit - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testInvalidCheckResponse() { - + public function testInvalidCheckResponse() + { $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $backend = new Backend\Mock(); $backend->invalidCheckResponse = true; $plugin = new Plugin($backend); $fakeServer->addPlugin($plugin); - $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]); - + $fakeServer->emit('beforeMethod:GET', [new HTTP\Request('GET', '/'), new HTTP\Response()]); } /** * @depends testAuthenticate */ - function testGetCurrentPrincipal() { - + public function testGetCurrentPrincipal() + { $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla')); $plugin = new Plugin(new Backend\Mock()); $fakeServer->addPlugin($plugin); - $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]); + $fakeServer->emit('beforeMethod:GET', [new HTTP\Request('GET', '/'), new HTTP\Response()]); $this->assertEquals('principals/admin', $plugin->getCurrentPrincipal()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php index ec104ec80..60fcc73fc 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php @@ -1,235 +1,138 @@ put('hi'); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testGet() { - + public function testGet() + { $file = new FileMock(); $file->get(); - } - function testGetSize() { - + public function testGetSize() + { $file = new FileMock(); $this->assertEquals(0, $file->getSize()); - } - - function testGetETag() { - + public function testGetETag() + { $file = new FileMock(); $this->assertNull($file->getETag()); - } - function testGetContentType() { - + public function testGetContentType() + { $file = new FileMock(); $this->assertNull($file->getContentType()); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testDelete() { - + public function testDelete() + { $file = new FileMock(); $file->delete(); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetName() { - + public function testSetName() + { $file = new FileMock(); $file->setName('hi'); - } - function testGetLastModified() { - + public function testGetLastModified() + { $file = new FileMock(); // checking if lastmod is within the range of a few seconds $lastMod = $file->getLastModified(); $compareTime = ($lastMod + 1) - time(); $this->assertTrue($compareTime < 3); - } - function testGetChild() { - + public function testGetChild() + { $dir = new DirectoryMock(); $file = $dir->getChild('mockfile'); $this->assertTrue($file instanceof FileMock); - } - function testChildExists() { - + public function testChildExists() + { $dir = new DirectoryMock(); $this->assertTrue($dir->childExists('mockfile')); - } - function testChildExistsFalse() { - + public function testChildExistsFalse() + { $dir = new DirectoryMock(); $this->assertFalse($dir->childExists('mockfile2')); - } /** - * @expectedException Sabre\DAV\Exception\NotFound + * @expectedException \Sabre\DAV\Exception\NotFound */ - function testGetChild404() { - + public function testGetChild404() + { $dir = new DirectoryMock(); $file = $dir->getChild('blabla'); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testCreateFile() { - + public function testCreateFile() + { $dir = new DirectoryMock(); $dir->createFile('hello', 'data'); - } /** - * @expectedException Sabre\DAV\Exception\Forbidden + * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testCreateDirectory() { - + public function testCreateDirectory() + { $dir = new DirectoryMock(); $dir->createDirectory('hello'); - - } - - function testSimpleDirectoryConstruct() { - - $dir = new SimpleCollection('simpledir', []); - $this->assertInstanceOf('Sabre\DAV\SimpleCollection', $dir); - - } - - /** - * @depends testSimpleDirectoryConstruct - */ - function testSimpleDirectoryConstructChild() { - - $file = new FileMock(); - $dir = new SimpleCollection('simpledir', [$file]); - $file2 = $dir->getChild('mockfile'); - - $this->assertEquals($file, $file2); - - } - - /** - * @expectedException Sabre\DAV\Exception - * @depends testSimpleDirectoryConstruct - */ - function testSimpleDirectoryBadParam() { - - $dir = new SimpleCollection('simpledir', ['string shouldn\'t be here']); - - } - - /** - * @depends testSimpleDirectoryConstruct - */ - function testSimpleDirectoryAddChild() { - - $file = new FileMock(); - $dir = new SimpleCollection('simpledir'); - $dir->addChild($file); - $file2 = $dir->getChild('mockfile'); - - $this->assertEquals($file, $file2); - - } - - /** - * @depends testSimpleDirectoryConstruct - * @depends testSimpleDirectoryAddChild - */ - function testSimpleDirectoryGetChildren() { - - $file = new FileMock(); - $dir = new SimpleCollection('simpledir'); - $dir->addChild($file); - - $this->assertEquals([$file], $dir->getChildren()); - - } - - /* - * @depends testSimpleDirectoryConstruct - */ - function testSimpleDirectoryGetName() { - - $dir = new SimpleCollection('simpledir'); - $this->assertEquals('simpledir', $dir->getName()); - - } - - /** - * @depends testSimpleDirectoryConstruct - * @expectedException Sabre\DAV\Exception\NotFound - */ - function testSimpleDirectoryGetChild404() { - - $dir = new SimpleCollection('simpledir'); - $dir->getChild('blabla'); - } } -class DirectoryMock extends Collection { - - function getName() { - +class DirectoryMock extends Collection +{ + public function getName() + { return 'mockdir'; - } - function getChildren() { - + public function getChildren() + { return [new FileMock()]; - } - } -class FileMock extends File { - - function getName() { - +class FileMock extends File +{ + public function getName() + { return 'mockfile'; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php index 54a3053ec..1f48256e0 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php @@ -1,29 +1,30 @@ assertArrayHasKey(0, $result); $this->assertArrayHasKey(404, $result[0]); $this->assertArrayHasKey('{DAV:}getcontenttype', $result[0][404]); - } /** * @depends testGetProperties */ - function testGetPropertiesPluginEnabled() { - + public function testGetPropertiesPluginEnabled() + { $this->server->addPlugin(new GuessContentType()); $properties = [ '{DAV:}getcontenttype', ]; $result = $this->server->getPropertiesForPath('/somefile.jpg', $properties); $this->assertArrayHasKey(0, $result); - $this->assertArrayHasKey(200, $result[0], 'We received: ' . print_r($result, true)); + $this->assertArrayHasKey(200, $result[0], 'We received: '.print_r($result, true)); $this->assertArrayHasKey('{DAV:}getcontenttype', $result[0][200]); $this->assertEquals('image/jpeg', $result[0][200]['{DAV:}getcontenttype']); - } /** * @depends testGetPropertiesPluginEnabled */ - function testGetPropertiesUnknown() { - + public function testGetPropertiesUnknown() + { $this->server->addPlugin(new GuessContentType()); $properties = [ '{DAV:}getcontenttype', @@ -65,6 +64,5 @@ class GuessContentTypeTest extends DAV\AbstractServer { $this->assertArrayHasKey(200, $result[0]); $this->assertArrayHasKey('{DAV:}getcontenttype', $result[0][200]); $this->assertEquals('application/octet-stream', $result[0][200]['{DAV:}getcontenttype']); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php index 33c4ede96..de7b85f32 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php @@ -1,5 +1,7 @@ server->addPlugin(new MapGetToPropFind()); - } - function testCollectionGet() { - + public function testCollectionGet() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'GET', ]; @@ -28,17 +29,14 @@ class MapGetToPropFindTest extends DAV\AbstractServer { $this->server->httpRequest = ($request); $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Incorrect status response received. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Incorrect status response received. Full response body: '.$this->response->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'DAV' => ['1, 3, extended-mkcol'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'DAV' => ['1, 3, extended-mkcol'], + 'Vary' => ['Brief,Prefer'], ], $this->response->getHeaders() ); - } - - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php index f20c50f86..fb7c63d46 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php @@ -1,5 +1,7 @@ server->addPlugin($this->plugin = new Plugin()); $this->server->tree->getNodeForPath('')->createDirectory('dir2'); - } - function testCollectionGet() { - + public function testCollectionGet() + { $request = new HTTP\Request('GET', '/dir'); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(200, $this->response->getStatus(), "Incorrect status received. Full response body: " . $this->response->getBodyAsString()); + $this->assertEquals(200, $this->response->getStatus(), 'Incorrect status received. Full response body: '.$this->response->getBodyAsString()); $this->assertEquals( [ - 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['text/html; charset=utf-8'], - 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"] + 'X-Sabre-Version' => [DAV\Version::VERSION], + 'Content-Type' => ['text/html; charset=utf-8'], + 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"], ], $this->response->getHeaders() ); $body = $this->response->getBodyAsString(); - $this->assertTrue(strpos($body, 'dir') !== false, $body); - $this->assertTrue(strpos($body, '<a href="/dir/child.txt">') !== false); - + $this->assertTrue(false !== strpos($body, '<title>dir'), $body); + $this->assertTrue(false !== strpos($body, '<a href="/dir/child.txt">')); } /** * Adding the If-None-Match should have 0 effect, but it threw an error. */ - function testCollectionGetIfNoneMatch() { - + public function testCollectionGetIfNoneMatch() + { $request = new HTTP\Request('GET', '/dir'); $request->setHeader('If-None-Match', '"foo-bar"'); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(200, $this->response->getStatus(), "Incorrect status received. Full response body: " . $this->response->getBodyAsString()); + $this->assertEquals(200, $this->response->getStatus(), 'Incorrect status received. Full response body: '.$this->response->getBodyAsString()); $this->assertEquals( [ - 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['text/html; charset=utf-8'], - 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"] + 'X-Sabre-Version' => [DAV\Version::VERSION], + 'Content-Type' => ['text/html; charset=utf-8'], + 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"], ], $this->response->getHeaders() ); $body = $this->response->getBodyAsString(); - $this->assertTrue(strpos($body, '<title>dir') !== false, $body); - $this->assertTrue(strpos($body, '<a href="/dir/child.txt">') !== false); - + $this->assertTrue(false !== strpos($body, '<title>dir'), $body); + $this->assertTrue(false !== strpos($body, '<a href="/dir/child.txt">')); } - function testCollectionGetRoot() { + public function testCollectionGetRoot() + { $request = new HTTP\Request('GET', '/'); $this->server->httpRequest = ($request); $this->server->exec(); - $this->assertEquals(200, $this->response->status, "Incorrect status received. Full response body: " . $this->response->getBodyAsString()); + $this->assertEquals(200, $this->response->status, 'Incorrect status received. Full response body: '.$this->response->getBodyAsString()); $this->assertEquals( [ - 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['text/html; charset=utf-8'], - 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"] + 'X-Sabre-Version' => [DAV\Version::VERSION], + 'Content-Type' => ['text/html; charset=utf-8'], + 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"], ], $this->response->getHeaders() ); $body = $this->response->getBodyAsString(); - $this->assertTrue(strpos($body, '<title>/') !== false, $body); - $this->assertTrue(strpos($body, '<a href="/dir/">') !== false); - $this->assertTrue(strpos($body, '<span class="btn disabled">') !== false); - + $this->assertTrue(false !== strpos($body, '<title>/'), $body); + $this->assertTrue(false !== strpos($body, '<a href="/dir/">')); + $this->assertTrue(false !== strpos($body, '<span class="btn disabled">')); } - function testGETPassthru() { - + public function testGETPassthru() + { $request = new HTTP\Request('GET', '/random'); $response = new HTTP\Response(); $this->assertNull( $this->plugin->httpGet($request, $response) ); - } - function testPostOtherContentType() { - + public function testPostOtherContentType() + { $request = new HTTP\Request('POST', '/', ['Content-Type' => 'text/xml']); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(501, $this->response->status); - } - function testPostNoSabreAction() { - + public function testPostNoSabreAction() + { $request = new HTTP\Request('POST', '/', ['Content-Type' => 'application/x-www-form-urlencoded']); $request->setPostData([]); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(501, $this->response->status); - } - function testPostMkCol() { - + public function testPostMkCol() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'POST', - 'CONTENT_TYPE' => 'application/x-www-form-urlencoded', + 'CONTENT_TYPE' => 'application/x-www-form-urlencoded', ]; $postVars = [ 'sabreAction' => 'mkcol', - 'name' => 'new_collection', + 'name' => 'new_collection', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -140,47 +136,43 @@ class PluginTest extends DAV\AbstractServer{ $this->assertEquals(302, $this->response->status); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Location' => ['/'], + 'Location' => ['/'], ], $this->response->getHeaders()); - $this->assertTrue(is_dir(SABRE_TEMPDIR . '/new_collection')); - + $this->assertTrue(is_dir(SABRE_TEMPDIR.'/new_collection')); } - function testGetAsset() { - + public function testGetAsset() + { $request = new HTTP\Request('GET', '/?sabreAction=asset&assetName=favicon.ico'); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(200, $this->response->getStatus(), 'Error: ' . $this->response->body); + $this->assertEquals(200, $this->response->getStatus(), 'Error: '.$this->response->body); $this->assertEquals([ - 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['image/vnd.microsoft.icon'], - 'Content-Length' => ['4286'], - 'Cache-Control' => ['public, max-age=1209600'], - 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"] + 'X-Sabre-Version' => [DAV\Version::VERSION], + 'Content-Type' => ['image/vnd.microsoft.icon'], + 'Content-Length' => ['4286'], + 'Cache-Control' => ['public, max-age=1209600'], + 'Content-Security-Policy' => ["default-src 'none'; img-src 'self'; style-src 'self'; font-src 'self';"], ], $this->response->getHeaders()); - } - function testGetAsset404() { - + public function testGetAsset404() + { $request = new HTTP\Request('GET', '/?sabreAction=asset&assetName=flavicon.ico'); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(404, $this->response->getStatus(), 'Error: ' . $this->response->body); - + $this->assertEquals(404, $this->response->getStatus(), 'Error: '.$this->response->body); } - function testGetAssetEscapeBasePath() { - + public function testGetAssetEscapeBasePath() + { $request = new HTTP\Request('GET', '/?sabreAction=asset&assetName=./../assets/favicon.ico'); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(404, $this->response->getStatus(), 'Error: ' . $this->response->body); - + $this->assertEquals(404, $this->response->getStatus(), 'Error: '.$this->response->body); } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php b/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php index 5a48b063c..7d787744a 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php @@ -1,11 +1,14 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP\RequestInterface; +use Sabre\HTTP\ResponseInterface; -class ClientMock extends Client { - +class ClientMock extends Client +{ public $request; public $response; @@ -13,22 +16,21 @@ class ClientMock extends Client { public $curlSettings; /** - * Just making this method public + * Just making this method public. * * @param string $url + * * @return string */ - function getAbsoluteUrl($url) { - + public function getAbsoluteUrl($url) + { return parent::getAbsoluteUrl($url); - } - function doRequest(RequestInterface $request) { - + public function doRequest(RequestInterface $request): ResponseInterface + { $this->request = $request; - return $this->response; + return $this->response; } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php index 687f61e2f..e9362c8e4 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php @@ -1,119 +1,111 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; -use Sabre\HTTP\Request; use Sabre\HTTP\Response; require_once 'Sabre/DAV/ClientMock.php'; -class ClientTest extends \PHPUnit_Framework_TestCase { - - function setUp() { - +class ClientTest extends \PHPUnit\Framework\TestCase +{ + public function setUp() + { if (!function_exists('curl_init')) { $this->markTestSkipped('CURL must be installed to test the client'); } - } - function testConstruct() { - + public function testConstruct() + { $client = new ClientMock([ 'baseUri' => '/', ]); $this->assertInstanceOf('Sabre\DAV\ClientMock', $client); - } /** - * @expectedException InvalidArgumentException + * @expectedException \InvalidArgumentException */ - function testConstructNoBaseUri() { - + public function testConstructNoBaseUri() + { $client = new ClientMock([]); - } - function testAuth() { - + public function testAuth() + { $client = new ClientMock([ - 'baseUri' => '/', + 'baseUri' => '/', 'userName' => 'foo', 'password' => 'bar', ]); - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); $this->assertEquals(CURLAUTH_BASIC | CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]); - } - function testBasicAuth() { - + public function testBasicAuth() + { $client = new ClientMock([ - 'baseUri' => '/', + 'baseUri' => '/', 'userName' => 'foo', 'password' => 'bar', - 'authType' => Client::AUTH_BASIC + 'authType' => Client::AUTH_BASIC, ]); - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); $this->assertEquals(CURLAUTH_BASIC, $client->curlSettings[CURLOPT_HTTPAUTH]); - } - function testDigestAuth() { - + public function testDigestAuth() + { $client = new ClientMock([ - 'baseUri' => '/', + 'baseUri' => '/', 'userName' => 'foo', 'password' => 'bar', - 'authType' => Client::AUTH_DIGEST + 'authType' => Client::AUTH_DIGEST, ]); - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); $this->assertEquals(CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]); - } - function testNTLMAuth() { - + public function testNTLMAuth() + { $client = new ClientMock([ - 'baseUri' => '/', + 'baseUri' => '/', 'userName' => 'foo', 'password' => 'bar', - 'authType' => Client::AUTH_NTLM + 'authType' => Client::AUTH_NTLM, ]); - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); $this->assertEquals(CURLAUTH_NTLM, $client->curlSettings[CURLOPT_HTTPAUTH]); - } - function testProxy() { - + public function testProxy() + { $client = new ClientMock([ 'baseUri' => '/', - 'proxy' => 'localhost:8888', + 'proxy' => 'localhost:8888', ]); - $this->assertEquals("localhost:8888", $client->curlSettings[CURLOPT_PROXY]); - + $this->assertEquals('localhost:8888', $client->curlSettings[CURLOPT_PROXY]); } - function testEncoding() { - + public function testEncoding() + { $client = new ClientMock([ - 'baseUri' => '/', + 'baseUri' => '/', 'encoding' => Client::ENCODING_IDENTITY | Client::ENCODING_GZIP | Client::ENCODING_DEFLATE, ]); - $this->assertEquals("identity,deflate,gzip", $client->curlSettings[CURLOPT_ENCODING]); - + $this->assertEquals('identity,deflate,gzip', $client->curlSettings[CURLOPT_ENCODING]); } - function testPropFind() { - + public function testPropFind() + { $client = new ClientMock([ 'baseUri' => '/', ]); @@ -142,28 +134,26 @@ XML; $this->assertEquals('PROPFIND', $request->getMethod()); $this->assertEquals('/foo', $request->getUrl()); $this->assertEquals([ - 'Depth' => ['0'], + 'Depth' => ['0'], 'Content-Type' => ['application/xml'], ], $request->getHeaders()); - } /** * @expectedException \Sabre\HTTP\ClientHttpException */ - function testPropFindError() { - + public function testPropFindError() + { $client = new ClientMock([ 'baseUri' => '/', ]); $client->response = new Response(405, []); $client->propFind('foo', ['{DAV:}displayname', '{urn:zim}gir']); - } - function testPropFindDepth1() { - + public function testPropFindDepth1() + { $client = new ClientMock([ 'baseUri' => '/', ]); @@ -188,7 +178,7 @@ XML; $this->assertEquals([ '/foo' => [ - '{DAV:}displayname' => 'bar' + '{DAV:}displayname' => 'bar', ], ], $result); @@ -196,14 +186,13 @@ XML; $this->assertEquals('PROPFIND', $request->getMethod()); $this->assertEquals('/foo', $request->getUrl()); $this->assertEquals([ - 'Depth' => ['1'], + 'Depth' => ['1'], 'Content-Type' => ['application/xml'], ], $request->getHeaders()); - } - function testPropPatch() { - + public function testPropPatch() + { $client = new ClientMock([ 'baseUri' => '/', ]); @@ -232,30 +221,28 @@ XML; $this->assertEquals([ 'Content-Type' => ['application/xml'], ], $request->getHeaders()); - } /** * @depends testPropPatch * @expectedException \Sabre\HTTP\ClientHttpException */ - function testPropPatchHTTPError() { - + public function testPropPatchHTTPError() + { $client = new ClientMock([ 'baseUri' => '/', ]); $client->response = new Response(403, [], ''); $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null]); - } /** * @depends testPropPatch - * @expectedException Sabre\HTTP\ClientException + * @expectedException \Sabre\HTTP\ClientException */ - function testPropPatchMultiStatusError() { - + public function testPropPatchMultiStatusError() + { $client = new ClientMock([ 'baseUri' => '/', ]); @@ -277,11 +264,10 @@ XML; $client->response = new Response(207, [], $responseBody); $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null]); - } - function testOPTIONS() { - + public function testOPTIONS() + { $client = new ClientMock([ 'baseUri' => '/', ]); @@ -301,6 +287,5 @@ XML; $this->assertEquals('/', $request->getUrl()); $this->assertEquals([ ], $request->getHeaders()); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php index 174a561b5..5fc271587 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Exception/LockedTest.php @@ -1,14 +1,16 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Exception; use DOMDocument; use Sabre\DAV; -class LockedTest extends \PHPUnit_Framework_TestCase { - - function testSerialize() { - +class LockedTest extends \PHPUnit\Framework\TestCase +{ + public function testSerialize() + { $dom = new DOMDocument('1.0'); $dom->formatOutput = true; $root = $dom->createElement('d:root'); @@ -33,11 +35,10 @@ class LockedTest extends \PHPUnit_Framework_TestCase { '; $this->assertEquals($expected, $output); - } - function testSerializeAmpersand() { - + public function testSerializeAmpersand() + { $dom = new DOMDocument('1.0'); $dom->formatOutput = true; $root = $dom->createElement('d:root'); @@ -62,6 +63,5 @@ class LockedTest extends \PHPUnit_Framework_TestCase { '; $this->assertEquals($expected, $output); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Exception/PaymentRequiredTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Exception/PaymentRequiredTest.php index 7142937b4..42775a313 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Exception/PaymentRequiredTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Exception/PaymentRequiredTest.php @@ -1,14 +1,14 @@ <?php -namespace Sabre\DAV\Exception; - -class PaymentRequiredTest extends \PHPUnit_Framework_TestCase { +declare(strict_types=1); - function testGetHTTPCode() { +namespace Sabre\DAV\Exception; +class PaymentRequiredTest extends \PHPUnit\Framework\TestCase +{ + public function testGetHTTPCode() + { $ex = new PaymentRequired(); $this->assertEquals(402, $ex->getHTTPCode()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ExceptionTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ExceptionTest.php index 0eb4f3dd8..7237aea0d 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ExceptionTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ExceptionTest.php @@ -1,30 +1,27 @@ <?php -namespace Sabre\DAV; - -class ExceptionTest extends \PHPUnit_Framework_TestCase { +declare(strict_types=1); - function testStatus() { +namespace Sabre\DAV; +class ExceptionTest extends \PHPUnit\Framework\TestCase +{ + public function testStatus() + { $e = new Exception(); $this->assertEquals(500, $e->getHTTPCode()); - } - function testExceptionStatuses() { - + public function testExceptionStatuses() + { $c = [ - 'Sabre\\DAV\\Exception\\NotAuthenticated' => 401, + 'Sabre\\DAV\\Exception\\NotAuthenticated' => 401, 'Sabre\\DAV\\Exception\\InsufficientStorage' => 507, ]; foreach ($c as $class => $status) { - $obj = new $class(); $this->assertEquals($status, $obj->getHTTPCode()); - } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php index f5d65a44f..4bc79b597 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php @@ -1,110 +1,101 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\FSExt; require_once 'Sabre/TestUtil.php'; -class FileTest extends \PHPUnit_Framework_TestCase { - - function setUp() { - - file_put_contents(SABRE_TEMPDIR . '/file.txt', 'Contents'); - +class FileTest extends \PHPUnit\Framework\TestCase +{ + public function setUp() + { + file_put_contents(SABRE_TEMPDIR.'/file.txt', 'Contents'); } - function tearDown() { - + public function tearDown() + { \Sabre\TestUtil::clearTempDir(); - } - function testPut() { - - $filename = SABRE_TEMPDIR . '/file.txt'; + public function testPut() + { + $filename = SABRE_TEMPDIR.'/file.txt'; $file = new File($filename); $result = $file->put('New contents'); - $this->assertEquals('New contents', file_get_contents(SABRE_TEMPDIR . '/file.txt')); + $this->assertEquals('New contents', file_get_contents(SABRE_TEMPDIR.'/file.txt')); $this->assertEquals( - '"' . + '"'. sha1( - fileinode($filename) . - filesize($filename) . + fileinode($filename). + filesize($filename). filemtime($filename) - ) . '"', + ).'"', $result ); - } - function testRange() { - - $file = new File(SABRE_TEMPDIR . '/file.txt'); + public function testRange() + { + $file = new File(SABRE_TEMPDIR.'/file.txt'); $file->put('0000000'); $file->patch('111', 2, 3); - $this->assertEquals('0001110', file_get_contents(SABRE_TEMPDIR . '/file.txt')); - + $this->assertEquals('0001110', file_get_contents(SABRE_TEMPDIR.'/file.txt')); } - function testRangeStream() { - + public function testRangeStream() + { $stream = fopen('php://memory', 'r+'); - fwrite($stream, "222"); + fwrite($stream, '222'); rewind($stream); - $file = new File(SABRE_TEMPDIR . '/file.txt'); + $file = new File(SABRE_TEMPDIR.'/file.txt'); $file->put('0000000'); $file->patch($stream, 2, 3); - $this->assertEquals('0002220', file_get_contents(SABRE_TEMPDIR . '/file.txt')); - + $this->assertEquals('0002220', file_get_contents(SABRE_TEMPDIR.'/file.txt')); } - - function testGet() { - - $file = new File(SABRE_TEMPDIR . '/file.txt'); + public function testGet() + { + $file = new File(SABRE_TEMPDIR.'/file.txt'); $this->assertEquals('Contents', stream_get_contents($file->get())); - } - function testDelete() { - - $file = new File(SABRE_TEMPDIR . '/file.txt'); + public function testDelete() + { + $file = new File(SABRE_TEMPDIR.'/file.txt'); $file->delete(); - $this->assertFalse(file_exists(SABRE_TEMPDIR . '/file.txt')); - + $this->assertFalse(file_exists(SABRE_TEMPDIR.'/file.txt')); } - function testGetETag() { - - $filename = SABRE_TEMPDIR . '/file.txt'; + public function testGetETag() + { + $filename = SABRE_TEMPDIR.'/file.txt'; $file = new File($filename); $this->assertEquals( - '"' . + '"'. sha1( - fileinode($filename) . - filesize($filename) . + fileinode($filename). + filesize($filename). filemtime($filename) - ) . '"', + ).'"', $file->getETag() ); } - function testGetContentType() { - - $file = new File(SABRE_TEMPDIR . '/file.txt'); + public function testGetContentType() + { + $file = new File(SABRE_TEMPDIR.'/file.txt'); $this->assertNull($file->getContentType()); - } - function testGetSize() { - - $file = new File(SABRE_TEMPDIR . '/file.txt'); + public function testGetSize() + { + $file = new File(SABRE_TEMPDIR.'/file.txt'); $this->assertEquals(8, $file->getSize()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php index 20fca490a..daa04c354 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\FSExt; use Sabre\DAV; @@ -7,81 +9,76 @@ use Sabre\HTTP; require_once 'Sabre/DAV/AbstractServer.php'; -class ServerTest extends DAV\AbstractServer{ - - protected function getRootNode() { - +class ServerTest extends DAV\AbstractServer +{ + protected function getRootNode() + { return new Directory($this->tempDir); - } - function testGet() { - + public function testGet() + { $request = new HTTP\Request('GET', '/test.txt'); - $filename = $this->tempDir . '/test.txt'; + $filename = $this->tempDir.'/test.txt'; $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(200, $this->response->getStatus(), 'Invalid status code received.'); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [13], - 'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($filename)))], - 'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [13], + 'Last-Modified' => [HTTP\toDate(new \DateTime('@'.filemtime($filename)))], + 'ETag' => ['"'.sha1(fileinode($filename).filesize($filename).filemtime($filename)).'"'], ], $this->response->getHeaders() ); - $this->assertEquals('Test contents', stream_get_contents($this->response->body)); - } - function testHEAD() { - + public function testHEAD() + { $request = new HTTP\Request('HEAD', '/test.txt'); - $filename = $this->tempDir . '/test.txt'; + $filename = $this->tempDir.'/test.txt'; $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [13], - 'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt')))], - 'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [13], + 'Last-Modified' => [HTTP\toDate(new \DateTime('@'.filemtime($this->tempDir.'/test.txt')))], + 'ETag' => ['"'.sha1(fileinode($filename).filesize($filename).filemtime($filename)).'"'], ], $this->response->getHeaders() ); $this->assertEquals(200, $this->response->status); $this->assertEquals('', $this->response->body); - } - function testPut() { - + public function testPut() + { $request = new HTTP\Request('PUT', '/testput.txt'); - $filename = $this->tempDir . '/testput.txt'; + $filename = $this->tempDir.'/testput.txt'; $request->setBody('Testing new file'); $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'], + 'Content-Length' => ['0'], + 'ETag' => ['"'.sha1(fileinode($filename).filesize($filename).filemtime($filename)).'"'], ], $this->response->getHeaders()); $this->assertEquals(201, $this->response->status); $this->assertEquals('', $this->response->body); $this->assertEquals('Testing new file', file_get_contents($filename)); - } - function testPutAlreadyExists() { - + public function testPutAlreadyExists() + { $request = new HTTP\Request('PUT', '/test.txt', ['If-None-Match' => '*']); $request->setBody('Testing new file'); $this->server->httpRequest = ($request); @@ -89,33 +86,31 @@ class ServerTest extends DAV\AbstractServer{ $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); $this->assertEquals(412, $this->response->status); - $this->assertNotEquals('Testing new file', file_get_contents($this->tempDir . '/test.txt')); - + $this->assertNotEquals('Testing new file', file_get_contents($this->tempDir.'/test.txt')); } - function testMkcol() { - + public function testMkcol() + { $request = new HTTP\Request('MKCOL', '/testcol'); $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->response->getHeaders()); $this->assertEquals(201, $this->response->status); $this->assertEquals('', $this->response->body); - $this->assertTrue(is_dir($this->tempDir . '/testcol')); - + $this->assertTrue(is_dir($this->tempDir.'/testcol')); } - function testPutUpdate() { - + public function testPutUpdate() + { $request = new HTTP\Request('PUT', '/test.txt'); $request->setBody('Testing updated file'); $this->server->httpRequest = ($request); @@ -125,31 +120,29 @@ class ServerTest extends DAV\AbstractServer{ $this->assertEquals(204, $this->response->status); $this->assertEquals('', $this->response->body); - $this->assertEquals('Testing updated file', file_get_contents($this->tempDir . '/test.txt')); - + $this->assertEquals('Testing updated file', file_get_contents($this->tempDir.'/test.txt')); } - function testDelete() { - + public function testDelete() + { $request = new HTTP\Request('DELETE', '/test.txt'); $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->response->getHeaders()); $this->assertEquals(204, $this->response->status); $this->assertEquals('', $this->response->body); - $this->assertFalse(file_exists($this->tempDir . '/test.txt')); - + $this->assertFalse(file_exists($this->tempDir.'/test.txt')); } - function testDeleteDirectory() { - - mkdir($this->tempDir . '/testcol'); - file_put_contents($this->tempDir . '/testcol/test.txt', 'Hi! I\'m a file with a short lifespan'); + public function testDeleteDirectory() + { + mkdir($this->tempDir.'/testcol'); + file_put_contents($this->tempDir.'/testcol/test.txt', 'Hi! I\'m a file with a short lifespan'); $request = new HTTP\Request('DELETE', '/testcol'); $this->server->httpRequest = ($request); @@ -157,37 +150,35 @@ class ServerTest extends DAV\AbstractServer{ $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->response->getHeaders()); $this->assertEquals(204, $this->response->status); $this->assertEquals('', $this->response->body); - $this->assertFalse(file_exists($this->tempDir . '/testcol')); - + $this->assertFalse(file_exists($this->tempDir.'/testcol')); } - function testOptions() { - + public function testOptions() + { $request = new HTTP\Request('OPTIONS', '/'); $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ - 'DAV' => ['1, 3, extended-mkcol'], - 'MS-Author-Via' => ['DAV'], - 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'], - 'Accept-Ranges' => ['bytes'], - 'Content-Length' => ['0'], + 'DAV' => ['1, 3, extended-mkcol'], + 'MS-Author-Via' => ['DAV'], + 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'], + 'Accept-Ranges' => ['bytes'], + 'Content-Length' => ['0'], 'X-Sabre-Version' => [DAV\Version::VERSION], ], $this->response->getHeaders()); $this->assertEquals(200, $this->response->status); $this->assertEquals('', $this->response->body); - } - function testMove() { - - mkdir($this->tempDir . '/testcol'); + public function testMove() + { + mkdir($this->tempDir.'/testcol'); $request = new HTTP\Request('MOVE', '/test.txt', ['Destination' => '/testcol/test2.txt']); $this->server->httpRequest = ($request); @@ -197,15 +188,13 @@ class ServerTest extends DAV\AbstractServer{ $this->assertEquals('', $this->response->body); $this->assertEquals([ - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], 'X-Sabre-Version' => [DAV\Version::VERSION], ], $this->response->getHeaders()); $this->assertTrue( - is_file($this->tempDir . '/testcol/test2.txt') + is_file($this->tempDir.'/testcol/test2.txt') ); - - } /** @@ -215,14 +204,14 @@ class ServerTest extends DAV\AbstractServer{ * The moveInto function *should* ignore the object and let sabredav itself * execute the slow move. */ - function testMoveOtherObject() { - - mkdir($this->tempDir . '/tree1'); - mkdir($this->tempDir . '/tree2'); + public function testMoveOtherObject() + { + mkdir($this->tempDir.'/tree1'); + mkdir($this->tempDir.'/tree2'); $tree = new DAV\Tree(new DAV\SimpleCollection('root', [ - new DAV\FS\Directory($this->tempDir . '/tree1'), - new DAV\FSExt\Directory($this->tempDir . '/tree2'), + new DAV\FS\Directory($this->tempDir.'/tree1'), + new DAV\FSExt\Directory($this->tempDir.'/tree2'), ])); $this->server->tree = $tree; @@ -234,13 +223,32 @@ class ServerTest extends DAV\AbstractServer{ $this->assertEquals('', $this->response->body); $this->assertEquals([ - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], 'X-Sabre-Version' => [DAV\Version::VERSION], ], $this->response->getHeaders()); $this->assertTrue( - is_dir($this->tempDir . '/tree2/tree1') + is_dir($this->tempDir.'/tree2/tree1') ); + } + + public function testCopy() + { + mkdir($this->tempDir.'/testcol'); + + $request = new HTTP\Request('COPY', '/test.txt', ['Destination' => '/testcol/test2.txt']); + $this->server->httpRequest = ($request); + $this->server->exec(); + + $this->assertEquals(201, $this->response->status); + $this->assertEquals('', $this->response->body); + + $this->assertEquals([ + 'Content-Length' => ['0'], + 'X-Sabre-Version' => [DAV\Version::VERSION], + ], $this->response->getHeaders()); + $this->assertTrue(is_file($this->tempDir.'/test.txt')); + $this->assertTrue(is_file($this->tempDir.'/testcol/test2.txt')); } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php b/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php index cd8bee968..d0ff77eb4 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php @@ -1,88 +1,85 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; -class HTTPPreferParsingTest extends \Sabre\DAVServerTest { - - function testParseSimple() { - - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_PREFER' => 'return-asynch', +class HTTPPreferParsingTest extends \Sabre\DAVServerTest +{ + public function assertParseResult($input, $expected) + { + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'Prefer' => $input, ]); $server = new Server(); $server->httpRequest = $httpRequest; - $this->assertEquals([ - 'respond-async' => true, - 'return' => null, - 'handling' => null, - 'wait' => null, - ], $server->getHTTPPrefer()); - + $this->assertEquals( + $expected, + $server->getHTTPPrefer() + ); } - function testParseValue() { - - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_PREFER' => 'wait=10', - ]); - - $server = new Server(); - $server->httpRequest = $httpRequest; - - $this->assertEquals([ - 'respond-async' => false, - 'return' => null, - 'handling' => null, - 'wait' => '10', - ], $server->getHTTPPrefer()); - + public function testParseSimple() + { + $this->assertParseResult( + 'return-asynch', + [ + 'respond-async' => true, + 'return' => null, + 'handling' => null, + 'wait' => null, + ] + ); } - function testParseMultiple() { - - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_PREFER' => 'return-minimal, strict,lenient', - ]); - - $server = new Server(); - $server->httpRequest = $httpRequest; - - $this->assertEquals([ - 'respond-async' => false, - 'return' => 'minimal', - 'handling' => 'lenient', - 'wait' => null, - ], $server->getHTTPPrefer()); - + public function testParseValue() + { + $this->assertParseResult( + 'wait=10', + [ + 'respond-async' => false, + 'return' => null, + 'handling' => null, + 'wait' => '10', + ] + ); } - function testParseWeirdValue() { - - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_PREFER' => 'BOOOH', - ]); - - $server = new Server(); - $server->httpRequest = $httpRequest; - - $this->assertEquals([ - 'respond-async' => false, - 'return' => null, - 'handling' => null, - 'wait' => null, - 'boooh' => true, - ], $server->getHTTPPrefer()); - + public function testParseMultiple() + { + $this->assertParseResult( + 'return-minimal, strict,lenient', + [ + 'respond-async' => false, + 'return' => 'minimal', + 'handling' => 'lenient', + 'wait' => null, + ] + ); } - function testBrief() { + public function testParseWeirdValue() + { + $this->assertParseResult( + 'BOOOH', + [ + 'respond-async' => false, + 'return' => null, + 'handling' => null, + 'wait' => null, + 'boooh' => true, + ] + ); + } - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_BRIEF' => 't', + public function testBrief() + { + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'Brief' => 't', ]); $server = new Server(); @@ -90,24 +87,19 @@ class HTTPPreferParsingTest extends \Sabre\DAVServerTest { $this->assertEquals([ 'respond-async' => false, - 'return' => 'minimal', - 'handling' => null, - 'wait' => null, + 'return' => 'minimal', + 'handling' => null, + 'wait' => null, ], $server->getHTTPPrefer()); - } /** - * propfindMinimal - * - * @return void + * propfindMinimal. */ - function testpropfindMinimal() { - - $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'PROPFIND', - 'REQUEST_URI' => '/', - 'HTTP_PREFER' => 'return-minimal', + public function testpropfindMinimal() + { + $request = new HTTP\Request('PROPFIND', '/', [ + 'Prefer' => 'return-minimal', ]); $request->setBody(<<<BLA <?xml version="1.0"?> @@ -126,13 +118,12 @@ BLA $this->assertEquals(207, $response->getStatus(), $body); - $this->assertTrue(strpos($body, 'resourcetype') !== false, $body); - $this->assertTrue(strpos($body, 'something') === false, $body); - + $this->assertTrue(false !== strpos($body, 'resourcetype'), $body); + $this->assertTrue(false === strpos($body, 'something'), $body); } - function testproppatchMinimal() { - + public function testproppatchMinimal() + { $request = new HTTP\Request('PROPPATCH', '/', ['Prefer' => 'return-minimal']); $request->setBody(<<<BLA <?xml version="1.0"?> @@ -146,23 +137,20 @@ BLA BLA ); - $this->server->on('propPatch', function($path, PropPatch $propPatch) { - - $propPatch->handle('{DAV:}something', function($props) { + $this->server->on('propPatch', function ($path, PropPatch $propPatch) { + $propPatch->handle('{DAV:}something', function ($props) { return true; }); - }); $response = $this->request($request); - $this->assertEquals(0, strlen($response->body), 'Expected empty body: ' . $response->body); + $this->assertEquals('', $response->getBodyAsString(), 'Expected empty body: '.$response->body); $this->assertEquals(204, $response->status); - } - function testproppatchMinimalError() { - + public function testproppatchMinimalError() + { $request = new HTTP\Request('PROPPATCH', '/', ['Prefer' => 'return-minimal']); $request->setBody(<<<BLA <?xml version="1.0"?> @@ -181,8 +169,7 @@ BLA $body = $response->getBodyAsString(); $this->assertEquals(207, $response->status); - $this->assertTrue(strpos($body, 'something') !== false); - $this->assertTrue(strpos($body, '403 Forbidden') !== false, $body); - + $this->assertTrue(false !== strpos($body, 'something')); + $this->assertTrue(false !== strpos($body, '403 Forbidden'), $body); } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php b/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php index bd1b33150..f70febabd 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\DAVServerTest; @@ -12,30 +14,27 @@ use Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class HttpDeleteTest extends DAVServerTest { - +class HttpDeleteTest extends DAVServerTest +{ /** * Sets up the DAV tree. - * - * @return void */ - function setUpTree() { - + public function setUpTree() + { $this->tree = new Mock\Collection('root', [ 'file1' => 'foo', - 'dir' => [ - 'subfile' => 'bar', + 'dir' => [ + 'subfile' => 'bar', 'subfile2' => 'baz', ], ]); - } /** - * A successful DELETE + * A successful DELETE. */ - function testDelete() { - + public function testDelete() + { $request = new HTTP\Request('DELETE', '/file1'); $response = $this->request($request); @@ -43,24 +42,23 @@ class HttpDeleteTest extends DAVServerTest { $this->assertEquals( 204, $response->getStatus(), - "Incorrect status code. Response body: " . $response->getBodyAsString() + 'Incorrect status code. Response body: '.$response->getBodyAsString() ); $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $response->getHeaders() ); - } /** - * Deleting a Directory + * Deleting a Directory. */ - function testDeleteDirectory() { - + public function testDeleteDirectory() + { $request = new HTTP\Request('DELETE', '/dir'); $response = $this->request($request); @@ -68,42 +66,40 @@ class HttpDeleteTest extends DAVServerTest { $this->assertEquals( 204, $response->getStatus(), - "Incorrect status code. Response body: " . $response->getBodyAsString() + 'Incorrect status code. Response body: '.$response->getBodyAsString() ); $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $response->getHeaders() ); - } /** - * DELETE on a node that does not exist + * DELETE on a node that does not exist. */ - function testDeleteNotFound() { - + public function testDeleteNotFound() + { $request = new HTTP\Request('DELETE', '/file2'); $response = $this->request($request); $this->assertEquals( 404, $response->getStatus(), - "Incorrect status code. Response body: " . $response->getBodyAsString() + 'Incorrect status code. Response body: '.$response->getBodyAsString() ); - } /** - * DELETE with preconditions + * DELETE with preconditions. */ - function testDeletePreconditions() { - + public function testDeletePreconditions() + { $request = new HTTP\Request('DELETE', '/file1', [ - 'If-Match' => '"' . md5('foo') . '"', + 'If-Match' => '"'.md5('foo').'"', ]); $response = $this->request($request); @@ -111,18 +107,17 @@ class HttpDeleteTest extends DAVServerTest { $this->assertEquals( 204, $response->getStatus(), - "Incorrect status code. Response body: " . $response->getBodyAsString() + 'Incorrect status code. Response body: '.$response->getBodyAsString() ); - } /** - * DELETE with incorrect preconditions + * DELETE with incorrect preconditions. */ - function testDeletePreconditionsFailed() { - + public function testDeletePreconditionsFailed() + { $request = new HTTP\Request('DELETE', '/file1', [ - 'If-Match' => '"' . md5('bar') . '"', + 'If-Match' => '"'.md5('bar').'"', ]); $response = $this->request($request); @@ -130,8 +125,7 @@ class HttpDeleteTest extends DAVServerTest { $this->assertEquals( 412, $response->getStatus(), - "Incorrect status code. Response body: " . $response->getBodyAsString() + 'Incorrect status code. Response body: '.$response->getBodyAsString() ); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php b/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php index 86480b1c2..d3932a4c6 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\DAVServerTest; @@ -12,31 +14,28 @@ use Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class HttpPutTest extends DAVServerTest { - +class HttpPutTest extends DAVServerTest +{ /** * Sets up the DAV tree. - * - * @return void */ - function setUpTree() { - + public function setUpTree() + { $this->tree = new Mock\Collection('root', [ 'file1' => 'foo', ]); - } /** * A successful PUT of a new file. */ - function testPut() { - + public function testPut() + { $request = new HTTP\Request('PUT', '/file2', [], 'hello'); $response = $this->request($request); - $this->assertEquals(201, $response->getStatus(), 'Incorrect status code received. Full response body:' . $response->getBodyAsString()); + $this->assertEquals(201, $response->getStatus(), 'Incorrect status code received. Full response body:'.$response->getBodyAsString()); $this->assertEquals( 'hello', @@ -46,12 +45,11 @@ class HttpPutTest extends DAVServerTest { $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . md5('hello') . '"'] + 'Content-Length' => ['0'], + 'ETag' => ['"'.md5('hello').'"'], ], $response->getHeaders() ); - } /** @@ -59,8 +57,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testPutExisting() { - + public function testPutExisting() + { $request = new HTTP\Request('PUT', '/file1', [], 'bar'); $response = $this->request($request); @@ -75,21 +73,20 @@ class HttpPutTest extends DAVServerTest { $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . md5('bar') . '"'] + 'Content-Length' => ['0'], + 'ETag' => ['"'.md5('bar').'"'], ], $response->getHeaders() ); - } /** - * PUT on existing file with If-Match: * + * PUT on existing file with If-Match: *. * * @depends testPutExisting */ - function testPutExistingIfMatchStar() { - + public function testPutExistingIfMatchStar() + { $request = new HTTP\Request( 'PUT', '/file1', @@ -109,25 +106,24 @@ class HttpPutTest extends DAVServerTest { $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . md5('hello') . '"'] + 'Content-Length' => ['0'], + 'ETag' => ['"'.md5('hello').'"'], ], $response->getHeaders() ); - } /** - * PUT on existing file with If-Match: with a correct etag + * PUT on existing file with If-Match: with a correct etag. * * @depends testPutExisting */ - function testPutExistingIfMatchCorrect() { - + public function testPutExistingIfMatchCorrect() + { $request = new HTTP\Request( 'PUT', '/file1', - ['If-Match' => '"' . md5('foo') . '"'], + ['If-Match' => '"'.md5('foo').'"'], 'hello' ); @@ -143,12 +139,11 @@ class HttpPutTest extends DAVServerTest { $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . md5('hello') . '"'], + 'Content-Length' => ['0'], + 'ETag' => ['"'.md5('hello').'"'], ], $response->getHeaders() ); - } /** @@ -156,8 +151,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testPutContentRange() { - + public function testPutContentRange() + { $request = new HTTP\Request( 'PUT', '/file2', @@ -167,7 +162,6 @@ class HttpPutTest extends DAVServerTest { $response = $this->request($request); $this->assertEquals(400, $response->getStatus()); - } /** @@ -175,8 +169,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testPutIfNoneMatchStar() { - + public function testPutIfNoneMatchStar() + { $request = new HTTP\Request( 'PUT', '/file2', @@ -196,12 +190,11 @@ class HttpPutTest extends DAVServerTest { $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . md5('hello') . '"'] + 'Content-Length' => ['0'], + 'ETag' => ['"'.md5('hello').'"'], ], $response->getHeaders() ); - } /** @@ -209,8 +202,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testPutIfMatchStar() { - + public function testPutIfMatchStar() + { $request = new HTTP\Request( 'PUT', '/file2', @@ -221,7 +214,6 @@ class HttpPutTest extends DAVServerTest { $response = $this->request($request); $this->assertEquals(412, $response->getStatus()); - } /** @@ -229,8 +221,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testPutExistingIfNoneMatchStar() { - + public function testPutExistingIfNoneMatchStar() + { $request = new HTTP\Request( 'PUT', '/file1', @@ -242,7 +234,6 @@ class HttpPutTest extends DAVServerTest { $response = $this->request($request); $this->assertEquals(412, $response->getStatus()); - } /** @@ -250,8 +241,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testPutNoParent() { - + public function testPutNoParent() + { $request = new HTTP\Request( 'PUT', '/file1/file2', @@ -261,7 +252,6 @@ class HttpPutTest extends DAVServerTest { $response = $this->request($request); $this->assertEquals(409, $response->getStatus()); - } /** @@ -271,8 +261,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testFinderPutSuccess() { - + public function testFinderPutSuccess() + { $request = new HTTP\Request( 'PUT', '/file2', @@ -291,12 +281,11 @@ class HttpPutTest extends DAVServerTest { $this->assertEquals( [ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], - 'ETag' => ['"' . md5('hello') . '"'], + 'Content-Length' => ['0'], + 'ETag' => ['"'.md5('hello').'"'], ], $response->getHeaders() ); - } /** @@ -304,8 +293,8 @@ class HttpPutTest extends DAVServerTest { * * @depends testFinderPutSuccess */ - function testFinderPutFail() { - + public function testFinderPutFail() + { $request = new HTTP\Request( 'PUT', '/file2', @@ -316,7 +305,6 @@ class HttpPutTest extends DAVServerTest { $response = $this->request($request); $this->assertEquals(403, $response->getStatus()); - } /** @@ -324,17 +312,18 @@ class HttpPutTest extends DAVServerTest { * * @depends testPut */ - function testPutIntercept() { - - $this->server->on('beforeBind', function($uri) { + public function testPutIntercept() + { + $this->server->on('beforeBind', function ($uri) { $this->server->httpResponse->setStatus(418); + return false; }); $request = new HTTP\Request('PUT', '/file2', [], 'hello'); $response = $this->request($request); - $this->assertEquals(418, $response->getStatus(), 'Incorrect status code received. Full response body: ' . $response->getBodyAsString()); + $this->assertEquals(418, $response->getStatus(), 'Incorrect status code received. Full response body: '.$response->getBodyAsString()); $this->assertFalse( $this->server->tree->nodeExists('file2') @@ -343,7 +332,5 @@ class HttpPutTest extends DAVServerTest { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], ], $response->getHeaders()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php index ba2cf3dc1..500ad6147 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php @@ -1,34 +1,32 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; require_once 'Sabre/TestUtil.php'; -class Issue33Test extends \PHPUnit_Framework_TestCase { - - function setUp() { - +class Issue33Test extends \PHPUnit\Framework\TestCase +{ + public function setUp() + { \Sabre\TestUtil::clearTempDir(); - } - function testCopyMoveInfo() { - + public function testCopyMoveInfo() + { $bar = new SimpleCollection('bar'); $root = new SimpleCollection('webdav', [$bar]); $server = new Server($root); $server->setBaseUri('/webdav/'); - $serverVars = [ - 'REQUEST_URI' => '/webdav/bar', - 'HTTP_DESTINATION' => 'http://dev2.tribalos.com/webdav/%C3%A0fo%C3%B3', - 'HTTP_OVERWRITE' => 'F', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('GET', '/webdav/bar', [ + 'Destination' => 'http://dev2.tribalos.com/webdav/%C3%A0fo%C3%B3', + 'Overwrite' => 'F', + ]); $server->httpRequest = $request; @@ -37,13 +35,12 @@ class Issue33Test extends \PHPUnit_Framework_TestCase { $this->assertEquals('%C3%A0fo%C3%B3', urlencode($info['destination'])); $this->assertFalse($info['destinationExists']); $this->assertFalse($info['destinationNode']); - } - function testTreeMove() { - - mkdir(SABRE_TEMPDIR . '/issue33'); - $dir = new FS\Directory(SABRE_TEMPDIR . '/issue33'); + public function testTreeMove() + { + mkdir(SABRE_TEMPDIR.'/issue33'); + $dir = new FS\Directory(SABRE_TEMPDIR.'/issue33'); $dir->createDirectory('bar'); @@ -52,40 +49,34 @@ class Issue33Test extends \PHPUnit_Framework_TestCase { $node = $tree->getNodeForPath(urldecode('%C3%A0fo%C3%B3')); $this->assertEquals(urldecode('%C3%A0fo%C3%B3'), $node->getName()); - } - function testDirName() { - + public function testDirName() + { $dirname1 = 'bar'; $dirname2 = urlencode('%C3%A0fo%C3%B3'); $this->assertTrue(dirname($dirname1) == dirname($dirname2)); - } /** * @depends testTreeMove * @depends testCopyMoveInfo */ - function testEverything() { + public function testEverything() + { + $request = new HTTP\Request('MOVE', '/webdav/bar', [ + 'Destination' => 'http://dev2.tribalos.com/webdav/%C3%A0fo%C3%B3', + 'Overwrite' => 'F', + ]); - // Request object - $serverVars = [ - 'REQUEST_METHOD' => 'MOVE', - 'REQUEST_URI' => '/webdav/bar', - 'HTTP_DESTINATION' => 'http://dev2.tribalos.com/webdav/%C3%A0fo%C3%B3', - 'HTTP_OVERWRITE' => 'F', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); $request->setBody(''); $response = new HTTP\ResponseMock(); // Server setup - mkdir(SABRE_TEMPDIR . '/issue33'); - $dir = new FS\Directory(SABRE_TEMPDIR . '/issue33'); + mkdir(SABRE_TEMPDIR.'/issue33'); + $dir = new FS\Directory(SABRE_TEMPDIR.'/issue33'); $dir->createDirectory('bar'); @@ -99,8 +90,6 @@ class Issue33Test extends \PHPUnit_Framework_TestCase { $server->sapi = new HTTP\SapiMock(); $server->exec(); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/issue33/' . urldecode('%C3%A0fo%C3%B3'))); - + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/issue33/'.urldecode('%C3%A0fo%C3%B3'))); } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/AbstractTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/AbstractTest.php index bbde69097..d1cd1799c 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/AbstractTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/AbstractTest.php @@ -1,29 +1,31 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Locks\Backend; use Sabre\DAV; -abstract class AbstractTest extends \PHPUnit_Framework_TestCase { - +abstract class AbstractTest extends \PHPUnit\Framework\TestCase +{ /** * @abstract + * * @return AbstractBackend */ - abstract function getBackend(); - - function testSetup() { - - $backend = $this->getBackend(); - $this->assertInstanceOf('Sabre\\DAV\\Locks\\Backend\\AbstractBackend', $backend); + abstract public function getBackend(); + public function testSetup() + { + $backend = $this->getBackend(); + $this->assertInstanceOf('Sabre\\DAV\\Locks\\Backend\\AbstractBackend', $backend); } /** * @depends testSetup */ - function testGetLocks() { - + public function testGetLocks() + { $backend = $this->getBackend(); $lock = new DAV\Locks\LockInfo(); @@ -40,14 +42,13 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(1, count($locks)); $this->assertEquals('Sinterklaas', $locks[0]->owner); $this->assertEquals('someuri', $locks[0]->uri); - } /** * @depends testGetLocks */ - function testGetLocksParent() { - + public function testGetLocksParent() + { $backend = $this->getBackend(); $lock = new DAV\Locks\LockInfo(); @@ -64,15 +65,13 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(1, count($locks)); $this->assertEquals('Sinterklaas', $locks[0]->owner); $this->assertEquals('someuri', $locks[0]->uri); - } - /** * @depends testGetLocks */ - function testGetLocksParentDepth0() { - + public function testGetLocksParentDepth0() + { $backend = $this->getBackend(); $lock = new DAV\Locks\LockInfo(); @@ -87,11 +86,10 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { $locks = $backend->getLocks('someuri/child', false); $this->assertEquals(0, count($locks)); - } - function testGetLocksChildren() { - + public function testGetLocksChildren() + { $backend = $this->getBackend(); $lock = new DAV\Locks\LockInfo(); @@ -111,14 +109,13 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { $locks = $backend->getLocks('someuri', true); $this->assertEquals(1, count($locks)); - } /** * @depends testGetLocks */ - function testLockRefresh() { - + public function testLockRefresh() + { $backend = $this->getBackend(); $lock = new DAV\Locks\LockInfo(); @@ -139,14 +136,13 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { $this->assertEquals('Santa Clause', $locks[0]->owner); $this->assertEquals('someuri', $locks[0]->uri); - } /** * @depends testGetLocks */ - function testUnlock() { - + public function testUnlock() + { $backend = $this->getBackend(); $lock = new DAV\Locks\LockInfo(); @@ -164,14 +160,13 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { $locks = $backend->getLocks('someuri', false); $this->assertEquals(0, count($locks)); - } /** * @depends testUnlock */ - function testUnlockUnknownToken() { - + public function testUnlockUnknownToken() + { $backend = $this->getBackend(); $lock = new DAV\Locks\LockInfo(); @@ -190,7 +185,5 @@ abstract class AbstractTest extends \PHPUnit_Framework_TestCase { $locks = $backend->getLocks('someuri', false); $this->assertEquals(1, count($locks)); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php index 537996f3b..50f17a7dd 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FileTest.php @@ -1,24 +1,23 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Locks\Backend; require_once 'Sabre/TestUtil.php'; -class FileTest extends AbstractTest { - - function getBackend() { - +class FileTest extends AbstractTest +{ + public function getBackend() + { \Sabre\TestUtil::clearTempDir(); - $backend = new File(SABRE_TEMPDIR . '/lockdb'); - return $backend; + $backend = new File(SABRE_TEMPDIR.'/lockdb'); + return $backend; } - - function tearDown() { - + public function tearDown() + { \Sabre\TestUtil::clearTempDir(); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOMySQLTest.php index 0ba02fc8b..86ffc0bb3 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOMySQLTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOMySQLTest.php @@ -1,9 +1,10 @@ <?php -namespace Sabre\DAV\Locks\Backend; +declare(strict_types=1); -class PDOMySQLTest extends PDOTest { +namespace Sabre\DAV\Locks\Backend; +class PDOMySQLTest extends PDOTest +{ public $driver = 'mysql'; - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOTest.php index a27eae93c..f5ed98f50 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/PDOTest.php @@ -1,20 +1,20 @@ <?php -namespace Sabre\DAV\Locks\Backend; +declare(strict_types=1); -abstract class PDOTest extends AbstractTest { +namespace Sabre\DAV\Locks\Backend; +abstract class PDOTest extends AbstractTest +{ use \Sabre\DAV\DbTestHelperTrait; - function getBackend() { - + public function getBackend() + { $this->dropTables('locks'); $this->createSchema('locks'); $pdo = $this->getPDO(); return new PDO($pdo); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php index 1111db5b5..a2a31e87f 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Locks; use Sabre\DAV; @@ -8,22 +10,21 @@ use Sabre\HTTP; require_once 'Sabre/HTTP/ResponseMock.php'; require_once 'Sabre/TestUtil.php'; -class MSWordTest extends \PHPUnit_Framework_TestCase { - - function tearDown() { - +class MSWordTest extends \PHPUnit\Framework\TestCase +{ + public function tearDown() + { \Sabre\TestUtil::clearTempDir(); - } - function testLockEtc() { - - mkdir(SABRE_TEMPDIR . '/mstest'); - $tree = new DAV\FS\Directory(SABRE_TEMPDIR . '/mstest'); + public function testLockEtc() + { + mkdir(SABRE_TEMPDIR.'/mstest'); + $tree = new DAV\FS\Directory(SABRE_TEMPDIR.'/mstest'); $server = new DAV\Server($tree); $server->debugExceptions = true; - $locksBackend = new Backend\File(SABRE_TEMPDIR . '/locksdb'); + $locksBackend = new Backend\File(SABRE_TEMPDIR.'/locksdb'); $locksPlugin = new Plugin($locksBackend); $server->addPlugin($locksPlugin); @@ -34,8 +35,8 @@ class MSWordTest extends \PHPUnit_Framework_TestCase { $server->sapi = new HTTP\SapiMock(); $server->exec(); - $this->assertEquals(201, $server->httpResponse->getStatus(), 'Full response body:' . $response1->getBodyAsString()); - $this->assertTrue(!!$server->httpResponse->getHeaders('Lock-Token')); + $this->assertEquals(201, $server->httpResponse->getStatus(), 'Full response body:'.$response1->getBodyAsString()); + $this->assertTrue((bool) $server->httpResponse->getHeaders('Lock-Token')); $lockToken = $server->httpResponse->getHeader('Lock-Token'); //sleep(10); @@ -47,7 +48,7 @@ class MSWordTest extends \PHPUnit_Framework_TestCase { $server->exec(); $this->assertEquals(201, $server->httpResponse->status); - $this->assertTrue(!!$server->httpResponse->getHeaders('Lock-Token')); + $this->assertTrue((bool) $server->httpResponse->getHeaders('Lock-Token')); //sleep(10); @@ -57,16 +58,15 @@ class MSWordTest extends \PHPUnit_Framework_TestCase { $server->exec(); $this->assertEquals(204, $server->httpResponse->status); - } - function getLockRequest() { - + public function getLockRequest() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'LOCK', + 'REQUEST_METHOD' => 'LOCK', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'HTTP_TIMEOUT' => 'Second-3600', - 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx', + 'HTTP_TIMEOUT' => 'Second-3600', + 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx', ]); $request->setBody('<D:lockinfo xmlns:D="DAV:"> @@ -82,15 +82,15 @@ class MSWordTest extends \PHPUnit_Framework_TestCase { </D:lockinfo>'); return $request; - } - function getLockRequest2() { + public function getLockRequest2() + { $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_METHOD' => 'LOCK', + 'REQUEST_METHOD' => 'LOCK', 'HTTP_CONTENT_TYPE' => 'application/xml', - 'HTTP_TIMEOUT' => 'Second-3600', - 'REQUEST_URI' => '/~$Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx', + 'HTTP_TIMEOUT' => 'Second-3600', + 'REQUEST_URI' => '/~$Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx', ]); $request->setBody('<D:lockinfo xmlns:D="DAV:"> @@ -106,19 +106,17 @@ class MSWordTest extends \PHPUnit_Framework_TestCase { </D:lockinfo>'); return $request; - } - function getPutRequest($lockToken) { - + public function getPutRequest($lockToken) + { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx', - 'HTTP_IF' => 'If: (' . $lockToken . ')', + 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx', + 'HTTP_IF' => 'If: ('.$lockToken.')', ]); $request->setBody('FAKE BODY'); - return $request; + return $request; } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php index dbbf6757a..b3a0ac9af 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Locks; use Sabre\DAV; @@ -7,63 +9,58 @@ use Sabre\HTTP; require_once 'Sabre/DAV/AbstractServer.php'; -class PluginTest extends DAV\AbstractServer { - +class PluginTest extends DAV\AbstractServer +{ /** * @var Plugin */ protected $locksPlugin; - function setUp() { - + public function setUp() + { parent::setUp(); - $locksBackend = new Backend\File(SABRE_TEMPDIR . '/locksdb'); + $locksBackend = new Backend\File(SABRE_TEMPDIR.'/locksdb'); $locksPlugin = new Plugin($locksBackend); $this->server->addPlugin($locksPlugin); $this->locksPlugin = $locksPlugin; - } - function testGetInfo() { - + public function testGetInfo() + { $this->assertArrayHasKey( 'name', $this->locksPlugin->getPluginInfo() ); - } - function testGetFeatures() { - + public function testGetFeatures() + { $this->assertEquals([2], $this->locksPlugin->getFeatures()); - } - function testGetHTTPMethods() { - + public function testGetHTTPMethods() + { $this->assertEquals(['LOCK', 'UNLOCK'], $this->locksPlugin->getHTTPMethods('')); - } - function testLockNoBody() { - + public function testLockNoBody() + { $request = new HTTP\Request('LOCK', '/test.txt'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders() ); $this->assertEquals(400, $this->response->status); - } - function testLock() { - + public function testLock() + { $request = new HTTP\Request('LOCK', '/test.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> @@ -78,11 +75,11 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); - $this->assertEquals(200, $this->response->status, 'Got an incorrect status back. Response body: ' . $this->response->body); + $this->assertEquals(200, $this->response->status, 'Got an incorrect status back. Response body: '.$this->response->body); - $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body); + $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", 'xmlns\\1="urn:DAV"', $this->response->body); $xml = simplexml_load_string($body); $xml->registerXPathNamespace('d', 'urn:DAV'); @@ -105,22 +102,21 @@ class PluginTest extends DAV\AbstractServer { foreach ($elements as $elem) { $data = $xml->xpath($elem); - $this->assertEquals(1, count($data), 'We expected 1 match for the xpath expression "' . $elem . '". ' . count($data) . ' were found. Full response body: ' . $this->response->body); + $this->assertEquals(1, count($data), 'We expected 1 match for the xpath expression "'.$elem.'". '.count($data).' were found. Full response body: '.$this->response->body); } $depth = $xml->xpath('/d:prop/d:lockdiscovery/d:activelock/d:depth'); - $this->assertEquals('infinity', (string)$depth[0]); + $this->assertEquals('infinity', (string) $depth[0]); $token = $xml->xpath('/d:prop/d:lockdiscovery/d:activelock/d:locktoken/d:href'); - $this->assertEquals($this->response->getHeader('Lock-Token'), '<' . (string)$token[0] . '>', 'Token in response body didn\'t match token in response header.'); - + $this->assertEquals($this->response->getHeader('Lock-Token'), '<'.(string) $token[0].'>', 'Token in response body didn\'t match token in response header.'); } /** * @depends testLock */ - function testDoubleLock() { - + public function testDoubleLock() + { $request = new HTTP\Request('LOCK', '/test.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> @@ -141,15 +137,14 @@ class PluginTest extends DAV\AbstractServer { $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertEquals(423, $this->response->status, 'Full response: ' . $this->response->body); - + $this->assertEquals(423, $this->response->status, 'Full response: '.$this->response->body); } /** * @depends testLock */ - function testLockRefresh() { - + public function testLockRefresh() + { $request = new HTTP\Request('LOCK', '/test.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> @@ -168,7 +163,7 @@ class PluginTest extends DAV\AbstractServer { $this->response = new HTTP\ResponseMock(); $this->server->httpResponse = $this->response; - $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . ')']); + $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '('.$lockToken.')']); $request->setBody(''); $this->server->httpRequest = $request; @@ -176,15 +171,14 @@ class PluginTest extends DAV\AbstractServer { $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertEquals(200, $this->response->status, 'We received an incorrect status code. Full response body: ' . $this->response->getBody()); - + $this->assertEquals(200, $this->response->status, 'We received an incorrect status code. Full response body: '.$this->response->getBody()); } /** * @depends testLock */ - function testLockRefreshBadToken() { - + public function testLockRefreshBadToken() + { $request = new HTTP\Request('LOCK', '/test.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> @@ -203,7 +197,7 @@ class PluginTest extends DAV\AbstractServer { $this->response = new HTTP\ResponseMock(); $this->server->httpResponse = $this->response; - $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . 'foobar) (<opaquelocktoken:anotherbadtoken>)']); + $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '('.$lockToken.'foobar) (<opaquelocktoken:anotherbadtoken>)']); $request->setBody(''); $this->server->httpRequest = $request; @@ -211,15 +205,14 @@ class PluginTest extends DAV\AbstractServer { $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertEquals(423, $this->response->getStatus(), 'We received an incorrect status code. Full response body: ' . $this->response->getBody()); - + $this->assertEquals(423, $this->response->getStatus(), 'We received an incorrect status code. Full response body: '.$this->response->getBody()); } /** * @depends testLock */ - function testLockNoFile() { - + public function testLockNoFile() + { $request = new HTTP\Request('LOCK', '/notfound.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> @@ -234,57 +227,54 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(201, $this->response->status); - } /** * @depends testLock */ - function testUnlockNoToken() { - + public function testUnlockNoToken() + { $request = new HTTP\Request('UNLOCK', '/test.txt'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders() ); $this->assertEquals(400, $this->response->status); - } /** * @depends testLock */ - function testUnlockBadToken() { - + public function testUnlockBadToken() + { $request = new HTTP\Request('UNLOCK', '/test.txt', ['Lock-Token' => '<opaquelocktoken:blablabla>']); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders() ); - $this->assertEquals(409, $this->response->status, 'Got an incorrect status code. Full response body: ' . $this->response->body); - + $this->assertEquals(409, $this->response->status, 'Got an incorrect status code. Full response body: '.$this->response->body); } /** * @depends testLock */ - function testLockPutNoToken() { - + public function testLockPutNoToken() + { $request = new HTTP\Request('LOCK', '/test.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> @@ -299,7 +289,7 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); @@ -309,17 +299,16 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(423, $this->response->status); - } /** * @depends testLock */ - function testUnlock() { - + public function testUnlock() + { $request = new HTTP\Request('LOCK', '/test.txt'); $this->server->httpRequest = $request; @@ -340,22 +329,20 @@ class PluginTest extends DAV\AbstractServer { $this->server->httpResponse = new HTTP\ResponseMock(); $this->server->invokeMethod($request, $this->server->httpResponse); - $this->assertEquals(204, $this->server->httpResponse->status, 'Got an incorrect status code. Full response body: ' . $this->response->body); + $this->assertEquals(204, $this->server->httpResponse->status, 'Got an incorrect status code. Full response body: '.$this->response->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->server->httpResponse->getHeaders() ); - - } /** * @depends testLock */ - function testUnlockWindowsBug() { - + public function testUnlockWindowsBug() + { $request = new HTTP\Request('LOCK', '/test.txt'); $this->server->httpRequest = $request; @@ -379,26 +366,21 @@ class PluginTest extends DAV\AbstractServer { $this->server->httpResponse = new HTTP\ResponseMock(); $this->server->invokeMethod($request, $this->server->httpResponse); - $this->assertEquals(204, $this->server->httpResponse->status, 'Got an incorrect status code. Full response body: ' . $this->response->body); + $this->assertEquals(204, $this->server->httpResponse->status, 'Got an incorrect status code. Full response body: '.$this->response->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->server->httpResponse->getHeaders() ); - - } /** * @depends testLock */ - function testLockRetainOwner() { - - $request = HTTP\Sapi::createFromServerArray([ - 'REQUEST_URI' => '/test.txt', - 'REQUEST_METHOD' => 'LOCK', - ]); + public function testLockRetainOwner() + { + $request = new HTTP\Request('LOCK', '/test.txt'); $this->server->httpRequest = $request; $request->setBody('<?xml version="1.0"?> @@ -414,21 +396,14 @@ class PluginTest extends DAV\AbstractServer { $locks = $this->locksPlugin->getLocks('test.txt'); $this->assertEquals(1, count($locks)); $this->assertEquals('Evert', $locks[0]->owner); - - } /** * @depends testLock */ - function testLockPutBadToken() { - - $serverVars = [ - 'REQUEST_URI' => '/test.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockPutBadToken() + { + $request = new HTTP\Request('LOCK', '/test.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -442,40 +417,30 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/test.txt', - 'REQUEST_METHOD' => 'PUT', - 'HTTP_IF' => '(<opaquelocktoken:token1>)', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('PUT', '/test.txt', [ + 'If' => '(<opaquelocktoken:token1>)', + ]); $request->setBody('newbody'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); // $this->assertEquals('412 Precondition failed',$this->response->status); $this->assertEquals(423, $this->response->status); - } /** * @depends testLock */ - function testLockDeleteParent() { - - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockDeleteParent() + { + $request = new HTTP\Request('LOCK', '/dir/child.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -489,34 +454,24 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir', - 'REQUEST_METHOD' => 'DELETE', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('DELETE', '/dir'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(423, $this->response->status); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - } + /** * @depends testLock */ - function testLockDeleteSucceed() { - - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockDeleteSucceed() + { + $request = new HTTP\Request('LOCK', '/dir/child.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -530,36 +485,26 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'DELETE', - 'HTTP_IF' => '(' . $this->response->getHeader('Lock-Token') . ')', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('DELETE', '/dir/child.txt', [ + 'If' => '('.$this->response->getHeader('Lock-Token').')', + ]); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(204, $this->response->status); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - } /** * @depends testLock */ - function testLockCopyLockSource() { - - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockCopyLockSource() + { + $request = new HTTP\Request('LOCK', '/dir/child.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -573,35 +518,27 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'COPY', - 'HTTP_DESTINATION' => '/dir/child2.txt', - ]; + $request = new HTTP\Request('COPY', '/dir/child.txt', [ + 'Destination' => '/dir/child2.txt', + ]); - $request = HTTP\Sapi::createFromServerArray($serverVars); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(201, $this->response->status, 'Copy must succeed if only the source is locked, but not the destination'); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - } + /** * @depends testLock */ - function testLockCopyLockDestination() { - - $serverVars = [ - 'REQUEST_URI' => '/dir/child2.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockCopyLockDestination() + { + $request = new HTTP\Request('LOCK', '/dir/child2.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -615,36 +552,26 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(201, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'COPY', - 'HTTP_DESTINATION' => '/dir/child2.txt', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('COPY', '/dir/child.txt', [ + 'Destination' => '/dir/child2.txt', + ]); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(423, $this->response->status, 'Copy must succeed if only the source is locked, but not the destination'); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - } /** * @depends testLock */ - function testLockMoveLockSourceLocked() { - - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockMoveLockSourceLocked() + { + $request = new HTTP\Request('LOCK', '/dir/child.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -658,36 +585,26 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'MOVE', - 'HTTP_DESTINATION' => '/dir/child2.txt', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('MOVE', '/dir/child.txt', [ + 'Destination' => '/dir/child2.txt', + ]); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(423, $this->response->status, 'Copy must succeed if only the source is locked, but not the destination'); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - } /** * @depends testLock */ - function testLockMoveLockSourceSucceed() { - - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockMoveLockSourceSucceed() + { + $request = new HTTP\Request('LOCK', '/dir/child.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -701,36 +618,26 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'MOVE', - 'HTTP_DESTINATION' => '/dir/child2.txt', - 'HTTP_IF' => '(' . $this->response->getHeader('Lock-Token') . ')', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('MOVE', '/dir/child.txt', [ + 'Destination' => '/dir/child2.txt', + 'If' => '('.$this->response->getHeader('Lock-Token').')', + ]); $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(201, $this->response->status, 'A valid lock-token was provided for the source, so this MOVE operation must succeed. Full response body: ' . $this->response->body); - + $this->assertEquals(201, $this->response->status, 'A valid lock-token was provided for the source, so this MOVE operation must succeed. Full response body: '.$this->response->body); } /** * @depends testLock */ - function testLockMoveLockDestination() { - - $serverVars = [ - 'REQUEST_URI' => '/dir/child2.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockMoveLockDestination() + { + $request = new HTTP\Request('LOCK', '/dir/child2.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -744,36 +651,28 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(201, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'MOVE', - 'HTTP_DESTINATION' => '/dir/child2.txt', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('MOVE', '/dir/child.txt', [ + 'Destination' => '/dir/child2.txt', + ]); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(423, $this->response->status, 'Copy must succeed if only the source is locked, but not the destination'); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - } + /** * @depends testLock */ - function testLockMoveLockParent() { - - $serverVars = [ - 'REQUEST_URI' => '/dir', - 'REQUEST_METHOD' => 'LOCK', - 'HTTP_DEPTH' => 'infinite', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockMoveLockParent() + { + $request = new HTTP\Request('LOCK', '/dir', [ + 'Depth' => 'infinite', + ]); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -787,37 +686,27 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/dir/child.txt', - 'REQUEST_METHOD' => 'MOVE', - 'HTTP_DESTINATION' => '/dir/child2.txt', - 'HTTP_IF' => '</dir> (' . $this->response->getHeader('Lock-Token') . ')', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('MOVE', '/dir/child.txt', [ + 'Destination' => '/dir/child2.txt', + 'If' => '</dir> ('.$this->response->getHeader('Lock-Token').')', + ]); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(201, $this->response->status, 'We locked the parent of both the source and destination, but the move didn\'t succeed.'); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - } /** * @depends testLock */ - function testLockPutGoodToken() { - - $serverVars = [ - 'REQUEST_URI' => '/test.txt', - 'REQUEST_METHOD' => 'LOCK', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testLockPutGoodToken() + { + $request = new HTTP\Request('LOCK', '/test.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> <D:lockscope><D:exclusive/></D:lockscope> @@ -831,33 +720,28 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(200, $this->response->status); - $serverVars = [ - 'REQUEST_URI' => '/test.txt', - 'REQUEST_METHOD' => 'PUT', - 'HTTP_IF' => '(' . $this->response->getHeader('Lock-Token') . ')', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('PUT', '/test.txt', [ + 'If' => '('.$this->response->getHeader('Lock-Token').')', + ]); $request->setBody('newbody'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(204, $this->response->status); - } /** * @depends testLock */ - function testLockPutUnrelatedToken() { - + public function testLockPutUnrelatedToken() + { $request = new HTTP\Request('LOCK', '/unrelated.txt'); $request->setBody('<?xml version="1.0"?> <D:lockinfo xmlns:D="DAV:"> @@ -872,132 +756,109 @@ class PluginTest extends DAV\AbstractServer { $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(201, $this->response->getStatus()); $request = new HTTP\Request( 'PUT', '/test.txt', - ['If' => '</unrelated.txt> (' . $this->response->getHeader('Lock-Token') . ')'] + ['If' => '</unrelated.txt> ('.$this->response->getHeader('Lock-Token').')'] ); $request->setBody('newbody'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals(204, $this->response->status); - } - function testPutWithIncorrectETag() { - - $serverVars = [ - 'REQUEST_URI' => '/test.txt', - 'REQUEST_METHOD' => 'PUT', - 'HTTP_IF' => '(["etag1"])', - ]; - - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testPutWithIncorrectETag() + { + $request = new HTTP\Request('PUT', '/test.txt', [ + 'If' => '(["etag1"])', + ]); $request->setBody('newbody'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(412, $this->response->status); - } /** * @depends testPutWithIncorrectETag */ - function testPutWithCorrectETag() { - + public function testPutWithCorrectETag() + { // We need an ETag-enabled file node. $tree = new DAV\Tree(new DAV\FSExt\Directory(SABRE_TEMPDIR)); $this->server->tree = $tree; - $filename = SABRE_TEMPDIR . '/test.txt'; + $filename = SABRE_TEMPDIR.'/test.txt'; $etag = sha1( - fileinode($filename) . - filesize($filename) . + fileinode($filename). + filesize($filename). filemtime($filename) ); - $serverVars = [ - 'REQUEST_URI' => '/test.txt', - 'REQUEST_METHOD' => 'PUT', - 'HTTP_IF' => '(["' . $etag . '"])', - ]; - $request = HTTP\Sapi::createFromServerArray($serverVars); + $request = new HTTP\Request('PUT', '/test.txt', [ + 'If' => '(["'.$etag.'"])', + ]); $request->setBody('newbody'); + $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(204, $this->response->status, 'Incorrect status received. Full response body:' . $this->response->body); - + $this->assertEquals(204, $this->response->status, 'Incorrect status received. Full response body:'.$this->response->body); } - function testDeleteWithETagOnCollection() { - - $serverVars = [ - 'REQUEST_URI' => '/dir', - 'REQUEST_METHOD' => 'DELETE', - 'HTTP_IF' => '(["etag1"])', - ]; - $request = HTTP\Sapi::createFromServerArray($serverVars); + public function testDeleteWithETagOnCollection() + { + $request = new HTTP\Request('DELETE', '/dir', [ + 'If' => '(["etag1"])', + ]); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals(412, $this->response->status); - } - function testGetTimeoutHeader() { - - $request = HTTP\Sapi::createFromServerArray([ - 'HTTP_TIMEOUT' => 'second-100', + public function testGetTimeoutHeader() + { + $request = new HTTP\Request('LOCK', '/foo/bar', [ + 'Timeout' => 'second-100', ]); $this->server->httpRequest = $request; $this->assertEquals(100, $this->locksPlugin->getTimeoutHeader()); - } - function testGetTimeoutHeaderTwoItems() { - - $request = HTTP\Sapi::createFromServerArray([ - 'HTTP_TIMEOUT' => 'second-5, infinite', + public function testGetTimeoutHeaderTwoItems() + { + $request = new HTTP\Request('LOCK', '/foo/bar', [ + 'Timeout' => 'second-5, infinite', ]); - $this->server->httpRequest = $request; $this->assertEquals(5, $this->locksPlugin->getTimeoutHeader()); - } - function testGetTimeoutHeaderInfinite() { - - $request = HTTP\Sapi::createFromServerArray([ - 'HTTP_TIMEOUT' => 'infinite, second-5', + public function testGetTimeoutHeaderInfinite() + { + $request = new HTTP\Request('LOCK', '/foo/bar', [ + 'Timeout' => 'infinite, second-5', ]); - $this->server->httpRequest = $request; $this->assertEquals(LockInfo::TIMEOUT_INFINITE, $this->locksPlugin->getTimeoutHeader()); - } /** - * @expectedException Sabre\DAV\Exception\BadRequest + * @expectedException \Sabre\DAV\Exception\BadRequest */ - function testGetTimeoutHeaderInvalid() { - - $request = HTTP\Sapi::createFromServerArray([ - 'HTTP_TIMEOUT' => 'yourmom', - ]); + public function testGetTimeoutHeaderInvalid() + { + $request = new HTTP\Request('GET', '/', ['Timeout' => 'yourmom']); $this->server->httpRequest = $request; $this->locksPlugin->getTimeoutHeader(); - } - - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php index fded5e474..e0bdecc09 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Mock; use Sabre\DAV; @@ -19,22 +21,21 @@ use Sabre\DAV; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Collection extends DAV\Collection { - +class Collection extends DAV\Collection +{ protected $name; protected $children; protected $parent; /** - * Creates the object + * Creates the object. * - * @param string $name - * @param array $children + * @param string $name + * @param array $children * @param Collection $parent - * @return void */ - function __construct($name, array $children = [], Collection $parent = null) { - + public function __construct($name, array $children = [], Collection $parent = null) + { $this->name = $name; foreach ($children as $key => $value) { if (is_string($value)) { @@ -48,7 +49,6 @@ class Collection extends DAV\Collection { } } $this->parent = $parent; - } /** @@ -58,14 +58,13 @@ class Collection extends DAV\Collection { * * @return string */ - function getName() { - + public function getName() + { return $this->name; - } /** - * Creates a new file in the directory + * Creates a new file in the directory. * * Data will either be supplied as a stream resource, or in certain cases * as a string. Keep in mind that you may have to support either. @@ -84,41 +83,39 @@ class Collection extends DAV\Collection { * return the same contents of what was submitted here, you are strongly * recommended to omit the ETag. * - * @param string $name Name of the file + * @param string $name Name of the file * @param resource|string $data Initial payload - * @return null|string + * + * @return string|null */ - function createFile($name, $data = null) { - + public function createFile($name, $data = '') + { if (is_resource($data)) { $data = stream_get_contents($data); } $this->children[] = new File($name, $data, $this); - return '"' . md5($data) . '"'; + return '"'.md5($data).'"'; } /** - * Creates a new subdirectory + * Creates a new subdirectory. * * @param string $name - * @return void */ - function createDirectory($name) { - + public function createDirectory($name) + { $this->children[] = new self($name); - } /** - * Returns an array with all the child nodes + * Returns an array with all the child nodes. * * @return \Sabre\DAV\INode[] */ - function getChildren() { - + public function getChildren() + { return $this->children; - } /** @@ -126,43 +123,35 @@ class Collection extends DAV\Collection { * * @param \Sabre\DAV\INode $node */ - function addNode(\Sabre\DAV\INode $node) { - + public function addNode(\Sabre\DAV\INode $node) + { $this->children[] = $node; - } /** * Removes a childnode from this node. * * @param string $name - * @return void */ - function deleteChild($name) { - + public function deleteChild($name) + { foreach ($this->children as $key => $value) { - if ($value->getName() == $name) { unset($this->children[$key]); + return; } - } - } /** * Deletes this collection and all its children,. - * - * @return void */ - function delete() { - + public function delete() + { foreach ($this->getChildren() as $child) { $this->deleteChild($child->getName()); } $this->parent->deleteChild($this->getName()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php b/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php index a624b6b6b..d48ddaa92 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php @@ -1,11 +1,13 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Mock; use Sabre\DAV; /** - * Mock File + * Mock File. * * See the Collection in this directory for more details. * @@ -13,34 +15,32 @@ use Sabre\DAV; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class File extends DAV\File { - +class File extends DAV\File +{ protected $name; protected $contents; protected $parent; protected $lastModified; /** - * Creates the object + * Creates the object. * - * @param string $name - * @param resource $contents + * @param string $name + * @param resource $contents * @param Collection $parent - * @param int $lastModified - * @return void + * @param int $lastModified */ - function __construct($name, $contents, Collection $parent = null, $lastModified = -1) { - + public function __construct($name, $contents, Collection $parent = null, $lastModified = -1) + { $this->name = $name; $this->put($contents); $this->parent = $parent; - if ($lastModified === -1) { + if (-1 === $lastModified) { $lastModified = time(); } $this->lastModified = $lastModified; - } /** @@ -50,26 +50,23 @@ class File extends DAV\File { * * @return string */ - function getName() { - + public function getName() + { return $this->name; - } /** * Changes the name of the node. * * @param string $name - * @return void */ - function setName($name) { - + public function setName($name) + { $this->name = $name; - } /** - * Updates the data + * Updates the data. * * The data argument is a readable stream resource. * @@ -86,66 +83,59 @@ class File extends DAV\File { * return an ETag, and just return null. * * @param resource $data + * * @return string|null */ - function put($data) { - + public function put($data) + { if (is_resource($data)) { $data = stream_get_contents($data); } $this->contents = $data; - return '"' . md5($data) . '"'; + return '"'.md5($data).'"'; } /** - * Returns the data + * Returns the data. * * This method may either return a string or a readable stream resource * * @return mixed */ - function get() { - + public function get() + { return $this->contents; - } /** - * Returns the ETag for a file + * Returns the ETag for a file. * * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. * * Return null if the ETag can not effectively be determined - * - * @return void */ - function getETag() { - - return '"' . md5($this->contents) . '"'; - + public function getETag() + { + return '"'.md5($this->contents).'"'; } /** - * Returns the size of the node, in bytes + * Returns the size of the node, in bytes. * * @return int */ - function getSize() { - + public function getSize() + { return strlen($this->contents); - } /** - * Delete the node - * - * @return void + * Delete the node. */ - function delete() { - + public function delete() + { $this->parent->deleteChild($this->name); - } /** @@ -154,10 +144,8 @@ class File extends DAV\File { * * @return int */ - function getLastModified() { - + public function getLastModified() + { return $this->lastModified; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php index 3213fcb1b..c993e609d 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\Mount; use Sabre\DAV; @@ -7,19 +9,18 @@ use Sabre\HTTP; require_once 'Sabre/DAV/AbstractServer.php'; -class PluginTest extends DAV\AbstractServer { - - function setUp() { - +class PluginTest extends DAV\AbstractServer +{ + public function setUp() + { parent::setUp(); $this->server->addPlugin(new Plugin()); - } - function testPassThrough() { - + public function testPassThrough() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'GET', ]; @@ -27,17 +28,16 @@ class PluginTest extends DAV\AbstractServer { $this->server->httpRequest = ($request); $this->server->exec(); - $this->assertEquals(501, $this->response->status, 'We expected GET to not be implemented for Directories. Response body: ' . $this->response->body); - + $this->assertEquals(501, $this->response->status, 'We expected GET to not be implemented for Directories. Response body: '.$this->response->body); } - function testMountResponse() { - + public function testMountResponse() + { $serverVars = [ - 'REQUEST_URI' => '/?mount', + 'REQUEST_URI' => '/?mount', 'REQUEST_METHOD' => 'GET', - 'QUERY_STRING' => 'mount', - 'HTTP_HOST' => 'example.org', + 'QUERY_STRING' => 'mount', + 'HTTP_HOST' => 'example.org', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -47,12 +47,10 @@ class PluginTest extends DAV\AbstractServer { $this->assertEquals(200, $this->response->status); $xml = simplexml_load_string($this->response->body); - $this->assertInstanceOf('SimpleXMLElement', $xml, 'Response was not a valid xml document. The list of errors:' . print_r(libxml_get_errors(), true) . '. xml body: ' . $this->response->body . '. What type we got: ' . gettype($xml) . ' class, if object: ' . get_class($xml)); + $this->assertInstanceOf('SimpleXMLElement', $xml, 'Response was not a valid xml document. The list of errors:'.print_r(libxml_get_errors(), true).'. xml body: '.$this->response->body.'. What type we got: '.gettype($xml).' class, if object: '.get_class($xml)); $xml->registerXPathNamespace('dm', 'http://purl.org/NET/webdav/mount'); $url = $xml->xpath('//dm:url'); - $this->assertEquals('http://example.org/', (string)$url[0]); - + $this->assertEquals('http://example.org/', (string) $url[0]); } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php index 15289ce52..6b6652967 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php @@ -1,100 +1,92 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; require_once 'Sabre/TestUtil.php'; -class ObjectTreeTest extends \PHPUnit_Framework_TestCase { - +class ObjectTreeTest extends \PHPUnit\Framework\TestCase +{ protected $tree; - function setup() { - + public function setup() + { \Sabre\TestUtil::clearTempDir(); - mkdir(SABRE_TEMPDIR . '/root'); - mkdir(SABRE_TEMPDIR . '/root/subdir'); - file_put_contents(SABRE_TEMPDIR . '/root/file.txt', 'contents'); - file_put_contents(SABRE_TEMPDIR . '/root/subdir/subfile.txt', 'subcontents'); - $rootNode = new FSExt\Directory(SABRE_TEMPDIR . '/root'); + mkdir(SABRE_TEMPDIR.'/root'); + mkdir(SABRE_TEMPDIR.'/root/subdir'); + file_put_contents(SABRE_TEMPDIR.'/root/file.txt', 'contents'); + file_put_contents(SABRE_TEMPDIR.'/root/subdir/subfile.txt', 'subcontents'); + $rootNode = new FSExt\Directory(SABRE_TEMPDIR.'/root'); $this->tree = new Tree($rootNode); - } - function teardown() { - + public function teardown() + { \Sabre\TestUtil::clearTempDir(); - } - function testGetRootNode() { - + public function testGetRootNode() + { $root = $this->tree->getNodeForPath(''); $this->assertInstanceOf('Sabre\\DAV\\FSExt\\Directory', $root); - } - function testGetSubDir() { - + public function testGetSubDir() + { $root = $this->tree->getNodeForPath('subdir'); $this->assertInstanceOf('Sabre\\DAV\\FSExt\\Directory', $root); - } - function testCopyFile() { - - $this->tree->copy('file.txt', 'file2.txt'); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/root/file2.txt')); - $this->assertEquals('contents', file_get_contents(SABRE_TEMPDIR . '/root/file2.txt')); - + public function testCopyFile() + { + $this->tree->copy('file.txt', 'file2.txt'); + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/file2.txt')); + $this->assertEquals('contents', file_get_contents(SABRE_TEMPDIR.'/root/file2.txt')); } /** * @depends testCopyFile */ - function testCopyDirectory() { - - $this->tree->copy('subdir', 'subdir2'); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/root/subdir2')); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/root/subdir2/subfile.txt')); - $this->assertEquals('subcontents', file_get_contents(SABRE_TEMPDIR . '/root/subdir2/subfile.txt')); - + public function testCopyDirectory() + { + $this->tree->copy('subdir', 'subdir2'); + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2')); + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2/subfile.txt')); + $this->assertEquals('subcontents', file_get_contents(SABRE_TEMPDIR.'/root/subdir2/subfile.txt')); } /** * @depends testCopyFile */ - function testMoveFile() { - - $this->tree->move('file.txt', 'file2.txt'); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/root/file2.txt')); - $this->assertFalse(file_exists(SABRE_TEMPDIR . '/root/file.txt')); - $this->assertEquals('contents', file_get_contents(SABRE_TEMPDIR . '/root/file2.txt')); - + public function testMoveFile() + { + $this->tree->move('file.txt', 'file2.txt'); + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/file2.txt')); + $this->assertFalse(file_exists(SABRE_TEMPDIR.'/root/file.txt')); + $this->assertEquals('contents', file_get_contents(SABRE_TEMPDIR.'/root/file2.txt')); } /** * @depends testMoveFile */ - function testMoveFileNewParent() { - - $this->tree->move('file.txt', 'subdir/file2.txt'); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/root/subdir/file2.txt')); - $this->assertFalse(file_exists(SABRE_TEMPDIR . '/root/file.txt')); - $this->assertEquals('contents', file_get_contents(SABRE_TEMPDIR . '/root/subdir/file2.txt')); - + public function testMoveFileNewParent() + { + $this->tree->move('file.txt', 'subdir/file2.txt'); + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir/file2.txt')); + $this->assertFalse(file_exists(SABRE_TEMPDIR.'/root/file.txt')); + $this->assertEquals('contents', file_get_contents(SABRE_TEMPDIR.'/root/subdir/file2.txt')); } /** * @depends testCopyDirectory */ - function testMoveDirectory() { - - $this->tree->move('subdir', 'subdir2'); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/root/subdir2')); - $this->assertTrue(file_exists(SABRE_TEMPDIR . '/root/subdir2/subfile.txt')); - $this->assertFalse(file_exists(SABRE_TEMPDIR . '/root/subdir')); - $this->assertEquals('subcontents', file_get_contents(SABRE_TEMPDIR . '/root/subdir2/subfile.txt')); - + public function testMoveDirectory() + { + $this->tree->move('subdir', 'subdir2'); + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2')); + $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2/subfile.txt')); + $this->assertFalse(file_exists(SABRE_TEMPDIR.'/root/subdir')); + $this->assertEquals('subcontents', file_get_contents(SABRE_TEMPDIR.'/root/subdir2/subfile.txt')); } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php index eff1e7d67..72fdb5ec8 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php @@ -1,20 +1,21 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\PartialUpdate; use Sabre\DAV; -class FileMock implements IPatchSupport { - +class FileMock implements IPatchSupport +{ protected $data = ''; - function put($str) { - + public function put($str) + { if (is_resource($str)) { $str = stream_get_contents($str); } $this->data = $str; - } /** @@ -40,83 +41,71 @@ class FileMock implements IPatchSupport { * time. * * @param resource|string $data - * @param int $rangeType - * @param int $offset + * @param int $rangeType + * @param int $offset + * * @return string|null */ - function patch($data, $rangeType, $offset = null) { - + public function patch($data, $rangeType, $offset = null) + { if (is_resource($data)) { $data = stream_get_contents($data); } switch ($rangeType) { - - case 1 : + case 1: $this->data .= $data; break; - case 3 : + case 3: // Turn the offset into an offset-offset. $offset = strlen($this->data) - $offset; - // No break is intentional - case 2 : + // no break is intentional + case 2: $this->data = - substr($this->data, 0, $offset) . - $data . + substr($this->data, 0, $offset). + $data. substr($this->data, $offset + strlen($data)); break; - } - } - function get() { - + public function get() + { return $this->data; - } - function getContentType() { - + public function getContentType() + { return 'text/plain'; - } - function getSize() { - + public function getSize() + { return strlen($this->data); - } - function getETag() { - - return '"' . $this->data . '"'; - + public function getETag() + { + return '"'.$this->data.'"'; } - function delete() { - + public function delete() + { throw new DAV\Exception\MethodNotAllowed(); - } - function setName($name) { - + public function setName($name) + { throw new DAV\Exception\MethodNotAllowed(); - } - function getName() { - + public function getName() + { return 'partial'; - } - function getLastModified() { - + public function getLastModified() + { return null; - } - - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php index 5bd696416..63d692ec9 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php @@ -1,19 +1,20 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\PartialUpdate; -use Sabre\DAV; use Sabre\HTTP; require_once 'Sabre/DAV/PartialUpdate/FileMock.php'; -class PluginTest extends \Sabre\DAVServerTest { - +class PluginTest extends \Sabre\DAVServerTest +{ protected $node; protected $plugin; - function setUp() { - + public function setUp() + { $this->node = new FileMock(); $this->tree[] = $this->node; @@ -21,38 +22,33 @@ class PluginTest extends \Sabre\DAVServerTest { $this->plugin = new Plugin(); $this->server->addPlugin($this->plugin); - - - } - function testInit() { - + public function testInit() + { $this->assertEquals('partialupdate', $this->plugin->getPluginName()); $this->assertEquals(['sabredav-partialupdate'], $this->plugin->getFeatures()); $this->assertEquals([ - 'PATCH' + 'PATCH', ], $this->plugin->getHTTPMethods('partial')); $this->assertEquals([ ], $this->plugin->getHTTPMethods('')); - } - function testPatchNoRange() { - + public function testPatchNoRange() + { $this->node->put('aaaaaaaa'); $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PATCH', - 'REQUEST_URI' => '/partial', + 'REQUEST_URI' => '/partial', ]); $response = $this->request($request); - $this->assertEquals(400, $response->status, 'Full response body:' . $response->body); - + $this->assertEquals(400, $response->status, 'Full response body:'.$response->body); } - function testPatchNotSupported() { - + public function testPatchNotSupported() + { $this->node->put('aaaaaaaa'); $request = new HTTP\Request('PATCH', '/', ['X-Update-Range' => '3-4']); $request->setBody( @@ -60,12 +56,11 @@ class PluginTest extends \Sabre\DAVServerTest { ); $response = $this->request($request); - $this->assertEquals(405, $response->status, 'Full response body:' . $response->body); - + $this->assertEquals(405, $response->status, 'Full response body:'.$response->body); } - function testPatchNoContentType() { - + public function testPatchNoContentType() + { $this->node->put('aaaaaaaa'); $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-4']); $request->setBody( @@ -73,12 +68,11 @@ class PluginTest extends \Sabre\DAVServerTest { ); $response = $this->request($request); - $this->assertEquals(415, $response->status, 'Full response body:' . $response->body); - + $this->assertEquals(415, $response->status, 'Full response body:'.$response->body); } - function testPatchBadRange() { - + public function testPatchBadRange() + { $this->node->put('aaaaaaaa'); $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-4', 'Content-Type' => 'application/x-sabredav-partialupdate', 'Content-Length' => '3']); $request->setBody( @@ -86,12 +80,11 @@ class PluginTest extends \Sabre\DAVServerTest { ); $response = $this->request($request); - $this->assertEquals(416, $response->status, 'Full response body:' . $response->body); - + $this->assertEquals(416, $response->status, 'Full response body:'.$response->body); } - function testPatchNoLength() { - + public function testPatchNoLength() + { $this->node->put('aaaaaaaa'); $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-5', 'Content-Type' => 'application/x-sabredav-partialupdate']); $request->setBody( @@ -99,12 +92,11 @@ class PluginTest extends \Sabre\DAVServerTest { ); $response = $this->request($request); - $this->assertEquals(411, $response->status, 'Full response body:' . $response->body); - + $this->assertEquals(411, $response->status, 'Full response body:'.$response->body); } - function testPatchSuccess() { - + public function testPatchSuccess() + { $this->node->put('aaaaaaaa'); $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-5', 'Content-Type' => 'application/x-sabredav-partialupdate', 'Content-Length' => 3]); $request->setBody( @@ -112,13 +104,12 @@ class PluginTest extends \Sabre\DAVServerTest { ); $response = $this->request($request); - $this->assertEquals(204, $response->status, 'Full response body:' . $response->body); + $this->assertEquals(204, $response->status, 'Full response body:'.$response->body); $this->assertEquals('aaabbbaa', $this->node->get()); - } - function testPatchNoEndRange() { - + public function testPatchNoEndRange() + { $this->node->put('aaaaa'); $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-', 'Content-Type' => 'application/x-sabredav-partialupdate', 'Content-Length' => '3']); $request->setBody( @@ -127,9 +118,7 @@ class PluginTest extends \Sabre\DAVServerTest { $response = $this->request($request); - $this->assertEquals(204, $response->getStatus(), 'Full response body:' . $response->getBodyAsString()); + $this->assertEquals(204, $response->getStatus(), 'Full response body:'.$response->getBodyAsString()); $this->assertEquals('aaabbb', $this->node->get()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php index 2c6274173..56b2d576f 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV\PartialUpdate; use Sabre\DAV\FSExt\File; @@ -12,14 +14,14 @@ use Sabre\HTTP; * * See: http://sabre.io/dav/http-patch/ */ -class SpecificationTest extends \PHPUnit_Framework_TestCase { - +class SpecificationTest extends \PHPUnit\Framework\TestCase +{ protected $server; - function setUp() { - + public function setUp() + { $tree = [ - new File(SABRE_TEMPDIR . '/foobar.txt') + new File(SABRE_TEMPDIR.'/foobar.txt'), ]; $server = new Server($tree); $server->debugExceptions = true; @@ -28,32 +30,30 @@ class SpecificationTest extends \PHPUnit_Framework_TestCase { $tree[0]->put('1234567890'); $this->server = $server; - } - function tearDown() { - + public function tearDown() + { \Sabre\TestUtil::clearTempDir(); - } /** * @param string $headerValue * @param string $httpStatus * @param string $endResult - * @param int $contentLength + * @param int $contentLength * * @dataProvider data */ - function testUpdateRange($headerValue, $httpStatus, $endResult, $contentLength = 4) { - + public function testUpdateRange($headerValue, $httpStatus, $endResult, $contentLength = 4) + { $headers = [ - 'Content-Type' => 'application/x-sabredav-partialupdate', + 'Content-Type' => 'application/x-sabredav-partialupdate', 'X-Update-Range' => $headerValue, ]; if ($contentLength) { - $headers['Content-Length'] = (string)$contentLength; + $headers['Content-Length'] = (string) $contentLength; } $request = new HTTP\Request('PATCH', '/foobar.txt', $headers, '----'); @@ -64,15 +64,14 @@ class SpecificationTest extends \PHPUnit_Framework_TestCase { $this->server->sapi = new HTTP\SapiMock(); $this->server->exec(); - $this->assertEquals($httpStatus, $this->server->httpResponse->status, 'Incorrect http status received: ' . $this->server->httpResponse->body); + $this->assertEquals($httpStatus, $this->server->httpResponse->status, 'Incorrect http status received: '.$this->server->httpResponse->body); if (!is_null($endResult)) { - $this->assertEquals($endResult, file_get_contents(SABRE_TEMPDIR . '/foobar.txt')); + $this->assertEquals($endResult, file_get_contents(SABRE_TEMPDIR.'/foobar.txt')); } - } - function data() { - + public function data() + { return [ // Problems ['foo', 400, null], @@ -86,9 +85,6 @@ class SpecificationTest extends \PHPUnit_Framework_TestCase { ['bytes=-2', 204, '12345678----'], ['bytes=2-', 204, '12----7890'], ['append', 204, '1234567890----'], - ]; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php index 42759647a..7d55ea02e 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php @@ -1,36 +1,36 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; require_once 'Sabre/DAV/AbstractServer.php'; -class ServerEventsTest extends AbstractServer { - +class ServerEventsTest extends AbstractServer +{ private $tempPath; private $exception; - function testAfterBind() { - + public function testAfterBind() + { $this->server->on('afterBind', [$this, 'afterBindHandler']); $newPath = 'afterBind'; $this->tempPath = ''; $this->server->createFile($newPath, 'body'); $this->assertEquals($newPath, $this->tempPath); - } - function afterBindHandler($path) { - - $this->tempPath = $path; - + public function afterBindHandler($path) + { + $this->tempPath = $path; } - function testAfterResponse() { - + public function testAfterResponse() + { $mock = $this->getMockBuilder('stdClass') ->setMethods(['afterResponseCallback']) ->getMock(); @@ -40,74 +40,65 @@ class ServerEventsTest extends AbstractServer { $this->server->httpRequest = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'GET', - 'REQUEST_URI' => '/test.txt', + 'REQUEST_URI' => '/test.txt', ]); $this->server->exec(); - } - function testBeforeBindCancel() { - + public function testBeforeBindCancel() + { $this->server->on('beforeBind', [$this, 'beforeBindCancelHandler']); $this->assertFalse($this->server->createFile('bla', 'body')); // Also testing put() $req = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'PUT', - 'REQUEST_URI' => '/barbar', + 'REQUEST_URI' => '/barbar', ]); $this->server->httpRequest = $req; $this->server->exec(); $this->assertEquals(500, $this->server->httpResponse->getStatus()); - } - function beforeBindCancelHandler($path) { - + public function beforeBindCancelHandler($path) + { return false; - } - function testException() { - + public function testException() + { $this->server->on('exception', [$this, 'exceptionHandler']); $req = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'GET', - 'REQUEST_URI' => '/not/exisitng', + 'REQUEST_URI' => '/not/exisitng', ]); $this->server->httpRequest = $req; $this->server->exec(); $this->assertInstanceOf('Sabre\\DAV\\Exception\\NotFound', $this->exception); - } - function exceptionHandler(Exception $exception) { - + public function exceptionHandler(Exception $exception) + { $this->exception = $exception; - } - function testMethod() { - + public function testMethod() + { $k = 1; - $this->server->on('method', function($request, $response) use (&$k) { - - $k += 1; + $this->server->on('method:*', function ($request, $response) use (&$k) { + ++$k; return false; - }); - $this->server->on('method', function($request, $response) use (&$k) { - + $this->server->on('method:*', function ($request, $response) use (&$k) { $k += 2; return false; - }); try { @@ -116,11 +107,10 @@ class ServerEventsTest extends AbstractServer { new HTTP\Response(), false ); - } catch (Exception $e) {} + } catch (Exception $e) { + } // Fun fact, PHP 7.1 changes the order when sorting-by-callback. $this->assertTrue($k >= 2 && $k <= 3); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php index 557eddbbc..8e5bc6a64 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php @@ -1,91 +1,90 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; -class ServerMKCOLTest extends AbstractServer { - - function testMkcol() { - +class ServerMKCOLTest extends AbstractServer +{ + public function testMkcol() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', + 'REQUEST_URI' => '/testcol', 'REQUEST_METHOD' => 'MKCOL', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); - $request->setBody(""); + $request->setBody(''); $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->response->getHeaders()); $this->assertEquals(201, $this->response->status); $this->assertEquals('', $this->response->body); - $this->assertTrue(is_dir($this->tempDir . '/testcol')); - + $this->assertTrue(is_dir($this->tempDir.'/testcol')); } /** * @depends testMkcol */ - function testMKCOLUnknownBody() { - + public function testMKCOLUnknownBody() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', + 'REQUEST_URI' => '/testcol', 'REQUEST_METHOD' => 'MKCOL', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); - $request->setBody("Hello"); + $request->setBody('Hello'); $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); $this->assertEquals(415, $this->response->status); - } /** * @depends testMkcol */ - function testMKCOLBrokenXML() { - + public function testMKCOLBrokenXML() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', - 'REQUEST_METHOD' => 'MKCOL', + 'REQUEST_URI' => '/testcol', + 'REQUEST_METHOD' => 'MKCOL', 'HTTP_CONTENT_TYPE' => 'application/xml', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); - $request->setBody("Hello"); + $request->setBody('Hello'); $this->server->httpRequest = ($request); $this->server->exec(); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); $this->assertEquals(400, $this->response->getStatus(), $this->response->getBodyAsString()); - } /** * @depends testMkcol */ - function testMKCOLUnknownXML() { - + public function testMKCOLUnknownXML() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', - 'REQUEST_METHOD' => 'MKCOL', + 'REQUEST_URI' => '/testcol', + 'REQUEST_METHOD' => 'MKCOL', 'HTTP_CONTENT_TYPE' => 'application/xml', ]; @@ -96,21 +95,20 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); $this->assertEquals(400, $this->response->getStatus()); - } /** * @depends testMkcol */ - function testMKCOLNoResourceType() { - + public function testMKCOLNoResourceType() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', - 'REQUEST_METHOD' => 'MKCOL', + 'REQUEST_URI' => '/testcol', + 'REQUEST_METHOD' => 'MKCOL', 'HTTP_CONTENT_TYPE' => 'application/xml', ]; @@ -128,21 +126,20 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); - $this->assertEquals(400, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); - + $this->assertEquals(400, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); } /** * @depends testMkcol */ - function testMKCOLIncorrectResourceType() { - + public function testMKCOLIncorrectResourceType() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', - 'REQUEST_METHOD' => 'MKCOL', + 'REQUEST_URI' => '/testcol', + 'REQUEST_METHOD' => 'MKCOL', 'HTTP_CONTENT_TYPE' => 'application/xml', ]; @@ -160,21 +157,20 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); - $this->assertEquals(403, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); - + $this->assertEquals(403, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); } /** * @depends testMKCOLIncorrectResourceType */ - function testMKCOLSuccess() { - + public function testMKCOLSuccess() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', - 'REQUEST_METHOD' => 'MKCOL', + 'REQUEST_URI' => '/testcol', + 'REQUEST_METHOD' => 'MKCOL', 'HTTP_CONTENT_TYPE' => 'application/xml', ]; @@ -192,21 +188,20 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->response->getHeaders()); - $this->assertEquals(201, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); - + $this->assertEquals(201, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); } /** * @depends testMKCOLIncorrectResourceType */ - function testMKCOLWhiteSpaceResourceType() { - + public function testMKCOLWhiteSpaceResourceType() + { $serverVars = [ - 'REQUEST_URI' => '/testcol', - 'REQUEST_METHOD' => 'MKCOL', + 'REQUEST_URI' => '/testcol', + 'REQUEST_METHOD' => 'MKCOL', 'HTTP_CONTENT_TYPE' => 'application/xml', ]; @@ -226,20 +221,19 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Length' => ['0'], + 'Content-Length' => ['0'], ], $this->response->getHeaders()); - $this->assertEquals(201, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); - + $this->assertEquals(201, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); } /** * @depends testMKCOLIncorrectResourceType */ - function testMKCOLNoParent() { - + public function testMKCOLNoParent() + { $serverVars = [ - 'REQUEST_URI' => '/testnoparent/409me', + 'REQUEST_URI' => '/testnoparent/409me', 'REQUEST_METHOD' => 'MKCOL', ]; @@ -251,20 +245,19 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); - $this->assertEquals(409, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); - + $this->assertEquals(409, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); } /** * @depends testMKCOLIncorrectResourceType */ - function testMKCOLParentIsNoCollection() { - + public function testMKCOLParentIsNoCollection() + { $serverVars = [ - 'REQUEST_URI' => '/test.txt/409me', + 'REQUEST_URI' => '/test.txt/409me', 'REQUEST_METHOD' => 'MKCOL', ]; @@ -276,20 +269,19 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); - $this->assertEquals(409, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); - + $this->assertEquals(409, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); } /** * @depends testMKCOLIncorrectResourceType */ - function testMKCOLAlreadyExists() { - + public function testMKCOLAlreadyExists() + { $serverVars = [ - 'REQUEST_URI' => '/test.txt', + 'REQUEST_URI' => '/test.txt', 'REQUEST_METHOD' => 'MKCOL', ]; @@ -301,20 +293,19 @@ class ServerMKCOLTest extends AbstractServer { $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'], ], $this->response->getHeaders()); - $this->assertEquals(405, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); - + $this->assertEquals(405, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); } /** * @depends testMKCOLSuccess * @depends testMKCOLAlreadyExists */ - function testMKCOLAndProps() { - + public function testMKCOLAndProps() + { $request = new HTTP\Request( 'MKCOL', '/testcol', @@ -332,11 +323,11 @@ class ServerMKCOLTest extends AbstractServer { $this->server->httpRequest = ($request); $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Wrong statuscode received. Full response body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Wrong statuscode received. Full response body: '.$this->response->body); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); $responseBody = $this->response->getBodyAsString(); @@ -360,7 +351,5 @@ XML; $expected, $responseBody ); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php index fa67102cc..35de59e37 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; @@ -7,44 +9,40 @@ use Sabre\HTTP; require_once 'Sabre/DAV/AbstractServer.php'; require_once 'Sabre/DAV/TestPlugin.php'; -class ServerPluginTest extends AbstractServer { - +class ServerPluginTest extends AbstractServer +{ /** * @var Sabre\DAV\TestPlugin */ protected $testPlugin; - function setUp() { - + public function setUp() + { parent::setUp(); $testPlugin = new TestPlugin(); $this->server->addPlugin($testPlugin); $this->testPlugin = $testPlugin; - } - /** - */ - function testBaseClass() { - + public function testBaseClass() + { $p = new ServerPluginMock(); $this->assertEquals([], $p->getFeatures()); $this->assertEquals([], $p->getHTTPMethods('')); $this->assertEquals( [ - 'name' => 'Sabre\DAV\ServerPluginMock', + 'name' => 'Sabre\DAV\ServerPluginMock', 'description' => null, - 'link' => null + 'link' => null, ], $p->getPluginInfo() ); - } - function testOptions() { - + public function testOptions() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'OPTIONS', ]; @@ -53,56 +51,49 @@ class ServerPluginTest extends AbstractServer { $this->server->exec(); $this->assertEquals([ - 'DAV' => ['1, 3, extended-mkcol, drinking'], - 'MS-Author-Via' => ['DAV'], - 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT, BEER, WINE'], - 'Accept-Ranges' => ['bytes'], - 'Content-Length' => ['0'], + 'DAV' => ['1, 3, extended-mkcol, drinking'], + 'MS-Author-Via' => ['DAV'], + 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT, BEER, WINE'], + 'Accept-Ranges' => ['bytes'], + 'Content-Length' => ['0'], 'X-Sabre-Version' => [Version::VERSION], ], $this->response->getHeaders()); $this->assertEquals(200, $this->response->status); $this->assertEquals('', $this->response->body); $this->assertEquals('OPTIONS', $this->testPlugin->beforeMethod); - - } - function testGetPlugin() { - + public function testGetPlugin() + { $this->assertEquals($this->testPlugin, $this->server->getPlugin(get_class($this->testPlugin))); - } - function testUnknownPlugin() { - + public function testUnknownPlugin() + { $this->assertNull($this->server->getPlugin('SomeRandomClassName')); - } - function testGetSupportedReportSet() { - + public function testGetSupportedReportSet() + { $this->assertEquals([], $this->testPlugin->getSupportedReportSet('/')); - } - function testGetPlugins() { - + public function testGetPlugins() + { $this->assertEquals( [ get_class($this->testPlugin) => $this->testPlugin, - 'core' => $this->server->getPlugin('core'), + 'core' => $this->server->getPlugin('core'), ], $this->server->getPlugins() ); - } - - } -class ServerPluginMock extends ServerPlugin { - - function initialize(Server $s) { } - +class ServerPluginMock extends ServerPlugin +{ + public function initialize(Server $s) + { + } } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php index 203cf26d9..fa88e9095 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php @@ -1,61 +1,55 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; require_once 'Sabre/HTTP/ResponseMock.php'; -class ServerPreconditionsTest extends \PHPUnit_Framework_TestCase { - +class ServerPreconditionsTest extends \PHPUnit\Framework\TestCase +{ /** - * @expectedException Sabre\DAV\Exception\PreconditionFailed + * @expectedException \Sabre\DAV\Exception\PreconditionFailed */ - function testIfMatchNoNode() { - + public function testIfMatchNoNode() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/bar', ['If-Match' => '*']); $httpResponse = new HTTP\Response(); $server->checkPreconditions($httpRequest, $httpResponse); - } - /** - */ - function testIfMatchHasNode() { - + public function testIfMatchHasNode() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '*']); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } /** - * @expectedException Sabre\DAV\Exception\PreconditionFailed + * @expectedException \Sabre\DAV\Exception\PreconditionFailed */ - function testIfMatchWrongEtag() { - + public function testIfMatchWrongEtag() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '1234']); $httpResponse = new HTTP\Response(); $server->checkPreconditions($httpRequest, $httpResponse); - } - /** - */ - function testIfMatchCorrectEtag() { - + public function testIfMatchCorrectEtag() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '"abc123"']); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } /** @@ -63,107 +57,89 @@ class ServerPreconditionsTest extends \PHPUnit_Framework_TestCase { * * @depends testIfMatchCorrectEtag */ - function testIfMatchEvolutionEtag() { - + public function testIfMatchEvolutionEtag() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '\\"abc123\\"']); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - /** - */ - function testIfMatchMultiple() { - + public function testIfMatchMultiple() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '"hellothere", "abc123"']); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - /** - */ - function testIfNoneMatchNoNode() { - + public function testIfNoneMatchNoNode() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/bar', ['If-None-Match' => '*']); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } /** - * @expectedException Sabre\DAV\Exception\PreconditionFailed + * @expectedException \Sabre\DAV\Exception\PreconditionFailed */ - function testIfNoneMatchHasNode() { - + public function testIfNoneMatchHasNode() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '*']); $httpResponse = new HTTP\Response(); $server->checkPreconditions($httpRequest, $httpResponse); - } - /** - */ - function testIfNoneMatchWrongEtag() { - + public function testIfNoneMatchWrongEtag() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234"']); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - /** - */ - function testIfNoneMatchWrongEtagMultiple() { - + public function testIfNoneMatchWrongEtagMultiple() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234", "5678"']); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } /** - * @expectedException Sabre\DAV\Exception\PreconditionFailed + * @expectedException \Sabre\DAV\Exception\PreconditionFailed */ - function testIfNoneMatchCorrectEtag() { - + public function testIfNoneMatchCorrectEtag() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"abc123"']); $httpResponse = new HTTP\Response(); $server->checkPreconditions($httpRequest, $httpResponse); - } /** - * @expectedException Sabre\DAV\Exception\PreconditionFailed + * @expectedException \Sabre\DAV\Exception\PreconditionFailed */ - function testIfNoneMatchCorrectEtagMultiple() { - + public function testIfNoneMatchCorrectEtagMultiple() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234, "abc123"']); $httpResponse = new HTTP\Response(); $server->checkPreconditions($httpRequest, $httpResponse); - } - /** - */ - function testIfNoneMatchCorrectEtagAsGet() { - + public function testIfNoneMatchCorrectEtagAsGet() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $httpRequest = new HTTP\Request('GET', '/foo', ['If-None-Match' => '"abc123"']); @@ -172,14 +148,13 @@ class ServerPreconditionsTest extends \PHPUnit_Framework_TestCase { $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse)); $this->assertEquals(304, $server->httpResponse->getStatus()); $this->assertEquals(['ETag' => ['"abc123"']], $server->httpResponse->getHeaders()); - } /** * This was a test written for issue #515. */ - function testNoneMatchCorrectEtagEnsureSapiSent() { - + public function testNoneMatchCorrectEtagEnsureSapiSent() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); $server->sapi = new HTTP\SapiMock(); @@ -193,22 +168,18 @@ class ServerPreconditionsTest extends \PHPUnit_Framework_TestCase { $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse)); $this->assertEquals(304, $server->httpResponse->getStatus()); $this->assertEquals([ - 'ETag' => ['"abc123"'], + 'ETag' => ['"abc123"'], 'X-Sabre-Version' => [Version::VERSION], ], $server->httpResponse->getHeaders()); $this->assertEquals(1, HTTP\SapiMock::$sent); - } - /** - */ - function testIfModifiedSinceUnModified() { - + public function testIfModifiedSinceUnModified() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 GMT', - 'REQUEST_URI' => '/foo' + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Modified-Since' => 'Sun, 06 Nov 1994 08:49:37 GMT', ]); $server->httpResponse = new HTTP\ResponseMock(); $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse)); @@ -217,128 +188,96 @@ class ServerPreconditionsTest extends \PHPUnit_Framework_TestCase { $this->assertEquals([ 'Last-Modified' => ['Sat, 06 Apr 1985 23:30:00 GMT'], ], $server->httpResponse->getHeaders()); - } - - /** - */ - function testIfModifiedSinceModified() { - + public function testIfModifiedSinceModified() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_IF_MODIFIED_SINCE' => 'Tue, 06 Nov 1984 08:49:37 GMT', - 'REQUEST_URI' => '/foo' + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Modified-Since' => 'Tue, 06 Nov 1984 08:49:37 GMT', ]); $httpResponse = new HTTP\ResponseMock(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - /** - */ - function testIfModifiedSinceInvalidDate() { - + public function testIfModifiedSinceInvalidDate() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_IF_MODIFIED_SINCE' => 'Your mother', - 'REQUEST_URI' => '/foo' + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Modified-Since' => 'Your mother', ]); $httpResponse = new HTTP\ResponseMock(); // Invalid dates must be ignored, so this should return true $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - /** - */ - function testIfModifiedSinceInvalidDate2() { - + public function testIfModifiedSinceInvalidDate2() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_IF_MODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 EST', - 'REQUEST_URI' => '/foo' + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Sun, 06 Nov 1994 08:49:37 EST', ]); $httpResponse = new HTTP\ResponseMock(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - - /** - */ - function testIfUnmodifiedSinceUnModified() { - + public function testIfUnmodifiedSinceUnModified() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 GMT', - 'REQUEST_URI' => '/foo' + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Sun, 06 Nov 1994 08:49:37 GMT', ]); $httpResponse = new HTTP\Response(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - /** - * @expectedException Sabre\DAV\Exception\PreconditionFailed + * @expectedException \Sabre\DAV\Exception\PreconditionFailed */ - function testIfUnmodifiedSinceModified() { - + public function testIfUnmodifiedSinceModified() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_IF_UNMODIFIED_SINCE' => 'Tue, 06 Nov 1984 08:49:37 GMT', - 'REQUEST_URI' => '/foo' + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Tue, 06 Nov 1984 08:49:37 GMT', ]); $httpResponse = new HTTP\ResponseMock(); $server->checkPreconditions($httpRequest, $httpResponse); - } - /** - */ - function testIfUnmodifiedSinceInvalidDate() { - + public function testIfUnmodifiedSinceInvalidDate() + { $root = new SimpleCollection('root', [new ServerPreconditionsNode()]); $server = new Server($root); - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 06 Nov 1984 08:49:37 CET', - 'REQUEST_URI' => '/foo' + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'If-Unmodified-Since' => 'Sun, 06 Nov 1984 08:49:37 CET', ]); $httpResponse = new HTTP\ResponseMock(); $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse)); - } - - } -class ServerPreconditionsNode extends File { - - function getETag() { - +class ServerPreconditionsNode extends File +{ + public function getETag() + { return '"abc123"'; - } - function getLastModified() { - + public function getLastModified() + { /* my birthday & time, I believe */ return strtotime('1985-04-07 01:30 +02:00'); - } - function getName() { - + public function getName() + { return 'foo'; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php index 253200be7..462fba664 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; @@ -7,95 +9,93 @@ use Sabre\HTTP; require_once 'Sabre/HTTP/ResponseMock.php'; require_once 'Sabre/DAV/AbstractServer.php'; -class ServerPropsTest extends AbstractServer { - - protected function getRootNode() { - +class ServerPropsTest extends AbstractServer +{ + protected function getRootNode() + { return new FSExt\Directory(SABRE_TEMPDIR); - } - function setUp() { - - if (file_exists(SABRE_TEMPDIR . '../.sabredav')) unlink(SABRE_TEMPDIR . '../.sabredav'); + public function setUp() + { + if (file_exists(SABRE_TEMPDIR.'../.sabredav')) { + unlink(SABRE_TEMPDIR.'../.sabredav'); + } parent::setUp(); - file_put_contents(SABRE_TEMPDIR . '/test2.txt', 'Test contents2'); - mkdir(SABRE_TEMPDIR . '/col'); - file_put_contents(SABRE_TEMPDIR . 'col/test.txt', 'Test contents'); - $this->server->addPlugin(new Locks\Plugin(new Locks\Backend\File(SABRE_TEMPDIR . '/.locksdb'))); - + file_put_contents(SABRE_TEMPDIR.'/test2.txt', 'Test contents2'); + mkdir(SABRE_TEMPDIR.'/col'); + file_put_contents(SABRE_TEMPDIR.'col/test.txt', 'Test contents'); + $this->server->addPlugin(new Locks\Plugin(new Locks\Backend\File(SABRE_TEMPDIR.'/.locksdb'))); } - function tearDown() { - + public function tearDown() + { parent::tearDown(); - if (file_exists(SABRE_TEMPDIR . '../.locksdb')) unlink(SABRE_TEMPDIR . '../.locksdb'); - + if (file_exists(SABRE_TEMPDIR.'../.locksdb')) { + unlink(SABRE_TEMPDIR.'../.locksdb'); + } } - private function sendRequest($body, $path = '/', $headers = ['Depth' => '0']) { - + private function sendRequest($body, $path = '/', $headers = ['Depth' => '0']) + { $request = new HTTP\Request('PROPFIND', $path, $headers, $body); $this->server->httpRequest = $request; $this->server->exec(); - } - function testPropFindEmptyBody() { - - $this->sendRequest(""); + public function testPropFindEmptyBody() + { + $this->sendRequest(''); $this->assertEquals(207, $this->response->status); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'DAV' => ['1, 3, extended-mkcol, 2'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'DAV' => ['1, 3, extended-mkcol, 2'], + 'Vary' => ['Brief,Prefer'], ], $this->response->getHeaders() ); - $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body); + $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", 'xmlns\\1="urn:DAV"', $this->response->body); $xml = simplexml_load_string($body); $xml->registerXPathNamespace('d', 'urn:DAV'); list($data) = $xml->xpath('/d:multistatus/d:response/d:href'); - $this->assertEquals('/', (string)$data, 'href element should have been /'); + $this->assertEquals('/', (string) $data, 'href element should have been /'); $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:resourcetype'); $this->assertEquals(1, count($data)); - } - function testPropFindEmptyBodyFile() { - - $this->sendRequest("", '/test2.txt', []); + public function testPropFindEmptyBodyFile() + { + $this->sendRequest('', '/test2.txt', []); $this->assertEquals(207, $this->response->status); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'DAV' => ['1, 3, extended-mkcol, 2'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'DAV' => ['1, 3, extended-mkcol, 2'], + 'Vary' => ['Brief,Prefer'], ], $this->response->getHeaders() ); - $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body); + $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", 'xmlns\\1="urn:DAV"', $this->response->body); $xml = simplexml_load_string($body); $xml->registerXPathNamespace('d', 'urn:DAV'); list($data) = $xml->xpath('/d:multistatus/d:response/d:href'); - $this->assertEquals('/test2.txt', (string)$data, 'href element should have been /test2.txt'); + $this->assertEquals('/test2.txt', (string) $data, 'href element should have been /test2.txt'); $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:getcontentlength'); $this->assertEquals(1, count($data)); - } - function testSupportedLocks() { - + public function testSupportedLocks() + { $xml = '<?xml version="1.0"?> <d:propfind xmlns:d="DAV:"> <d:prop> @@ -105,7 +105,7 @@ class ServerPropsTest extends AbstractServer { $this->sendRequest($xml); - $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body); + $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", 'xmlns\\1="urn:DAV"', $this->response->body); $xml = simplexml_load_string($body); $xml->registerXPathNamespace('d', 'urn:DAV'); @@ -128,8 +128,8 @@ class ServerPropsTest extends AbstractServer { $this->assertEquals(2, count($data), 'We expected two \'d:write\' tags'); } - function testLockDiscovery() { - + public function testLockDiscovery() + { $xml = '<?xml version="1.0"?> <d:propfind xmlns:d="DAV:"> <d:prop> @@ -139,17 +139,16 @@ class ServerPropsTest extends AbstractServer { $this->sendRequest($xml); - $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body); + $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", 'xmlns\\1="urn:DAV"', $this->response->body); $xml = simplexml_load_string($body); $xml->registerXPathNamespace('d', 'urn:DAV'); $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:lockdiscovery'); $this->assertEquals(1, count($data), 'We expected a \'d:lockdiscovery\' tag'); - } - function testUnknownProperty() { - + public function testUnknownProperty() + { $xml = '<?xml version="1.0"?> <d:propfind xmlns:d="DAV:"> <d:prop> @@ -158,7 +157,7 @@ class ServerPropsTest extends AbstractServer { </d:propfind>'; $this->sendRequest($xml); - $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body); + $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", 'xmlns\\1="urn:DAV"', $this->response->body); $xml = simplexml_load_string($body); $xml->registerXPathNamespace('d', 'urn:DAV'); $pathTests = [ @@ -170,17 +169,16 @@ class ServerPropsTest extends AbstractServer { '/d:multistatus/d:response/d:propstat/d:prop/d:macaroni', ]; foreach ($pathTests as $test) { - $this->assertTrue(count($xml->xpath($test)) == true, 'We expected the ' . $test . ' element to appear in the response, we got: ' . $body); + $this->assertTrue(true == count($xml->xpath($test)), 'We expected the '.$test.' element to appear in the response, we got: '.$body); } $val = $xml->xpath('/d:multistatus/d:response/d:propstat/d:status'); $this->assertEquals(1, count($val), $body); - $this->assertEquals('HTTP/1.1 404 Not Found', (string)$val[0]); - + $this->assertEquals('HTTP/1.1 404 Not Found', (string) $val[0]); } - function testParsePropPatchRequest() { - + public function testParsePropPatchRequest() + { $body = '<?xml version="1.0"?> <d:propertyupdate xmlns:d="DAV:" xmlns:s="http://sabredav.org/NS/test"> <d:set><d:prop><s:someprop>somevalue</s:someprop></d:prop></d:set> @@ -191,11 +189,9 @@ class ServerPropsTest extends AbstractServer { $result = $this->server->xml->parse($body); $this->assertEquals([ - '{http://sabredav.org/NS/test}someprop' => 'somevalue', + '{http://sabredav.org/NS/test}someprop' => 'somevalue', '{http://sabredav.org/NS/test}someprop2' => null, '{http://sabredav.org/NS/test}someprop3' => null, ], $result->properties); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php index 81224d687..93ea083d8 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use DateTime; @@ -12,22 +14,22 @@ use Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class ServerRangeTest extends \Sabre\DAVServerTest { - +class ServerRangeTest extends \Sabre\DAVServerTest +{ protected $setupFiles = true; /** - * We need this string a lot + * We need this string a lot. */ protected $lastModified; - function setUp() { - + public function setUp() + { parent::setUp(); $this->server->createFile('files/test.txt', 'Test contents'); - $this->lastModified = HTTP\Util::toHTTPDate( - new DateTime('@' . $this->server->tree->getNodeForPath('files/test.txt')->getLastModified()) + $this->lastModified = HTTP\toDate( + new DateTime('@'.$this->server->tree->getNodeForPath('files/test.txt')->getLastModified()) ); $stream = popen('echo "Test contents"', 'r'); @@ -37,112 +39,106 @@ class ServerRangeTest extends \Sabre\DAVServerTest { ); $streamingFile->setSize(12); $this->server->tree->getNodeForPath('files')->addNode($streamingFile); - } - function testRange() { - + public function testRange() + { $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=2-5']); $response = $this->request($request); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [4], - 'Content-Range' => ['bytes 2-5/13'], - 'ETag' => ['"' . md5('Test contents') . '"'], - 'Last-Modified' => [$this->lastModified], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [4], + 'Content-Range' => ['bytes 2-5/13'], + 'ETag' => ['"'.md5('Test contents').'"'], + 'Last-Modified' => [$this->lastModified], ], $response->getHeaders() ); $this->assertEquals(206, $response->getStatus()); $this->assertEquals('st c', $response->getBodyAsString()); - } /** * @depends testRange */ - function testStartRange() { - + public function testStartRange() + { $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=2-']); $response = $this->request($request); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [11], - 'Content-Range' => ['bytes 2-12/13'], - 'ETag' => ['"' . md5('Test contents') . '"'], - 'Last-Modified' => [$this->lastModified], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [11], + 'Content-Range' => ['bytes 2-12/13'], + 'ETag' => ['"'.md5('Test contents').'"'], + 'Last-Modified' => [$this->lastModified], ], $response->getHeaders() ); $this->assertEquals(206, $response->getStatus()); $this->assertEquals('st contents', $response->getBodyAsString()); - } /** * @depends testRange */ - function testEndRange() { - + public function testEndRange() + { $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=-8']); $response = $this->request($request); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [8], - 'Content-Range' => ['bytes 5-12/13'], - 'ETag' => ['"' . md5('Test contents') . '"'], - 'Last-Modified' => [$this->lastModified], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [8], + 'Content-Range' => ['bytes 5-12/13'], + 'ETag' => ['"'.md5('Test contents').'"'], + 'Last-Modified' => [$this->lastModified], ], $response->getHeaders() ); $this->assertEquals(206, $response->getStatus()); $this->assertEquals('contents', $response->getBodyAsString()); - } /** * @depends testRange */ - function testTooHighRange() { - + public function testTooHighRange() + { $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=100-200']); $response = $this->request($request); $this->assertEquals(416, $response->getStatus()); - } /** * @depends testRange */ - function testCrazyRange() { - + public function testCrazyRange() + { $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=8-4']); $response = $this->request($request); $this->assertEquals(416, $response->getStatus()); - } - function testNonSeekableStream() { - + public function testNonSeekableStream() + { $request = new HTTP\Request('GET', '/files/no-seeking.txt', ['Range' => 'bytes=2-5']); $response = $this->request($request); $this->assertEquals(206, $response->getStatus(), $response); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [4], - 'Content-Range' => ['bytes 2-5/12'], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [4], + 'Content-Range' => ['bytes 2-5/12'], // 'ETag' => ['"' . md5('Test contents') . '"'], 'Last-Modified' => [$this->lastModified], ], @@ -150,113 +146,107 @@ class ServerRangeTest extends \Sabre\DAVServerTest { ); $this->assertEquals('st c', $response->getBodyAsString()); - } /** * @depends testRange */ - function testIfRangeEtag() { - + public function testIfRangeEtag() + { $request = new HTTP\Request('GET', '/files/test.txt', [ - 'Range' => 'bytes=2-5', - 'If-Range' => '"' . md5('Test contents') . '"', + 'Range' => 'bytes=2-5', + 'If-Range' => '"'.md5('Test contents').'"', ]); $response = $this->request($request); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [4], - 'Content-Range' => ['bytes 2-5/13'], - 'ETag' => ['"' . md5('Test contents') . '"'], - 'Last-Modified' => [$this->lastModified], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [4], + 'Content-Range' => ['bytes 2-5/13'], + 'ETag' => ['"'.md5('Test contents').'"'], + 'Last-Modified' => [$this->lastModified], ], $response->getHeaders() ); $this->assertEquals(206, $response->getStatus()); $this->assertEquals('st c', $response->getBodyAsString()); - } /** * @depends testIfRangeEtag */ - function testIfRangeEtagIncorrect() { - + public function testIfRangeEtagIncorrect() + { $request = new HTTP\Request('GET', '/files/test.txt', [ - 'Range' => 'bytes=2-5', + 'Range' => 'bytes=2-5', 'If-Range' => '"foobar"', ]); $response = $this->request($request); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [13], - 'ETag' => ['"' . md5('Test contents') . '"'], - 'Last-Modified' => [$this->lastModified], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [13], + 'ETag' => ['"'.md5('Test contents').'"'], + 'Last-Modified' => [$this->lastModified], ], $response->getHeaders() ); $this->assertEquals(200, $response->getStatus()); $this->assertEquals('Test contents', $response->getBodyAsString()); - } /** * @depends testIfRangeEtag */ - function testIfRangeModificationDate() { - + public function testIfRangeModificationDate() + { $request = new HTTP\Request('GET', '/files/test.txt', [ - 'Range' => 'bytes=2-5', + 'Range' => 'bytes=2-5', 'If-Range' => 'tomorrow', ]); $response = $this->request($request); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [4], - 'Content-Range' => ['bytes 2-5/13'], - 'ETag' => ['"' . md5('Test contents') . '"'], - 'Last-Modified' => [$this->lastModified], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [4], + 'Content-Range' => ['bytes 2-5/13'], + 'ETag' => ['"'.md5('Test contents').'"'], + 'Last-Modified' => [$this->lastModified], ], $response->getHeaders() ); $this->assertEquals(206, $response->getStatus()); $this->assertEquals('st c', $response->getBodyAsString()); - } /** * @depends testIfRangeModificationDate */ - function testIfRangeModificationDateModified() { - + public function testIfRangeModificationDateModified() + { $request = new HTTP\Request('GET', '/files/test.txt', [ - 'Range' => 'bytes=2-5', + 'Range' => 'bytes=2-5', 'If-Range' => '-2 years', ]); $response = $this->request($request); $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [13], - 'ETag' => ['"' . md5('Test contents') . '"'], - 'Last-Modified' => [$this->lastModified], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [13], + 'ETag' => ['"'.md5('Test contents').'"'], + 'Last-Modified' => [$this->lastModified], ], $response->getHeaders() ); $this->assertEquals(200, $response->getStatus()); $this->assertEquals('Test contents', $response->getBodyAsString()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php index 043179a00..53153151b 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php @@ -1,90 +1,74 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; -class ServerSimpleTest extends AbstractServer{ - - function testConstructArray() { - - $nodes = [ - new SimpleCollection('hello') - ]; - - $server = new Server($nodes); - $this->assertEquals($nodes[0], $server->tree->getNodeForPath('hello')); - - } - - /** - * @expectedException Sabre\DAV\Exception - */ - function testConstructIncorrectObj() { - +class ServerSimpleTest extends AbstractServer +{ + public function testConstructArray() + { $nodes = [ new SimpleCollection('hello'), - new \STDClass(), ]; $server = new Server($nodes); - + $this->assertEquals($nodes[0], $server->tree->getNodeForPath('hello')); } /** - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testConstructInvalidArg() { - + public function testConstructInvalidArg() + { $server = new Server(1); - } - function testOptions() { - + public function testOptions() + { $request = new HTTP\Request('OPTIONS', '/'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals([ - 'DAV' => ['1, 3, extended-mkcol'], - 'MS-Author-Via' => ['DAV'], - 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'], - 'Accept-Ranges' => ['bytes'], - 'Content-Length' => ['0'], + 'DAV' => ['1, 3, extended-mkcol'], + 'MS-Author-Via' => ['DAV'], + 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'], + 'Accept-Ranges' => ['bytes'], + 'Content-Length' => ['0'], 'X-Sabre-Version' => [Version::VERSION], ], $this->response->getHeaders()); $this->assertEquals(200, $this->response->status); $this->assertEquals('', $this->response->body); - } - function testOptionsUnmapped() { - + public function testOptionsUnmapped() + { $request = new HTTP\Request('OPTIONS', '/unmapped'); $this->server->httpRequest = $request; $this->server->exec(); $this->assertEquals([ - 'DAV' => ['1, 3, extended-mkcol'], - 'MS-Author-Via' => ['DAV'], - 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT, MKCOL'], - 'Accept-Ranges' => ['bytes'], - 'Content-Length' => ['0'], + 'DAV' => ['1, 3, extended-mkcol'], + 'MS-Author-Via' => ['DAV'], + 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT, MKCOL'], + 'Accept-Ranges' => ['bytes'], + 'Content-Length' => ['0'], 'X-Sabre-Version' => [Version::VERSION], ], $this->response->getHeaders()); $this->assertEquals(200, $this->response->status); $this->assertEquals('', $this->response->body); - } - function testNonExistantMethod() { - + public function testNonExistantMethod() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'BLABLA', ]; @@ -94,21 +78,19 @@ class ServerSimpleTest extends AbstractServer{ $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); $this->assertEquals(501, $this->response->status); - - } - function testBaseUri() { - + public function testBaseUri() + { $serverVars = [ - 'REQUEST_URI' => '/blabla/test.txt', + 'REQUEST_URI' => '/blabla/test.txt', 'REQUEST_METHOD' => 'GET', ]; - $filename = $this->tempDir . '/test.txt'; + $filename = $this->tempDir.'/test.txt'; $request = HTTP\Sapi::createFromServerArray($serverVars); $this->server->setBaseUri('/blabla/'); @@ -118,26 +100,25 @@ class ServerSimpleTest extends AbstractServer{ $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/octet-stream'], - 'Content-Length' => [13], - 'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($filename)))], - 'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'], + 'Content-Type' => ['application/octet-stream'], + 'Content-Length' => [13], + 'Last-Modified' => [HTTP\toDate(new \DateTime('@'.filemtime($filename)))], + 'ETag' => ['"'.sha1(fileinode($filename).filesize($filename).filemtime($filename)).'"'], ], $this->response->getHeaders() ); $this->assertEquals(200, $this->response->status); $this->assertEquals('Test contents', stream_get_contents($this->response->body)); - } - function testBaseUriAddSlash() { - + public function testBaseUriAddSlash() + { $tests = [ - '/' => '/', - '/foo' => '/foo/', - '/foo/' => '/foo/', - '/foo/bar' => '/foo/bar/', + '/' => '/', + '/foo' => '/foo/', + '/foo/' => '/foo/', + '/foo/bar' => '/foo/bar/', '/foo/bar/' => '/foo/bar/', ]; @@ -145,92 +126,86 @@ class ServerSimpleTest extends AbstractServer{ $this->server->setBaseUri($test); $this->assertEquals($result, $this->server->getBaseUri()); - } - } - function testCalculateUri() { - + public function testCalculateUri() + { $uris = [ 'http://www.example.org/root/somepath', '/root/somepath', '/root/somepath/', + '//root/somepath/', + '///root///somepath///', ]; $this->server->setBaseUri('/root/'); foreach ($uris as $uri) { - $this->assertEquals('somepath', $this->server->calculateUri($uri)); - } $this->server->setBaseUri('/root'); foreach ($uris as $uri) { - $this->assertEquals('somepath', $this->server->calculateUri($uri)); - } $this->assertEquals('', $this->server->calculateUri('/root')); - } + $this->server->setBaseUri('/'); + + foreach ($uris as $uri) { + $this->assertEquals('root/somepath', $this->server->calculateUri($uri)); + } - function testCalculateUriSpecialChars() { + $this->assertEquals('', $this->server->calculateUri('')); + } + public function testCalculateUriSpecialChars() + { $uris = [ 'http://www.example.org/root/%C3%A0fo%C3%B3', '/root/%C3%A0fo%C3%B3', - '/root/%C3%A0fo%C3%B3/' + '/root/%C3%A0fo%C3%B3/', ]; $this->server->setBaseUri('/root/'); foreach ($uris as $uri) { - $this->assertEquals("\xc3\xa0fo\xc3\xb3", $this->server->calculateUri($uri)); - } $this->server->setBaseUri('/root'); foreach ($uris as $uri) { - $this->assertEquals("\xc3\xa0fo\xc3\xb3", $this->server->calculateUri($uri)); - } $this->server->setBaseUri('/'); foreach ($uris as $uri) { - $this->assertEquals("root/\xc3\xa0fo\xc3\xb3", $this->server->calculateUri($uri)); - } - } /** * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testCalculateUriBreakout() { - + public function testCalculateUriBreakout() + { $uri = '/path1/'; $this->server->setBaseUri('/path2/'); $this->server->calculateUri($uri); - } - /** - */ - function testGuessBaseUri() { - + public function testGuessBaseUri() + { $serverVars = [ + 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/index.php/root', - 'PATH_INFO' => '/root', + 'PATH_INFO' => '/root', ]; $httpRequest = HTTP\Sapi::createFromServerArray($serverVars); @@ -238,17 +213,17 @@ class ServerSimpleTest extends AbstractServer{ $server->httpRequest = $httpRequest; $this->assertEquals('/index.php/', $server->guessBaseUri()); - } /** * @depends testGuessBaseUri */ - function testGuessBaseUriPercentEncoding() { - + public function testGuessBaseUriPercentEncoding() + { $serverVars = [ + 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/index.php/dir/path2/path%20with%20spaces', - 'PATH_INFO' => '/dir/path2/path with spaces', + 'PATH_INFO' => '/dir/path2/path with spaces', ]; $httpRequest = HTTP\Sapi::createFromServerArray($serverVars); @@ -256,7 +231,6 @@ class ServerSimpleTest extends AbstractServer{ $server->httpRequest = $httpRequest; $this->assertEquals('/index.php/', $server->guessBaseUri()); - } /** @@ -279,11 +253,12 @@ class ServerSimpleTest extends AbstractServer{ }*/ - function testGuessBaseUri2() { - + public function testGuessBaseUri2() + { $serverVars = [ + 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/index.php/root/', - 'PATH_INFO' => '/root/', + 'PATH_INFO' => '/root/', ]; $httpRequest = HTTP\Sapi::createFromServerArray($serverVars); @@ -291,12 +266,12 @@ class ServerSimpleTest extends AbstractServer{ $server->httpRequest = $httpRequest; $this->assertEquals('/index.php/', $server->guessBaseUri()); - } - function testGuessBaseUriNoPathInfo() { - + public function testGuessBaseUriNoPathInfo() + { $serverVars = [ + 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/index.php/root', ]; @@ -305,32 +280,26 @@ class ServerSimpleTest extends AbstractServer{ $server->httpRequest = $httpRequest; $this->assertEquals('/', $server->guessBaseUri()); - } - function testGuessBaseUriNoPathInfo2() { - - $serverVars = [ - 'REQUEST_URI' => '/a/b/c/test.php', - ]; - - $httpRequest = HTTP\Sapi::createFromServerArray($serverVars); + public function testGuessBaseUriNoPathInfo2() + { + $httpRequest = new HTTP\Request('GET', '/a/b/c/test.php'); $server = new Server(); $server->httpRequest = $httpRequest; $this->assertEquals('/', $server->guessBaseUri()); - } - /** * @depends testGuessBaseUri */ - function testGuessBaseUriQueryString() { - + public function testGuessBaseUriQueryString() + { $serverVars = [ + 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/index.php/root?query_string=blabla', - 'PATH_INFO' => '/root', + 'PATH_INFO' => '/root', ]; $httpRequest = HTTP\Sapi::createFromServerArray($serverVars); @@ -338,18 +307,18 @@ class ServerSimpleTest extends AbstractServer{ $server->httpRequest = $httpRequest; $this->assertEquals('/index.php/', $server->guessBaseUri()); - } /** * @depends testGuessBaseUri * @expectedException \Sabre\DAV\Exception */ - function testGuessBaseUriBadConfig() { - + public function testGuessBaseUriBadConfig() + { $serverVars = [ + 'REQUEST_METHOD' => 'GET', 'REQUEST_URI' => '/index.php/root/heyyy', - 'PATH_INFO' => '/root', + 'PATH_INFO' => '/root', ]; $httpRequest = HTTP\Sapi::createFromServerArray($serverVars); @@ -357,19 +326,18 @@ class ServerSimpleTest extends AbstractServer{ $server->httpRequest = $httpRequest; $server->guessBaseUri(); - } - function testTriggerException() { - + public function testTriggerException() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'FOO', ]; $httpRequest = HTTP\Sapi::createFromServerArray($serverVars); $this->server->httpRequest = $httpRequest; - $this->server->on('beforeMethod', [$this, 'exceptionTrigger']); + $this->server->on('beforeMethod:*', [$this, 'exceptionTrigger']); $this->server->exec(); $this->assertEquals([ @@ -377,19 +345,17 @@ class ServerSimpleTest extends AbstractServer{ ], $this->response->getHeaders()); $this->assertEquals(500, $this->response->status); - } - function exceptionTrigger($request, $response) { - + public function exceptionTrigger($request, $response) + { throw new Exception('Hola'); - } - function testReportNotFound() { - + public function testReportNotFound() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'REPORT', ]; @@ -400,19 +366,18 @@ class ServerSimpleTest extends AbstractServer{ $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders() ); - $this->assertEquals(415, $this->response->status, 'We got an incorrect status back. Full response body follows: ' . $this->response->body); - + $this->assertEquals(415, $this->response->status, 'We got an incorrect status back. Full response body follows: '.$this->response->body); } - function testReportIntercepted() { - + public function testReportIntercepted() + { $serverVars = [ - 'REQUEST_URI' => '/', + 'REQUEST_URI' => '/', 'REQUEST_METHOD' => 'REPORT', ]; @@ -424,52 +389,49 @@ class ServerSimpleTest extends AbstractServer{ $this->assertEquals([ 'X-Sabre-Version' => [Version::VERSION], - 'testheader' => ['testvalue'], + 'testheader' => ['testvalue'], ], $this->response->getHeaders() ); - $this->assertEquals(418, $this->response->status, 'We got an incorrect status back. Full response body follows: ' . $this->response->body); - + $this->assertEquals(418, $this->response->status, 'We got an incorrect status back. Full response body follows: '.$this->response->body); } - function reportHandler($reportName, $result, $path) { - - if ($reportName == '{http://www.rooftopsolutions.nl/NS}myreport') { + public function reportHandler($reportName, $result, $path) + { + if ('{http://www.rooftopsolutions.nl/NS}myreport' == $reportName) { $this->server->httpResponse->setStatus(418); $this->server->httpResponse->setHeader('testheader', 'testvalue'); + return false; + } else { + return; } - else return; - } - function testGetPropertiesForChildren() { - + public function testGetPropertiesForChildren() + { $result = $this->server->getPropertiesForChildren('', [ '{DAV:}getcontentlength', ]); $expected = [ 'test.txt' => ['{DAV:}getcontentlength' => 13], - 'dir/' => [], + 'dir/' => [], ]; $this->assertEquals($expected, $result); - } /** * There are certain cases where no HTTP status may be set. We need to * intercept these and set it to a default error message. */ - function testNoHTTPStatusSet() { - - $this->server->on('method:GET', function() { return false; }, 1); + public function testNoHTTPStatusSet() + { + $this->server->on('method:GET', function () { return false; }, 1); $this->server->httpRequest = new HTTP\Request('GET', '/'); $this->server->exec(); $this->assertEquals(500, $this->response->getStatus()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php index 383f8e657..cb8a4ab32 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php @@ -1,102 +1,97 @@ <?php -namespace Sabre\DAV; - -class ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { +declare(strict_types=1); - function testUpdatePropertiesFail() { +namespace Sabre\DAV; +class ServerUpdatePropertiesTest extends \PHPUnit\Framework\TestCase +{ + public function testUpdatePropertiesFail() + { $tree = [ new SimpleCollection('foo'), ]; $server = new Server($tree); $result = $server->updateProperties('foo', [ - '{DAV:}foo' => 'bar' + '{DAV:}foo' => 'bar', ]); $expected = [ '{DAV:}foo' => 403, ]; $this->assertEquals($expected, $result); - } - function testUpdatePropertiesProtected() { - + public function testUpdatePropertiesProtected() + { $tree = [ new SimpleCollection('foo'), ]; $server = new Server($tree); - $server->on('propPatch', function($path, PropPatch $propPatch) { - $propPatch->handleRemaining(function() { return true; }); + $server->on('propPatch', function ($path, PropPatch $propPatch) { + $propPatch->handleRemaining(function () { return true; }); }); $result = $server->updateProperties('foo', [ '{DAV:}getetag' => 'bla', - '{DAV:}foo' => 'bar' + '{DAV:}foo' => 'bar', ]); $expected = [ '{DAV:}getetag' => 403, - '{DAV:}foo' => 424, + '{DAV:}foo' => 424, ]; $this->assertEquals($expected, $result); - } - function testUpdatePropertiesEventFail() { - + public function testUpdatePropertiesEventFail() + { $tree = [ new SimpleCollection('foo'), ]; $server = new Server($tree); - $server->on('propPatch', function($path, PropPatch $propPatch) { + $server->on('propPatch', function ($path, PropPatch $propPatch) { $propPatch->setResultCode('{DAV:}foo', 404); - $propPatch->handleRemaining(function() { return true; }); + $propPatch->handleRemaining(function () { return true; }); }); $result = $server->updateProperties('foo', [ - '{DAV:}foo' => 'bar', + '{DAV:}foo' => 'bar', '{DAV:}foo2' => 'bla', ]); $expected = [ - '{DAV:}foo' => 404, + '{DAV:}foo' => 404, '{DAV:}foo2' => 424, ]; $this->assertEquals($expected, $result); - } - function testUpdatePropertiesEventSuccess() { - + public function testUpdatePropertiesEventSuccess() + { $tree = [ new SimpleCollection('foo'), ]; $server = new Server($tree); - $server->on('propPatch', function($path, PropPatch $propPatch) { - - $propPatch->handle(['{DAV:}foo', '{DAV:}foo2'], function() { + $server->on('propPatch', function ($path, PropPatch $propPatch) { + $propPatch->handle(['{DAV:}foo', '{DAV:}foo2'], function () { return [ - '{DAV:}foo' => 200, + '{DAV:}foo' => 200, '{DAV:}foo2' => 201, ]; }); - }); $result = $server->updateProperties('foo', [ - '{DAV:}foo' => 'bar', + '{DAV:}foo' => 'bar', '{DAV:}foo2' => 'bla', ]); $expected = [ - '{DAV:}foo' => 200, + '{DAV:}foo' => 200, '{DAV:}foo2' => 201, ]; $this->assertEquals($expected, $result); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php index 15ccfaf9e..6edca5ecc 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php @@ -1,19 +1,19 @@ <?php -namespace Sabre\DAV; - -class SimpleFileTest extends \PHPUnit_Framework_TestCase { +declare(strict_types=1); - function testAll() { +namespace Sabre\DAV; +class SimpleFileTest extends \PHPUnit\Framework\TestCase +{ + public function testAll() + { $file = new SimpleFile('filename.txt', 'contents', 'text/plain'); $this->assertEquals('filename.txt', $file->getName()); $this->assertEquals('contents', $file->get()); $this->assertEquals(8, $file->getSize()); - $this->assertEquals('"' . sha1('contents') . '"', $file->getETag()); + $this->assertEquals('"'.sha1('contents').'"', $file->getETag()); $this->assertEquals('text/plain', $file->getContentType()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php b/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php index e98fe9048..1e4b92197 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/StringUtilTest.php @@ -1,27 +1,29 @@ <?php -namespace Sabre\DAV; +declare(strict_types=1); -class StringUtilTest extends \PHPUnit_Framework_TestCase { +namespace Sabre\DAV; +class StringUtilTest extends \PHPUnit\Framework\TestCase +{ /** * @param string $haystack * @param string $needle * @param string $collation * @param string $matchType * @param string $result + * * @throws Exception\BadRequest * * @dataProvider dataset */ - function testTextMatch($haystack, $needle, $collation, $matchType, $result) { - + public function testTextMatch($haystack, $needle, $collation, $matchType, $result) + { $this->assertEquals($result, StringUtil::textMatch($haystack, $needle, $collation, $matchType)); - } - function dataset() { - + public function dataset() + { return [ ['FOOBAR', 'FOO', 'i;octet', 'contains', true], ['FOOBAR', 'foo', 'i;octet', 'contains', false], @@ -68,62 +70,54 @@ class StringUtilTest extends \PHPUnit_Framework_TestCase { ['FOOBAR', 'BAR', 'i;unicode-casemap', 'ends-with', true], ['FOOBAR', 'bar', 'i;unicode-casemap', 'ends-with', true], ]; - } /** - * @expectedException Sabre\DAV\Exception\BadRequest + * @expectedException \Sabre\DAV\Exception\BadRequest */ - function testBadCollation() { - + public function testBadCollation() + { StringUtil::textMatch('foobar', 'foo', 'blabla', 'contains'); - } - /** - * @expectedException Sabre\DAV\Exception\BadRequest + * @expectedException \Sabre\DAV\Exception\BadRequest */ - function testBadMatchType() { - + public function testBadMatchType() + { StringUtil::textMatch('foobar', 'foo', 'i;octet', 'booh'); - } - function testEnsureUTF8_ascii() { - - $inputString = "harkema"; - $outputString = "harkema"; + public function testEnsureUTF8_ascii() + { + $inputString = 'harkema'; + $outputString = 'harkema'; $this->assertEquals( $outputString, StringUtil::ensureUTF8($inputString) ); - } - function testEnsureUTF8_latin1() { - + public function testEnsureUTF8_latin1() + { $inputString = "m\xfcnster"; - $outputString = "münster"; + $outputString = 'münster'; $this->assertEquals( $outputString, StringUtil::ensureUTF8($inputString) ); - } - function testEnsureUTF8_utf8() { - + public function testEnsureUTF8_utf8() + { $inputString = "m\xc3\xbcnster"; - $outputString = "münster"; + $outputString = 'münster'; $this->assertEquals( $outputString, StringUtil::ensureUTF8($inputString) ); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php b/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php index 6acd6b077..352c8a3e7 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php @@ -1,21 +1,22 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP; -class TemporaryFileFilterTest extends AbstractServer { - - function setUp() { - +class TemporaryFileFilterTest extends AbstractServer +{ + public function setUp() + { parent::setUp(); - $plugin = new TemporaryFileFilterPlugin(SABRE_TEMPDIR . '/tff'); + $plugin = new TemporaryFileFilterPlugin(SABRE_TEMPDIR.'/tff'); $this->server->addPlugin($plugin); - } - function testPutNormal() { - + public function testPutNormal() + { $request = new HTTP\Request('PUT', '/testput.txt', [], 'Testing new file'); $this->server->httpRequest = ($request); @@ -25,12 +26,11 @@ class TemporaryFileFilterTest extends AbstractServer { $this->assertEquals(201, $this->response->status); $this->assertEquals('0', $this->response->getHeader('Content-Length')); - $this->assertEquals('Testing new file', file_get_contents(SABRE_TEMPDIR . '/testput.txt')); - + $this->assertEquals('Testing new file', file_get_contents(SABRE_TEMPDIR.'/testput.txt')); } - function testPutTemp() { - + public function testPutTemp() + { // mimicking an OS/X resource fork $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file'); @@ -43,12 +43,11 @@ class TemporaryFileFilterTest extends AbstractServer { 'X-Sabre-Temp' => ['true'], ], $this->response->getHeaders()); - $this->assertFalse(file_exists(SABRE_TEMPDIR . '/._testput.txt'), '._testput.txt should not exist in the regular file structure.'); - + $this->assertFalse(file_exists(SABRE_TEMPDIR.'/._testput.txt'), '._testput.txt should not exist in the regular file structure.'); } - function testPutTempIfNoneMatch() { - + public function testPutTempIfNoneMatch() + { // mimicking an OS/X resource fork $request = new HTTP\Request('PUT', '/._testput.txt', ['If-None-Match' => '*'], 'Testing new file'); @@ -61,8 +60,7 @@ class TemporaryFileFilterTest extends AbstractServer { 'X-Sabre-Temp' => ['true'], ], $this->response->getHeaders()); - $this->assertFalse(file_exists(SABRE_TEMPDIR . '/._testput.txt'), '._testput.txt should not exist in the regular file structure.'); - + $this->assertFalse(file_exists(SABRE_TEMPDIR.'/._testput.txt'), '._testput.txt should not exist in the regular file structure.'); $this->server->exec(); @@ -71,11 +69,10 @@ class TemporaryFileFilterTest extends AbstractServer { 'X-Sabre-Temp' => ['true'], 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); - } - function testPutGet() { - + public function testPutGet() + { // mimicking an OS/X resource fork $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file'); $this->server->httpRequest = ($request); @@ -94,19 +91,29 @@ class TemporaryFileFilterTest extends AbstractServer { $this->assertEquals(200, $this->response->status); $this->assertEquals([ - 'X-Sabre-Temp' => ['true'], + 'X-Sabre-Temp' => ['true'], 'Content-Length' => [16], - 'Content-Type' => ['application/octet-stream'], + 'Content-Type' => ['application/octet-stream'], ], $this->response->getHeaders()); $this->assertEquals('Testing new file', stream_get_contents($this->response->body)); - } - function testLockNonExistant() { + public function testGetWithBrowserPlugin() + { + $this->server->addPlugin(new Browser\Plugin()); + $request = new HTTP\Request('GET', '/'); + + $this->server->httpRequest = $request; + $this->server->exec(); + + $this->assertEquals(200, $this->response->status); + } - mkdir(SABRE_TEMPDIR . '/locksdir'); - $locksBackend = new Locks\Backend\File(SABRE_TEMPDIR . '/locks'); + public function testLockNonExistant() + { + mkdir(SABRE_TEMPDIR.'/locksdir'); + $locksBackend = new Locks\Backend\File(SABRE_TEMPDIR.'/locks'); $locksPlugin = new Locks\Plugin($locksBackend); $this->server->addPlugin($locksPlugin); @@ -126,15 +133,14 @@ class TemporaryFileFilterTest extends AbstractServer { $this->assertEquals(201, $this->response->status); $this->assertEquals('application/xml; charset=utf-8', $this->response->getHeader('Content-Type')); - $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')) === 1, 'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')'); + $this->assertTrue(1 === preg_match('/^<opaquelocktoken:(.*)>$/', $this->response->getHeader('Lock-Token')), 'We did not get a valid Locktoken back ('.$this->response->getHeader('Lock-Token').')'); $this->assertEquals('true', $this->response->getHeader('X-Sabre-Temp')); - $this->assertFalse(file_exists(SABRE_TEMPDIR . '/._testlock.txt'), '._testlock.txt should not exist in the regular file structure.'); - + $this->assertFalse(file_exists(SABRE_TEMPDIR.'/._testlock.txt'), '._testlock.txt should not exist in the regular file structure.'); } - function testPutDelete() { - + public function testPutDelete() + { // mimicking an OS/X resource fork $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file'); @@ -151,17 +157,16 @@ class TemporaryFileFilterTest extends AbstractServer { $this->server->httpRequest = $request; $this->server->exec(); - $this->assertEquals(204, $this->response->status, "Incorrect status code received. Full body:\n" . $this->response->body); + $this->assertEquals(204, $this->response->status, "Incorrect status code received. Full body:\n".$this->response->body); $this->assertEquals([ 'X-Sabre-Temp' => ['true'], ], $this->response->getHeaders()); $this->assertEquals('', $this->response->body); - } - function testPutPropfind() { - + public function testPutPropfind() + { // mimicking an OS/X resource fork $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file'); $this->server->httpRequest = $request; @@ -178,22 +183,20 @@ class TemporaryFileFilterTest extends AbstractServer { $this->server->httpRequest = ($request); $this->server->exec(); - $this->assertEquals(207, $this->response->status, 'Incorrect status code returned. Body: ' . $this->response->body); + $this->assertEquals(207, $this->response->status, 'Incorrect status code returned. Body: '.$this->response->body); $this->assertEquals([ 'X-Sabre-Temp' => ['true'], 'Content-Type' => ['application/xml; charset=utf-8'], ], $this->response->getHeaders()); - $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body); + $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", 'xmlns\\1="urn:DAV"', $this->response->body); $xml = simplexml_load_string($body); $xml->registerXPathNamespace('d', 'urn:DAV'); list($data) = $xml->xpath('/d:multistatus/d:response/d:href'); - $this->assertEquals('/._testput.txt', (string)$data, 'href element should have been /._testput.txt'); + $this->assertEquals('/._testput.txt', (string) $data, 'href element should have been /._testput.txt'); $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:resourcetype'); $this->assertEquals(1, count($data)); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php b/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php index 619ac03fd..3bfe3b3b0 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php @@ -1,37 +1,35 @@ <?php +declare(strict_types=1); + namespace Sabre\DAV; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; -class TestPlugin extends ServerPlugin { - +class TestPlugin extends ServerPlugin +{ public $beforeMethod; - function getFeatures() { - + public function getFeatures() + { return ['drinking']; - } - function getHTTPMethods($uri) { - - return ['BEER','WINE']; - + public function getHTTPMethods($uri) + { + return ['BEER', 'WINE']; } - function initialize(Server $server) { - - $server->on('beforeMethod', [$this, 'beforeMethod']); - + public function initialize(Server $server) + { + $server->on('beforeMethod:*', [$this, 'beforeMethod']); } - function beforeMethod(RequestInterface $request, ResponseInterface $response) { - + public function beforeMethod(RequestInterface $request, ResponseInterface $response) + { $this->beforeMethod = $request->getMethod(); - return true; + return true; } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php index c70d17a22..51ff5ccde 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php @@ -1,110 +1,104 @@ <?php -namespace Sabre\DAV; - -class TreeTest extends \PHPUnit_Framework_TestCase { +declare(strict_types=1); - function testNodeExists() { +namespace Sabre\DAV; +class TreeTest extends \PHPUnit\Framework\TestCase +{ + public function testNodeExists() + { $tree = new TreeMock(); $this->assertTrue($tree->nodeExists('hi')); $this->assertFalse($tree->nodeExists('hello')); - } - function testCopy() { - + public function testCopy() + { $tree = new TreeMock(); $tree->copy('hi', 'hi2'); $this->assertArrayHasKey('hi2', $tree->getNodeForPath('')->newDirectories); $this->assertEquals('foobar', $tree->getNodeForPath('hi/file')->get()); $this->assertEquals(['test1' => 'value'], $tree->getNodeForPath('hi/file')->getProperties([])); - } - function testCopyFile() { - + public function testCopyFile() + { $tree = new TreeMock(); $tree->copy('hi/file', 'hi/newfile'); $this->assertArrayHasKey('newfile', $tree->getNodeForPath('hi')->newFiles); } - function testCopyFile0() { - + public function testCopyFile0() + { $tree = new TreeMock(); $tree->copy('hi/file', 'hi/0'); $this->assertArrayHasKey('0', $tree->getNodeForPath('hi')->newFiles); } - function testMove() { - + public function testMove() + { $tree = new TreeMock(); $tree->move('hi', 'hi2'); $this->assertEquals('hi2', $tree->getNodeForPath('hi')->getName()); $this->assertTrue($tree->getNodeForPath('hi')->isRenamed); - } - function testDeepMove() { - + public function testDeepMove() + { $tree = new TreeMock(); $tree->move('hi/sub', 'hi2'); $this->assertArrayHasKey('hi2', $tree->getNodeForPath('')->newDirectories); $this->assertTrue($tree->getNodeForPath('hi/sub')->isDeleted); - } - function testDelete() { - + public function testDelete() + { $tree = new TreeMock(); $tree->delete('hi'); $this->assertTrue($tree->getNodeForPath('hi')->isDeleted); - } - function testGetChildren() { - + public function testGetChildren() + { $tree = new TreeMock(); $children = $tree->getChildren(''); - $this->assertEquals(2, count($children)); - $this->assertEquals('hi', $children[0]->getName()); - + $firstChild = $children->current(); + $this->assertEquals('hi', $firstChild->getName()); } - function testGetMultipleNodes() { - + public function testGetMultipleNodes() + { $tree = new TreeMock(); $result = $tree->getMultipleNodes(['hi/sub', 'hi/file']); $this->assertArrayHasKey('hi/sub', $result); $this->assertArrayHasKey('hi/file', $result); - $this->assertEquals('sub', $result['hi/sub']->getName()); + $this->assertEquals('sub', $result['hi/sub']->getName()); $this->assertEquals('file', $result['hi/file']->getName()); - } - function testGetMultipleNodes2() { + public function testGetMultipleNodes2() + { $tree = new TreeMock(); $result = $tree->getMultipleNodes(['multi/1', 'multi/2']); $this->assertArrayHasKey('multi/1', $result); $this->assertArrayHasKey('multi/2', $result); - } - } -class TreeMock extends Tree { - +class TreeMock extends Tree +{ private $nodes = []; - function __construct() { - + public function __construct() + { $file = new TreeFileTester('file'); $file->properties = ['test1' => 'value']; $file->data = 'foobar'; @@ -119,92 +113,86 @@ class TreeMock extends Tree { new TreeFileTester('1'), new TreeFileTester('2'), new TreeFileTester('3'), - ]) + ]), ]) ); - } - } -class TreeDirectoryTester extends SimpleCollection { - +class TreeDirectoryTester extends SimpleCollection +{ public $newDirectories = []; public $newFiles = []; public $isDeleted = false; public $isRenamed = false; - function createDirectory($name) { - + public function createDirectory($name) + { $this->newDirectories[$name] = true; - } - function createFile($name, $data = null) { - + public function createFile($name, $data = null) + { $this->newFiles[$name] = $data; - } - function getChild($name) { + public function getChild($name) + { + if (isset($this->newDirectories[$name])) { + return new self($name); + } + if (isset($this->newFiles[$name])) { + return new TreeFileTester($name, $this->newFiles[$name]); + } - if (isset($this->newDirectories[$name])) return new self($name); - if (isset($this->newFiles[$name])) return new TreeFileTester($name, $this->newFiles[$name]); return parent::getChild($name); - } - function childExists($name) { - - return !!$this->getChild($name); - + public function childExists($name) + { + return (bool) $this->getChild($name); } - function delete() { - + public function delete() + { $this->isDeleted = true; - } - function setName($name) { - + public function setName($name) + { $this->isRenamed = true; $this->name = $name; - } - } -class TreeFileTester extends File implements IProperties { - +class TreeFileTester extends File implements IProperties +{ public $name; public $data; public $properties; - function __construct($name, $data = null) { - + public function __construct($name, $data = null) + { $this->name = $name; - if (is_null($data)) $data = 'bla'; + if (is_null($data)) { + $data = 'bla'; + } $this->data = $data; - } - function getName() { - + public function getName() + { return $this->name; - } - function get() { - + public function get() + { return $this->data; - } - function getProperties($properties) { - + public function getProperties($properties) + { return $this->properties; - } /** @@ -217,19 +205,16 @@ class TreeFileTester extends File implements IProperties { * Read the PropPatch documentation for more information. * * @param PropPatch $propPatch - * @return void */ - function propPatch(PropPatch $propPatch) { - + public function propPatch(PropPatch $propPatch) + { $this->properties = $propPatch->getMutations(); $propPatch->setRemainingResultCode(200); - } - } -class TreeMultiGetTester extends TreeDirectoryTester implements IMultiGet { - +class TreeMultiGetTester extends TreeDirectoryTester implements IMultiGet +{ /** * This method receives a list of paths in it's first argument. * It must return an array with Node objects. @@ -237,10 +222,11 @@ class TreeMultiGetTester extends TreeDirectoryTester implements IMultiGet { * If any children are not found, you do not have to return them. * * @param array $paths + * * @return array */ - function getMultipleChildren(array $paths) { - + public function getMultipleChildren(array $paths) + { $result = []; foreach ($paths as $path) { try { @@ -252,7 +238,5 @@ class TreeMultiGetTester extends TreeDirectoryTester implements IMultiGet { } return $result; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAV/UUIDUtilTest.php b/vendor/sabre/dav/tests/Sabre/DAV/UUIDUtilTest.php index f005ecc75..d7ef9bec9 100644 --- a/vendor/sabre/dav/tests/Sabre/DAV/UUIDUtilTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAV/UUIDUtilTest.php @@ -1,11 +1,13 @@ <?php -namespace Sabre\DAV; - -class UUIDUtilTest extends \PHPUnit_Framework_TestCase { +declare(strict_types=1); - function testValidateUUID() { +namespace Sabre\DAV; +class UUIDUtilTest extends \PHPUnit\Framework\TestCase +{ + public function testValidateUUID() + { $this->assertTrue( UUIDUtil::validateUUID('11111111-2222-3333-4444-555555555555') ); @@ -18,8 +20,5 @@ class UUIDUtilTest extends \PHPUnit_Framework_TestCase { $this->assertFalse( UUIDUtil::validateUUID('fffffffg-2222-3333-4444-555555555555') ); - - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php index 7d7a54d06..3627991bf 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php @@ -1,38 +1,39 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP; -class ACLMethodTest extends \PHPUnit_Framework_TestCase { - +class ACLMethodTest extends \PHPUnit\Framework\TestCase +{ /** - * @expectedException Sabre\DAV\Exception\BadRequest + * @expectedException \Sabre\DAV\Exception\BadRequest */ - function testCallback() { - + public function testCallback() + { $acl = new Plugin(); $server = new DAV\Server(); $server->addPlugin(new DAV\Auth\Plugin()); $server->addPlugin($acl); $acl->httpAcl($server->httpRequest, $server->httpResponse); - } /** /** - * @expectedException Sabre\DAV\Exception\MethodNotAllowed + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ - function testNotSupportedByNode() { - + public function testNotSupportedByNode() + { $tree = [ new DAV\SimpleCollection('test'), ]; $acl = new Plugin(); $server = new DAV\Server($tree); - $server->httpRequest = new HTTP\Request(); + $server->httpRequest = new HTTP\Request('GET', '/'); $body = '<?xml version="1.0"?> <d:acl xmlns:d="DAV:"> </d:acl>'; @@ -41,17 +42,16 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } - function testSuccessSimple() { - + public function testSuccessSimple() + { $tree = [ new MockACLNode('test', []), ]; $acl = new Plugin(); $server = new DAV\Server($tree); - $server->httpRequest = new HTTP\Request(); + $server->httpRequest = new HTTP\Request('GET', '/'); $server->httpRequest->setUrl('/test'); $body = '<?xml version="1.0"?> @@ -62,14 +62,13 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $this->assertFalse($acl->httpACL($server->httpRequest, $server->httpResponse)); - } /** - * @expectedException Sabre\DAVACL\Exception\NotRecognizedPrincipal + * @expectedException \Sabre\DAVACL\Exception\NotRecognizedPrincipal */ - function testUnrecognizedPrincipal() { - + public function testUnrecognizedPrincipal() + { $tree = [ new MockACLNode('test', []), ]; @@ -88,14 +87,13 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } /** - * @expectedException Sabre\DAVACL\Exception\NotRecognizedPrincipal + * @expectedException \Sabre\DAVACL\Exception\NotRecognizedPrincipal */ - function testUnrecognizedPrincipal2() { - + public function testUnrecognizedPrincipal2() + { $tree = [ new MockACLNode('test', []), new DAV\SimpleCollection('principals', [ @@ -117,14 +115,13 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } /** - * @expectedException Sabre\DAVACL\Exception\NotSupportedPrivilege + * @expectedException \Sabre\DAVACL\Exception\NotSupportedPrivilege */ - function testUnknownPrivilege() { - + public function testUnknownPrivilege() + { $tree = [ new MockACLNode('test', []), ]; @@ -143,20 +140,19 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } /** - * @expectedException Sabre\DAVACL\Exception\NoAbstract + * @expectedException \Sabre\DAVACL\Exception\NoAbstract */ - function testAbstractPrivilege() { - + public function testAbstractPrivilege() + { $tree = [ new MockACLNode('test', []), ]; $acl = new Plugin(); $server = new DAV\Server($tree); - $server->on('getSupportedPrivilegeSet', function($node, &$supportedPrivilegeSet) { + $server->on('getSupportedPrivilegeSet', function ($node, &$supportedPrivilegeSet) { $supportedPrivilegeSet['{DAV:}foo'] = ['abstract' => true]; }); $server->httpRequest = new HTTP\Request('ACL', '/test'); @@ -172,14 +168,13 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } /** - * @expectedException Sabre\DAVACL\Exception\AceConflict + * @expectedException \Sabre\DAVACL\Exception\AceConflict */ - function testUpdateProtectedPrivilege() { - + public function testUpdateProtectedPrivilege() + { $oldACL = [ [ 'principal' => 'principals/notfound', @@ -206,14 +201,13 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } /** - * @expectedException Sabre\DAVACL\Exception\AceConflict + * @expectedException \Sabre\DAVACL\Exception\AceConflict */ - function testUpdateProtectedPrivilege2() { - + public function testUpdateProtectedPrivilege2() + { $oldACL = [ [ 'principal' => 'principals/notfound', @@ -240,14 +234,13 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } /** - * @expectedException Sabre\DAVACL\Exception\AceConflict + * @expectedException \Sabre\DAVACL\Exception\AceConflict */ - function testUpdateProtectedPrivilege3() { - + public function testUpdateProtectedPrivilege3() + { $oldACL = [ [ 'principal' => 'principals/notfound', @@ -274,11 +267,10 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($acl); $acl->httpACL($server->httpRequest, $server->httpResponse); - } - function testSuccessComplex() { - + public function testSuccessComplex() + { $oldACL = [ [ 'principal' => 'principals/foo', @@ -317,7 +309,6 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { $server->addPlugin(new DAV\Auth\Plugin()); $server->addPlugin($acl); - $this->assertFalse($acl->httpAcl($server->httpRequest, $server->httpResponse)); $this->assertEquals([ @@ -332,6 +323,5 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase { 'protected' => false, ], ], $node->getACL()); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php index f16693625..724abc685 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php @@ -1,18 +1,20 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; -class AllowAccessTest extends \PHPUnit_Framework_TestCase { - +class AllowAccessTest extends \PHPUnit\Framework\TestCase +{ /** * @var DAV\Server */ protected $server; - function setUp() { - + public function setUp() + { $nodes = [ new DAV\Mock\Collection('testdir', [ 'file1.txt' => 'contents', @@ -27,106 +29,92 @@ class AllowAccessTest extends \PHPUnit_Framework_TestCase { ); // Login $this->server->getPlugin('auth')->beforeMethod( - new \Sabre\HTTP\Request(), + new \Sabre\HTTP\Request('GET', '/'), new \Sabre\HTTP\Response() ); $aclPlugin = new Plugin(); $this->server->addPlugin($aclPlugin); - } - function testGet() { - + public function testGet() + { $this->server->httpRequest->setMethod('GET'); $this->server->httpRequest->setUrl('/testdir'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse])); } - function testGetDoesntExist() { - + public function testGetDoesntExist() + { $this->server->httpRequest->setMethod('GET'); $this->server->httpRequest->setUrl('/foo'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse])); } - function testHEAD() { - + public function testHEAD() + { $this->server->httpRequest->setMethod('HEAD'); $this->server->httpRequest->setUrl('/testdir'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:HEAD', [$this->server->httpRequest, $this->server->httpResponse])); } - function testOPTIONS() { - + public function testOPTIONS() + { $this->server->httpRequest->setMethod('OPTIONS'); $this->server->httpRequest->setUrl('/testdir'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:OPTIONS', [$this->server->httpRequest, $this->server->httpResponse])); } - function testPUT() { - + public function testPUT() + { $this->server->httpRequest->setMethod('PUT'); $this->server->httpRequest->setUrl('/testdir/file1.txt'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:PUT', [$this->server->httpRequest, $this->server->httpResponse])); } - function testPROPPATCH() { - + public function testPROPPATCH() + { $this->server->httpRequest->setMethod('PROPPATCH'); $this->server->httpRequest->setUrl('/testdir'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:PROPPATCH', [$this->server->httpRequest, $this->server->httpResponse])); } - function testCOPY() { - + public function testCOPY() + { $this->server->httpRequest->setMethod('COPY'); $this->server->httpRequest->setUrl('/testdir'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:COPY', [$this->server->httpRequest, $this->server->httpResponse])); } - function testMOVE() { - + public function testMOVE() + { $this->server->httpRequest->setMethod('MOVE'); $this->server->httpRequest->setUrl('/testdir'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:MOVE', [$this->server->httpRequest, $this->server->httpResponse])); } - function testLOCK() { - + public function testLOCK() + { $this->server->httpRequest->setMethod('LOCK'); $this->server->httpRequest->setUrl('/testdir'); - $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse])); - + $this->assertTrue($this->server->emit('beforeMethod:LOCK', [$this->server->httpRequest, $this->server->httpResponse])); } - function testBeforeBind() { - + public function testBeforeBind() + { $this->assertTrue($this->server->emit('beforeBind', ['testdir/file'])); - } - - function testBeforeUnbind() { - + public function testBeforeUnbind() + { $this->assertTrue($this->server->emit('beforeUnbind', ['testdir'])); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php index ceae9aed0..3c3aaf6c9 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php @@ -1,19 +1,21 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; -class BlockAccessTest extends \PHPUnit_Framework_TestCase { - +class BlockAccessTest extends \PHPUnit\Framework\TestCase +{ /** * @var DAV\Server */ protected $server; protected $plugin; - function setUp() { - + public function setUp() + { $nodes = [ new DAV\SimpleCollection('testdir'), ]; @@ -28,151 +30,138 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase { ); // Login $this->server->getPlugin('auth')->beforeMethod( - new \Sabre\HTTP\Request(), + new \Sabre\HTTP\Request('GET', '/'), new \Sabre\HTTP\Response() ); $this->server->addPlugin($this->plugin); - } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testGet() { - + public function testGet() + { $this->server->httpRequest->setMethod('GET'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } - function testGetDoesntExist() { - + public function testGetDoesntExist() + { $this->server->httpRequest->setMethod('GET'); $this->server->httpRequest->setUrl('/foo'); - $r = $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); + $r = $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); $this->assertTrue($r); - } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testHEAD() { - + public function testHEAD() + { $this->server->httpRequest->setMethod('HEAD'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testOPTIONS() { - + public function testOPTIONS() + { $this->server->httpRequest->setMethod('OPTIONS'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testPUT() { - + public function testPUT() + { $this->server->httpRequest->setMethod('PUT'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testPROPPATCH() { - + public function testPROPPATCH() + { $this->server->httpRequest->setMethod('PROPPATCH'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testCOPY() { - + public function testCOPY() + { $this->server->httpRequest->setMethod('COPY'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testMOVE() { - + public function testMOVE() + { $this->server->httpRequest->setMethod('MOVE'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testACL() { - + public function testACL() + { $this->server->httpRequest->setMethod('ACL'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testLOCK() { - + public function testLOCK() + { $this->server->httpRequest->setMethod('LOCK'); $this->server->httpRequest->setUrl('/testdir'); - $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); - + $this->server->emit('beforeMethod:GET', [$this->server->httpRequest, $this->server->httpResponse]); } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testBeforeBind() { - + public function testBeforeBind() + { $this->server->emit('beforeBind', ['testdir/file']); - } /** - * @expectedException Sabre\DAVACL\Exception\NeedPrivileges + * @expectedException \Sabre\DAVACL\Exception\NeedPrivileges */ - function testBeforeUnbind() { - + public function testBeforeUnbind() + { $this->server->emit('beforeUnbind', ['testdir']); - } - function testPropFind() { - + public function testPropFind() + { $propFind = new DAV\PropFind('testdir', [ '{DAV:}displayname', '{DAV:}getcontentlength', @@ -187,19 +176,18 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase { 200 => [], 404 => [], 403 => [ - '{DAV:}displayname' => null, + '{DAV:}displayname' => null, '{DAV:}getcontentlength' => null, - '{DAV:}bar' => null, - '{DAV:}owner' => null, + '{DAV:}bar' => null, + '{DAV:}owner' => null, ], ]; $this->assertEquals($expected, $propFind->getResultForMultiStatus()); - } - function testBeforeGetPropertiesNoListing() { - + public function testBeforeGetPropertiesNoListing() + { $this->plugin->hideNodesFromListings = true; $propFind = new DAV\PropFind('testdir', [ '{DAV:}displayname', @@ -210,6 +198,5 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase { $r = $this->server->emit('propFind', [$propFind, new DAV\SimpleCollection('testdir')]); $this->assertFalse($r); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/AceConflictTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/AceConflictTest.php index 1cdf2949f..60fb8f3e8 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/AceConflictTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/AceConflictTest.php @@ -1,13 +1,15 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL\Exception; use Sabre\DAV; -class AceConflictTest extends \PHPUnit_Framework_TestCase { - - function testSerialize() { - +class AceConflictTest extends \PHPUnit\Framework\TestCase +{ + public function testSerialize() + { $ex = new AceConflict('message'); $server = new DAV\Server(); @@ -18,7 +20,7 @@ class AceConflictTest extends \PHPUnit_Framework_TestCase { $ex->serialize($server, $root); $xpaths = [ - '/d:root' => 1, + '/d:root' => 1, '/d:root/d:no-ace-conflict' => 1, ]; @@ -29,11 +31,7 @@ class AceConflictTest extends \PHPUnit_Framework_TestCase { $dxpath = new \DOMXPath($dom2); $dxpath->registerNamespace('d', 'DAV:'); foreach ($xpaths as $xpath => $count) { - - $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count); - + $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : '.$xpath.', we could only find '.$dxpath->query($xpath)->length.' elements, while we expected '.$count); } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NeedPrivilegesExceptionTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NeedPrivilegesExceptionTest.php index b13e7722d..f08e536b5 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NeedPrivilegesExceptionTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NeedPrivilegesExceptionTest.php @@ -1,13 +1,15 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL\Exception; use Sabre\DAV; -class NeedPrivilegesExceptionTest extends \PHPUnit_Framework_TestCase { - - function testSerialize() { - +class NeedPrivilegesExceptionTest extends \PHPUnit\Framework\TestCase +{ + public function testSerialize() + { $uri = 'foo'; $privileges = [ '{DAV:}read', @@ -23,12 +25,12 @@ class NeedPrivilegesExceptionTest extends \PHPUnit_Framework_TestCase { $ex->serialize($server, $root); $xpaths = [ - '/d:root' => 1, - '/d:root/d:need-privileges' => 1, - '/d:root/d:need-privileges/d:resource' => 2, - '/d:root/d:need-privileges/d:resource/d:href' => 2, - '/d:root/d:need-privileges/d:resource/d:privilege' => 2, - '/d:root/d:need-privileges/d:resource/d:privilege/d:read' => 1, + '/d:root' => 1, + '/d:root/d:need-privileges' => 1, + '/d:root/d:need-privileges/d:resource' => 2, + '/d:root/d:need-privileges/d:resource/d:href' => 2, + '/d:root/d:need-privileges/d:resource/d:privilege' => 2, + '/d:root/d:need-privileges/d:resource/d:privilege/d:read' => 1, '/d:root/d:need-privileges/d:resource/d:privilege/d:write' => 1, ]; @@ -39,11 +41,7 @@ class NeedPrivilegesExceptionTest extends \PHPUnit_Framework_TestCase { $dxpath = new \DOMXPath($dom2); $dxpath->registerNamespace('d', 'DAV:'); foreach ($xpaths as $xpath => $count) { - - $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count); - + $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : '.$xpath.', we could only find '.$dxpath->query($xpath)->length.' elements, while we expected '.$count); } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NoAbstractTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NoAbstractTest.php index f52b17371..38e9d8b93 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NoAbstractTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NoAbstractTest.php @@ -1,13 +1,15 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL\Exception; use Sabre\DAV; -class NoAbstractTest extends \PHPUnit_Framework_TestCase { - - function testSerialize() { - +class NoAbstractTest extends \PHPUnit\Framework\TestCase +{ + public function testSerialize() + { $ex = new NoAbstract('message'); $server = new DAV\Server(); @@ -18,7 +20,7 @@ class NoAbstractTest extends \PHPUnit_Framework_TestCase { $ex->serialize($server, $root); $xpaths = [ - '/d:root' => 1, + '/d:root' => 1, '/d:root/d:no-abstract' => 1, ]; @@ -29,11 +31,7 @@ class NoAbstractTest extends \PHPUnit_Framework_TestCase { $dxpath = new \DOMXPath($dom2); $dxpath->registerNamespace('d', 'DAV:'); foreach ($xpaths as $xpath => $count) { - - $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count); - + $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : '.$xpath.', we could only find '.$dxpath->query($xpath)->length.' elements, while we expected '.$count); } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotRecognizedPrincipalTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotRecognizedPrincipalTest.php index df89aaf84..62915ea1d 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotRecognizedPrincipalTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotRecognizedPrincipalTest.php @@ -1,13 +1,15 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL\Exception; use Sabre\DAV; -class NotRecognizedPrincipalTest extends \PHPUnit_Framework_TestCase { - - function testSerialize() { - +class NotRecognizedPrincipalTest extends \PHPUnit\Framework\TestCase +{ + public function testSerialize() + { $ex = new NotRecognizedPrincipal('message'); $server = new DAV\Server(); @@ -18,7 +20,7 @@ class NotRecognizedPrincipalTest extends \PHPUnit_Framework_TestCase { $ex->serialize($server, $root); $xpaths = [ - '/d:root' => 1, + '/d:root' => 1, '/d:root/d:recognized-principal' => 1, ]; @@ -29,11 +31,7 @@ class NotRecognizedPrincipalTest extends \PHPUnit_Framework_TestCase { $dxpath = new \DOMXPath($dom2); $dxpath->registerNamespace('d', 'DAV:'); foreach ($xpaths as $xpath => $count) { - - $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count); - + $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : '.$xpath.', we could only find '.$dxpath->query($xpath)->length.' elements, while we expected '.$count); } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotSupportedPrivilegeTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotSupportedPrivilegeTest.php index 50623952b..668c713d2 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotSupportedPrivilegeTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/Exception/NotSupportedPrivilegeTest.php @@ -1,13 +1,15 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL\Exception; use Sabre\DAV; -class NotSupportedPrivilegeTest extends \PHPUnit_Framework_TestCase { - - function testSerialize() { - +class NotSupportedPrivilegeTest extends \PHPUnit\Framework\TestCase +{ + public function testSerialize() + { $ex = new NotSupportedPrivilege('message'); $server = new DAV\Server(); @@ -18,7 +20,7 @@ class NotSupportedPrivilegeTest extends \PHPUnit_Framework_TestCase { $ex->serialize($server, $root); $xpaths = [ - '/d:root' => 1, + '/d:root' => 1, '/d:root/d:not-supported-privilege' => 1, ]; @@ -29,11 +31,7 @@ class NotSupportedPrivilegeTest extends \PHPUnit_Framework_TestCase { $dxpath = new \DOMXPath($dom2); $dxpath->registerNamespace('d', 'DAV:'); foreach ($xpaths as $xpath => $count) { - - $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count); - + $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : '.$xpath.', we could only find '.$dxpath->query($xpath)->length.' elements, while we expected '.$count); } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php index 91de64372..28e328ea6 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; @@ -7,24 +9,24 @@ use Sabre\HTTP; require_once 'Sabre/HTTP/ResponseMock.php'; -class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { - - function getServer() { - +class ExpandPropertiesTest extends \PHPUnit\Framework\TestCase +{ + public function getServer() + { $tree = [ new DAV\Mock\PropertiesCollection('node1', [], [ '{http://sabredav.org/ns}simple' => 'foo', - '{http://sabredav.org/ns}href' => new DAV\Xml\Property\Href('node2'), - '{DAV:}displayname' => 'Node 1', + '{http://sabredav.org/ns}href' => new DAV\Xml\Property\Href('node2'), + '{DAV:}displayname' => 'Node 1', ]), new DAV\Mock\PropertiesCollection('node2', [], [ - '{http://sabredav.org/ns}simple' => 'simple', + '{http://sabredav.org/ns}simple' => 'simple', '{http://sabredav.org/ns}hreflist' => new DAV\Xml\Property\Href(['node1', 'node3']), - '{DAV:}displayname' => 'Node 2', + '{DAV:}displayname' => 'Node 2', ]), new DAV\Mock\PropertiesCollection('node3', [], [ '{http://sabredav.org/ns}simple' => 'simple', - '{DAV:}displayname' => 'Node 3', + '{DAV:}displayname' => 'Node 3', ]), ]; @@ -39,7 +41,7 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { [ 'principal' => '{DAV:}all', 'privilege' => '{DAV:}all', - ] + ], ]); $this->assertTrue($plugin instanceof Plugin); @@ -47,11 +49,10 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertEquals($plugin, $fakeServer->getPlugin('acl')); return $fakeServer; - } - function testSimple() { - + public function testSimple() + { $xml = '<?xml version="1.0"?> <d:expand-property xmlns:d="DAV:"> <d:property name="displayname" /> @@ -62,8 +63,8 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/node1', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/node1', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -74,22 +75,21 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $server->exec(); - $this->assertEquals(207, $server->httpResponse->status, 'Incorrect status code received. Full body: ' . $server->httpResponse->body); + $this->assertEquals(207, $server->httpResponse->status, 'Incorrect status code received. Full body: '.$server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', - '/d:multistatus/d:response' => 1, - '/d:multistatus/d:response/d:href' => 1, - '/d:multistatus/d:response/d:propstat' => 2, - '/d:multistatus/d:response/d:propstat/d:prop' => 2, + '/d:multistatus/d:response' => 1, + '/d:multistatus/d:response/d:href' => 1, + '/d:multistatus/d:response/d:propstat' => 2, + '/d:multistatus/d:response/d:propstat/d:prop' => 2, '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:simple' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:href' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:simple' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:href' => 1, '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:href' => 1, ]; @@ -97,25 +97,24 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $xml->registerXPathNamespace('d', 'DAV:'); $xml->registerXPathNamespace('s', 'http://sabredav.org/ns'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response: ' . $server->httpResponse->body); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result).'. Full response: '.$server->httpResponse->body); } - } /** * @depends testSimple */ - function testExpand() { - + public function testExpand() + { $xml = '<?xml version="1.0"?> <d:expand-property xmlns:d="DAV:"> <d:property name="href" namespace="http://sabredav.org/ns"> @@ -125,8 +124,8 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/node1', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/node1', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -137,24 +136,23 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $server->exec(); - $this->assertEquals(207, $server->httpResponse->status, 'Incorrect response status received. Full response body: ' . $server->httpResponse->body); + $this->assertEquals(207, $server->httpResponse->status, 'Incorrect response status received. Full response body: '.$server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', - '/d:multistatus/d:response' => 1, - '/d:multistatus/d:response/d:href' => 1, - '/d:multistatus/d:response/d:propstat' => 1, - '/d:multistatus/d:response/d:propstat/d:prop' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:href' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response/d:href' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response/d:propstat' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response/d:propstat/d:prop' => 1, + '/d:multistatus/d:response' => 1, + '/d:multistatus/d:response/d:href' => 1, + '/d:multistatus/d:response/d:propstat' => 1, + '/d:multistatus/d:response/d:propstat/d:prop' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:href' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response/d:href' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response/d:propstat' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response/d:propstat/d:prop' => 1, '/d:multistatus/d:response/d:propstat/d:prop/s:href/d:response/d:propstat/d:prop/d:displayname' => 1, ]; @@ -162,25 +160,24 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $xml->registerXPathNamespace('d', 'DAV:'); $xml->registerXPathNamespace('s', 'http://sabredav.org/ns'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . ' Full response body: ' . $server->httpResponse->getBodyAsString()); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result).' Full response body: '.$server->httpResponse->getBodyAsString()); } - } /** * @depends testSimple */ - function testExpandHrefList() { - + public function testExpandHrefList() + { $xml = '<?xml version="1.0"?> <d:expand-property xmlns:d="DAV:"> <d:property name="hreflist" namespace="http://sabredav.org/ns"> @@ -190,8 +187,8 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/node2', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/node2', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -205,21 +202,20 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(207, $server->httpResponse->status); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', - '/d:multistatus/d:response' => 1, - '/d:multistatus/d:response/d:href' => 1, - '/d:multistatus/d:response/d:propstat' => 1, - '/d:multistatus/d:response/d:propstat/d:prop' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response' => 2, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:href' => 2, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat' => 2, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop' => 2, + '/d:multistatus/d:response' => 1, + '/d:multistatus/d:response/d:href' => 1, + '/d:multistatus/d:response/d:propstat' => 1, + '/d:multistatus/d:response/d:propstat/d:prop' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response' => 2, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:href' => 2, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat' => 2, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop' => 2, '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/d:displayname' => 2, ]; @@ -227,25 +223,24 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $xml->registerXPathNamespace('d', 'DAV:'); $xml->registerXPathNamespace('s', 'http://sabredav.org/ns'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result)); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result)); } - } /** * @depends testExpand */ - function testExpandDeep() { - + public function testExpandDeep() + { $xml = '<?xml version="1.0"?> <d:expand-property xmlns:d="DAV:"> <d:property name="hreflist" namespace="http://sabredav.org/ns"> @@ -258,8 +253,8 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/node2', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/node2', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -273,27 +268,26 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(207, $server->httpResponse->status); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', - '/d:multistatus/d:response' => 1, - '/d:multistatus/d:response/d:href' => 1, - '/d:multistatus/d:response/d:propstat' => 1, - '/d:multistatus/d:response/d:propstat/d:prop' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response' => 2, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:href' => 2, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat' => 3, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop' => 3, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/d:displayname' => 2, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href' => 2, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response/d:href' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response/d:propstat' => 1, - '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response/d:propstat/d:prop' => 1, + '/d:multistatus/d:response' => 1, + '/d:multistatus/d:response/d:href' => 1, + '/d:multistatus/d:response/d:propstat' => 1, + '/d:multistatus/d:response/d:propstat/d:prop' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response' => 2, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:href' => 2, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat' => 3, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop' => 3, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/d:displayname' => 2, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href' => 2, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response/d:href' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response/d:propstat' => 1, + '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response/d:propstat/d:prop' => 1, '/d:multistatus/d:response/d:propstat/d:prop/s:hreflist/d:response/d:propstat/d:prop/s:href/d:response/d:propstat/d:prop/d:displayname' => 1, ]; @@ -301,17 +295,16 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase { $xml->registerXPathNamespace('d', 'DAV:'); $xml->registerXPathNamespace('s', 'http://sabredav.org/ns'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result)); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result)); } - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/MockACLNode.php b/vendor/sabre/dav/tests/Sabre/DAVACL/MockACLNode.php index 2d9744e29..51411f304 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/MockACLNode.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/MockACLNode.php @@ -1,55 +1,49 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; -class MockACLNode extends DAV\Node implements IACL { - +class MockACLNode extends DAV\Node implements IACL +{ public $name; public $acl; - function __construct($name, array $acl = []) { - + public function __construct($name, array $acl = []) + { $this->name = $name; $this->acl = $acl; - } - function getName() { - + public function getName() + { return $this->name; - } - function getOwner() { - + public function getOwner() + { return null; - } - function getGroup() { - + public function getGroup() + { return null; - } - function getACL() { - + public function getACL() + { return $this->acl; - } - function setACL(array $acl) { - + public function setACL(array $acl) + { $this->acl = $acl; - } - function getSupportedPrivilegeSet() { - + public function getSupportedPrivilegeSet() + { return null; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/MockPrincipal.php b/vendor/sabre/dav/tests/Sabre/DAVACL/MockPrincipal.php index 934906802..f67025c5a 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/MockPrincipal.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/MockPrincipal.php @@ -1,64 +1,58 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; -class MockPrincipal extends DAV\Node implements IPrincipal { - +class MockPrincipal extends DAV\Node implements IPrincipal +{ public $name; public $principalUrl; public $groupMembership = []; public $groupMemberSet = []; - function __construct($name, $principalUrl, array $groupMembership = [], array $groupMemberSet = []) { - + public function __construct($name, $principalUrl, array $groupMembership = [], array $groupMemberSet = []) + { $this->name = $name; $this->principalUrl = $principalUrl; $this->groupMembership = $groupMembership; $this->groupMemberSet = $groupMemberSet; - } - function getName() { - + public function getName() + { return $this->name; - } - function getDisplayName() { - + public function getDisplayName() + { return $this->getName(); - } - function getAlternateUriSet() { - + public function getAlternateUriSet() + { return []; - } - function getPrincipalUrl() { - + public function getPrincipalUrl() + { return $this->principalUrl; - } - function getGroupMemberSet() { - + public function getGroupMemberSet() + { return $this->groupMemberSet; - } - function getGroupMemberShip() { - + public function getGroupMemberShip() + { return $this->groupMembership; - } - function setGroupMemberSet(array $groupMemberSet) { - + public function setGroupMemberSet(array $groupMemberSet) + { $this->groupMemberSet = $groupMemberSet; - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php index 8552448f5..9ab16df74 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; @@ -8,12 +10,12 @@ use Sabre\HTTP; require_once 'Sabre/DAVACL/MockACLNode.php'; require_once 'Sabre/HTTP/ResponseMock.php'; -class PluginAdminTest extends \PHPUnit_Framework_TestCase { - +class PluginAdminTest extends \PHPUnit\Framework\TestCase +{ public $server; - function setUp() { - + public function setUp() + { $principalBackend = new PrincipalBackend\Mock(); $tree = [ @@ -27,15 +29,15 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase { $this->server->addPlugin($plugin); } - function testNoAdminAccess() { - + public function testNoAdminAccess() + { $plugin = new Plugin(); $this->server->addPlugin($plugin); $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'OPTIONS', - 'HTTP_DEPTH' => 1, - 'REQUEST_URI' => '/adminonly', + 'HTTP_DEPTH' => 1, + 'REQUEST_URI' => '/adminonly', ]); $response = new HTTP\ResponseMock(); @@ -46,14 +48,13 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase { $this->server->exec(); $this->assertEquals(403, $response->status); - } /** * @depends testNoAdminAccess */ - function testAdminAccess() { - + public function testAdminAccess() + { $plugin = new Plugin(); $plugin->adminPrincipals = [ 'principals/admin', @@ -62,8 +63,8 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase { $request = HTTP\Sapi::createFromServerArray([ 'REQUEST_METHOD' => 'OPTIONS', - 'HTTP_DEPTH' => 1, - 'REQUEST_URI' => '/adminonly', + 'HTTP_DEPTH' => 1, + 'REQUEST_URI' => '/adminonly', ]); $response = new HTTP\ResponseMock(); @@ -74,6 +75,5 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase { $this->server->exec(); $this->assertEquals(200, $response->status); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php index fb42efba7..16d3e781e 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php @@ -1,14 +1,16 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; use Sabre\HTTP; -class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { - - function testPrincipalCollectionSet() { - +class PluginPropertiesTest extends \PHPUnit\Framework\TestCase +{ + public function testPrincipalCollectionSet() + { $plugin = new Plugin(); $plugin->allowUnauthenticatedAccess = false; $plugin->setDefaultACL([ @@ -42,14 +44,11 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { 'principals2/', ]; - $this->assertEquals($expected, $result[200]['{DAV:}principal-collection-set']->getHrefs()); - - } - function testCurrentUserPrincipal() { - + public function testCurrentUserPrincipal() + { $fakeServer = new DAV\Server(); $plugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock()); $fakeServer->addPlugin($plugin); @@ -62,7 +61,6 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { ]); $fakeServer->addPlugin($plugin); - $requestedProperties = [ '{DAV:}current-user-principal', ]; @@ -76,7 +74,7 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(Xml\Property\Principal::UNAUTHENTICATED, $result[200]['{DAV:}current-user-principal']->getType()); // This will force the login - $fakeServer->emit('beforeMethod', [$fakeServer->httpRequest, $fakeServer->httpResponse]); + $fakeServer->emit('beforeMethod:PROPFIND', [$fakeServer->httpRequest, $fakeServer->httpResponse]); $result = $fakeServer->getPropertiesForPath('', $requestedProperties); $result = $result[0]; @@ -86,11 +84,10 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertInstanceOf('Sabre\DAVACL\Xml\Property\Principal', $result[200]['{DAV:}current-user-principal']); $this->assertEquals(Xml\Property\Principal::HREF, $result[200]['{DAV:}current-user-principal']->getType()); $this->assertEquals('principals/admin/', $result[200]['{DAV:}current-user-principal']->getHref()); - } - function testSupportedPrivilegeSet() { - + public function testSupportedPrivilegeSet() + { $plugin = new Plugin(); $plugin->allowUnauthenticatedAccess = false; $plugin->setDefaultACL([ @@ -119,28 +116,27 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $result = $server->xml->write('{DAV:}root', $prop); $xpaths = [ - '/d:root' => 1, - '/d:root/d:supported-privilege' => 1, - '/d:root/d:supported-privilege/d:privilege' => 1, - '/d:root/d:supported-privilege/d:privilege/d:all' => 1, - '/d:root/d:supported-privilege/d:abstract' => 0, - '/d:root/d:supported-privilege/d:supported-privilege' => 2, - '/d:root/d:supported-privilege/d:supported-privilege/d:privilege' => 2, - '/d:root/d:supported-privilege/d:supported-privilege/d:privilege/d:read' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:privilege/d:write' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege' => 7, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege' => 7, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:read-acl' => 1, + '/d:root' => 1, + '/d:root/d:supported-privilege' => 1, + '/d:root/d:supported-privilege/d:privilege' => 1, + '/d:root/d:supported-privilege/d:privilege/d:all' => 1, + '/d:root/d:supported-privilege/d:abstract' => 0, + '/d:root/d:supported-privilege/d:supported-privilege' => 2, + '/d:root/d:supported-privilege/d:supported-privilege/d:privilege' => 2, + '/d:root/d:supported-privilege/d:supported-privilege/d:privilege/d:read' => 1, + '/d:root/d:supported-privilege/d:supported-privilege/d:privilege/d:write' => 1, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege' => 7, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege' => 7, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:read-acl' => 1, '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:read-current-user-privilege-set' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:write-content' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:write-properties' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:bind' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unbind' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unlock' => 1, - '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:abstract' => 0, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:write-content' => 1, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:write-properties' => 1, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:bind' => 1, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unbind' => 1, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unlock' => 1, + '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:abstract' => 0, ]; - // reloading because php dom sucks $dom2 = new \DOMDocument('1.0', 'utf-8'); $dom2->loadXML($result); @@ -148,15 +144,12 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $dxpath = new \DOMXPath($dom2); $dxpath->registerNamespace('d', 'DAV:'); foreach ($xpaths as $xpath => $count) { - - $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count . ' Full XML: ' . $result); - + $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : '.$xpath.', we could only find '.$dxpath->query($xpath)->length.' elements, while we expected '.$count.' Full XML: '.$result); } - } - function testACL() { - + public function testACL() + { $plugin = new Plugin(); $plugin->allowUnauthenticatedAccess = false; $plugin->setDefaultACL([ @@ -171,12 +164,11 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { [ 'principal' => 'principals/admin', 'privilege' => '{DAV:}read', - ] + ], ]), new DAV\SimpleCollection('principals', [ $principal = new MockPrincipal('admin', 'principals/admin'), ]), - ]; $server = new DAV\Server($nodes); @@ -185,7 +177,7 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($authPlugin); // Force login - $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response()); + $authPlugin->beforeMethod(new HTTP\Request('GET', '/'), new HTTP\Response()); $requestedProperties = [ '{DAV:}acl', @@ -194,14 +186,13 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $result = $server->getPropertiesForPath('foo', $requestedProperties); $result = $result[0]; - $this->assertEquals(1, count($result[200]), 'The {DAV:}acl property did not return from the list. Full list: ' . print_r($result, true)); + $this->assertEquals(1, count($result[200]), 'The {DAV:}acl property did not return from the list. Full list: '.print_r($result, true)); $this->assertArrayHasKey('{DAV:}acl', $result[200]); $this->assertInstanceOf('Sabre\\DAVACL\\Xml\Property\\Acl', $result[200]['{DAV:}acl']); - } - function testACLRestrictions() { - + public function testACLRestrictions() + { $plugin = new Plugin(); $plugin->allowUnauthenticatedAccess = false; @@ -210,12 +201,11 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { [ 'principal' => 'principals/admin', 'privilege' => '{DAV:}read', - ] + ], ]), new DAV\SimpleCollection('principals', [ $principal = new MockPrincipal('admin', 'principals/admin'), ]), - ]; $server = new DAV\Server($nodes); @@ -224,7 +214,7 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($authPlugin); // Force login - $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response()); + $authPlugin->beforeMethod(new HTTP\Request('GET', '/'), new HTTP\Response()); $requestedProperties = [ '{DAV:}acl-restrictions', @@ -233,18 +223,17 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $result = $server->getPropertiesForPath('foo', $requestedProperties); $result = $result[0]; - $this->assertEquals(1, count($result[200]), 'The {DAV:}acl-restrictions property did not return from the list. Full list: ' . print_r($result, true)); + $this->assertEquals(1, count($result[200]), 'The {DAV:}acl-restrictions property did not return from the list. Full list: '.print_r($result, true)); $this->assertArrayHasKey('{DAV:}acl-restrictions', $result[200]); $this->assertInstanceOf('Sabre\\DAVACL\\Xml\\Property\\AclRestrictions', $result[200]['{DAV:}acl-restrictions']); - } - function testAlternateUriSet() { - + public function testAlternateUriSet() + { $tree = [ new DAV\SimpleCollection('principals', [ $principal = new MockPrincipal('user', 'principals/user'), - ]) + ]), ]; $fakeServer = new DAV\Server($tree); @@ -271,11 +260,10 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}alternate-URI-set']); $this->assertEquals([], $result[200]['{DAV:}alternate-URI-set']->getHrefs()); - } - function testPrincipalURL() { - + public function testPrincipalURL() + { $tree = [ new DAV\SimpleCollection('principals', [ $principal = new MockPrincipal('user', 'principals/user'), @@ -307,11 +295,10 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}principal-URL']); $this->assertEquals('principals/user/', $result[200]['{DAV:}principal-URL']->getHref()); - } - function testGroupMemberSet() { - + public function testGroupMemberSet() + { $tree = [ new DAV\SimpleCollection('principals', [ $principal = new MockPrincipal('user', 'principals/user'), @@ -343,11 +330,10 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}group-member-set']); $this->assertEquals([], $result[200]['{DAV:}group-member-set']->getHrefs()); - } - function testGroupMemberShip() { - + public function testGroupMemberShip() + { $tree = [ new DAV\SimpleCollection('principals', [ $principal = new MockPrincipal('user', 'principals/user'), @@ -377,11 +363,10 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}group-membership']); $this->assertEquals([], $result[200]['{DAV:}group-membership']->getHrefs()); - } - function testGetDisplayName() { - + public function testGetDisplayName() + { $tree = [ new DAV\SimpleCollection('principals', [ $principal = new MockPrincipal('user', 'principals/user'), @@ -410,6 +395,5 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase { $this->assertTrue(isset($result[200]['{DAV:}displayname'])); $this->assertEquals('user', $result[200]['{DAV:}displayname']); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php index 0147e6a61..169629a03 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php @@ -1,13 +1,15 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; -class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { - - function testUpdatePropertiesPassthrough() { - +class PluginUpdatePropertiesTest extends \PHPUnit\Framework\TestCase +{ + public function testUpdatePropertiesPassthrough() + { $tree = [ new DAV\SimpleCollection('foo'), ]; @@ -24,11 +26,10 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { ]; $this->assertEquals($expected, $result); - } - function testRemoveGroupMembers() { - + public function testRemoveGroupMembers() + { $tree = [ new MockPrincipal('foo', 'foo'), ]; @@ -42,16 +43,15 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { ]); $expected = [ - '{DAV:}group-member-set' => 204 + '{DAV:}group-member-set' => 204, ]; $this->assertEquals($expected, $result); $this->assertEquals([], $tree[0]->getGroupMemberSet()); - } - function testSetGroupMembers() { - + public function testSetGroupMembers() + { $tree = [ new MockPrincipal('foo', 'foo'), ]; @@ -65,19 +65,18 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { ]); $expected = [ - '{DAV:}group-member-set' => 200 + '{DAV:}group-member-set' => 200, ]; $this->assertEquals($expected, $result); $this->assertEquals(['bar', 'baz'], $tree[0]->getGroupMemberSet()); - } /** - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testSetBadValue() { - + public function testSetBadValue() + { $tree = [ new MockPrincipal('foo', 'foo'), ]; @@ -89,11 +88,10 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { $result = $server->updateProperties('foo', [ '{DAV:}group-member-set' => new \StdClass(), ]); - } - function testSetBadNode() { - + public function testSetBadNode() + { $tree = [ new DAV\SimpleCollection('foo'), ]; @@ -111,6 +109,5 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { ]; $this->assertEquals($expected, $result); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php index 9fef3018d..89f69b10a 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php @@ -1,16 +1,17 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL\PrincipalBackend; use Sabre\DAV; -use Sabre\HTTP; - -abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { +abstract class AbstractPDOTest extends \PHPUnit\Framework\TestCase +{ use DAV\DbTestHelperTrait; - function setUp() { - + public function setUp() + { $this->dropTables(['principals', 'groupmembers']); $this->createSchema('principals'); @@ -19,92 +20,85 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $pdo->query("INSERT INTO principals (uri,email,displayname) VALUES ('principals/user','user@example.org','User')"); $pdo->query("INSERT INTO principals (uri,email,displayname) VALUES ('principals/group','group@example.org','Group')"); - $pdo->query("INSERT INTO groupmembers (principal_id,member_id) VALUES (5,4)"); - + $pdo->query('INSERT INTO groupmembers (principal_id,member_id) VALUES (5,4)'); } - - function testConstruct() { - + public function testConstruct() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $this->assertTrue($backend instanceof PDO); - } /** * @depends testConstruct */ - function testGetPrincipalsByPrefix() { - + public function testGetPrincipalsByPrefix() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $expected = [ [ - 'uri' => 'principals/admin', + 'uri' => 'principals/admin', '{http://sabredav.org/ns}email-address' => 'admin@example.org', - '{DAV:}displayname' => 'Administrator', + '{DAV:}displayname' => 'Administrator', ], [ - 'uri' => 'principals/user', + 'uri' => 'principals/user', '{http://sabredav.org/ns}email-address' => 'user@example.org', - '{DAV:}displayname' => 'User', + '{DAV:}displayname' => 'User', ], [ - 'uri' => 'principals/group', + 'uri' => 'principals/group', '{http://sabredav.org/ns}email-address' => 'group@example.org', - '{DAV:}displayname' => 'Group', + '{DAV:}displayname' => 'Group', ], ]; $this->assertEquals($expected, $backend->getPrincipalsByPrefix('principals')); $this->assertEquals([], $backend->getPrincipalsByPrefix('foo')); - } /** * @depends testConstruct */ - function testGetPrincipalByPath() { - + public function testGetPrincipalByPath() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $expected = [ - 'id' => 4, - 'uri' => 'principals/user', + 'id' => 4, + 'uri' => 'principals/user', '{http://sabredav.org/ns}email-address' => 'user@example.org', - '{DAV:}displayname' => 'User', + '{DAV:}displayname' => 'User', ]; $this->assertEquals($expected, $backend->getPrincipalByPath('principals/user')); $this->assertEquals(null, $backend->getPrincipalByPath('foo')); - } - function testGetGroupMemberSet() { - + public function testGetGroupMemberSet() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $expected = ['principals/user']; $this->assertEquals($expected, $backend->getGroupMemberSet('principals/group')); - } - function testGetGroupMembership() { - + public function testGetGroupMembership() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $expected = ['principals/group']; $this->assertEquals($expected, $backend->getGroupMembership('principals/user')); - } - function testSetGroupMemberSet() { - + public function testSetGroupMemberSet() + { $pdo = $this->getPDO(); // Start situation @@ -118,12 +112,10 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { // Adding principals again $backend->setGroupMemberSet('principals/group', ['principals/user']); $this->assertEquals(['principals/user'], $backend->getGroupMemberSet('principals/group')); - - } - function testSearchPrincipals() { - + public function testSearchPrincipals() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); @@ -139,11 +131,10 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $result = $backend->searchPrincipals('mom', ['{DAV:}displayname' => 'UsEr', '{http://sabredav.org/ns}email-address' => 'USER@EXAMPLE']); $this->assertEquals([], $result); - } - function testUpdatePrincipal() { - + public function testUpdatePrincipal() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); @@ -157,22 +148,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertTrue($result); $this->assertEquals([ - 'id' => 4, - 'uri' => 'principals/user', - '{DAV:}displayname' => 'pietje', + 'id' => 4, + 'uri' => 'principals/user', + '{DAV:}displayname' => 'pietje', '{http://sabredav.org/ns}email-address' => 'user@example.org', ], $backend->getPrincipalByPath('principals/user')); - } - function testUpdatePrincipalUnknownField() { - + public function testUpdatePrincipalUnknownField() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $propPatch = new DAV\PropPatch([ '{DAV:}displayname' => 'pietje', - '{DAV:}unknown' => 'foo', + '{DAV:}unknown' => 'foo', ]); $backend->updatePrincipal('principals/user', $propPatch); @@ -182,36 +172,31 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $this->assertEquals([ '{DAV:}displayname' => 424, - '{DAV:}unknown' => 403 + '{DAV:}unknown' => 403, ], $propPatch->getResult()); $this->assertEquals([ - 'id' => '4', - 'uri' => 'principals/user', - '{DAV:}displayname' => 'User', + 'id' => '4', + 'uri' => 'principals/user', + '{DAV:}displayname' => 'User', '{http://sabredav.org/ns}email-address' => 'user@example.org', ], $backend->getPrincipalByPath('principals/user')); - } - function testFindByUriUnknownScheme() { - + public function testFindByUriUnknownScheme() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $this->assertNull($backend->findByUri('http://foo', 'principals')); - } - - function testFindByUri() { - + public function testFindByUri() + { $pdo = $this->getPDO(); $backend = new PDO($pdo); $this->assertEquals( 'principals/user', $backend->findByUri('mailto:user@example.org', 'principals') ); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php index 1464f4c26..551a77900 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php @@ -1,121 +1,117 @@ <?php -namespace Sabre\DAVACL\PrincipalBackend; +declare(strict_types=1); -class Mock extends AbstractBackend { +namespace Sabre\DAVACL\PrincipalBackend; +class Mock extends AbstractBackend +{ public $groupMembers = []; public $principals; - function __construct(array $principals = null) { - + public function __construct(array $principals = null) + { $this->principals = $principals; if (is_null($principals)) { - $this->principals = [ [ - 'uri' => 'principals/user1', - '{DAV:}displayname' => 'User 1', + 'uri' => 'principals/user1', + '{DAV:}displayname' => 'User 1', '{http://sabredav.org/ns}email-address' => 'user1.sabredav@sabredav.org', - '{http://sabredav.org/ns}vcard-url' => 'addressbooks/user1/book1/vcard1.vcf', + '{http://sabredav.org/ns}vcard-url' => 'addressbooks/user1/book1/vcard1.vcf', ], [ - 'uri' => 'principals/admin', + 'uri' => 'principals/admin', '{DAV:}displayname' => 'Admin', ], [ - 'uri' => 'principals/user2', - '{DAV:}displayname' => 'User 2', + 'uri' => 'principals/user2', + '{DAV:}displayname' => 'User 2', '{http://sabredav.org/ns}email-address' => 'user2.sabredav@sabredav.org', ], ]; - } - } - function getPrincipalsByPrefix($prefix) { - + public function getPrincipalsByPrefix($prefix) + { $prefix = trim($prefix, '/'); - if ($prefix) $prefix .= '/'; + if ($prefix) { + $prefix .= '/'; + } $return = []; foreach ($this->principals as $principal) { - - if ($prefix && strpos($principal['uri'], $prefix) !== 0) continue; + if ($prefix && 0 !== strpos($principal['uri'], $prefix)) { + continue; + } $return[] = $principal; - } return $return; - } - function addPrincipal(array $principal) { - + public function addPrincipal(array $principal) + { $this->principals[] = $principal; - } - function getPrincipalByPath($path) { - + public function getPrincipalByPath($path) + { foreach ($this->getPrincipalsByPrefix('principals') as $principal) { - if ($principal['uri'] === $path) return $principal; + if ($principal['uri'] === $path) { + return $principal; + } } - } - function searchPrincipals($prefixPath, array $searchProperties, $test = 'allof') { - + public function searchPrincipals($prefixPath, array $searchProperties, $test = 'allof') + { $matches = []; foreach ($this->getPrincipalsByPrefix($prefixPath) as $principal) { - foreach ($searchProperties as $key => $value) { - if (!isset($principal[$key])) { continue 2; } - if (mb_stripos($principal[$key], $value, 0, 'UTF-8') === false) { + if (false === mb_stripos($principal[$key], $value, 0, 'UTF-8')) { continue 2; } // We have a match for this searchProperty! - if ($test === 'allof') { + if ('allof' === $test) { continue; } else { break; } - } $matches[] = $principal['uri']; - } - return $matches; + return $matches; } - function getGroupMemberSet($path) { - + public function getGroupMemberSet($path) + { return isset($this->groupMembers[$path]) ? $this->groupMembers[$path] : []; - } - function getGroupMembership($path) { - + public function getGroupMembership($path) + { $membership = []; foreach ($this->groupMembers as $group => $members) { - if (in_array($path, $members)) $membership[] = $group; + if (in_array($path, $members)) { + $membership[] = $group; + } } - return $membership; + return $membership; } - function setGroupMemberSet($path, array $members) { - + public function setGroupMemberSet($path, array $members) + { $this->groupMembers[$path] = $members; - } /** @@ -130,11 +126,11 @@ class Mock extends AbstractBackend { * * Read the PropPatch documentation for more info and examples. * - * @param string $path + * @param string $path * @param \Sabre\DAV\PropPatch $propPatch */ - function updatePrincipal($path, \Sabre\DAV\PropPatch $propPatch) { - + public function updatePrincipal($path, \Sabre\DAV\PropPatch $propPatch) + { $value = null; foreach ($this->principals as $principalIndex => $value) { if ($value['uri'] === $path) { @@ -142,27 +138,22 @@ class Mock extends AbstractBackend { break; } } - if (!$principal) return; - - $propPatch->handleRemaining(function($mutations) use ($principal, $principalIndex) { + if (!$principal) { + return; + } + $propPatch->handleRemaining(function ($mutations) use ($principal, $principalIndex) { foreach ($mutations as $prop => $value) { - if (is_null($value) && isset($principal[$prop])) { unset($principal[$prop]); } else { $principal[$prop] = $value; } - } $this->principals[$principalIndex] = $principal; return true; - }); - } - - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php index 8779eb69f..54795cf4d 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php @@ -1,9 +1,10 @@ <?php -namespace Sabre\DAVACL\PrincipalBackend; +declare(strict_types=1); -class PDOMySQLTest extends AbstractPDOTest { +namespace Sabre\DAVACL\PrincipalBackend; +class PDOMySQLTest extends AbstractPDOTest +{ public $driver = 'mysql'; - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php index 48454981d..549e0bd60 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php @@ -1,9 +1,10 @@ <?php -namespace Sabre\DAVACL\PrincipalBackend; +declare(strict_types=1); -class PDOSqliteTest extends AbstractPDOTest { +namespace Sabre\DAVACL\PrincipalBackend; +class PDOSqliteTest extends AbstractPDOTest +{ public $driver = 'sqlite'; - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php index bcf78821b..68aebe2ae 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php @@ -1,24 +1,25 @@ <?php -namespace Sabre\DAVACL; - -class PrincipalCollectionTest extends \PHPUnit_Framework_TestCase { +declare(strict_types=1); - function testBasic() { +namespace Sabre\DAVACL; +class PrincipalCollectionTest extends \PHPUnit\Framework\TestCase +{ + public function testBasic() + { $backend = new PrincipalBackend\Mock(); $pc = new PrincipalCollection($backend); $this->assertTrue($pc instanceof PrincipalCollection); $this->assertEquals('principals', $pc->getName()); - } /** * @depends testBasic */ - function testGetChildren() { - + public function testGetChildren() + { $backend = new PrincipalBackend\Mock(); $pc = new PrincipalCollection($backend); @@ -28,30 +29,27 @@ class PrincipalCollectionTest extends \PHPUnit_Framework_TestCase { foreach ($children as $child) { $this->assertTrue($child instanceof IPrincipal); } - } /** * @depends testBasic - * @expectedException Sabre\DAV\Exception\MethodNotAllowed + * @expectedException \Sabre\DAV\Exception\MethodNotAllowed */ - function testGetChildrenDisable() { - + public function testGetChildrenDisable() + { $backend = new PrincipalBackend\Mock(); $pc = new PrincipalCollection($backend); $pc->disableListing = true; $children = $pc->getChildren(); - } - function testFindByUri() { - + public function testFindByUri() + { $backend = new PrincipalBackend\Mock(); $pc = new PrincipalCollection($backend); $this->assertEquals('principals/user1', $pc->findByUri('mailto:user1.sabredav@sabredav.org')); $this->assertNull($pc->findByUri('mailto:fake.user.sabredav@sabredav.org')); $this->assertNull($pc->findByUri('')); } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php index 60e156d9a..3bdcfbbbd 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; @@ -7,10 +9,10 @@ use Sabre\HTTP; require_once 'Sabre/HTTP/ResponseMock.php'; -class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { - - function getServer() { - +class PrincipalPropertySearchTest extends \PHPUnit\Framework\TestCase +{ + public function getServer() + { $backend = new PrincipalBackend\Mock(); $dir = new DAV\SimpleCollection('root'); @@ -30,11 +32,10 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $this->assertEquals($plugin, $fakeServer->getPlugin('acl')); return $fakeServer; - } - function testDepth1() { - + public function testDepth1() + { $xml = '<?xml version="1.0"?> <d:principal-property-search xmlns:d="DAV:"> <d:property-search> @@ -51,8 +52,8 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '1', - 'REQUEST_URI' => '/principals', + 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/principals', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -66,14 +67,12 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(400, $server->httpResponse->getStatus(), $server->httpResponse->getBodyAsString()); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - } - - function testUnknownSearchField() { - + public function testUnknownSearchField() + { $xml = '<?xml version="1.0"?> <d:principal-property-search xmlns:d="DAV:"> <d:property-search> @@ -90,8 +89,8 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/principals', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/principals', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -102,17 +101,16 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $server->exec(); - $this->assertEquals(207, $server->httpResponse->getStatus(), "Full body: " . $server->httpResponse->getBodyAsString()); + $this->assertEquals(207, $server->httpResponse->getStatus(), 'Full body: '.$server->httpResponse->getBodyAsString()); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'Vary' => ['Brief,Prefer'], ], $server->httpResponse->getHeaders()); - } - function testCorrect() { - + public function testCorrect() + { $xml = '<?xml version="1.0"?> <d:principal-property-search xmlns:d="DAV:"> <d:apply-to-principal-collection-set /> @@ -130,8 +128,8 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -145,41 +143,39 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'Vary' => ['Brief,Prefer'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', - '/d:multistatus/d:response' => 2, - '/d:multistatus/d:response/d:href' => 2, - '/d:multistatus/d:response/d:propstat' => 4, - '/d:multistatus/d:response/d:propstat/d:prop' => 4, - '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 2, + '/d:multistatus/d:response' => 2, + '/d:multistatus/d:response/d:href' => 2, + '/d:multistatus/d:response/d:propstat' => 4, + '/d:multistatus/d:response/d:propstat/d:prop' => 4, + '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 2, '/d:multistatus/d:response/d:propstat/d:prop/d:getcontentlength' => 2, - '/d:multistatus/d:response/d:propstat/d:status' => 4, + '/d:multistatus/d:response/d:propstat/d:status' => 4, ]; $xml = simplexml_load_string($server->httpResponse->body); $xml->registerXPathNamespace('d', 'DAV:'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response body: ' . $server->httpResponse->body); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result).'. Full response body: '.$server->httpResponse->body); } - } - function testAND() { - + public function testAND() + { $xml = '<?xml version="1.0"?> <d:principal-property-search xmlns:d="DAV:"> <d:apply-to-principal-collection-set /> @@ -203,8 +199,8 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -218,40 +214,39 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'Vary' => ['Brief,Prefer'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', - '/d:multistatus/d:response' => 0, - '/d:multistatus/d:response/d:href' => 0, - '/d:multistatus/d:response/d:propstat' => 0, - '/d:multistatus/d:response/d:propstat/d:prop' => 0, - '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 0, + '/d:multistatus/d:response' => 0, + '/d:multistatus/d:response/d:href' => 0, + '/d:multistatus/d:response/d:propstat' => 0, + '/d:multistatus/d:response/d:propstat/d:prop' => 0, + '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 0, '/d:multistatus/d:response/d:propstat/d:prop/d:getcontentlength' => 0, - '/d:multistatus/d:response/d:propstat/d:status' => 0, + '/d:multistatus/d:response/d:propstat/d:status' => 0, ]; $xml = simplexml_load_string($server->httpResponse->body); $xml->registerXPathNamespace('d', 'DAV:'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response body: ' . $server->httpResponse->body); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result).'. Full response body: '.$server->httpResponse->body); } - } - function testOR() { + public function testOR() + { $xml = '<?xml version="1.0"?> <d:principal-property-search xmlns:d="DAV:" test="anyof"> <d:apply-to-principal-collection-set /> @@ -275,8 +270,8 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -290,40 +285,39 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'Vary' => ['Brief,Prefer'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', - '/d:multistatus/d:response' => 2, - '/d:multistatus/d:response/d:href' => 2, - '/d:multistatus/d:response/d:propstat' => 4, - '/d:multistatus/d:response/d:propstat/d:prop' => 4, - '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 2, + '/d:multistatus/d:response' => 2, + '/d:multistatus/d:response/d:href' => 2, + '/d:multistatus/d:response/d:propstat' => 4, + '/d:multistatus/d:response/d:propstat/d:prop' => 4, + '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 2, '/d:multistatus/d:response/d:propstat/d:prop/d:getcontentlength' => 2, - '/d:multistatus/d:response/d:propstat/d:status' => 4, + '/d:multistatus/d:response/d:propstat/d:status' => 4, ]; $xml = simplexml_load_string($server->httpResponse->body); $xml->registerXPathNamespace('d', 'DAV:'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response body: ' . $server->httpResponse->body); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result).'. Full response body: '.$server->httpResponse->body); } - } - function testWrongUri() { + public function testWrongUri() + { $xml = '<?xml version="1.0"?> <d:principal-property-search xmlns:d="DAV:"> <d:property-search> @@ -340,8 +334,8 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -355,11 +349,10 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], - 'Vary' => ['Brief,Prefer'], + 'Content-Type' => ['application/xml; charset=utf-8'], + 'Vary' => ['Brief,Prefer'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:multistatus', '/d:multistatus/d:response' => 0, @@ -368,30 +361,27 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase { $xml = simplexml_load_string($server->httpResponse->body); $xml->registerXPathNamespace('d', 'DAV:'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response body: ' . $server->httpResponse->body); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result).'. Full response body: '.$server->httpResponse->body); } - } } -class MockPlugin extends Plugin { - - function getCurrentUserPrivilegeSet($node) { - +class MockPlugin extends Plugin +{ + public function getCurrentUserPrivilegeSet($node) + { return [ '{DAV:}read', '{DAV:}write', ]; - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php index fa1314d10..04f168f92 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; @@ -7,10 +9,10 @@ use Sabre\HTTP; require_once 'Sabre/HTTP/ResponseMock.php'; -class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase { - - function getServer() { - +class PrincipalSearchPropertySetTest extends \PHPUnit\Framework\TestCase +{ + public function getServer() + { $backend = new PrincipalBackend\Mock(); $dir = new DAV\SimpleCollection('root'); @@ -27,18 +29,17 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase { $this->assertEquals($plugin, $fakeServer->getPlugin('acl')); return $fakeServer; - } - function testDepth1() { - + public function testDepth1() + { $xml = '<?xml version="1.0"?> <d:principal-search-property-set xmlns:d="DAV:" />'; $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '1', - 'REQUEST_URI' => '/principals', + 'HTTP_DEPTH' => '1', + 'REQUEST_URI' => '/principals', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -52,20 +53,19 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(400, $server->httpResponse->status); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - } - function testDepthIncorrectXML() { - + public function testDepthIncorrectXML() + { $xml = '<?xml version="1.0"?> <d:principal-search-property-set xmlns:d="DAV:"><d:ohell /></d:principal-search-property-set>'; $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/principals', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/principals', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -79,20 +79,19 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(400, $server->httpResponse->status, $server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - } - function testCorrect() { - + public function testCorrect() + { $xml = '<?xml version="1.0"?> <d:principal-search-property-set xmlns:d="DAV:"/>'; $serverVars = [ 'REQUEST_METHOD' => 'REPORT', - 'HTTP_DEPTH' => '0', - 'REQUEST_URI' => '/principals', + 'HTTP_DEPTH' => '0', + 'REQUEST_URI' => '/principals', ]; $request = HTTP\Sapi::createFromServerArray($serverVars); @@ -106,35 +105,32 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase { $this->assertEquals(200, $server->httpResponse->status, $server->httpResponse->body); $this->assertEquals([ 'X-Sabre-Version' => [DAV\Version::VERSION], - 'Content-Type' => ['application/xml; charset=utf-8'], + 'Content-Type' => ['application/xml; charset=utf-8'], ], $server->httpResponse->getHeaders()); - $check = [ '/d:principal-search-property-set', - '/d:principal-search-property-set/d:principal-search-property' => 2, - '/d:principal-search-property-set/d:principal-search-property/d:prop' => 2, - '/d:principal-search-property-set/d:principal-search-property/d:prop/d:displayname' => 1, + '/d:principal-search-property-set/d:principal-search-property' => 2, + '/d:principal-search-property-set/d:principal-search-property/d:prop' => 2, + '/d:principal-search-property-set/d:principal-search-property/d:prop/d:displayname' => 1, '/d:principal-search-property-set/d:principal-search-property/d:prop/s:email-address' => 1, - '/d:principal-search-property-set/d:principal-search-property/d:description' => 2, + '/d:principal-search-property-set/d:principal-search-property/d:description' => 2, ]; $xml = simplexml_load_string($server->httpResponse->body); $xml->registerXPathNamespace('d', 'DAV:'); $xml->registerXPathNamespace('s', 'http://sabredav.org/ns'); foreach ($check as $v1 => $v2) { - $xpath = is_int($v1) ? $v2 : $v1; $result = $xml->xpath($xpath); $count = 1; - if (!is_int($v1)) $count = $v2; - - $this->assertEquals($count, count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response body: ' . $server->httpResponse->body); + if (!is_int($v1)) { + $count = $v2; + } + $this->assertEquals($count, count($result), 'we expected '.$count.' appearances of '.$xpath.' . We found '.count($result).'. Full response body: '.$server->httpResponse->body); } - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php index 20622ad17..a4821da5a 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php @@ -1,58 +1,55 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; -use Sabre\HTTP; - -class PrincipalTest extends \PHPUnit_Framework_TestCase { - - function testConstruct() { +class PrincipalTest extends \PHPUnit\Framework\TestCase +{ + public function testConstruct() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertTrue($principal instanceof Principal); - } /** - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testConstructNoUri() { - + public function testConstructNoUri() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, []); - } - function testGetName() { - + public function testGetName() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertEquals('admin', $principal->getName()); - } - function testGetDisplayName() { - + public function testGetDisplayName() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertEquals('admin', $principal->getDisplayname()); $principal = new Principal($principalBackend, [ - 'uri' => 'principals/admin', - '{DAV:}displayname' => 'Mr. Admin' + 'uri' => 'principals/admin', + '{DAV:}displayname' => 'Mr. Admin', ]); $this->assertEquals('Mr. Admin', $principal->getDisplayname()); - } - function testGetProperties() { - + public function testGetProperties() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, [ - 'uri' => 'principals/admin', - '{DAV:}displayname' => 'Mr. Admin', + 'uri' => 'principals/admin', + '{DAV:}displayname' => 'Mr. Admin', '{http://www.example.org/custom}custom' => 'Custom', '{http://sabredav.org/ns}email-address' => 'admin@example.org', ]); @@ -64,15 +61,17 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase { ]; $props = $principal->getProperties($keys); - foreach ($keys as $key) $this->assertArrayHasKey($key, $props); + foreach ($keys as $key) { + $this->assertArrayHasKey($key, $props); + } $this->assertEquals('Mr. Admin', $props['{DAV:}displayname']); $this->assertEquals('admin@example.org', $props['{http://sabredav.org/ns}email-address']); } - function testUpdateProperties() { - + public function testUpdateProperties() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); @@ -81,26 +80,24 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase { $result = $principal->propPatch($propPatch); $result = $propPatch->commit(); $this->assertTrue($result); - } - function testGetPrincipalUrl() { - + public function testGetPrincipalUrl() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertEquals('principals/admin', $principal->getPrincipalUrl()); - } - function testGetAlternateUriSet() { - + public function testGetAlternateUriSet() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, [ - 'uri' => 'principals/admin', - '{DAV:}displayname' => 'Mr. Admin', + 'uri' => 'principals/admin', + '{DAV:}displayname' => 'Mr. Admin', '{http://www.example.org/custom}custom' => 'Custom', '{http://sabredav.org/ns}email-address' => 'admin@example.org', - '{DAV:}alternate-URI-set' => [ + '{DAV:}alternate-URI-set' => [ 'mailto:admin+1@example.org', 'mailto:admin+2@example.org', 'mailto:admin@example.org', @@ -114,10 +111,10 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase { ]; $this->assertEquals($expected, $principal->getAlternateUriSet()); - } - function testGetAlternateUriSetEmpty() { + public function testGetAlternateUriSetEmpty() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, [ 'uri' => 'principals/admin', @@ -126,26 +123,24 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase { $expected = []; $this->assertEquals($expected, $principal->getAlternateUriSet()); - } - function testGetGroupMemberSet() { - + public function testGetGroupMemberSet() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertEquals([], $principal->getGroupMemberSet()); - } - function testGetGroupMembership() { + public function testGetGroupMembership() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertEquals([], $principal->getGroupMembership()); - } - function testSetGroupMemberSet() { - + public function testSetGroupMemberSet() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $principal->setGroupMemberSet(['principals/foo']); @@ -153,27 +148,24 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase { $this->assertEquals([ 'principals/admin' => ['principals/foo'], ], $principalBackend->groupMembers); - } - function testGetOwner() { - + public function testGetOwner() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertEquals('principals/admin', $principal->getOwner()); - } - function testGetGroup() { - + public function testGetGroup() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertNull($principal->getGroup()); - } - function testGetACl() { - + public function testGetACl() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertEquals([ @@ -181,28 +173,24 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase { 'privilege' => '{DAV:}all', 'principal' => '{DAV:}owner', 'protected' => true, - ] + ], ], $principal->getACL()); - } /** * @expectedException \Sabre\DAV\Exception\Forbidden */ - function testSetACl() { - + public function testSetACl() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $principal->setACL([]); - } - function testGetSupportedPrivilegeSet() { - + public function testGetSupportedPrivilegeSet() + { $principalBackend = new PrincipalBackend\Mock(); $principal = new Principal($principalBackend, ['uri' => 'principals/admin']); $this->assertNull($principal->getSupportedPrivilegeSet()); - } - } diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php index 2de0ba6a8..a1e9ee36c 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\DAVACL; use Sabre\DAV; @@ -8,10 +10,10 @@ use Sabre\HTTP; require_once 'Sabre/DAVACL/MockPrincipal.php'; require_once 'Sabre/DAVACL/MockACLNode.php'; -class SimplePluginTest extends \PHPUnit_Framework_TestCase { - - function testValues() { - +class SimplePluginTest extends \PHPUnit\Framework\TestCase +{ + public function testValues() + { $aclPlugin = new Plugin(); $this->assertEquals('acl', $aclPlugin->getPluginName()); $this->assertEquals( @@ -24,25 +26,24 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { '{DAV:}expand-property', '{DAV:}principal-match', '{DAV:}principal-property-search', - '{DAV:}principal-search-property-set' + '{DAV:}principal-search-property-set', ], $aclPlugin->getSupportedReportSet('')); $this->assertEquals(['ACL'], $aclPlugin->getMethods('')); - $this->assertEquals( 'acl', $aclPlugin->getPluginInfo()['name'] ); } - function testGetFlatPrivilegeSet() { - + public function testGetFlatPrivilegeSet() + { $expected = [ '{DAV:}all' => [ - 'privilege' => '{DAV:}all', - 'abstract' => false, + 'privilege' => '{DAV:}all', + 'abstract' => false, 'aggregates' => [ '{DAV:}read', '{DAV:}write', @@ -50,8 +51,8 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { 'concrete' => '{DAV:}all', ], '{DAV:}read' => [ - 'privilege' => '{DAV:}read', - 'abstract' => false, + 'privilege' => '{DAV:}read', + 'abstract' => false, 'aggregates' => [ '{DAV:}read-acl', '{DAV:}read-current-user-privilege-set', @@ -59,20 +60,20 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { 'concrete' => '{DAV:}read', ], '{DAV:}read-acl' => [ - 'privilege' => '{DAV:}read-acl', - 'abstract' => false, + 'privilege' => '{DAV:}read-acl', + 'abstract' => false, 'aggregates' => [], - 'concrete' => '{DAV:}read-acl', + 'concrete' => '{DAV:}read-acl', ], '{DAV:}read-current-user-privilege-set' => [ - 'privilege' => '{DAV:}read-current-user-privilege-set', - 'abstract' => false, + 'privilege' => '{DAV:}read-current-user-privilege-set', + 'abstract' => false, 'aggregates' => [], - 'concrete' => '{DAV:}read-current-user-privilege-set', + 'concrete' => '{DAV:}read-current-user-privilege-set', ], '{DAV:}write' => [ - 'privilege' => '{DAV:}write', - 'abstract' => false, + 'privilege' => '{DAV:}write', + 'abstract' => false, 'aggregates' => [ '{DAV:}write-properties', '{DAV:}write-content', @@ -83,36 +84,35 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { 'concrete' => '{DAV:}write', ], '{DAV:}write-properties' => [ - 'privilege' => '{DAV:}write-properties', - 'abstract' => false, + 'privilege' => '{DAV:}write-properties', + 'abstract' => false, 'aggregates' => [], - 'concrete' => '{DAV:}write-properties', + 'concrete' => '{DAV:}write-properties', ], '{DAV:}write-content' => [ - 'privilege' => '{DAV:}write-content', - 'abstract' => false, + 'privilege' => '{DAV:}write-content', + 'abstract' => false, 'aggregates' => [], - 'concrete' => '{DAV:}write-content', + 'concrete' => '{DAV:}write-content', ], '{DAV:}unlock' => [ - 'privilege' => '{DAV:}unlock', - 'abstract' => false, + 'privilege' => '{DAV:}unlock', + 'abstract' => false, 'aggregates' => [], - 'concrete' => '{DAV:}unlock', + 'concrete' => '{DAV:}unlock', ], '{DAV:}bind' => [ - 'privilege' => '{DAV:}bind', - 'abstract' => false, + 'privilege' => '{DAV:}bind', + 'abstract' => false, 'aggregates' => [], - 'concrete' => '{DAV:}bind', + 'concrete' => '{DAV:}bind', ], '{DAV:}unbind' => [ - 'privilege' => '{DAV:}unbind', - 'abstract' => false, + 'privilege' => '{DAV:}unbind', + 'abstract' => false, 'aggregates' => [], - 'concrete' => '{DAV:}unbind', + 'concrete' => '{DAV:}unbind', ], - ]; $plugin = new Plugin(); @@ -120,28 +120,24 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { $server = new DAV\Server(); $server->addPlugin($plugin); $this->assertEquals($expected, $plugin->getFlatPrivilegeSet('')); - } - function testCurrentUserPrincipalsNotLoggedIn() { - + public function testCurrentUserPrincipalsNotLoggedIn() + { $acl = new Plugin(); $acl->allowUnauthenticatedAccess = false; $server = new DAV\Server(); $server->addPlugin($acl); $this->assertEquals([], $acl->getCurrentUserPrincipals()); - } - function testCurrentUserPrincipalsSimple() { - + public function testCurrentUserPrincipalsSimple() + { $tree = [ - new DAV\SimpleCollection('principals', [ new MockPrincipal('admin', 'principals/admin'), - ]) - + ]), ]; $acl = new Plugin(); @@ -153,23 +149,20 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($auth); //forcing login - $auth->beforeMethod(new HTTP\Request(), new HTTP\Response()); + $auth->beforeMethod(new HTTP\Request('GET', '/'), new HTTP\Response()); $this->assertEquals(['principals/admin'], $acl->getCurrentUserPrincipals()); - } - function testCurrentUserPrincipalsGroups() { - + public function testCurrentUserPrincipalsGroups() + { $tree = [ - new DAV\SimpleCollection('principals', [ new MockPrincipal('admin', 'principals/admin', ['principals/administrators', 'principals/everyone']), new MockPrincipal('administrators', 'principals/administrators', ['principals/groups'], ['principals/admin']), new MockPrincipal('everyone', 'principals/everyone', [], ['principals/admin']), new MockPrincipal('groups', 'principals/groups', [], ['principals/administrators']), - ]) - + ]), ]; $acl = new Plugin(); @@ -181,7 +174,7 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($auth); //forcing login - $auth->beforeMethod(new HTTP\Request(), new HTTP\Response()); + $auth->beforeMethod(new HTTP\Request('GET', '/'), new HTTP\Response()); $expected = [ 'principals/admin', @@ -194,11 +187,10 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { // The second one should trigger the cache and be identical $this->assertEquals($expected, $acl->getCurrentUserPrincipals()); - } - function testGetACL() { - + public function testGetACL() + { $acl = [ [ 'principal' => 'principals/admin', @@ -210,7 +202,6 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { ], ]; - $tree = [ new MockACLNode('foo', $acl), ]; @@ -221,11 +212,10 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($aclPlugin); $this->assertEquals($acl, $aclPlugin->getACL('foo')); - } - function testGetCurrentUserPrivilegeSet() { - + public function testGetCurrentUserPrivilegeSet() + { $acl = [ [ 'principal' => 'principals/admin', @@ -241,14 +231,12 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { ], ]; - $tree = [ new MockACLNode('foo', $acl), new DAV\SimpleCollection('principals', [ new MockPrincipal('admin', 'principals/admin'), ]), - ]; $server = new DAV\Server($tree); @@ -260,7 +248,7 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { $server->addPlugin($auth); //forcing login - $auth->beforeMethod(new HTTP\Request(), new HTTP\Response()); + $auth->beforeMethod(new HTTP\Request('GET', '/'), new HTTP\Response()); $expected = [ '{DAV:}write', @@ -274,11 +262,10 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { ]; $this->assertEquals($expected, $aclPlugin->getCurrentUserPrivilegeSet('foo')); - } - function testCheckPrivileges() { - + public function testCheckPrivileges() + { $acl = [ [ 'principal' => 'principals/admin', @@ -294,14 +281,12 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { ], ]; - $tree = [ new MockACLNode('foo', $acl), new DAV\SimpleCollection('principals', [ new MockPrincipal('admin', 'principals/admin'), ]), - ]; $server = new DAV\Server($tree); @@ -316,6 +301,5 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase { //$auth->beforeMethod('GET','/'); $this->assertFalse($aclPlugin->checkPrivileges('foo', ['{DAV:}read'], Plugin::R_PARENT, false)); - } } diff --git a/vendor/sabre/dav/tests/Sabre/DAVServerTest.php b/vendor/sabre/dav/tests/Sabre/DAVServerTest.php index 35f240d23..982090d23 100644 --- a/vendor/sabre/dav/tests/Sabre/DAVServerTest.php +++ b/vendor/sabre/dav/tests/Sabre/DAVServerTest.php @@ -1,10 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre; use Sabre\HTTP\Request; use Sabre\HTTP\Response; -use Sabre\HTTP\Sapi; /** * This class may be used as a basis for other webdav-related unittests. @@ -16,8 +17,8 @@ use Sabre\HTTP\Sapi; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { - +abstract class DAVServerTest extends \PHPUnit\Framework\TestCase +{ protected $setupCalDAV = false; protected $setupCardDAV = false; protected $setupACL = false; @@ -33,7 +34,7 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { /** * An array with calendars. Every calendar should have * - principaluri - * - uri + * - uri. */ protected $caldavCalendars = []; protected $caldavCalendarObjects = []; @@ -54,27 +55,27 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { protected $propertyStorageBackend; /** - * @var Sabre\CalDAV\Plugin + * @var \Sabre\CalDAV\Plugin */ protected $caldavPlugin; /** - * @var Sabre\CardDAV\Plugin + * @var \Sabre\CardDAV\Plugin */ protected $carddavPlugin; /** - * @var Sabre\DAVACL\Plugin + * @var \Sabre\DAVACL\Plugin */ protected $aclPlugin; /** - * @var Sabre\CalDAV\SharingPlugin + * @var \Sabre\CalDAV\SharingPlugin */ protected $caldavSharingPlugin; /** - * CalDAV scheduling plugin + * CalDAV scheduling plugin. * * @var CalDAV\Schedule\Plugin */ @@ -108,14 +109,13 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { */ protected $autoLogin = null; - function setUp() { - + public function setUp() + { $this->initializeEverything(); - } - function initializeEverything() { - + public function initializeEverything() + { $this->setUpBackends(); $this->setUpTree(); @@ -173,7 +173,6 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { $this->aclPlugin->adminPrincipals = ['principals/admin']; $this->server->addPlugin($this->aclPlugin); } - } /** @@ -187,11 +186,12 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { * the test. * * @param array|\Sabre\HTTP\Request $request - * @param int $expectedStatus + * @param int $expectedStatus + * * @return \Sabre\HTTP\Response */ - function request($request, $expectedStatus = null) { - + public function request($request, $expectedStatus = null) + { if (is_array($request)) { $request = HTTP\Request::createFromServerArray($request); } @@ -203,10 +203,10 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { if ($expectedStatus) { $responseBody = $expectedStatus !== $response->getStatus() ? $response->getBodyAsString() : ''; - $this->assertEquals($expectedStatus, $response->getStatus(), 'Incorrect HTTP status received for request. Response body: ' . $responseBody); + $this->assertEquals($expectedStatus, $response->getStatus(), 'Incorrect HTTP status received for request. Response body: '.$responseBody); } - return $this->server->httpResponse; + return $this->server->httpResponse; } /** @@ -215,9 +215,10 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { * * @param string $userName */ - function autoLogin($userName) { + public function autoLogin($userName) + { $authBackend = new DAV\Auth\Backend\Mock(); - $authBackend->setPrincipal('principals/' . $userName); + $authBackend->setPrincipal('principals/'.$userName); $this->authPlugin = new DAV\Auth\Plugin($authBackend); // If the auth plugin already exists, we're removing its hooks: @@ -227,14 +228,14 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { $this->server->addPlugin($this->authPlugin); // This will trigger the actual login procedure - $this->authPlugin->beforeMethod(new Request(), new Response()); + $this->authPlugin->beforeMethod(new Request('GET', '/'), new Response()); } /** * Override this to provide your own Tree for your test-case. */ - function setUpTree() { - + public function setUpTree() + { if ($this->setupCalDAV) { $this->tree[] = new CalDAV\CalendarRoot( $this->principalBackend, @@ -258,15 +259,12 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { ); } if ($this->setupFiles) { - $this->tree[] = new DAV\Mock\Collection('files'); - } - } - function setUpBackends() { - + public function setUpBackends() + { if ($this->setupCalDAVSharing && is_null($this->caldavBackend)) { $this->caldavBackend = new CalDAV\Backend\MockSharing($this->caldavCalendars, $this->caldavCalendarObjects); } @@ -289,18 +287,14 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { if ($this->setupLocks) { $this->locksBackend = new DAV\Locks\Backend\Mock(); } - if ($this->setupPropertyStorage) { + if ($this->setupPropertyStorage) { $this->propertyStorageBackend = new DAV\PropertyStorage\Backend\Mock(); } - } - - function assertHttpStatus($expectedStatus, HTTP\Request $req) { - + public function assertHttpStatus($expectedStatus, HTTP\Request $req) + { $resp = $this->request($req); - $this->assertEquals((int)$expectedStatus, (int)$resp->status, 'Incorrect HTTP status received: ' . $resp->body); - + $this->assertEquals((int) $expectedStatus, (int) $resp->status, 'Incorrect HTTP status received: '.$resp->body); } - } diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php b/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php index eb486bf5b..c5357928a 100644 --- a/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php +++ b/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php @@ -1,9 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** - * HTTP Response Mock object + * HTTP Response Mock object. * * This class exists to make the transition to sabre/http easier. * @@ -11,12 +13,11 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class ResponseMock extends Response { - +class ResponseMock extends Response +{ /** * Making these public. */ public $body; public $status; - } diff --git a/vendor/sabre/dav/tests/Sabre/TestUtil.php b/vendor/sabre/dav/tests/Sabre/TestUtil.php index 9df94915f..4e7ca2fc4 100644 --- a/vendor/sabre/dav/tests/Sabre/TestUtil.php +++ b/vendor/sabre/dav/tests/Sabre/TestUtil.php @@ -1,71 +1,66 @@ <?php -namespace Sabre; +declare(strict_types=1); -class TestUtil { +namespace Sabre; +class TestUtil +{ /** * This function deletes all the contents of the temporary directory. - * - * @return void */ - static function clearTempDir() { - + public static function clearTempDir() + { self::deleteTree(SABRE_TEMPDIR, false); - } - - private static function deleteTree($path, $deleteRoot = true) { - + private static function deleteTree($path, $deleteRoot = true) + { foreach (scandir($path) as $node) { - - if ($node == '.' || $node == '..') continue; - $myPath = $path . '/' . $node; + if ('.' == $node || '..' == $node) { + continue; + } + $myPath = $path.'/'.$node; if (is_file($myPath)) { unlink($myPath); } else { self::deleteTree($myPath); } - } if ($deleteRoot) { rmdir($path); } - } - static function getMySQLDB() { - + public static function getMySQLDB() + { try { $pdo = new \PDO(SABRE_MYSQLDSN, SABRE_MYSQLUSER, SABRE_MYSQLPASS); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + return $pdo; } catch (\PDOException $e) { return null; } - } - static function getSQLiteDB() { - - $pdo = new \PDO('sqlite:' . SABRE_TEMPDIR . '/pdobackend'); + public static function getSQLiteDB() + { + $pdo = new \PDO('sqlite:'.SABRE_TEMPDIR.'/pdobackend'); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); - return $pdo; + return $pdo; } - static function getPgSqlDB() { - + public static function getPgSqlDB() + { //try { - $pdo = new \PDO(SABRE_PGSQLDSN); - $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); - return $pdo; + $pdo = new \PDO(SABRE_PGSQLDSN); + $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + + return $pdo; //} catch (\PDOException $e) { // return null; //} - } - - } diff --git a/vendor/sabre/dav/tests/bootstrap.php b/vendor/sabre/dav/tests/bootstrap.php index 26eb32aa2..03e6006b9 100644 --- a/vendor/sabre/dav/tests/bootstrap.php +++ b/vendor/sabre/dav/tests/bootstrap.php @@ -1,38 +1,59 @@ <?php -set_include_path(__DIR__ . '/../lib/' . PATH_SEPARATOR . __DIR__ . PATH_SEPARATOR . get_include_path()); +declare(strict_types=1); -$autoLoader = include __DIR__ . '/../vendor/autoload.php'; +set_include_path(__DIR__.'/../lib/'.PATH_SEPARATOR.__DIR__.PATH_SEPARATOR.get_include_path()); + +$autoLoader = include __DIR__.'/../vendor/autoload.php'; // SabreDAV tests auto loading $autoLoader->add('Sabre\\', __DIR__); // VObject tests auto loading -$autoLoader->addPsr4('Sabre\\VObject\\', __DIR__ . '/../vendor/sabre/vobject/tests/VObject'); -$autoLoader->addPsr4('Sabre\\Xml\\', __DIR__ . '/../vendor/sabre/xml/tests/Sabre/Xml'); +$autoLoader->addPsr4('Sabre\\VObject\\', __DIR__.'/../vendor/sabre/vobject/tests/VObject'); +$autoLoader->addPsr4('Sabre\\Xml\\', __DIR__.'/../vendor/sabre/xml/tests/Sabre/Xml'); date_default_timezone_set('UTC'); +// List of variables that can be set by the environment +$environmentVars = [ + 'SABRE_MYSQLUSER', + 'SABRE_MYSQLPASS', + 'SABRE_MYSQLDSN', + 'SABRE_PGSQLDSN', +]; +foreach ($environmentVars as $var) { + if ($value = getenv($var)) { + define($var, $value); + } +} + $config = [ - 'SABRE_TEMPDIR' => dirname(__FILE__) . '/temp/', + 'SABRE_TEMPDIR' => dirname(__FILE__).'/temp/', 'SABRE_HASSQLITE' => in_array('sqlite', PDO::getAvailableDrivers()), - 'SABRE_HASMYSQL' => in_array('mysql', PDO::getAvailableDrivers()), - 'SABRE_HASPGSQL' => in_array('pgsql', PDO::getAvailableDrivers()), - 'SABRE_MYSQLDSN' => 'mysql:host=127.0.0.1;dbname=sabredav_test', + 'SABRE_HASMYSQL' => in_array('mysql', PDO::getAvailableDrivers()), + 'SABRE_HASPGSQL' => in_array('pgsql', PDO::getAvailableDrivers()), + 'SABRE_MYSQLDSN' => 'mysql:host=127.0.0.1;dbname=sabredav_test', 'SABRE_MYSQLUSER' => 'sabredav', 'SABRE_MYSQLPASS' => '', - 'SABRE_PGSQLDSN' => 'pgsql:host=localhost;dbname=sabredav_test;user=sabredav;password=sabredav', + 'SABRE_PGSQLDSN' => 'pgsql:host=localhost;dbname=sabredav_test;user=sabredav;password=sabredav', ]; -if (file_exists(__DIR__ . '/config.user.php')) { - include __DIR__ . '/config.user.php'; +if (file_exists(__DIR__.'/config.user.php')) { + include __DIR__.'/config.user.php'; foreach ($userConfig as $key => $value) { $config[$key] = $value; } } foreach ($config as $key => $value) { - if (!defined($key)) define($key, $value); + if (!defined($key)) { + define($key, $value); + } } -if (!file_exists(SABRE_TEMPDIR)) mkdir(SABRE_TEMPDIR); -if (file_exists('.sabredav')) unlink('.sabredav'); +if (!file_exists(SABRE_TEMPDIR)) { + mkdir(SABRE_TEMPDIR); +} +if (file_exists('.sabredav')) { + unlink('.sabredav'); +} diff --git a/vendor/sabre/event/.gitattributes b/vendor/sabre/event/.gitattributes new file mode 100644 index 000000000..0fdd4b01c --- /dev/null +++ b/vendor/sabre/event/.gitattributes @@ -0,0 +1,2 @@ +/examples export-ignore +/tests export-ignore diff --git a/vendor/sabre/event/.travis.yml b/vendor/sabre/event/.travis.yml index b6719f591..020488b79 100644 --- a/vendor/sabre/event/.travis.yml +++ b/vendor/sabre/event/.travis.yml @@ -1,13 +1,8 @@ language: php php: - - 5.5 - - 5.6 - - 7 - - hhvm - -matrix: - allow_failures: - - php: hhvm + - 7.0 + - 7.1 + - 7.2 env: matrix: diff --git a/vendor/sabre/event/CHANGELOG.md b/vendor/sabre/event/CHANGELOG.md index 9d6d7cfaa..5b1fb2e68 100644 --- a/vendor/sabre/event/CHANGELOG.md +++ b/vendor/sabre/event/CHANGELOG.md @@ -1,5 +1,49 @@ ChangeLog ========= +5.0.3 (2018-05-03) +------------------ + +* Dropped remaining hhvm leftovers. +* #55: Fixed typo in WildcardEmitterTrait (@SamMousa) +* #54: export-ignore examples & tests in distribution (@staabm) + +5.0.2 (2017-04-29) +------------------ + +* #50: Fixed Promise\all to resolve immediately for empty arrays (@MadHed) +* #48, #49: Performance optimisations for EmitterTrait and WildcardEmitterTrait (@lunixyacht). + +5.0.1 (2016-10-29) +------------------ + +* #45: Fixed `Emitter` class to use the correct interface. (@felixfbecker). + + +5.0.0 (2016-10-23) +------------------ + +* #42: The `coroutine` function now supports `return` in the passed generator + function. This allows you to more generally return a value. This is a BC + break as this is a feature that was only made possible with PHP 7, and + before the coroutine function would only ever return the last thing that + was yielded. If you depended on that feature, replace your last `yield` with + a `return`. + + +4.0.0 (2016-09-19) +------------------ + +* sabre/event now requires PHP 7. If you need PHP 5.5 support, just keep + using 3.0.0. +* PHP 7 type hints are now used everywhere. We're also using strict_types. +* Support for a new `WildcardEmitter` which allows you to listen for events + using the `*` wildcard. +* Removed deprecated functions `Promise::error` and `Promise::all`. Instead, + use `Promise::otherwise` and `Promise\all()`. +* `EventEmitter`, `EventEmitterTrait` and `EventEmitterInterface` are now just + called `Emitter`, `EmitterTrait`, and `EmitterInterface`. +* When rejecting Promises, it's now _required_ to use an `Exception` or + `Throwable`. This makes the typical case simpler and reduces special cases. 3.0.0 (2015-11-05) ------------------ diff --git a/vendor/sabre/event/LICENSE b/vendor/sabre/event/LICENSE index 9a495cef0..962a49267 100644 --- a/vendor/sabre/event/LICENSE +++ b/vendor/sabre/event/LICENSE @@ -1,4 +1,4 @@ -Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/) +Copyright (C) 2013-2016 fruux GmbH (https://fruux.com/) All rights reserved. diff --git a/vendor/sabre/event/README.md b/vendor/sabre/event/README.md index 364906fd4..9e2bdd042 100644 --- a/vendor/sabre/event/README.md +++ b/vendor/sabre/event/README.md @@ -17,7 +17,7 @@ Installation Make sure you have [composer][3] installed, and then run: - composer require sabre/event "~3.0.0" + composer require sabre/event "^3.0" This package requires PHP 5.5. The 2.0 branch is still maintained as well, and supports PHP 5.4. @@ -27,10 +27,11 @@ Build status | branch | status | | ------ | ------ | -| master | [![Build Status](https://travis-ci.org/fruux/sabre-event.svg?branch=master)](https://travis-ci.org/fruux/sabre-event) | -| 2.0 | [![Build Status](https://travis-ci.org/fruux/sabre-event.svg?branch=2.0)](https://travis-ci.org/fruux/sabre-event) | -| 1.0 | [![Build Status](https://travis-ci.org/fruux/sabre-event.svg?branch=1.0)](https://travis-ci.org/fruux/sabre-event) | -| php53 | [![Build Status](https://travis-ci.org/fruux/sabre-event.svg?branch=php53)](https://travis-ci.org/fruux/sabre-event) | +| master | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=master)](https://travis-ci.org/sabre-io/event) | +| 3.0 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=2.0)](https://travis-ci.org/sabre-io/event) | +| 2.0 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=2.0)](https://travis-ci.org/sabre-io/event) | +| 1.0 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=1.0)](https://travis-ci.org/sabre-io/event) | +| php53 | [![Build Status](https://travis-ci.org/sabre-io/event.svg?branch=php53)](https://travis-ci.org/sabre-io/event) | Questions? diff --git a/vendor/sabre/event/_config.yml b/vendor/sabre/event/_config.yml new file mode 100644 index 000000000..c4192631f --- /dev/null +++ b/vendor/sabre/event/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman \ No newline at end of file diff --git a/vendor/sabre/event/composer.json b/vendor/sabre/event/composer.json index 9a11b01aa..d7a13c5ca 100644 --- a/vendor/sabre/event/composer.json +++ b/vendor/sabre/event/composer.json @@ -8,12 +8,15 @@ "Hooks", "Plugin", "Signal", - "Async" + "Async", + "EventLoop", + "Reactor", + "Coroutine" ], "homepage": "http://sabre.io/event/", "license": "BSD-3-Clause", "require": { - "php": ">=5.5" + "php": ">=7.0" }, "authors": [ { @@ -38,8 +41,8 @@ ] }, "require-dev": { - "sabre/cs": "~0.0.4", - "phpunit/phpunit" : "*" + "sabre/cs": "~1.0.0", + "phpunit/phpunit" : ">=6" }, "config" : { "bin-dir" : "bin/" diff --git a/vendor/sabre/event/lib/Emitter.php b/vendor/sabre/event/lib/Emitter.php new file mode 100644 index 000000000..ab5e8c90e --- /dev/null +++ b/vendor/sabre/event/lib/Emitter.php @@ -0,0 +1,18 @@ +<?php declare (strict_types=1); + +namespace Sabre\Event; + +/** + * Emitter object. + * + * Instantiate this class, or subclass it for easily creating event emitters. + * + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) + * @author Evert Pot (http://evertpot.com/) + * @license http://sabre.io/license/ Modified BSD License + */ +class Emitter implements EmitterInterface { + + use EmitterTrait; + +} diff --git a/vendor/sabre/event/lib/EmitterInterface.php b/vendor/sabre/event/lib/EmitterInterface.php new file mode 100644 index 000000000..a7e4b6132 --- /dev/null +++ b/vendor/sabre/event/lib/EmitterInterface.php @@ -0,0 +1,83 @@ +<?php declare (strict_types=1); + +namespace Sabre\Event; + +/** + * Event Emitter Interface + * + * Anything that accepts listeners and emits events should implement this + * interface. + * + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) + * @author Evert Pot (http://evertpot.com/) + * @license http://sabre.io/license/ Modified BSD License + */ +interface EmitterInterface { + + /** + * Subscribe to an event. + * + * @return void + */ + function on(string $eventName, callable $callBack, int $priority = 100); + + /** + * Subscribe to an event exactly once. + * + * @return void + */ + function once(string $eventName, callable $callBack, int $priority = 100); + + /** + * Emits an event. + * + * This method will return true if 0 or more listeners were succesfully + * handled. false is returned if one of the events broke the event chain. + * + * If the continueCallBack is specified, this callback will be called every + * time before the next event handler is called. + * + * If the continueCallback returns false, event propagation stops. This + * allows you to use the eventEmitter as a means for listeners to implement + * functionality in your application, and break the event loop as soon as + * some condition is fulfilled. + * + * Note that returning false from an event subscriber breaks propagation + * and returns false, but if the continue-callback stops propagation, this + * is still considered a 'successful' operation and returns true. + * + * Lastly, if there are 5 event handlers for an event. The continueCallback + * will be called at most 4 times. + */ + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool; + + /** + * Returns the list of listeners for an event. + * + * The list is returned as an array, and the list of events are sorted by + * their priority. + * + * @return callable[] + */ + function listeners(string $eventName) : array; + + /** + * Removes a specific listener from an event. + * + * If the listener could not be found, this method will return false. If it + * was removed it will return true. + */ + function removeListener(string $eventName, callable $listener) : bool; + + /** + * Removes all listeners. + * + * If the eventName argument is specified, all listeners for that event are + * removed. If it is not specified, every listener for every event is + * removed. + * + * @return void + */ + function removeAllListeners(string $eventName = null); + +} diff --git a/vendor/sabre/event/lib/EmitterTrait.php b/vendor/sabre/event/lib/EmitterTrait.php new file mode 100644 index 000000000..dafae362f --- /dev/null +++ b/vendor/sabre/event/lib/EmitterTrait.php @@ -0,0 +1,195 @@ +<?php declare (strict_types=1); + +namespace Sabre\Event; + +/** + * Event Emitter Trait + * + * This trait contains all the basic functions to implement an + * EventEmitterInterface. + * + * Using the trait + interface allows you to add EventEmitter capabilities + * without having to change your base-class. + * + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) + * @author Evert Pot (http://evertpot.com/) + * @license http://sabre.io/license/ Modified BSD License + */ +trait EmitterTrait { + + + /** + * Subscribe to an event. + * + * @return void + */ + function on(string $eventName, callable $callBack, int $priority = 100) { + + if (!isset($this->listeners[$eventName])) { + $this->listeners[$eventName] = [ + true, // If there's only one item, it's sorted + [$priority], + [$callBack] + ]; + } else { + $this->listeners[$eventName][0] = false; // marked as unsorted + $this->listeners[$eventName][1][] = $priority; + $this->listeners[$eventName][2][] = $callBack; + } + + } + + /** + * Subscribe to an event exactly once. + * + * @return void + */ + function once(string $eventName, callable $callBack, int $priority = 100) { + + $wrapper = null; + $wrapper = function() use ($eventName, $callBack, &$wrapper) { + + $this->removeListener($eventName, $wrapper); + return \call_user_func_array($callBack, \func_get_args()); + + }; + + $this->on($eventName, $wrapper, $priority); + + } + + /** + * Emits an event. + * + * This method will return true if 0 or more listeners were succesfully + * handled. false is returned if one of the events broke the event chain. + * + * If the continueCallBack is specified, this callback will be called every + * time before the next event handler is called. + * + * If the continueCallback returns false, event propagation stops. This + * allows you to use the eventEmitter as a means for listeners to implement + * functionality in your application, and break the event loop as soon as + * some condition is fulfilled. + * + * Note that returning false from an event subscriber breaks propagation + * and returns false, but if the continue-callback stops propagation, this + * is still considered a 'successful' operation and returns true. + * + * Lastly, if there are 5 event handlers for an event. The continueCallback + * will be called at most 4 times. + */ + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool { + + if (\is_null($continueCallBack)) { + + foreach ($this->listeners($eventName) as $listener) { + + $result = \call_user_func_array($listener, $arguments); + if ($result === false) { + return false; + } + } + + } else { + + $listeners = $this->listeners($eventName); + $counter = \count($listeners); + + foreach ($listeners as $listener) { + + $counter--; + $result = \call_user_func_array($listener, $arguments); + if ($result === false) { + return false; + } + + if ($counter > 0) { + if (!$continueCallBack()) break; + } + + } + + } + + return true; + + } + + /** + * Returns the list of listeners for an event. + * + * The list is returned as an array, and the list of events are sorted by + * their priority. + * + * @return callable[] + */ + function listeners(string $eventName) : array { + + if (!isset($this->listeners[$eventName])) { + return []; + } + + // The list is not sorted + if (!$this->listeners[$eventName][0]) { + + // Sorting + \array_multisort($this->listeners[$eventName][1], SORT_NUMERIC, $this->listeners[$eventName][2]); + + // Marking the listeners as sorted + $this->listeners[$eventName][0] = true; + } + + return $this->listeners[$eventName][2]; + + } + + /** + * Removes a specific listener from an event. + * + * If the listener could not be found, this method will return false. If it + * was removed it will return true. + */ + function removeListener(string $eventName, callable $listener) : bool { + + if (!isset($this->listeners[$eventName])) { + return false; + } + foreach ($this->listeners[$eventName][2] as $index => $check) { + if ($check === $listener) { + unset($this->listeners[$eventName][1][$index]); + unset($this->listeners[$eventName][2][$index]); + return true; + } + } + return false; + + } + + /** + * Removes all listeners. + * + * If the eventName argument is specified, all listeners for that event are + * removed. If it is not specified, every listener for every event is + * removed. + * + * @return void + */ + function removeAllListeners(string $eventName = null) { + + if (!\is_null($eventName)) { + unset($this->listeners[$eventName]); + } else { + $this->listeners = []; + } + + } + + /** + * The list of listeners + * + * @var array + */ + protected $listeners = []; + +} diff --git a/vendor/sabre/event/lib/EventEmitter.php b/vendor/sabre/event/lib/EventEmitter.php index 1bb1c3cf9..cae6ac2a6 100644 --- a/vendor/sabre/event/lib/EventEmitter.php +++ b/vendor/sabre/event/lib/EventEmitter.php @@ -1,18 +1,19 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event; /** - * EventEmitter object. + * This is the old name for the Emitter class. * - * Instantiate this class, or subclass it for easily creating event emitters. + * Instead of of using EventEmitter, please use Emitter. They are identical + * otherwise. * - * @copyright Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/). + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class EventEmitter implements EventEmitterInterface { +class EventEmitter implements EmitterInterface { - use EventEmitterTrait; + use EmitterTrait; } diff --git a/vendor/sabre/event/lib/EventEmitterInterface.php b/vendor/sabre/event/lib/EventEmitterInterface.php deleted file mode 100644 index 0e2be2cef..000000000 --- a/vendor/sabre/event/lib/EventEmitterInterface.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -namespace Sabre\Event; - -/** - * Event Emitter Interface - * - * Anything that accepts listeners and emits events should implement this - * interface. - * - * @copyright Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/). - * @author Evert Pot (http://evertpot.com/) - * @license http://sabre.io/license/ Modified BSD License - */ -interface EventEmitterInterface { - - /** - * Subscribe to an event. - * - * @param string $eventName - * @param callable $callBack - * @param int $priority - * @return void - */ - function on($eventName, callable $callBack, $priority = 100); - - /** - * Subscribe to an event exactly once. - * - * @param string $eventName - * @param callable $callBack - * @param int $priority - * @return void - */ - function once($eventName, callable $callBack, $priority = 100); - - /** - * Emits an event. - * - * This method will return true if 0 or more listeners were succesfully - * handled. false is returned if one of the events broke the event chain. - * - * If the continueCallBack is specified, this callback will be called every - * time before the next event handler is called. - * - * If the continueCallback returns false, event propagation stops. This - * allows you to use the eventEmitter as a means for listeners to implement - * functionality in your application, and break the event loop as soon as - * some condition is fulfilled. - * - * Note that returning false from an event subscriber breaks propagation - * and returns false, but if the continue-callback stops propagation, this - * is still considered a 'successful' operation and returns true. - * - * Lastly, if there are 5 event handlers for an event. The continueCallback - * will be called at most 4 times. - * - * @param string $eventName - * @param array $arguments - * @param callback $continueCallBack - * @return bool - */ - function emit($eventName, array $arguments = [], callable $continueCallBack = null); - - /** - * Returns the list of listeners for an event. - * - * The list is returned as an array, and the list of events are sorted by - * their priority. - * - * @param string $eventName - * @return callable[] - */ - function listeners($eventName); - - /** - * Removes a specific listener from an event. - * - * If the listener could not be found, this method will return false. If it - * was removed it will return true. - * - * @param string $eventName - * @param callable $listener - * @return bool - */ - function removeListener($eventName, callable $listener); - - /** - * Removes all listeners. - * - * If the eventName argument is specified, all listeners for that event are - * removed. If it is not specified, every listener for every event is - * removed. - * - * @param string $eventName - * @return void - */ - function removeAllListeners($eventName = null); - -} diff --git a/vendor/sabre/event/lib/EventEmitterTrait.php b/vendor/sabre/event/lib/EventEmitterTrait.php deleted file mode 100644 index 257629fae..000000000 --- a/vendor/sabre/event/lib/EventEmitterTrait.php +++ /dev/null @@ -1,211 +0,0 @@ -<?php - -namespace Sabre\Event; - -/** - * Event Emitter Trait - * - * This trait contains all the basic functions to implement an - * EventEmitterInterface. - * - * Using the trait + interface allows you to add EventEmitter capabilities - * without having to change your base-class. - * - * @copyright Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/). - * @author Evert Pot (http://evertpot.com/) - * @license http://sabre.io/license/ Modified BSD License - */ -trait EventEmitterTrait { - - /** - * The list of listeners - * - * @var array - */ - protected $listeners = []; - - /** - * Subscribe to an event. - * - * @param string $eventName - * @param callable $callBack - * @param int $priority - * @return void - */ - function on($eventName, callable $callBack, $priority = 100) { - - if (!isset($this->listeners[$eventName])) { - $this->listeners[$eventName] = [ - true, // If there's only one item, it's sorted - [$priority], - [$callBack] - ]; - } else { - $this->listeners[$eventName][0] = false; // marked as unsorted - $this->listeners[$eventName][1][] = $priority; - $this->listeners[$eventName][2][] = $callBack; - } - - } - - /** - * Subscribe to an event exactly once. - * - * @param string $eventName - * @param callable $callBack - * @param int $priority - * @return void - */ - function once($eventName, callable $callBack, $priority = 100) { - - $wrapper = null; - $wrapper = function() use ($eventName, $callBack, &$wrapper) { - - $this->removeListener($eventName, $wrapper); - return call_user_func_array($callBack, func_get_args()); - - }; - - $this->on($eventName, $wrapper, $priority); - - } - - /** - * Emits an event. - * - * This method will return true if 0 or more listeners were succesfully - * handled. false is returned if one of the events broke the event chain. - * - * If the continueCallBack is specified, this callback will be called every - * time before the next event handler is called. - * - * If the continueCallback returns false, event propagation stops. This - * allows you to use the eventEmitter as a means for listeners to implement - * functionality in your application, and break the event loop as soon as - * some condition is fulfilled. - * - * Note that returning false from an event subscriber breaks propagation - * and returns false, but if the continue-callback stops propagation, this - * is still considered a 'successful' operation and returns true. - * - * Lastly, if there are 5 event handlers for an event. The continueCallback - * will be called at most 4 times. - * - * @param string $eventName - * @param array $arguments - * @param callback $continueCallBack - * @return bool - */ - function emit($eventName, array $arguments = [], callable $continueCallBack = null) { - - if (is_null($continueCallBack)) { - - foreach ($this->listeners($eventName) as $listener) { - - $result = call_user_func_array($listener, $arguments); - if ($result === false) { - return false; - } - } - - } else { - - $listeners = $this->listeners($eventName); - $counter = count($listeners); - - foreach ($listeners as $listener) { - - $counter--; - $result = call_user_func_array($listener, $arguments); - if ($result === false) { - return false; - } - - if ($counter > 0) { - if (!$continueCallBack()) break; - } - - } - - } - - return true; - - } - - /** - * Returns the list of listeners for an event. - * - * The list is returned as an array, and the list of events are sorted by - * their priority. - * - * @param string $eventName - * @return callable[] - */ - function listeners($eventName) { - - if (!isset($this->listeners[$eventName])) { - return []; - } - - // The list is not sorted - if (!$this->listeners[$eventName][0]) { - - // Sorting - array_multisort($this->listeners[$eventName][1], SORT_NUMERIC, $this->listeners[$eventName][2]); - - // Marking the listeners as sorted - $this->listeners[$eventName][0] = true; - } - - return $this->listeners[$eventName][2]; - - } - - /** - * Removes a specific listener from an event. - * - * If the listener could not be found, this method will return false. If it - * was removed it will return true. - * - * @param string $eventName - * @param callable $listener - * @return bool - */ - function removeListener($eventName, callable $listener) { - - if (!isset($this->listeners[$eventName])) { - return false; - } - foreach ($this->listeners[$eventName][2] as $index => $check) { - if ($check === $listener) { - unset($this->listeners[$eventName][1][$index]); - unset($this->listeners[$eventName][2][$index]); - return true; - } - } - return false; - - } - - /** - * Removes all listeners. - * - * If the eventName argument is specified, all listeners for that event are - * removed. If it is not specified, every listener for every event is - * removed. - * - * @param string $eventName - * @return void - */ - function removeAllListeners($eventName = null) { - - if (!is_null($eventName)) { - unset($this->listeners[$eventName]); - } else { - $this->listeners = []; - } - - } - -} diff --git a/vendor/sabre/event/lib/Loop/Loop.php b/vendor/sabre/event/lib/Loop/Loop.php index 86ee7c8b0..301fe8920 100644 --- a/vendor/sabre/event/lib/Loop/Loop.php +++ b/vendor/sabre/event/lib/Loop/Loop.php @@ -1,4 +1,4 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event\Loop; @@ -11,7 +11,7 @@ namespace Sabre\Event\Loop; * * setInterval for repeating functions * * stream events using stream_select * - * @copyright Copyright (C) 2007-2015 fruux GmbH. (https://fruux.com/) + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ @@ -20,11 +20,9 @@ class Loop { /** * Executes a function after x seconds. * - * @param callable $cb - * @param float $timeout timeout in seconds * @return void */ - function setTimeout(callable $cb, $timeout) { + function setTimeout(callable $cb, float $timeout) { $triggerTime = microtime(true) + ($timeout); @@ -63,12 +61,8 @@ class Loop { * * The value this function returns can be used to stop the interval with * clearInterval. - * - * @param callable $cb - * @param float $timeout - * @return array */ - function setInterval(callable $cb, $timeout) { + function setInterval(callable $cb, float $timeout) : array { $keepGoing = true; $f = null; @@ -92,12 +86,11 @@ class Loop { } /** - * Stops a running internval. + * Stops a running interval. * - * @param array $intervalId * @return void */ - function clearInterval($intervalId) { + function clearInterval(array $intervalId) { $intervalId[1] = false; @@ -106,7 +99,6 @@ class Loop { /** * Runs a function immediately at the next iteration of the loop. * - * @param callable $cb * @return void */ function nextTick(callable $cb) { @@ -126,7 +118,6 @@ class Loop { * prevent the eventloop from never stopping. * * @param resource $stream - * @param callable $cb * @return void */ function addReadStream($stream, callable $cb) { @@ -146,7 +137,6 @@ class Loop { * prevent the eventloop from never stopping. * * @param resource $stream - * @param callable $cb * @return void */ function addWriteStream($stream, callable $cb) { @@ -219,11 +209,8 @@ class Loop { * * This function will return true if there are _any_ events left in the * loop after the tick. - * - * @param bool $block - * @return bool */ - function tick($block = false) { + function tick(bool $block = false) : bool { $this->runNextTicks(); $nextTimeout = $this->runTimers(); @@ -284,7 +271,7 @@ class Loop { * * If there's no more pending timers, this function returns null. * - * @return float + * @return float|null */ protected function runTimers() { @@ -295,7 +282,7 @@ class Loop { // Add the last timer back to the array. if ($timer) { $this->timers[] = $timer; - return $timer[0] - microtime(true); + return max(0, $timer[0] - microtime(true)); } } @@ -303,7 +290,10 @@ class Loop { /** * Runs all pending stream events. * - * @param float $timeout + * If $timeout is 0, it will return immediately. If $timeout is null, it + * will wait indefinitely. + * + * @param float|null timeout */ protected function runStreams($timeout) { @@ -312,7 +302,7 @@ class Loop { $read = $this->readStreams; $write = $this->writeStreams; $except = null; - if (stream_select($read, $write, $except, null, $timeout)) { + if (stream_select($read, $write, $except, ($timeout === null) ? null : 0, $timeout ? (int)($timeout * 1000000) : 0)) { // See PHP Bug https://bugs.php.net/bug.php?id=62452 // Fixed in PHP7 @@ -328,7 +318,7 @@ class Loop { } } elseif ($this->running && ($this->nextTick || $this->timers)) { - usleep($timeout !== null ? $timeout * 1000000 : 200000); + usleep($timeout !== null ? intval($timeout * 1000000) : 200000); } } diff --git a/vendor/sabre/event/lib/Loop/functions.php b/vendor/sabre/event/lib/Loop/functions.php index 56c5bc8c7..b5884b2b6 100644 --- a/vendor/sabre/event/lib/Loop/functions.php +++ b/vendor/sabre/event/lib/Loop/functions.php @@ -1,15 +1,13 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event\Loop; /** * Executes a function after x seconds. * - * @param callable $cb - * @param float $timeout timeout in seconds * @return void */ -function setTimeout(callable $cb, $timeout) { +function setTimeout(callable $cb, float $timeout) { instance()->setTimeout($cb, $timeout); @@ -20,24 +18,19 @@ function setTimeout(callable $cb, $timeout) { * * The value this function returns can be used to stop the interval with * clearInterval. - * - * @param callable $cb - * @param float $timeout - * @return array */ -function setInterval(callable $cb, $timeout) { +function setInterval(callable $cb, float $timeout) : array { return instance()->setInterval($cb, $timeout); } /** - * Stops a running internval. + * Stops a running interval. * - * @param array $intervalId * @return void */ -function clearInterval($intervalId) { +function clearInterval(array $intervalId) { instance()->clearInterval($intervalId); @@ -46,7 +39,6 @@ function clearInterval($intervalId) { /** * Runs a function immediately at the next iteration of the loop. * - * @param callable $cb * @return void */ function nextTick(callable $cb) { @@ -66,7 +58,6 @@ function nextTick(callable $cb) { * prevent the eventloop from never stopping. * * @param resource $stream - * @param callable $cb * @return void */ function addReadStream($stream, callable $cb) { @@ -85,7 +76,6 @@ function addReadStream($stream, callable $cb) { * prevent the eventloop from never stopping. * * @param resource $stream - * @param callable $cb * @return void */ function addWriteStream($stream, callable $cb) { @@ -144,11 +134,8 @@ function run() { * * This function will return true if there are _any_ events left in the * loop after the tick. - * - * @param bool $block - * @return bool */ -function tick($block = false) { +function tick(bool $block = false) : bool { return instance()->tick($block); @@ -167,10 +154,8 @@ function stop() { /** * Retrieves or sets the global Loop object. - * - * @param Loop $newLoop */ -function instance(Loop $newLoop = null) { +function instance(Loop $newLoop = null) : Loop { static $loop; if ($newLoop) { diff --git a/vendor/sabre/event/lib/Promise.php b/vendor/sabre/event/lib/Promise.php index 1c874c1bd..1d04bd4d4 100644 --- a/vendor/sabre/event/lib/Promise.php +++ b/vendor/sabre/event/lib/Promise.php @@ -1,8 +1,9 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event; use Exception; +use Throwable; /** * An implementation of the Promise pattern. @@ -16,7 +17,7 @@ use Exception; * * To get a callback when the operation has finished, use the `then` method. * - * @copyright Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/). + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ @@ -52,8 +53,6 @@ class Promise { * * Each are callbacks that map to $this->fulfill and $this->reject. * Using the executor is optional. - * - * @param callable $executor */ function __construct(callable $executor = null) { @@ -84,12 +83,8 @@ class Promise { * * If either of the callbacks throw an exception, the returned promise will * be rejected and the exception will be passed back. - * - * @param callable $onFulfilled - * @param callable $onRejected - * @return Promise */ - function then(callable $onFulfilled = null, callable $onRejected = null) { + function then(callable $onFulfilled = null, callable $onRejected = null) : Promise { // This new subPromise will be returned from this function, and will // be fulfilled with the result of the onFulfilled or onRejected event @@ -122,11 +117,8 @@ class Promise { * * Its usage is identical to then(). However, the otherwise() function is * preferred. - * - * @param callable $onRejected - * @return Promise */ - function otherwise(callable $onRejected) { + function otherwise(callable $onRejected) : Promise { return $this->then(null, $onRejected); @@ -152,13 +144,9 @@ class Promise { /** * Marks this promise as rejected, and set it's rejection reason. * - * While it's possible to use any PHP value as the reason, it's highly - * recommended to use an Exception for this. - * - * @param mixed $reason * @return void */ - function reject($reason = null) { + function reject(Throwable $reason) { if ($this->state !== self::PENDING) { throw new PromiseAlreadyResolvedException('This promise is already resolved, and you\'re not allowed to resolve a promise more than once'); } @@ -181,7 +169,6 @@ class Promise { * one. In PHP it might be useful to call this on the last promise in a * chain. * - * @throws Exception * @return mixed */ function wait() { @@ -205,15 +192,7 @@ class Promise { } else { // If we got here, it means that the asynchronous operation // errored. Therefore we need to throw an exception. - $reason = $this->value; - if ($reason instanceof Exception) { - throw $reason; - } elseif (is_scalar($reason)) { - throw new Exception($reason); - } else { - $type = is_object($reason) ? get_class($reason) : gettype($reason); - throw new Exception('Promise was rejected with reason of type: ' . $type); - } + throw $this->value; } @@ -272,7 +251,7 @@ class Promise { // immediately fulfill the chained promise. $subPromise->fulfill($result); } - } catch (Exception $e) { + } catch (Throwable $e) { // If the event handler threw an exception, we need to make sure that // the chained promise is rejected as well. $subPromise->reject($e); @@ -287,34 +266,4 @@ class Promise { }); } - /** - * Alias for 'otherwise'. - * - * This function is now deprecated and will be removed in a future version. - * - * @param callable $onRejected - * @deprecated - * @return Promise - */ - function error(callable $onRejected) { - - return $this->otherwise($onRejected); - - } - - /** - * Deprecated. - * - * Please use Sabre\Event\Promise::all - * - * @param Promise[] $promises - * @deprecated - * @return Promise - */ - static function all(array $promises) { - - return Promise\all($promises); - - } - } diff --git a/vendor/sabre/event/lib/Promise/functions.php b/vendor/sabre/event/lib/Promise/functions.php index 3604b8aaa..275492cbc 100644 --- a/vendor/sabre/event/lib/Promise/functions.php +++ b/vendor/sabre/event/lib/Promise/functions.php @@ -1,14 +1,15 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event\Promise; use Sabre\Event\Promise; +use Throwable; /** * This file contains a set of functions that are useful for dealing with the * Promise object. * - * @copyright Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/). + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ @@ -27,12 +28,16 @@ use Sabre\Event\Promise; * fail with the first Promise that fails, and its reason. * * @param Promise[] $promises - * @return Promise */ -function all(array $promises) { +function all(array $promises) : Promise { return new Promise(function($success, $fail) use ($promises) { + if (empty($promises)) { + $success([]); + return; + } + $successCount = 0; $completeResult = []; @@ -47,7 +52,7 @@ function all(array $promises) { } return $result; } - )->error( + )->otherwise( function($reason) use ($fail) { $fail($reason); } @@ -66,9 +71,8 @@ function all(array $promises) { * that first promise. * * @param Promise[] $promises - * @return Promise */ -function race(array $promises) { +function race(array $promises) : Promise { return new Promise(function($success, $fail) use ($promises) { @@ -106,9 +110,8 @@ function race(array $promises) { * promise and eventually get the same state as the followed promise. * * @param mixed $value - * @return Promise */ -function resolve($value) { +function resolve($value) : Promise { if ($value instanceof Promise) { return $value->then(); @@ -122,11 +125,8 @@ function resolve($value) { /** * Returns a Promise that will reject with the given reason. - * - * @param mixed $reason - * @return Promise */ -function reject($reason) { +function reject(Throwable $reason) : Promise { $promise = new Promise(); $promise->reject($reason); diff --git a/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php b/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php index 86a6c5b3f..534a3d494 100644 --- a/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php +++ b/vendor/sabre/event/lib/PromiseAlreadyResolvedException.php @@ -1,4 +1,4 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event; @@ -6,7 +6,7 @@ namespace Sabre\Event; * This exception is thrown when the user tried to reject or fulfill a promise, * after either of these actions were already performed. * - * @copyright Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/). + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ diff --git a/vendor/sabre/event/lib/Version.php b/vendor/sabre/event/lib/Version.php index 5de22193f..9aee4b3ab 100644 --- a/vendor/sabre/event/lib/Version.php +++ b/vendor/sabre/event/lib/Version.php @@ -1,11 +1,11 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event; /** * This class contains the version number for this package. * - * @copyright Copyright (C) 2013-2015 fruux GmbH (https://fruux.com/). + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ @@ -14,6 +14,6 @@ class Version { /** * Full version number */ - const VERSION = '3.0.0'; + const VERSION = '5.0.3'; } diff --git a/vendor/sabre/event/lib/WildcardEmitter.php b/vendor/sabre/event/lib/WildcardEmitter.php new file mode 100644 index 000000000..2ef15fe83 --- /dev/null +++ b/vendor/sabre/event/lib/WildcardEmitter.php @@ -0,0 +1,37 @@ +<?php declare (strict_types=1); + +namespace Sabre\Event; + +/** + * This class is an EventEmitter with support for wildcard event handlers. + * + * What this means is that you can emit events like this: + * + * emit('change:firstName') + * + * and listen to this event like this: + * + * on('change:*') + * + * A few notes: + * + * - Wildcards only work at the end of an event name. + * - Currently you can only use 1 wildcard. + * - Using ":" as a separator is optional, but it's highly recommended to use + * some kind of separator. + * + * The WilcardEmitter is a bit slower than the regular Emitter. If you code + * must be very high performance, it might be better to try to use the other + * emitter. For must usage the difference is negligible though. + * + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) + * @author Evert Pot (http://evertpot.com/) + * @license http://sabre.io/license/ Modified BSD License + */ +class WildcardEmitter implements EmitterInterface { + + use WildcardEmitterTrait; + + + +} diff --git a/vendor/sabre/event/lib/WildcardEmitterTrait.php b/vendor/sabre/event/lib/WildcardEmitterTrait.php new file mode 100644 index 000000000..7d8d62c26 --- /dev/null +++ b/vendor/sabre/event/lib/WildcardEmitterTrait.php @@ -0,0 +1,264 @@ +<?php declare (strict_types=1); + +namespace Sabre\Event; + +/** + * Wildcard Emitter Trait + * + * This trait provides the implementation for WildCardEmitter + * Refer to that class for the full documentation about this + * trait. + * + * Normally you can just instantiate that class, but if you want to add + * emitter functionality to existing classes, using the trait might be a + * better way to do this. + * + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) + * @author Evert Pot (http://evertpot.com/) + * @license http://sabre.io/license/ Modified BSD License + */ +trait WildcardEmitterTrait { + + /** + * Subscribe to an event. + * + * @return void + */ + function on(string $eventName, callable $callBack, int $priority = 100) { + + // If it ends with a wildcard, we use the wildcardListeners array + if ($eventName[\strlen($eventName) - 1] === '*') { + $eventName = \substr($eventName, 0, -1); + $listeners = & $this->wildcardListeners; + } else { + $listeners = & $this->listeners; + } + + // Always fully reset the listener index. This is fairly sane for most + // applications, because there's a clear "event registering" and "event + // emitting" phase, but can be slow if there's a lot adding and removing + // of listeners during emitting of events. + $this->listenerIndex = []; + + if (!isset($listeners[$eventName])) { + $listeners[$eventName] = []; + } + $listeners[$eventName][] = [$priority, $callBack]; + + } + + /** + * Subscribe to an event exactly once. + * + * @return void + */ + function once(string $eventName, callable $callBack, int $priority = 100) { + + $wrapper = null; + $wrapper = function() use ($eventName, $callBack, &$wrapper) { + + $this->removeListener($eventName, $wrapper); + return \call_user_func_array($callBack, \func_get_args()); + + }; + + $this->on($eventName, $wrapper, $priority); + + } + + /** + * Emits an event. + * + * This method will return true if 0 or more listeners were succesfully + * handled. false is returned if one of the events broke the event chain. + * + * If the continueCallBack is specified, this callback will be called every + * time before the next event handler is called. + * + * If the continueCallback returns false, event propagation stops. This + * allows you to use the eventEmitter as a means for listeners to implement + * functionality in your application, and break the event loop as soon as + * some condition is fulfilled. + * + * Note that returning false from an event subscriber breaks propagation + * and returns false, but if the continue-callback stops propagation, this + * is still considered a 'successful' operation and returns true. + * + * Lastly, if there are 5 event handlers for an event. The continueCallback + * will be called at most 4 times. + */ + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool { + + if (\is_null($continueCallBack)) { + + foreach ($this->listeners($eventName) as $listener) { + + $result = \call_user_func_array($listener, $arguments); + if ($result === false) { + return false; + } + } + + } else { + + $listeners = $this->listeners($eventName); + $counter = \count($listeners); + + foreach ($listeners as $listener) { + + $counter--; + $result = \call_user_func_array($listener, $arguments); + if ($result === false) { + return false; + } + + if ($counter > 0) { + if (!$continueCallBack()) break; + } + + } + + } + + return true; + + + } + + /** + * Returns the list of listeners for an event. + * + * The list is returned as an array, and the list of events are sorted by + * their priority. + * + * @return callable[] + */ + function listeners(string $eventName) : array { + + if (!\array_key_exists($eventName, $this->listenerIndex)) { + + // Create a new index. + $listeners = []; + $listenersPriority = []; + if (isset($this->listeners[$eventName])) foreach ($this->listeners[$eventName] as $listener) { + + $listenersPriority[] = $listener[0]; + $listeners[] = $listener[1]; + + } + + foreach ($this->wildcardListeners as $wcEvent => $wcListeners) { + + // Wildcard match + if (\substr($eventName, 0, \strlen($wcEvent)) === $wcEvent) { + + foreach ($wcListeners as $listener) { + + $listenersPriority[] = $listener[0]; + $listeners[] = $listener[1]; + + } + + } + + } + + // Sorting by priority + \array_multisort($listenersPriority, SORT_NUMERIC, $listeners); + + // Creating index + $this->listenerIndex[$eventName] = $listeners; + + } + + return $this->listenerIndex[$eventName]; + + } + + /** + * Removes a specific listener from an event. + * + * If the listener could not be found, this method will return false. If it + * was removed it will return true. + */ + function removeListener(string $eventName, callable $listener) : bool { + + // If it ends with a wildcard, we use the wildcardListeners array + if ($eventName[\strlen($eventName) - 1] === '*') { + $eventName = \substr($eventName, 0, -1); + $listeners = & $this->wildcardListeners; + } else { + $listeners = & $this->listeners; + } + + if (!isset($listeners[$eventName])) { + return false; + } + + foreach ($listeners[$eventName] as $index => $check) { + + if ($check[1] === $listener) { + + // Remove listener + unset($listeners[$eventName][$index]); + // Reset index + $this->listenerIndex = []; + return true; + + } + + } + + return false; + + } + + /** + * Removes all listeners. + * + * If the eventName argument is specified, all listeners for that event are + * removed. If it is not specified, every listener for every event is + * removed. + * + * @return void + */ + function removeAllListeners(string $eventName = null) { + + if (\is_null($eventName)) { + $this->listeners = []; + $this->wildcardListeners = []; + + } else { + + if ($eventName[\strlen($eventName) - 1] === '*') { + // Wildcard event + unset($this->wildcardListeners[\substr($eventName, 0, -1)]); + } else { + unset($this->listeners[$eventName]); + } + + } + + // Reset index + $this->listenerIndex = []; + + } + + /** + * The list of listeners + */ + protected $listeners = []; + + /** + * The list of "wildcard listeners". + */ + protected $wildcardListeners = []; + + /** + * An index of listeners for a specific event name. This helps speeding + * up emitting events after all listeners have been set. + * + * If the list of listeners changes though, the index clears. + */ + protected $listenerIndex = []; +} diff --git a/vendor/sabre/event/lib/coroutine.php b/vendor/sabre/event/lib/coroutine.php index 19c0ba8a7..750e8ab52 100644 --- a/vendor/sabre/event/lib/coroutine.php +++ b/vendor/sabre/event/lib/coroutine.php @@ -1,9 +1,9 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event; use Generator; -use Exception; +use Throwable; /** * Turn asynchronous promise-based code into something that looks synchronous @@ -34,17 +34,18 @@ use Exception; * yield $httpClient->request('GET', '/foo'); * yield $httpClient->request('DELETE', /foo'); * yield $httpClient->request('PUT', '/foo'); - * } catch(\Exception $reason) { + * } catch(\Throwable $reason) { * echo "Failed because: $reason\n"; * } * * }); * - * @copyright Copyright (C) 2013-2015 fruux GmbH. All rights reserved. + * @return \Sabre\Event\Promise + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -function coroutine(callable $gen) { +function coroutine(callable $gen) : Promise { $generator = $gen(); if (!$generator instanceof Generator) { @@ -54,8 +55,6 @@ function coroutine(callable $gen) { // This is the value we're returning. $promise = new Promise(); - $lastYieldResult = null; - /** * So tempted to use the mythical y-combinator here, but it's not needed in * PHP. @@ -68,22 +67,14 @@ function coroutine(callable $gen) { if ($yieldedValue instanceof Promise) { $yieldedValue->then( function($value) use ($generator, &$advanceGenerator, &$lastYieldResult) { - $lastYieldResult = $value; $generator->send($value); $advanceGenerator(); }, - function($reason) use ($generator, $advanceGenerator) { - if ($reason instanceof Exception) { - $generator->throw($reason); - } elseif (is_scalar($reason)) { - $generator->throw(new Exception($reason)); - } else { - $type = is_object($reason) ? get_class($reason) : gettype($reason); - $generator->throw(new Exception('Promise was rejected with reason of type: ' . $type)); - } + function(Throwable $reason) use ($generator, $advanceGenerator) { + $generator->throw($reason); $advanceGenerator(); } - )->error(function($reason) use ($promise) { + )->otherwise(function(Throwable $reason) use ($promise) { // This error handler would be called, if something in the // generator throws an exception, and it's not caught // locally. @@ -94,24 +85,38 @@ function coroutine(callable $gen) { break; } else { // If the value was not a promise, we'll just let it pass through. - $lastYieldResult = $yieldedValue; $generator->send($yieldedValue); } } // If the generator is at the end, and we didn't run into an exception, - // we can fullfill the promise with the last thing that was yielded to - // us. - if (!$generator->valid() && $promise->state === Promise::PENDING) { - $promise->fulfill($lastYieldResult); + // We're grabbing the "return" value and fulfilling our top-level + // promise with its value. + if (!$generator->valid() && $promise->state === Promise::PENDING) { + $returnValue = $generator->getReturn(); + + // The return value is a promise. + if ($returnValue instanceof Promise) { + $returnValue->then(function($value) use ($promise) { + $promise->fulfill($value); + }, function(Throwable $reason) { + $promise->reject($reason); + }); + } else { + + $promise->fulfill($returnValue); + + } + + } }; try { $advanceGenerator(); - } catch (Exception $e) { + } catch (Throwable $e) { $promise->reject($e); } diff --git a/vendor/sabre/http/.gitignore b/vendor/sabre/http/.gitignore index 8c97686fb..5f85ecc1b 100644 --- a/vendor/sabre/http/.gitignore +++ b/vendor/sabre/http/.gitignore @@ -6,10 +6,13 @@ composer.lock tests/cov/ # Composer binaries -bin/phpunit -bin/phpcs -bin/php-cs-fixer -bin/sabre-cs-fixer +bin/phpunit* +bin/phpcs* +bin/php-cs-fixer* +bin/sabre-cs-fixer* # Vim .*.swp + +# development stuff +.php_cs.cache diff --git a/vendor/sabre/http/.php_cs.dist b/vendor/sabre/http/.php_cs.dist new file mode 100644 index 000000000..8d61ee259 --- /dev/null +++ b/vendor/sabre/http/.php_cs.dist @@ -0,0 +1,12 @@ +<?php + +$config = PhpCsFixer\Config::create(); +$config->getFinder() + ->exclude('vendor') + ->in(__DIR__); +$config->setRules([ + '@PSR1' => true, + '@Symfony' =>true +]); + +return $config; \ No newline at end of file diff --git a/vendor/sabre/http/.travis.yml b/vendor/sabre/http/.travis.yml index 9e4964b9d..3b85d5f39 100644 --- a/vendor/sabre/http/.travis.yml +++ b/vendor/sabre/http/.travis.yml @@ -1,28 +1,41 @@ language: php +sudo: required php: - - 5.4 - - 5.5 - - 5.6 - - 7 + - 7.0 - 7.1 - - hhvm + - 7.2 + - 7.3 + - 7.4snapshot + +env: + global: + - RUN_PHPSTAN="FALSE" + matrix: + - PREFER_LOWEST="" WITH_COVERAGE="--coverage-clover=coverage.xml" + - PREFER_LOWEST="--prefer-lowest" $WITH_COVERAGE="" matrix: + include: + - name: 'PHPStan' + php: 7.2 + env: RUN_PHPSTAN="TRUE" fast_finish: true - allow_failures: - - php: hhvm -env: - matrix: - - PREFER_LOWEST="" - - PREFER_LOWEST="--prefer-lowest" +cache: + directories: + - $HOME/.composer/cache +install: + - if [ $RUN_PHPSTAN == "TRUE" ]; then composer require --dev phpstan/phpstan; fi before_script: - - rm -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini -# - composer self-update - - composer update --prefer-source $PREFER_LOWEST + - composer update --prefer-source $PREFER_LOWEST + - PHP_BIN=$(phpenv which php) + - sudo $PHP_BIN -S localhost:80 -t $TRAVIS_BUILD_DIR/tests/www 2>/dev/null & script: - - ./bin/phpunit --configuration tests/phpunit.xml - - ./bin/sabre-cs-fixer fix . --dry-run --diff + - if [ $RUN_PHPSTAN == "FALSE" ]; then ./bin/phpunit --configuration tests/phpunit.xml $WITH_COVERAGE; fi + - if [ $RUN_PHPSTAN == "TRUE" ]; then php ./bin/phpstan analyse -c phpstan.neon lib; fi + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/sabre/http/CHANGELOG.md b/vendor/sabre/http/CHANGELOG.md index d3dd8b2d9..a087453fa 100644 --- a/vendor/sabre/http/CHANGELOG.md +++ b/vendor/sabre/http/CHANGELOG.md @@ -1,11 +1,61 @@ ChangeLog ========= -4.2.4 (2018-02-23) ------------------- +5.0.4 (2019-10-08) +------------------------- + +* #133: Fix short Content-Range download - Regression from 5.0.3 (@phil-davis) + +5.0.3 (2019-10-08) +------------------------- + +* #119: Significantly improve file download speed by enabling mmap based stream_copy_to_stream (@vfreex) + +5.0.2 (2019-09-12) +------------------------- + +* #125: Fix Strict Error if Response Body Empty (@WorksDev, @phil-davis) +5.0.1 (2019-09-11) +------------------------- + +* #121: fix "Trying to access array offset on value of type bool" in 7.4 (@remicollet) +* #115: Reduce memory footprint when parsing HTTP result (@Gasol) +* #114: Misc code improvements (@mrcnpdlk) +* #111, #118: Added phpstan analysis (@DeepDiver1975, @staabm) +* #107: Tested with php 7.3 (@DeepDiver1975) + + +5.0.0 (2018-06-04) +------------------------- + +* #99: Previous CURL opts are not persisted anymore (@christiaan) +* Final release + +5.0.0-alpha1 (2018-02-16) +------------------------- + +* Now requires PHP 7.0+. +* Supports sabre/event 4.x and 5.x +* Depends on sabre/uri 2. +* hhvm is no longer supported starting this release. +* #65: It's now possible to supply request/response bodies using a callback + functions. This allows very high-speed/low-memory responses to be created. + (@petrkotek). +* Strict typing is used every where this is applicable. +* Removed `URLUtil` class. It was deprecated a long time ago, and most of + its functions moved to the `sabre/uri` package. +* Removed `Util` class. Most of its functions moved to the `functions.php` + file. +* #68: The `$method` and `$uri` arguments when constructing a Request object + are now required. +* When `Sapi::getRequest()` is called, we default to setting the HTTP Method + to `CLI`. +* The HTTP response is now initialized with HTTP code `500` instead of `null`, + so if it's not changed, it will be emitted as 500. * #69: Sending `charset="UTF-8"` on Basic authentication challenges per [rfc7617][rfc7617]. +* #84: Added support for `SERVER_PROTOCOL HTTP/2.0` (@jens1o) 4.2.3 (2017-06-12) @@ -19,6 +69,7 @@ ChangeLog * #72: Handling clients that send invalid `Content-Length` headers. + 4.2.1 (2016-01-06) ------------------ diff --git a/vendor/sabre/http/README.md b/vendor/sabre/http/README.md index ae03a796e..8159b4d49 100644 --- a/vendor/sabre/http/README.md +++ b/vendor/sabre/http/README.md @@ -1,7 +1,7 @@ sabre/http ========== -This library provides a toolkit to make working with the HTTP protocol easier. +This library provides a toolkit to make working with the [HTTP protocol](https://tools.ietf.org/html/rfc2616) easier. Most PHP scripts run within a HTTP request but accessing information about the HTTP request is cumbersome at least. @@ -30,8 +30,9 @@ Build status | branch | status | | ------ | ------ | -| master | [![Build Status](https://travis-ci.org/fruux/sabre-http.svg?branch=master)](https://travis-ci.org/fruux/sabre-http) | -| 3.0 | [![Build Status](https://travis-ci.org/fruux/sabre-http.svg?branch=3.0)](https://travis-ci.org/fruux/sabre-http) | +| master | [![Build Status](https://travis-ci.org/sabre-io/http.svg?branch=master)](https://travis-ci.org/sabre-io/http) | +| 4.2 | [![Build Status](https://travis-ci.org/sabre-io/http.svg?branch=4.2)](https://travis-ci.org/sabre-io/http) | +| 3.0 | [![Build Status](https://travis-ci.org/sabre-io/http.svg?branch=3.0)](https://travis-ci.org/sabre-io/http) | Installation ------------ @@ -42,7 +43,7 @@ or edit a `composer.json` file, and make sure it contains something like this: ```json { "require" : { - "sabre/http" : "~3.0.0" + "sabre/http" : "~5.0.0" } } ``` @@ -571,7 +572,7 @@ function removeHeader($name); /** * Sets the HTTP version. * - * Should be 1.0 or 1.1. + * Should be 1.0, 1.1 or 2.0. * * @param string $version * @return void @@ -716,7 +717,7 @@ function removeHeader($name); /** * Sets the HTTP version. * - * Should be 1.0 or 1.1. + * Should be 1.0, 1.1 or 2.0. * * @param string $version * @return void diff --git a/vendor/sabre/http/composer.json b/vendor/sabre/http/composer.json index 507d5d28d..851a08730 100644 --- a/vendor/sabre/http/composer.json +++ b/vendor/sabre/http/composer.json @@ -5,15 +5,15 @@ "homepage" : "https://github.com/fruux/sabre-http", "license" : "BSD-3-Clause", "require" : { - "php" : ">=5.4", + "php" : "^7.0", "ext-mbstring" : "*", "ext-ctype" : "*", - "sabre/event" : ">=1.0.0,<4.0.0", - "sabre/uri" : "~1.0" + "ext-curl" : "*", + "sabre/event" : ">=4.0 <6.0", + "sabre/uri" : "^2.0" }, "require-dev" : { - "phpunit/phpunit" : "~4.3", - "sabre/cs" : "~0.0.1" + "phpunit/phpunit" : "^6.0 || ^7.0" }, "suggest" : { "ext-curl" : " to make http requests with the Client class" diff --git a/vendor/sabre/http/lib/Auth/AWS.php b/vendor/sabre/http/lib/Auth/AWS.php index 5e176646a..ffda3cf15 100644 --- a/vendor/sabre/http/lib/Auth/AWS.php +++ b/vendor/sabre/http/lib/Auth/AWS.php @@ -1,11 +1,13 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP\Auth; -use Sabre\HTTP\Util; +use Sabre\HTTP; /** - * HTTP AWS Authentication handler + * HTTP AWS Authentication handler. * * Use this class to leverage amazon's AWS authentication header * @@ -13,24 +15,24 @@ use Sabre\HTTP\Util; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class AWS extends AbstractAuth { - +class AWS extends AbstractAuth +{ /** - * The signature supplied by the HTTP client + * The signature supplied by the HTTP client. * * @var string */ private $signature = null; /** - * The accesskey supplied by the HTTP client + * The accesskey supplied by the HTTP client. * * @var string */ private $accessKey = null; /** - * An error code, if any + * An error code, if any. * * This value will be filled with one of the ERR_* constants * @@ -45,47 +47,45 @@ class AWS extends AbstractAuth { const ERR_INVALIDSIGNATURE = 5; /** - * Gathers all information from the headers + * Gathers all information from the headers. * * This method needs to be called prior to anything else. - * - * @return bool */ - function init() { - + public function init(): bool + { $authHeader = $this->request->getHeader('Authorization'); + + if (null === $authHeader) { + $this->errorCode = self::ERR_NOAWSHEADER; + + return false; + } $authHeader = explode(' ', $authHeader); - if ($authHeader[0] != 'AWS' || !isset($authHeader[1])) { + if ('AWS' !== $authHeader[0] || !isset($authHeader[1])) { $this->errorCode = self::ERR_NOAWSHEADER; - return false; + + return false; } list($this->accessKey, $this->signature) = explode(':', $authHeader[1]); return true; - } /** - * Returns the username for the request - * - * @return string + * Returns the username for the request. */ - function getAccessKey() { - + public function getAccessKey(): string + { return $this->accessKey; - } /** - * Validates the signature based on the secretKey - * - * @param string $secretKey - * @return bool + * Validates the signature based on the secretKey. */ - function validate($secretKey) { - + public function validate(string $secretKey): bool + { $contentMD5 = $this->request->getHeader('Content-MD5'); if ($contentMD5) { @@ -93,57 +93,53 @@ class AWS extends AbstractAuth { $body = $this->request->getBody(); $this->request->setBody($body); - if ($contentMD5 != base64_encode(md5($body, true))) { + if ($contentMD5 !== base64_encode(md5((string) $body, true))) { // content-md5 header did not match md5 signature of body $this->errorCode = self::ERR_MD5CHECKSUMWRONG; + return false; } - } - if (!$requestDate = $this->request->getHeader('x-amz-date')) + if (!$requestDate = $this->request->getHeader('x-amz-date')) { $requestDate = $this->request->getHeader('Date'); + } - if (!$this->validateRFC2616Date($requestDate)) + if (!$this->validateRFC2616Date((string) $requestDate)) { return false; + } $amzHeaders = $this->getAmzHeaders(); $signature = base64_encode( $this->hmacsha1($secretKey, - $this->request->getMethod() . "\n" . - $contentMD5 . "\n" . - $this->request->getHeader('Content-type') . "\n" . - $requestDate . "\n" . - $amzHeaders . + $this->request->getMethod()."\n". + $contentMD5."\n". + $this->request->getHeader('Content-type')."\n". + $requestDate."\n". + $amzHeaders. $this->request->getUrl() ) ); - if ($this->signature != $signature) { - + if ($this->signature !== $signature) { $this->errorCode = self::ERR_INVALIDSIGNATURE; - return false; + return false; } return true; - } - /** - * Returns an HTTP 401 header, forcing login + * Returns an HTTP 401 header, forcing login. * * This should be called when username and password are incorrect, or not supplied at all - * - * @return void */ - function requireLogin() { - + public function requireLogin() + { $this->response->addHeader('WWW-Authenticate', 'AWS'); $this->response->setStatus(401); - } /** @@ -154,17 +150,15 @@ class AWS extends AbstractAuth { * * This function also makes sure the Date header is within 15 minutes of the operating * system date, to prevent replay attacks. - * - * @param string $dateHeader - * @return bool */ - protected function validateRFC2616Date($dateHeader) { - - $date = Util::parseHTTPDate($dateHeader); + protected function validateRFC2616Date(string $dateHeader): bool + { + $date = HTTP\parseDate($dateHeader); // Unknown format if (!$date) { $this->errorCode = self::ERR_INVALIDDATEFORMAT; + return false; } @@ -174,47 +168,40 @@ class AWS extends AbstractAuth { // We allow 15 minutes around the current date/time if ($date > $max || $date < $min) { $this->errorCode = self::ERR_REQUESTTIMESKEWED; + return false; } - return $date; - + return true; } /** - * Returns a list of AMZ headers - * - * @return string + * Returns a list of AMZ headers. */ - protected function getAmzHeaders() { - + protected function getAmzHeaders(): string + { $amzHeaders = []; $headers = $this->request->getHeaders(); foreach ($headers as $headerName => $headerValue) { - if (strpos(strtolower($headerName), 'x-amz-') === 0) { - $amzHeaders[strtolower($headerName)] = str_replace(["\r\n"], [' '], $headerValue[0]) . "\n"; + if (0 === strpos(strtolower($headerName), 'x-amz-')) { + $amzHeaders[strtolower($headerName)] = str_replace(["\r\n"], [' '], $headerValue[0])."\n"; } } ksort($amzHeaders); $headerStr = ''; foreach ($amzHeaders as $h => $v) { - $headerStr .= $h . ':' . $v; + $headerStr .= $h.':'.$v; } return $headerStr; - } /** - * Generates an HMAC-SHA1 signature - * - * @param string $key - * @param string $message - * @return string + * Generates an HMAC-SHA1 signature. */ - private function hmacsha1($key, $message) { - + private function hmacsha1(string $key, string $message): string + { if (function_exists('hash_hmac')) { return hash_hmac('sha1', $message, $key, true); } @@ -226,9 +213,8 @@ class AWS extends AbstractAuth { $key = str_pad($key, $blocksize, chr(0x00)); $ipad = str_repeat(chr(0x36), $blocksize); $opad = str_repeat(chr(0x5c), $blocksize); - $hmac = pack('H*', sha1(($key ^ $opad) . pack('H*', sha1(($key ^ $ipad) . $message)))); - return $hmac; + $hmac = pack('H*', sha1(($key ^ $opad).pack('H*', sha1(($key ^ $ipad).$message)))); + return $hmac; } - } diff --git a/vendor/sabre/http/lib/Auth/AbstractAuth.php b/vendor/sabre/http/lib/Auth/AbstractAuth.php index ae45b3ee2..ada6bf0f0 100644 --- a/vendor/sabre/http/lib/Auth/AbstractAuth.php +++ b/vendor/sabre/http/lib/Auth/AbstractAuth.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP\Auth; use Sabre\HTTP\RequestInterface; @@ -14,60 +16,50 @@ use Sabre\HTTP\ResponseInterface; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -abstract class AbstractAuth { - +abstract class AbstractAuth +{ /** - * Authentication realm + * Authentication realm. * * @var string */ protected $realm; /** - * Request object + * Request object. * * @var RequestInterface */ protected $request; /** - * Response object + * Response object. * * @var ResponseInterface */ protected $response; /** - * Creates the object - * - * @param string $realm - * @return void + * Creates the object. */ - function __construct($realm = 'SabreTooth', RequestInterface $request, ResponseInterface $response) { - + public function __construct(string $realm = 'SabreTooth', RequestInterface $request, ResponseInterface $response) + { $this->realm = $realm; $this->request = $request; $this->response = $response; - } /** * This method sends the needed HTTP header and statuscode (401) to force * the user to login. - * - * @return void */ - abstract function requireLogin(); + abstract public function requireLogin(); /** - * Returns the HTTP realm - * - * @return string + * Returns the HTTP realm. */ - function getRealm() { - + public function getRealm(): string + { return $this->realm; - } - } diff --git a/vendor/sabre/http/lib/Auth/Basic.php b/vendor/sabre/http/lib/Auth/Basic.php index c263e3f9b..d04b4a811 100644 --- a/vendor/sabre/http/lib/Auth/Basic.php +++ b/vendor/sabre/http/lib/Auth/Basic.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP\Auth; /** @@ -15,25 +17,25 @@ namespace Sabre\HTTP\Auth; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Basic extends AbstractAuth { - +class Basic extends AbstractAuth +{ /** * This method returns a numeric array with a username and password as the * only elements. * * If no credentials were found, this method returns null. * - * @return null|array + * @return array|null */ - function getCredentials() { - + public function getCredentials() + { $auth = $this->request->getHeader('Authorization'); if (!$auth) { return null; } - if (strtolower(substr($auth, 0, 6)) !== 'basic ') { + if ('basic ' !== strtolower(substr($auth, 0, 6))) { return null; } @@ -44,20 +46,15 @@ class Basic extends AbstractAuth { } return $credentials; - } /** * This method sends the needed HTTP header and statuscode (401) to force * the user to login. - * - * @return void */ - function requireLogin() { - - $this->response->addHeader('WWW-Authenticate', 'Basic realm="' . $this->realm . '", charset="UTF-8"'); + public function requireLogin() + { + $this->response->addHeader('WWW-Authenticate', 'Basic realm="'.$this->realm.'", charset="UTF-8"'); $this->response->setStatus(401); - } - } diff --git a/vendor/sabre/http/lib/Auth/Bearer.php b/vendor/sabre/http/lib/Auth/Bearer.php index eefdf11ee..988bb29d2 100644 --- a/vendor/sabre/http/lib/Auth/Bearer.php +++ b/vendor/sabre/http/lib/Auth/Bearer.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP\Auth; /** @@ -15,42 +17,37 @@ namespace Sabre\HTTP\Auth; * @author François Kooman (fkooman@tuxed.net) * @license http://sabre.io/license/ Modified BSD License */ -class Bearer extends AbstractAuth { - +class Bearer extends AbstractAuth +{ /** * This method returns a string with an access token. * * If no token was found, this method returns null. * - * @return null|string + * @return string|null */ - function getToken() { - + public function getToken() + { $auth = $this->request->getHeader('Authorization'); if (!$auth) { return null; } - if (strtolower(substr($auth, 0, 7)) !== 'bearer ') { + if ('bearer ' !== strtolower(substr($auth, 0, 7))) { return null; } return substr($auth, 7); - } /** * This method sends the needed HTTP header and statuscode (401) to force * authentication. - * - * @return void */ - function requireLogin() { - - $this->response->addHeader('WWW-Authenticate', 'Bearer realm="' . $this->realm . '"'); + public function requireLogin() + { + $this->response->addHeader('WWW-Authenticate', 'Bearer realm="'.$this->realm.'"'); $this->response->setStatus(401); - } - } diff --git a/vendor/sabre/http/lib/Auth/Digest.php b/vendor/sabre/http/lib/Auth/Digest.php index 4b3f0746f..dd35a0b74 100644 --- a/vendor/sabre/http/lib/Auth/Digest.php +++ b/vendor/sabre/http/lib/Auth/Digest.php @@ -1,12 +1,14 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP\Auth; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; /** - * HTTP Digest Authentication handler + * HTTP Digest Authentication handler. * * Use this class for easy http digest authentication. * Instructions: @@ -27,10 +29,10 @@ use Sabre\HTTP\ResponseInterface; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Digest extends AbstractAuth { - +class Digest extends AbstractAuth +{ /** - * These constants are used in setQOP(); + * These constants are used in setQOP();. */ const QOP_AUTH = 1; const QOP_AUTHINT = 2; @@ -42,28 +44,24 @@ class Digest extends AbstractAuth { protected $qop = self::QOP_AUTH; /** - * Initializes the object + * Initializes the object. */ - function __construct($realm = 'SabreTooth', RequestInterface $request, ResponseInterface $response) { - + public function __construct(string $realm = 'SabreTooth', RequestInterface $request, ResponseInterface $response) + { $this->nonce = uniqid(); $this->opaque = md5($realm); parent::__construct($realm, $request, $response); - } /** - * Gathers all information from the headers + * Gathers all information from the headers. * * This method needs to be called prior to anything else. - * - * @return void */ - function init() { - + public function init() + { $digest = $this->getDigest(); - $this->digestParts = $this->parseDigest($digest); - + $this->digestParts = $this->parseDigest((string) $digest); } /** @@ -78,115 +76,101 @@ class Digest extends AbstractAuth { * QOP_AUTHINT ensures integrity of the request body, but this is not * supported by most HTTP clients. QOP_AUTHINT also requires the entire * request body to be md5'ed, which can put strains on CPU and memory. - * - * @param int $qop - * @return void */ - function setQOP($qop) { - + public function setQOP(int $qop) + { $this->qop = $qop; - } /** * Validates the user. * * The A1 parameter should be md5($username . ':' . $realm . ':' . $password); - * - * @param string $A1 - * @return bool */ - function validateA1($A1) { - + public function validateA1(string $A1): bool + { $this->A1 = $A1; - return $this->validate(); + return $this->validate(); } /** * Validates authentication through a password. The actual password must be provided here. * It is strongly recommended not store the password in plain-text and use validateA1 instead. - * - * @param string $password - * @return bool */ - function validatePassword($password) { + public function validatePassword(string $password): bool + { + $this->A1 = md5($this->digestParts['username'].':'.$this->realm.':'.$password); - $this->A1 = md5($this->digestParts['username'] . ':' . $this->realm . ':' . $password); return $this->validate(); - } /** - * Returns the username for the request + * Returns the username for the request. + * Returns null if there were none. * - * @return string + * @return string|null */ - function getUsername() { - - return $this->digestParts['username']; - + public function getUsername() + { + return $this->digestParts['username'] ?? null; } /** - * Validates the digest challenge - * - * @return bool + * Validates the digest challenge. */ - protected function validate() { + protected function validate(): bool + { + if (!is_array($this->digestParts)) { + return false; + } - $A2 = $this->request->getMethod() . ':' . $this->digestParts['uri']; + $A2 = $this->request->getMethod().':'.$this->digestParts['uri']; - if ($this->digestParts['qop'] == 'auth-int') { + if ('auth-int' === $this->digestParts['qop']) { // Making sure we support this qop value - if (!($this->qop & self::QOP_AUTHINT)) return false; + if (!($this->qop & self::QOP_AUTHINT)) { + return false; + } // We need to add an md5 of the entire request body to the A2 part of the hash $body = $this->request->getBody($asString = true); $this->request->setBody($body); - $A2 .= ':' . md5($body); - } else { - - // We need to make sure we support this qop value - if (!($this->qop & self::QOP_AUTH)) return false; + $A2 .= ':'.md5($body); + } elseif (!($this->qop & self::QOP_AUTH)) { + return false; } $A2 = md5($A2); $validResponse = md5("{$this->A1}:{$this->digestParts['nonce']}:{$this->digestParts['nc']}:{$this->digestParts['cnonce']}:{$this->digestParts['qop']}:{$A2}"); - return $this->digestParts['response'] == $validResponse; - - + return $this->digestParts['response'] === $validResponse; } /** - * Returns an HTTP 401 header, forcing login + * Returns an HTTP 401 header, forcing login. * * This should be called when username and password are incorrect, or not supplied at all - * - * @return void */ - function requireLogin() { - + public function requireLogin() + { $qop = ''; switch ($this->qop) { - case self::QOP_AUTH : + case self::QOP_AUTH: $qop = 'auth'; break; - case self::QOP_AUTHINT : + case self::QOP_AUTHINT: $qop = 'auth-int'; break; - case self::QOP_AUTH | self::QOP_AUTHINT : + case self::QOP_AUTH | self::QOP_AUTHINT: $qop = 'auth,auth-int'; break; } - $this->response->addHeader('WWW-Authenticate', 'Digest realm="' . $this->realm . '",qop="' . $qop . '",nonce="' . $this->nonce . '",opaque="' . $this->opaque . '"'); + $this->response->addHeader('WWW-Authenticate', 'Digest realm="'.$this->realm.'",qop="'.$qop.'",nonce="'.$this->nonce.'",opaque="'.$this->opaque.'"'); $this->response->setStatus(401); - } - /** * This method returns the full digest string. * @@ -196,23 +180,20 @@ class Digest extends AbstractAuth { * * @return mixed */ - function getDigest() { - + public function getDigest() + { return $this->request->getHeader('Authorization'); - } - /** * Parses the different pieces of the digest string into an array. * * This method returns false if an incomplete digest was supplied * - * @param string $digest - * @return mixed + * @return bool|array */ - protected function parseDigest($digest) { - + protected function parseDigest(string $digest) + { // protect against missing data $needed_parts = ['nonce' => 1, 'nc' => 1, 'cnonce' => 1, 'qop' => 1, 'username' => 1, 'uri' => 1, 'response' => 1]; $data = []; @@ -220,12 +201,10 @@ class Digest extends AbstractAuth { preg_match_all('@(\w+)=(?:(?:")([^"]+)"|([^\s,$]+))@', $digest, $matches, PREG_SET_ORDER); foreach ($matches as $m) { - $data[$m[1]] = $m[2] ? $m[2] : $m[3]; + $data[$m[1]] = $m[2] ?: $m[3]; unset($needed_parts[$m[1]]); } return $needed_parts ? false : $data; - } - } diff --git a/vendor/sabre/http/lib/Client.php b/vendor/sabre/http/lib/Client.php index 0810c4a25..48862e7da 100644 --- a/vendor/sabre/http/lib/Client.php +++ b/vendor/sabre/http/lib/Client.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; use Sabre\Event\EventEmitter; @@ -41,10 +43,10 @@ use Sabre\Uri; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Client extends EventEmitter { - +class Client extends EventEmitter +{ /** - * List of curl settings + * List of curl settings. * * @var array */ @@ -64,53 +66,61 @@ class Client extends EventEmitter { */ protected $maxRedirects = 5; + protected $headerLinesMap = []; + /** * Initializes the client. - * - * @return void */ - function __construct() { + public function __construct() + { + // See https://github.com/sabre-io/http/pull/115#discussion_r241292068 + // Preserve compatibility for sub-classes that implements their own method `parseCurlResult` + $separatedHeaders = __CLASS__ === get_class($this); $this->curlSettings = [ CURLOPT_RETURNTRANSFER => true, - CURLOPT_HEADER => true, - CURLOPT_NOBODY => false, - CURLOPT_USERAGENT => 'sabre-http/' . Version::VERSION . ' (http://sabre.io/)', + CURLOPT_NOBODY => false, + CURLOPT_USERAGENT => 'sabre-http/'.Version::VERSION.' (http://sabre.io/)', ]; + if ($separatedHeaders) { + $this->curlSettings[CURLOPT_HEADERFUNCTION] = [$this, 'receiveCurlHeader']; + } else { + $this->curlSettings[CURLOPT_HEADER] = true; + } + } + + protected function receiveCurlHeader($curlHandle, $headerLine) + { + $this->headerLinesMap[(int) $curlHandle][] = $headerLine; + return strlen($headerLine); } /** * Sends a request to a HTTP server, and returns a response. - * - * @param RequestInterface $request - * @return ResponseInterface */ - function send(RequestInterface $request) { - + public function send(RequestInterface $request): ResponseInterface + { $this->emit('beforeRequest', [$request]); $retryCount = 0; $redirects = 0; do { - $doRedirect = false; $retry = false; try { - $response = $this->doRequest($request); - $code = (int)$response->getStatus(); + $code = $response->getStatus(); // We are doing in-PHP redirects, because curl's // FOLLOW_LOCATION throws errors when PHP is configured with // open_basedir. // // https://github.com/fruux/sabre-http/issues/12 - if (in_array($code, [301, 302, 307, 308]) && $redirects < $this->maxRedirects) { - + if ($redirects < $this->maxRedirects && in_array($code, [301, 302, 307, 308])) { $oldLocation = $request->getUrl(); // Creating a new instance of the request object. @@ -123,20 +133,15 @@ class Client extends EventEmitter { )); $doRedirect = true; - $redirects++; - + ++$redirects; } // This was a HTTP error if ($code >= 400) { - $this->emit('error', [$request, $response, &$retry, $retryCount]); - $this->emit('error:' . $code, [$request, $response, &$retry, $retryCount]); - + $this->emit('error:'.$code, [$request, $response, &$retry, $retryCount]); } - } catch (ClientException $e) { - $this->emit('exception', [$request, $e, &$retry, $retryCount]); // If retry was still set to false, it means no event handler @@ -145,13 +150,11 @@ class Client extends EventEmitter { if (!$retry) { throw $e; } - } if ($retry) { - $retryCount++; + ++$retryCount; } - } while ($retry || $doRedirect); $this->emit('afterRequest', [$request, $response]); @@ -161,7 +164,6 @@ class Client extends EventEmitter { } return $response; - } /** @@ -172,32 +174,23 @@ class Client extends EventEmitter { * * After calling sendAsync, you must therefore occasionally call the poll() * method, or wait(). - * - * @param RequestInterface $request - * @param callable $success - * @param callable $error - * @return void */ - function sendAsync(RequestInterface $request, callable $success = null, callable $error = null) { - + public function sendAsync(RequestInterface $request, callable $success = null, callable $error = null) + { $this->emit('beforeRequest', [$request]); $this->sendAsyncInternal($request, $success, $error); $this->poll(); - } - /** * This method checks if any http requests have gotten results, and if so, * call the appropriate success or error handlers. * * This method will return true if there are still requests waiting to * return, and false if all the work is done. - * - * @return bool */ - function poll() { - + public function poll(): bool + { // nothing to do? if (!$this->curlMultiMap) { return false; @@ -208,10 +201,10 @@ class Client extends EventEmitter { $this->curlMultiHandle, $stillRunning ); - } while ($r === CURLM_CALL_MULTI_PERFORM); + } while (CURLM_CALL_MULTI_PERFORM === $r); + $messagesInQueue = 0; do { - messageQueue: $status = curl_multi_info_read( @@ -219,26 +212,25 @@ class Client extends EventEmitter { $messagesInQueue ); - if ($status && $status['msg'] === CURLMSG_DONE) { - - $resourceId = intval($status['handle']); + if ($status && CURLMSG_DONE === $status['msg']) { + $resourceId = (int) $status['handle']; list( $request, $successCallback, $errorCallback, - $retryCount, - ) = $this->curlMultiMap[$resourceId]; + $retryCount) = $this->curlMultiMap[$resourceId]; unset($this->curlMultiMap[$resourceId]); - $curlResult = $this->parseCurlResult(curl_multi_getcontent($status['handle']), $status['handle']); - $retry = false; - if ($curlResult['status'] === self::STATUS_CURLERROR) { + $curlHandle = $status['handle']; + $curlResult = $this->parseResponse(curl_multi_getcontent($curlHandle), $curlHandle); + $retry = false; + if (self::STATUS_CURLERROR === $curlResult['status']) { $e = new ClientException($curlResult['curl_errmsg'], $curlResult['curl_errno']); $this->emit('exception', [$request, $e, &$retry, $retryCount]); if ($retry) { - $retryCount++; + ++$retryCount; $this->sendAsyncInternal($request, $successCallback, $errorCallback, $retryCount); goto messageQueue; } @@ -248,18 +240,14 @@ class Client extends EventEmitter { if ($errorCallback) { $errorCallback($curlResult); } - - } elseif ($curlResult['status'] === self::STATUS_HTTPERROR) { - + } elseif (self::STATUS_HTTPERROR === $curlResult['status']) { $this->emit('error', [$request, $curlResult['response'], &$retry, $retryCount]); - $this->emit('error:' . $curlResult['http_code'], [$request, $curlResult['response'], &$retry, $retryCount]); + $this->emit('error:'.$curlResult['http_code'], [$request, $curlResult['response'], &$retry, $retryCount]); if ($retry) { - - $retryCount++; + ++$retryCount; $this->sendAsyncInternal($request, $successCallback, $errorCallback, $retryCount); goto messageQueue; - } $curlResult['request'] = $request; @@ -267,37 +255,29 @@ class Client extends EventEmitter { if ($errorCallback) { $errorCallback($curlResult); } - } else { - $this->emit('afterRequest', [$request, $curlResult['response']]); if ($successCallback) { $successCallback($curlResult['response']); } - } } - } while ($messagesInQueue > 0); return count($this->curlMultiMap) > 0; - } /** * Processes every HTTP request in the queue, and waits till they are all * completed. - * - * @return void */ - function wait() { - + public function wait() + { do { curl_multi_select($this->curlMultiHandle); $stillRunning = $this->poll(); } while ($stillRunning); - } /** @@ -309,14 +289,10 @@ class Client extends EventEmitter { * * This only works for the send() method. Throwing exceptions for * sendAsync() is not supported. - * - * @param bool $throwExceptions - * @return void */ - function setThrowExceptions($throwExceptions) { - + public function setThrowExceptions(bool $throwExceptions) + { $this->throwExceptions = $throwExceptions; - } /** @@ -324,40 +300,34 @@ class Client extends EventEmitter { * * These settings will be included in every HTTP request. * - * @param int $name * @param mixed $value - * @return void */ - function addCurlSetting($name, $value) { - + public function addCurlSetting(int $name, $value) + { $this->curlSettings[$name] = $value; - } /** * This method is responsible for performing a single request. - * - * @param RequestInterface $request - * @return ResponseInterface */ - protected function doRequest(RequestInterface $request) { - + protected function doRequest(RequestInterface $request): ResponseInterface + { $settings = $this->createCurlSettingsArray($request); if (!$this->curlHandle) { $this->curlHandle = curl_init(); + } else { + curl_reset($this->curlHandle); } curl_setopt_array($this->curlHandle, $settings); $response = $this->curlExec($this->curlHandle); - $response = $this->parseCurlResult($response, $this->curlHandle); - - if ($response['status'] === self::STATUS_CURLERROR) { + $response = $this->parseResponse($response, $this->curlHandle); + if (self::STATUS_CURLERROR === $response['status']) { throw new ClientException($response['curl_errmsg'], $response['curl_errno']); } return $response['response']; - } /** @@ -389,28 +359,21 @@ class Client extends EventEmitter { /** * Turns a RequestInterface object into an array with settings that can be - * fed to curl_setopt - * - * @param RequestInterface $request - * @return array + * fed to curl_setopt. */ - protected function createCurlSettingsArray(RequestInterface $request) { - + protected function createCurlSettingsArray(RequestInterface $request): array + { $settings = $this->curlSettings; switch ($request->getMethod()) { - case 'HEAD' : + case 'HEAD': $settings[CURLOPT_NOBODY] = true; $settings[CURLOPT_CUSTOMREQUEST] = 'HEAD'; - $settings[CURLOPT_POSTFIELDS] = ''; - $settings[CURLOPT_PUT] = false; break; - case 'GET' : + case 'GET': $settings[CURLOPT_CUSTOMREQUEST] = 'GET'; - $settings[CURLOPT_POSTFIELDS] = ''; - $settings[CURLOPT_PUT] = false; break; - default : + default: $body = $request->getBody(); if (is_resource($body)) { // This needs to be set to PUT, regardless of the actual @@ -422,20 +385,17 @@ class Client extends EventEmitter { // For security we cast this to a string. If somehow an array could // be passed here, it would be possible for an attacker to use @ to // post local files. - $settings[CURLOPT_POSTFIELDS] = (string)$body; + $settings[CURLOPT_POSTFIELDS] = (string) $body; } $settings[CURLOPT_CUSTOMREQUEST] = $request->getMethod(); break; - } $nHeaders = []; foreach ($request->getHeaders() as $key => $values) { - foreach ($values as $value) { - $nHeaders[] = $key . ': ' . $value; + $nHeaders[] = $key.': '.$value; } - } $settings[CURLOPT_HTTPHEADER] = $nHeaders; $settings[CURLOPT_URL] = $request->getUrl(); @@ -449,13 +409,32 @@ class Client extends EventEmitter { } return $settings; - } const STATUS_SUCCESS = 0; const STATUS_CURLERROR = 1; const STATUS_HTTPERROR = 2; + private function parseResponse(string $response, $curlHandle): array + { + $settings = $this->curlSettings; + $separatedHeaders = isset($settings[CURLOPT_HEADERFUNCTION]) && (bool) $settings[CURLOPT_HEADERFUNCTION]; + + if ($separatedHeaders) { + $resourceId = (int) $curlHandle; + if (isset($this->headerLinesMap[$resourceId])) { + $headers = $this->headerLinesMap[$resourceId]; + } else { + $headers = []; + } + $response = $this->parseCurlResponse($headers, $response, $curlHandle); + } else { + $response = $this->parseCurlResult($response, $curlHandle); + } + + return $response; + } + /** * Parses the result of a curl call in a format that's a bit more * convenient to work with. @@ -471,12 +450,67 @@ class Client extends EventEmitter { * * http_code - HTTP status code, as an int. Only set if Only set if * status is STATUS_SUCCESS, or STATUS_HTTPERROR * - * @param string $response + * @param array $headerLines + * @param string $body * @param resource $curlHandle - * @return Response */ - protected function parseCurlResult($response, $curlHandle) { + protected function parseCurlResponse(array $headerLines, string $body, $curlHandle): array + { + list( + $curlInfo, + $curlErrNo, + $curlErrMsg + ) = $this->curlStuff($curlHandle); + if ($curlErrNo) { + return [ + 'status' => self::STATUS_CURLERROR, + 'curl_errno' => $curlErrNo, + 'curl_errmsg' => $curlErrMsg, + ]; + } + + $response = new Response(); + $response->setStatus($curlInfo['http_code']); + $response->setBody($body); + + foreach ($headerLines as $header) { + $parts = explode(':', $header, 2); + if (2 === count($parts)) { + $response->addHeader(trim($parts[0]), trim($parts[1])); + } + } + + $httpCode = $response->getStatus(); + + return [ + 'status' => $httpCode >= 400 ? self::STATUS_HTTPERROR : self::STATUS_SUCCESS, + 'response' => $response, + 'http_code' => $httpCode, + ]; + } + + /** + * Parses the result of a curl call in a format that's a bit more + * convenient to work with. + * + * The method returns an array with the following elements: + * * status - one of the 3 STATUS constants. + * * curl_errno - A curl error number. Only set if status is + * STATUS_CURLERROR. + * * curl_errmsg - A current error message. Only set if status is + * STATUS_CURLERROR. + * * response - Response object. Only set if status is STATUS_SUCCESS, or + * STATUS_HTTPERROR. + * * http_code - HTTP status code, as an int. Only set if Only set if + * status is STATUS_SUCCESS, or STATUS_HTTPERROR + * + * @deprecated Use parseCurlResponse instead + * + * @param resource $curlHandle + */ + protected function parseCurlResult(string $response, $curlHandle): array + { list( $curlInfo, $curlErrNo, @@ -485,8 +519,8 @@ class Client extends EventEmitter { if ($curlErrNo) { return [ - 'status' => self::STATUS_CURLERROR, - 'curl_errno' => $curlErrNo, + 'status' => self::STATUS_CURLERROR, + 'curl_errno' => $curlErrNo, 'curl_errmsg' => $curlErrMsg, ]; } @@ -495,7 +529,7 @@ class Client extends EventEmitter { // In the case of 204 No Content, strlen($response) == $curlInfo['header_size]. // This will cause substr($response, $curlInfo['header_size']) return FALSE instead of NULL // An exception will be thrown when calling getBodyAsString then - $responseBody = substr($response, $curlInfo['header_size']) ?: null; + $responseBody = substr($response, $curlInfo['header_size']) ?: ''; unset($response); @@ -510,26 +544,7 @@ class Client extends EventEmitter { // Splitting headers $headerBlob = explode("\r\n", $headerBlob); - $response = new Response(); - $response->setStatus($curlInfo['http_code']); - - foreach ($headerBlob as $header) { - $parts = explode(':', $header, 2); - if (count($parts) == 2) { - $response->addHeader(trim($parts[0]), trim($parts[1])); - } - } - - $response->setBody($responseBody); - - $httpCode = intval($response->getStatus()); - - return [ - 'status' => $httpCode >= 400 ? self::STATUS_HTTPERROR : self::STATUS_SUCCESS, - 'response' => $response, - 'http_code' => $httpCode, - ]; - + return $this->parseCurlResponse($headerBlob, $responseBody, $curlHandle); } /** @@ -537,14 +552,9 @@ class Client extends EventEmitter { * * We keep this in a separate method, so we can call it without triggering * the beforeRequest event and don't do the poll(). - * - * @param RequestInterface $request - * @param callable $success - * @param callable $error - * @param int $retryCount */ - protected function sendAsyncInternal(RequestInterface $request, callable $success, callable $error, $retryCount = 0) { - + protected function sendAsyncInternal(RequestInterface $request, callable $success, callable $error, int $retryCount = 0) + { if (!$this->curlMultiHandle) { $this->curlMultiHandle = curl_multi_init(); } @@ -554,29 +564,36 @@ class Client extends EventEmitter { $this->createCurlSettingsArray($request) ); curl_multi_add_handle($this->curlMultiHandle, $curl); - $this->curlMultiMap[intval($curl)] = [ + + $resourceId = (int) $curl; + $this->headerLinesMap[$resourceId] = []; + $this->curlMultiMap[$resourceId] = [ $request, $success, $error, - $retryCount + $retryCount, ]; - } // @codeCoverageIgnoreStart /** - * Calls curl_exec + * Calls curl_exec. * * This method exists so it can easily be overridden and mocked. * * @param resource $curlHandle - * @return string */ - protected function curlExec($curlHandle) { + protected function curlExec($curlHandle): string + { + $this->headerLinesMap[(int) $curlHandle] = []; - return curl_exec($curlHandle); + $result = curl_exec($curlHandle); + if (false === $result) { + $result = ''; + } + return $result; } /** @@ -585,17 +602,15 @@ class Client extends EventEmitter { * This method exists so it can easily be overridden and mocked. * * @param resource $curlHandle - * @return array */ - protected function curlStuff($curlHandle) { - + protected function curlStuff($curlHandle): array + { return [ curl_getinfo($curlHandle), curl_errno($curlHandle), curl_error($curlHandle), ]; - } - // @codeCoverageIgnoreEnd + // @codeCoverageIgnoreEnd } diff --git a/vendor/sabre/http/lib/ClientException.php b/vendor/sabre/http/lib/ClientException.php index 69631f44e..2ca4a28e0 100644 --- a/vendor/sabre/http/lib/ClientException.php +++ b/vendor/sabre/http/lib/ClientException.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -10,6 +12,6 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class ClientException extends \Exception { - +class ClientException extends \Exception +{ } diff --git a/vendor/sabre/http/lib/ClientHttpException.php b/vendor/sabre/http/lib/ClientHttpException.php index 2923ef3b5..116ca1f79 100644 --- a/vendor/sabre/http/lib/ClientHttpException.php +++ b/vendor/sabre/http/lib/ClientHttpException.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -12,47 +14,37 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class ClientHttpException extends \Exception implements HttpException { - +class ClientHttpException extends \Exception implements HttpException +{ /** - * Response object + * Response object. * * @var ResponseInterface */ protected $response; /** - * Constructor - * - * @param ResponseInterface $response + * Constructor. */ - function __construct(ResponseInterface $response) { - + public function __construct(ResponseInterface $response) + { $this->response = $response; parent::__construct($response->getStatusText(), $response->getStatus()); - } /** * The http status code for the error. - * - * @return int */ - function getHttpStatus() { - + public function getHttpStatus(): int + { return $this->response->getStatus(); - } /** * Returns the full response object. - * - * @return ResponseInterface */ - function getResponse() { - + public function getResponse(): ResponseInterface + { return $this->response; - } - } diff --git a/vendor/sabre/http/lib/HttpException.php b/vendor/sabre/http/lib/HttpException.php index 1303dec97..80b3ae665 100644 --- a/vendor/sabre/http/lib/HttpException.php +++ b/vendor/sabre/http/lib/HttpException.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -15,8 +17,8 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface HttpException { - +interface HttpException +{ /** * The http status code for the error. * @@ -25,6 +27,5 @@ interface HttpException { * * @return string|null */ - function getHttpStatus(); - + public function getHttpStatus(); } diff --git a/vendor/sabre/http/lib/Message.php b/vendor/sabre/http/lib/Message.php index 45bd18398..fc34f8d7f 100644 --- a/vendor/sabre/http/lib/Message.php +++ b/vendor/sabre/http/lib/Message.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -11,26 +13,26 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -abstract class Message implements MessageInterface { - +abstract class Message implements MessageInterface +{ /** - * Request body + * Request body. * - * This should be a stream resource + * This should be a stream resource, string or a callback writing the body to php://output * - * @var resource + * @var resource|string|callable */ protected $body; /** - * Contains the list of HTTP headers + * Contains the list of HTTP headers. * * @var array */ protected $headers = []; /** - * HTTP message version (1.0 or 1.1) + * HTTP message version (1.0, 1.1 or 2.0). * * @var string */ @@ -44,17 +46,21 @@ abstract class Message implements MessageInterface { * * @return resource */ - function getBodyAsStream() { - + public function getBodyAsStream() + { $body = $this->getBody(); - if (is_string($body) || is_null($body)) { + if (is_callable($this->body)) { + $body = $this->getBodyAsString(); + } + if (is_string($body) || null === $body) { $stream = fopen('php://temp', 'r+'); - fwrite($stream, $body); + fwrite($stream, (string) $body); rewind($stream); + return $stream; } - return $body; + return $body; } /** @@ -62,77 +68,76 @@ abstract class Message implements MessageInterface { * * Note that because the underlying data may be based on a stream, this * method could only work correctly the first time. - * - * @return string */ - function getBodyAsString() { - + public function getBodyAsString(): string + { $body = $this->getBody(); if (is_string($body)) { return $body; } - if (is_null($body)) { + if (null === $body) { return ''; } + if (is_callable($body)) { + ob_start(); + $body(); + + return ob_get_clean(); + } + /** + * @var string|int|null + */ $contentLength = $this->getHeader('Content-Length'); if (is_int($contentLength) || ctype_digit($contentLength)) { - return stream_get_contents($body, $contentLength); - } else { - return stream_get_contents($body); + return stream_get_contents($body, (int) $contentLength); } + + return stream_get_contents($body); } /** * Returns the message body, as it's internal representation. * - * This could be either a string or a stream. + * This could be either a string, a stream or a callback writing the body to php://output. * - * @return resource|string + * @return resource|string|callable */ - function getBody() { - + public function getBody() + { return $this->body; - } /** - * Replaces the body resource with a new stream or string. + * Replaces the body resource with a new stream, string or a callback writing the body to php://output. * - * @param resource|string $body + * @param resource|string|callable $body */ - function setBody($body) { - + public function setBody($body) + { $this->body = $body; - } /** * Returns all the HTTP headers as an array. * * Every header is returned as an array, with one or more values. - * - * @return array */ - function getHeaders() { - + public function getHeaders(): array + { $result = []; foreach ($this->headers as $headerInfo) { $result[$headerInfo[0]] = $headerInfo[1]; } - return $result; + return $result; } /** * Will return true or false, depending on if a HTTP header exists. - * - * @param string $name - * @return bool */ - function hasHeader($name) { - + public function hasHeader(string $name): bool + { return isset($this->headers[strtolower($name)]); - } /** @@ -148,18 +153,17 @@ abstract class Message implements MessageInterface { * `Set-Cookie` cannot be logically combined with a comma. In those cases * you *should* use getHeaderAsArray(). * - * @param string $name * @return string|null */ - function getHeader($name) { - + public function getHeader(string $name) + { $name = strtolower($name); if (isset($this->headers[$name])) { return implode(',', $this->headers[$name][1]); } - return null; + return null; } /** @@ -170,11 +174,10 @@ abstract class Message implements MessageInterface { * * If the header did not exists, this method will return an empty array. * - * @param string $name * @return string[] */ - function getHeaderAsArray($name) { - + public function getHeaderAsArray(string $name): array + { $name = strtolower($name); if (isset($this->headers[$name])) { @@ -182,7 +185,6 @@ abstract class Message implements MessageInterface { } return []; - } /** @@ -192,14 +194,11 @@ abstract class Message implements MessageInterface { * * If the header already existed, it will be overwritten. * - * @param string $name * @param string|string[] $value - * @return void */ - function setHeader($name, $value) { - - $this->headers[strtolower($name)] = [$name, (array)$value]; - + public function setHeader(string $name, $value) + { + $this->headers[strtolower($name)] = [$name, (array) $value]; } /** @@ -209,16 +208,12 @@ abstract class Message implements MessageInterface { * should be specified as either a string or an array. * * Any header that already existed will be overwritten. - * - * @param array $headers - * @return void */ - function setHeaders(array $headers) { - + public function setHeaders(array $headers) + { foreach ($headers as $name => $value) { $this->setHeader($name, $value); } - } /** @@ -228,77 +223,62 @@ abstract class Message implements MessageInterface { * another value. Individual values can be retrieved with * getHeadersAsArray. * - * @param string $name - * @param string $value - * @return void + * @param string|string[] $value */ - function addHeader($name, $value) { - + public function addHeader(string $name, $value) + { $lName = strtolower($name); if (isset($this->headers[$lName])) { $this->headers[$lName][1] = array_merge( $this->headers[$lName][1], - (array)$value + (array) $value ); } else { $this->headers[$lName] = [ $name, - (array)$value + (array) $value, ]; } - } /** * Adds a new set of HTTP headers. * * Any existing headers will not be overwritten. - * - * @param array $headers - * @return void */ - function addHeaders(array $headers) { - + public function addHeaders(array $headers) + { foreach ($headers as $name => $value) { $this->addHeader($name, $value); } - } - /** * Removes a HTTP header. * * The specified header name must be treated as case-insensitive. * This method should return true if the header was successfully deleted, * and false if the header did not exist. - * - * @param string $name - * @return bool */ - function removeHeader($name) { - + public function removeHeader(string $name): bool + { $name = strtolower($name); if (!isset($this->headers[$name])) { return false; } unset($this->headers[$name]); - return true; + return true; } /** * Sets the HTTP version. * - * Should be 1.0 or 1.1. - * - * @param string $version - * @return void + * Should be 1.0, 1.1 or 2.0. */ - function setHttpVersion($version) { - + public function setHttpVersion(string $version) + { $this->httpVersion = $version; - } /** @@ -306,9 +286,8 @@ abstract class Message implements MessageInterface { * * @return string */ - function getHttpVersion() { - + public function getHttpVersion(): string + { return $this->httpVersion; - } } diff --git a/vendor/sabre/http/lib/MessageDecoratorTrait.php b/vendor/sabre/http/lib/MessageDecoratorTrait.php index 1cb32da22..d5504ac78 100644 --- a/vendor/sabre/http/lib/MessageDecoratorTrait.php +++ b/vendor/sabre/http/lib/MessageDecoratorTrait.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -13,8 +15,8 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -trait MessageDecoratorTrait { - +trait MessageDecoratorTrait +{ /** * The inner request object. * @@ -32,10 +34,9 @@ trait MessageDecoratorTrait { * * @return resource */ - function getBodyAsStream() { - + public function getBodyAsStream() + { return $this->inner->getBodyAsStream(); - } /** @@ -43,13 +44,10 @@ trait MessageDecoratorTrait { * * Note that because the underlying data may be based on a stream, this * method could only work correctly the first time. - * - * @return string */ - function getBodyAsString() { - + public function getBodyAsString(): string + { return $this->inner->getBodyAsString(); - } /** @@ -59,47 +57,37 @@ trait MessageDecoratorTrait { * * @return resource|string */ - function getBody() { - + public function getBody() + { return $this->inner->getBody(); - } /** * Updates the body resource with a new stream. * - * @param resource $body - * @return void + * @param resource|string|callable $body */ - function setBody($body) { - + public function setBody($body) + { $this->inner->setBody($body); - } /** * Returns all the HTTP headers as an array. * * Every header is returned as an array, with one or more values. - * - * @return array */ - function getHeaders() { - + public function getHeaders(): array + { return $this->inner->getHeaders(); - } /** * Will return true or false, depending on if a HTTP header exists. - * - * @param string $name - * @return bool */ - function hasHeader($name) { - + public function hasHeader(string $name): bool + { return $this->inner->hasHeader($name); - } /** @@ -115,13 +103,11 @@ trait MessageDecoratorTrait { * `Set-Cookie` cannot be logically combined with a comma. In those cases * you *should* use getHeaderAsArray(). * - * @param string $name * @return string|null */ - function getHeader($name) { - + public function getHeader(string $name) + { return $this->inner->getHeader($name); - } /** @@ -131,14 +117,10 @@ trait MessageDecoratorTrait { * item will appear in the array. * * If the header did not exists, this method will return an empty array. - * - * @param string $name - * @return string[] */ - function getHeaderAsArray($name) { - + public function getHeaderAsArray(string $name): array + { return $this->inner->getHeaderAsArray($name); - } /** @@ -148,14 +130,11 @@ trait MessageDecoratorTrait { * * If the header already existed, it will be overwritten. * - * @param string $name * @param string|string[] $value - * @return void */ - function setHeader($name, $value) { - + public function setHeader(string $name, $value) + { $this->inner->setHeader($name, $value); - } /** @@ -165,14 +144,10 @@ trait MessageDecoratorTrait { * should be specified as either a string or an array. * * Any header that already existed will be overwritten. - * - * @param array $headers - * @return void */ - function setHeaders(array $headers) { - + public function setHeaders(array $headers) + { $this->inner->setHeaders($headers); - } /** @@ -182,31 +157,23 @@ trait MessageDecoratorTrait { * another value. Individual values can be retrieved with * getHeadersAsArray. * - * @param string $name - * @param string $value - * @return void + * @param string|string[] $value */ - function addHeader($name, $value) { - + public function addHeader(string $name, $value) + { $this->inner->addHeader($name, $value); - } /** * Adds a new set of HTTP headers. * * Any existing headers will not be overwritten. - * - * @param array $headers - * @return void */ - function addHeaders(array $headers) { - + public function addHeaders(array $headers) + { $this->inner->addHeaders($headers); - } - /** * Removes a HTTP header. * @@ -214,38 +181,28 @@ trait MessageDecoratorTrait { * This method should return true if the header was successfully deleted, * and false if the header did not exist. * - * @param string $name * @return bool */ - function removeHeader($name) { - + public function removeHeader(string $name): bool + { return $this->inner->removeHeader($name); - } /** * Sets the HTTP version. * - * Should be 1.0 or 1.1. - * - * @param string $version - * @return void + * Should be 1.0, 1.1 or 2.0. */ - function setHttpVersion($version) { - + public function setHttpVersion(string $version) + { $this->inner->setHttpVersion($version); - } /** * Returns the HTTP version. - * - * @return string */ - function getHttpVersion() { - + public function getHttpVersion(): string + { return $this->inner->getHttpVersion(); - } - } diff --git a/vendor/sabre/http/lib/MessageInterface.php b/vendor/sabre/http/lib/MessageInterface.php index df55beb2f..8070845d9 100644 --- a/vendor/sabre/http/lib/MessageInterface.php +++ b/vendor/sabre/http/lib/MessageInterface.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -10,8 +12,8 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface MessageInterface { - +interface MessageInterface +{ /** * Returns the body as a readable stream resource. * @@ -20,7 +22,7 @@ interface MessageInterface { * * @return resource */ - function getBodyAsStream(); + public function getBodyAsStream(); /** * Returns the body as a string. @@ -30,41 +32,35 @@ interface MessageInterface { * * @return string */ - function getBodyAsString(); + public function getBodyAsString(): string; /** * Returns the message body, as it's internal representation. * - * This could be either a string or a stream. + * This could be either a string, a stream or a callback writing the body to php://output * - * @return resource|string + * @return resource|string|callable */ - function getBody(); + public function getBody(); /** * Updates the body resource with a new stream. * - * @param resource|string $body - * @return void + * @param resource|string|callable $body */ - function setBody($body); + public function setBody($body); /** * Returns all the HTTP headers as an array. * * Every header is returned as an array, with one or more values. - * - * @return array */ - function getHeaders(); + public function getHeaders(): array; /** * Will return true or false, depending on if a HTTP header exists. - * - * @param string $name - * @return bool */ - function hasHeader($name); + public function hasHeader(string $name): bool; /** * Returns a specific HTTP header, based on it's name. @@ -79,10 +75,9 @@ interface MessageInterface { * `Set-Cookie` cannot be logically combined with a comma. In those cases * you *should* use getHeaderAsArray(). * - * @param string $name * @return string|null */ - function getHeader($name); + public function getHeader(string $name); /** * Returns a HTTP header as an array. @@ -92,10 +87,9 @@ interface MessageInterface { * * If the header did not exists, this method will return an empty array. * - * @param string $name * @return string[] */ - function getHeaderAsArray($name); + public function getHeaderAsArray(string $name): array; /** * Updates a HTTP header. @@ -104,11 +98,9 @@ interface MessageInterface { * * If the header already existed, it will be overwritten. * - * @param string $name * @param string|string[] $value - * @return void */ - function setHeader($name, $value); + public function setHeader(string $name, $value); /** * Sets a new set of HTTP headers. @@ -117,11 +109,8 @@ interface MessageInterface { * should be specified as either a string or an array. * * Any header that already existed will be overwritten. - * - * @param array $headers - * @return void */ - function setHeaders(array $headers); + public function setHeaders(array $headers); /** * Adds a HTTP header. @@ -130,21 +119,16 @@ interface MessageInterface { * another value. Individual values can be retrieved with * getHeadersAsArray. * - * @param string $name - * @param string $value - * @return void + * @param string|string[] $value */ - function addHeader($name, $value); + public function addHeader(string $name, $value); /** * Adds a new set of HTTP headers. * * Any existing headers will not be overwritten. - * - * @param array $headers - * @return void */ - function addHeaders(array $headers); + public function addHeaders(array $headers); /** * Removes a HTTP header. @@ -152,27 +136,18 @@ interface MessageInterface { * The specified header name must be treated as case-insenstive. * This method should return true if the header was successfully deleted, * and false if the header did not exist. - * - * @param string $name - * @return bool */ - function removeHeader($name); + public function removeHeader(string $name): bool; /** * Sets the HTTP version. * - * Should be 1.0 or 1.1. - * - * @param string $version - * @return void + * Should be 1.0, 1.1 or 2.0. */ - function setHttpVersion($version); + public function setHttpVersion(string $version); /** * Returns the HTTP version. - * - * @return string */ - function getHttpVersion(); - + public function getHttpVersion(): string; } diff --git a/vendor/sabre/http/lib/Request.php b/vendor/sabre/http/lib/Request.php index dfa3d5b48..496629a5b 100644 --- a/vendor/sabre/http/lib/Request.php +++ b/vendor/sabre/http/lib/Request.php @@ -1,8 +1,10 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; -use InvalidArgumentException; +use LogicException; use Sabre\Uri; /** @@ -15,132 +17,111 @@ use Sabre\Uri; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Request extends Message implements RequestInterface { - +class Request extends Message implements RequestInterface +{ /** - * HTTP Method + * HTTP Method. * * @var string */ protected $method; /** - * Request Url + * Request Url. * * @var string */ protected $url; /** - * Creates the request object + * Creates the request object. * - * @param string $method - * @param string $url - * @param array $headers - * @param resource $body + * @param resource|callable|string $body */ - function __construct($method = null, $url = null, array $headers = null, $body = null) { - - if (is_array($method)) { - throw new InvalidArgumentException('The first argument for this constructor should be a string or null, not an array. Did you upgrade from sabre/http 1.0 to 2.0?'); - } - if (!is_null($method)) $this->setMethod($method); - if (!is_null($url)) $this->setUrl($url); - if (!is_null($headers)) $this->setHeaders($headers); - if (!is_null($body)) $this->setBody($body); - + public function __construct(string $method, string $url, array $headers = [], $body = null) + { + $this->setMethod($method); + $this->setUrl($url); + $this->setHeaders($headers); + $this->setBody($body); } /** - * Returns the current HTTP method - * - * @return string + * Returns the current HTTP method. */ - function getMethod() { - + public function getMethod(): string + { return $this->method; - } /** - * Sets the HTTP method - * - * @param string $method - * @return void + * Sets the HTTP method. */ - function setMethod($method) { - + public function setMethod(string $method) + { $this->method = $method; - } /** * Returns the request url. - * - * @return string */ - function getUrl() { - + public function getUrl(): string + { return $this->url; - } /** * Sets the request url. - * - * @param string $url - * @return void */ - function setUrl($url) { - + public function setUrl(string $url) + { $this->url = $url; - } /** * Returns the list of query parameters. * * This is equivalent to PHP's $_GET superglobal. - * - * @return array */ - function getQueryParameters() { - + public function getQueryParameters(): array + { $url = $this->getUrl(); - if (($index = strpos($url, '?')) === false) { + if (false === ($index = strpos($url, '?'))) { return []; - } else { - parse_str(substr($url, $index + 1), $queryParams); - return $queryParams; } + parse_str(substr($url, $index + 1), $queryParams); + + return $queryParams; } + protected $absoluteUrl; + /** * Sets the absolute url. - * - * @param string $url - * @return void */ - function setAbsoluteUrl($url) { - + public function setAbsoluteUrl(string $url) + { $this->absoluteUrl = $url; - } /** * Returns the absolute url. - * - * @return string */ - function getAbsoluteUrl() { + public function getAbsoluteUrl(): string + { + if (!$this->absoluteUrl) { + // Guessing we're a http endpoint. + $this->absoluteUrl = 'http://'. + ($this->getHeader('Host') ?? 'localhost'). + $this->getUrl(); + } return $this->absoluteUrl; - } /** - * Base url + * Base url. * * @var string */ @@ -150,25 +131,18 @@ class Request extends Message implements RequestInterface { * Sets a base url. * * This url is used for relative path calculations. - * - * @param string $url - * @return void */ - function setBaseUrl($url) { - + public function setBaseUrl(string $url) + { $this->baseUrl = $url; - } /** * Returns the current base url. - * - * @return string */ - function getBaseUrl() { - + public function getBaseUrl(): string + { return $this->baseUrl; - } /** @@ -185,33 +159,29 @@ class Request extends Message implements RequestInterface { * ISO-8859-1, it will convert it to UTF-8. * * If the path is outside of the base url, a LogicException will be thrown. - * - * @return string */ - function getPath() { - + public function getPath(): string + { // Removing duplicated slashes. $uri = str_replace('//', '/', $this->getUrl()); $uri = Uri\normalize($uri); $baseUri = Uri\normalize($this->getBaseUrl()); - if (strpos($uri, $baseUri) === 0) { - + if (0 === strpos($uri, $baseUri)) { // We're not interested in the query part (everything after the ?). list($uri) = explode('?', $uri); - return trim(URLUtil::decodePath(substr($uri, strlen($baseUri))), '/'); + return trim(decodePath(substr($uri, strlen($baseUri))), '/'); } - // A special case, if the baseUri was accessed without a trailing - // slash, we'll accept it as well. - elseif ($uri . '/' === $baseUri) { + if ($uri.'/' === $baseUri) { return ''; - } + // A special case, if the baseUri was accessed without a trailing + // slash, we'll accept it as well. - throw new \LogicException('Requested uri (' . $this->getUrl() . ') is out of base uri (' . $this->getBaseUrl() . ')'); + throw new \LogicException('Requested uri ('.$this->getUrl().') is out of base uri ('.$this->getBaseUrl().')'); } /** @@ -228,27 +198,20 @@ class Request extends Message implements RequestInterface { * * This would not have been needed, if POST data was accessible as * php://input, but unfortunately we need to special case it. - * - * @param array $postData - * @return void */ - function setPostData(array $postData) { - + public function setPostData(array $postData) + { $this->postData = $postData; - } /** * Returns the POST data. * * This is equivalent to PHP's $_POST superglobal. - * - * @return array */ - function getPostData() { - + public function getPostData(): array + { return $this->postData; - } /** @@ -263,54 +226,42 @@ class Request extends Message implements RequestInterface { * * If the value does not exist in the array, null is returned. * - * @param string $valueName * @return string|null */ - function getRawServerValue($valueName) { - - if (isset($this->rawServerData[$valueName])) { - return $this->rawServerData[$valueName]; - } - + public function getRawServerValue(string $valueName) + { + return $this->rawServerData[$valueName] ?? null; } /** * Sets the _SERVER array. - * - * @param array $data - * @return void */ - function setRawServerData(array $data) { - + public function setRawServerData(array $data) + { $this->rawServerData = $data; - } /** * Serializes the request object as a string. * * This is useful for debugging purposes. - * - * @return string */ - function __toString() { - - $out = $this->getMethod() . ' ' . $this->getUrl() . ' HTTP/' . $this->getHTTPVersion() . "\r\n"; + public function __toString(): string + { + $out = $this->getMethod().' '.$this->getUrl().' HTTP/'.$this->getHttpVersion()."\r\n"; foreach ($this->getHeaders() as $key => $value) { foreach ($value as $v) { - if ($key === 'Authorization') { + if ('Authorization' === $key) { list($v) = explode(' ', $v, 2); $v .= ' REDACTED'; } - $out .= $key . ": " . $v . "\r\n"; + $out .= $key.': '.$v."\r\n"; } } $out .= "\r\n"; $out .= $this->getBodyAsString(); return $out; - } - } diff --git a/vendor/sabre/http/lib/RequestDecorator.php b/vendor/sabre/http/lib/RequestDecorator.php index 7ee3f6fc8..0ad24925f 100644 --- a/vendor/sabre/http/lib/RequestDecorator.php +++ b/vendor/sabre/http/lib/RequestDecorator.php @@ -1,9 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** - * Request Decorator + * Request Decorator. * * This helper class allows you to easily create decorators for the Request * object. @@ -12,99 +14,72 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class RequestDecorator implements RequestInterface { - +class RequestDecorator implements RequestInterface +{ use MessageDecoratorTrait; /** * Constructor. - * - * @param RequestInterface $inner */ - function __construct(RequestInterface $inner) { - + public function __construct(RequestInterface $inner) + { $this->inner = $inner; - } /** - * Returns the current HTTP method - * - * @return string + * Returns the current HTTP method. */ - function getMethod() { - + public function getMethod(): string + { return $this->inner->getMethod(); - } /** - * Sets the HTTP method - * - * @param string $method - * @return void + * Sets the HTTP method. */ - function setMethod($method) { - + public function setMethod(string $method) + { $this->inner->setMethod($method); - } /** * Returns the request url. - * - * @return string */ - function getUrl() { - + public function getUrl(): string + { return $this->inner->getUrl(); - } /** * Sets the request url. - * - * @param string $url - * @return void */ - function setUrl($url) { - + public function setUrl(string $url) + { $this->inner->setUrl($url); - } /** * Returns the absolute url. - * - * @return string */ - function getAbsoluteUrl() { - + public function getAbsoluteUrl(): string + { return $this->inner->getAbsoluteUrl(); - } /** * Sets the absolute url. - * - * @param string $url - * @return void */ - function setAbsoluteUrl($url) { - + public function setAbsoluteUrl(string $url) + { $this->inner->setAbsoluteUrl($url); - } /** * Returns the current base url. - * - * @return string */ - function getBaseUrl() { - + public function getBaseUrl(): string + { return $this->inner->getBaseUrl(); - } /** @@ -113,14 +88,10 @@ class RequestDecorator implements RequestInterface { * This url is used for relative path calculations. * * The base url should default to / - * - * @param string $url - * @return void */ - function setBaseUrl($url) { - + public function setBaseUrl(string $url) + { $this->inner->setBaseUrl($url); - } /** @@ -137,39 +108,30 @@ class RequestDecorator implements RequestInterface { * ISO-8859-1, it will convert it to UTF-8. * * If the path is outside of the base url, a LogicException will be thrown. - * - * @return string */ - function getPath() { - + public function getPath(): string + { return $this->inner->getPath(); - } /** * Returns the list of query parameters. * * This is equivalent to PHP's $_GET superglobal. - * - * @return array */ - function getQueryParameters() { - + public function getQueryParameters(): array + { return $this->inner->getQueryParameters(); - } /** * Returns the POST data. * * This is equivalent to PHP's $_POST superglobal. - * - * @return array */ - function getPostData() { - + public function getPostData(): array + { return $this->inner->getPostData(); - } /** @@ -179,53 +141,39 @@ class RequestDecorator implements RequestInterface { * * This would not have been needed, if POST data was accessible as * php://input, but unfortunately we need to special case it. - * - * @param array $postData - * @return void */ - function setPostData(array $postData) { - + public function setPostData(array $postData) + { $this->inner->setPostData($postData); - } - /** * Returns an item from the _SERVER array. * * If the value does not exist in the array, null is returned. * - * @param string $valueName * @return string|null */ - function getRawServerValue($valueName) { - + public function getRawServerValue(string $valueName) + { return $this->inner->getRawServerValue($valueName); - } /** * Sets the _SERVER array. - * - * @param array $data - * @return void */ - function setRawServerData(array $data) { - + public function setRawServerData(array $data) + { $this->inner->setRawServerData($data); - } /** * Serializes the request object as a string. * * This is useful for debugging purposes. - * - * @return string */ - function __toString() { - + public function __toString(): string + { return $this->inner->__toString(); - } } diff --git a/vendor/sabre/http/lib/RequestInterface.php b/vendor/sabre/http/lib/RequestInterface.php index 63d9cbb51..83fa85bdc 100644 --- a/vendor/sabre/http/lib/RequestInterface.php +++ b/vendor/sabre/http/lib/RequestInterface.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -9,59 +11,42 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface RequestInterface extends MessageInterface { - +interface RequestInterface extends MessageInterface +{ /** - * Returns the current HTTP method - * - * @return string + * Returns the current HTTP method. */ - function getMethod(); + public function getMethod(): string; /** - * Sets the HTTP method - * - * @param string $method - * @return void + * Sets the HTTP method. */ - function setMethod($method); + public function setMethod(string $method); /** * Returns the request url. - * - * @return string */ - function getUrl(); + public function getUrl(): string; /** * Sets the request url. - * - * @param string $url - * @return void */ - function setUrl($url); + public function setUrl(string $url); /** * Returns the absolute url. - * - * @return string */ - function getAbsoluteUrl(); + public function getAbsoluteUrl(): string; /** * Sets the absolute url. - * - * @param string $url - * @return void */ - function setAbsoluteUrl($url); + public function setAbsoluteUrl(string $url); /** * Returns the current base url. - * - * @return string */ - function getBaseUrl(); + public function getBaseUrl(): string; /** * Sets a base url. @@ -69,11 +54,8 @@ interface RequestInterface extends MessageInterface { * This url is used for relative path calculations. * * The base url should default to / - * - * @param string $url - * @return void */ - function setBaseUrl($url); + public function setBaseUrl(string $url); /** * Returns the relative path. @@ -89,28 +71,22 @@ interface RequestInterface extends MessageInterface { * ISO-8859-1, it will convert it to UTF-8. * * If the path is outside of the base url, a LogicException will be thrown. - * - * @return string */ - function getPath(); + public function getPath(): string; /** * Returns the list of query parameters. * * This is equivalent to PHP's $_GET superglobal. - * - * @return array */ - function getQueryParameters(); + public function getQueryParameters(): array; /** * Returns the POST data. * * This is equivalent to PHP's $_POST superglobal. - * - * @return array */ - function getPostData(); + public function getPostData(): array; /** * Sets the post data. @@ -119,29 +95,20 @@ interface RequestInterface extends MessageInterface { * * This would not have been needed, if POST data was accessible as * php://input, but unfortunately we need to special case it. - * - * @param array $postData - * @return void */ - function setPostData(array $postData); + public function setPostData(array $postData); /** * Returns an item from the _SERVER array. * * If the value does not exist in the array, null is returned. * - * @param string $valueName * @return string|null */ - function getRawServerValue($valueName); + public function getRawServerValue(string $valueName); /** * Sets the _SERVER array. - * - * @param array $data - * @return void */ - function setRawServerData(array $data); - - + public function setRawServerData(array $data); } diff --git a/vendor/sabre/http/lib/Response.php b/vendor/sabre/http/lib/Response.php index 01920d8d9..64dfbc0b2 100644 --- a/vendor/sabre/http/lib/Response.php +++ b/vendor/sabre/http/lib/Response.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -9,14 +11,14 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Response extends Message implements ResponseInterface { - +class Response extends Message implements ResponseInterface +{ /** * This is the list of currently registered HTTP status codes. * * @var array */ - static $statusCodes = [ + public static $statusCodes = [ 100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', @@ -81,57 +83,55 @@ class Response extends Message implements ResponseInterface { ]; /** - * HTTP status code + * HTTP status code. * * @var int */ protected $status; /** - * HTTP status text + * HTTP status text. * * @var string */ protected $statusText; /** - * Creates the response object + * Creates the response object. * * @param string|int $status - * @param array $headers - * @param resource $body + * @param array $headers + * @param resource $body */ - function __construct($status = null, array $headers = null, $body = null) { - - if (!is_null($status)) $this->setStatus($status); - if (!is_null($headers)) $this->setHeaders($headers); - if (!is_null($body)) $this->setBody($body); - + public function __construct($status = 500, array $headers = null, $body = null) + { + if (null !== $status) { + $this->setStatus($status); + } + if (null !== $headers) { + $this->setHeaders($headers); + } + if (null !== $body) { + $this->setBody($body); + } } - /** * Returns the current HTTP status code. - * - * @return int */ - function getStatus() { - + public function getStatus(): int + { return $this->status; - } /** * Returns the human-readable status string. * * In the case of a 200, this may for example be 'OK'. - * - * @return string */ - function getStatusText() { - + public function getStatusText(): string + { return $this->statusText; - } /** @@ -144,21 +144,20 @@ class Response extends Message implements ResponseInterface { * added. * * @param string|int $status + * * @throws \InvalidArgumentException - * @return void */ - function setStatus($status) { - + public function setStatus($status) + { if (ctype_digit($status) || is_int($status)) { - $statusCode = $status; - $statusText = isset(self::$statusCodes[$status]) ? self::$statusCodes[$status] : 'Unknown'; - + $statusText = self::$statusCodes[$status] ?? 'Unknown'; } else { list( $statusCode, $statusText ) = explode(' ', $status, 2); + $statusCode = (int) $statusCode; } if ($statusCode < 100 || $statusCode > 999) { throw new \InvalidArgumentException('The HTTP status code must be exactly 3 digits'); @@ -166,28 +165,24 @@ class Response extends Message implements ResponseInterface { $this->status = $statusCode; $this->statusText = $statusText; - } /** * Serializes the response object as a string. * * This is useful for debugging purposes. - * - * @return string */ - function __toString() { - - $str = 'HTTP/' . $this->httpVersion . ' ' . $this->getStatus() . ' ' . $this->getStatusText() . "\r\n"; + public function __toString(): string + { + $str = 'HTTP/'.$this->httpVersion.' '.$this->getStatus().' '.$this->getStatusText()."\r\n"; foreach ($this->getHeaders() as $key => $value) { foreach ($value as $v) { - $str .= $key . ": " . $v . "\r\n"; + $str .= $key.': '.$v."\r\n"; } } $str .= "\r\n"; $str .= $this->getBodyAsString(); - return $str; + return $str; } - } diff --git a/vendor/sabre/http/lib/ResponseDecorator.php b/vendor/sabre/http/lib/ResponseDecorator.php index db3a67507..289dba5cc 100644 --- a/vendor/sabre/http/lib/ResponseDecorator.php +++ b/vendor/sabre/http/lib/ResponseDecorator.php @@ -1,9 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** - * Response Decorator + * Response Decorator. * * This helper class allows you to easily create decorators for the Response * object. @@ -12,45 +14,36 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class ResponseDecorator implements ResponseInterface { - +class ResponseDecorator implements ResponseInterface +{ use MessageDecoratorTrait; /** * Constructor. - * - * @param ResponseInterface $inner */ - function __construct(ResponseInterface $inner) { - + public function __construct(ResponseInterface $inner) + { $this->inner = $inner; - } /** * Returns the current HTTP status code. - * - * @return int */ - function getStatus() { - + public function getStatus(): int + { return $this->inner->getStatus(); - } - /** * Returns the human-readable status string. * * In the case of a 200, this may for example be 'OK'. - * - * @return string */ - function getStatusText() { - + public function getStatusText(): string + { return $this->inner->getStatusText(); - } + /** * Sets the HTTP status code. * @@ -61,12 +54,10 @@ class ResponseDecorator implements ResponseInterface { * added. * * @param string|int $status - * @return void */ - function setStatus($status) { - + public function setStatus($status) + { $this->inner->setStatus($status); - } /** @@ -76,9 +67,8 @@ class ResponseDecorator implements ResponseInterface { * * @return string */ - function __toString() { - + public function __toString(): string + { return $this->inner->__toString(); - } } diff --git a/vendor/sabre/http/lib/ResponseInterface.php b/vendor/sabre/http/lib/ResponseInterface.php index 411cdc06c..9bd93f179 100644 --- a/vendor/sabre/http/lib/ResponseInterface.php +++ b/vendor/sabre/http/lib/ResponseInterface.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** @@ -9,23 +11,19 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface ResponseInterface extends MessageInterface { - +interface ResponseInterface extends MessageInterface +{ /** * Returns the current HTTP status code. - * - * @return int */ - function getStatus(); + public function getStatus(): int; /** * Returns the human-readable status string. * * In the case of a 200, this may for example be 'OK'. - * - * @return string */ - function getStatusText(); + public function getStatusText(): string; /** * Sets the HTTP status code. @@ -37,9 +35,8 @@ interface ResponseInterface extends MessageInterface { * added. * * @param string|int $status + * * @throws \InvalidArgumentException - * @return void */ - function setStatus($status); - + public function setStatus($status); } diff --git a/vendor/sabre/http/lib/Sapi.php b/vendor/sabre/http/lib/Sapi.php index 054380e73..80254f3f3 100644 --- a/vendor/sabre/http/lib/Sapi.php +++ b/vendor/sabre/http/lib/Sapi.php @@ -1,9 +1,13 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; +use InvalidArgumentException; + /** - * PHP SAPI + * PHP SAPI. * * This object is responsible for: * 1. Constructing a Request object based on the current HTTP request sent to @@ -28,56 +32,85 @@ namespace Sabre\HTTP; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Sapi { - +class Sapi +{ /** * This static method will create a new Request object, based on the * current PHP request. - * - * @return Request */ - static function getRequest() { + public static function getRequest(): Request + { + $serverArr = $_SERVER; + + if ('cli' === PHP_SAPI) { + // If we're running off the CLI, we're going to set some default + // settings. + $serverArr['REQUEST_URI'] = $_SERVER['REQUEST_URI'] ?? '/'; + $serverArr['REQUEST_METHOD'] = $_SERVER['REQUEST_METHOD'] ?? 'CLI'; + } - $r = self::createFromServerArray($_SERVER); + $r = self::createFromServerArray($serverArr); $r->setBody(fopen('php://input', 'r')); $r->setPostData($_POST); - return $r; + return $r; } /** * Sends the HTTP response back to a HTTP client. * * This calls php's header() function and streams the body to php://output. - * - * @param ResponseInterface $response - * @return void */ - static function sendResponse(ResponseInterface $response) { - - header('HTTP/' . $response->getHttpVersion() . ' ' . $response->getStatus() . ' ' . $response->getStatusText()); + public static function sendResponse(ResponseInterface $response) + { + header('HTTP/'.$response->getHttpVersion().' '.$response->getStatus().' '.$response->getStatusText()); foreach ($response->getHeaders() as $key => $value) { - foreach ($value as $k => $v) { - if ($k === 0) { - header($key . ': ' . $v); + if (0 === $k) { + header($key.': '.$v); } else { - header($key . ': ' . $v, false); + header($key.': '.$v, false); } } - } $body = $response->getBody(); - if (is_null($body)) return; + if (null === $body) { + return; + } + + if (is_callable($body)) { + $body(); + + return; + } $contentLength = $response->getHeader('Content-Length'); - if ($contentLength !== null) { + if (null !== $contentLength) { $output = fopen('php://output', 'wb'); - if (is_resource($body) && get_resource_type($body) == 'stream') { - if (PHP_INT_SIZE !== 4){ + if (is_resource($body) && 'stream' == get_resource_type($body)) { + if (PHP_INT_SIZE > 4) { // use the dedicated function on 64 Bit systems - stream_copy_to_stream($body, $output, $contentLength); + // a workaround to make PHP more possible to use mmap based copy, see https://github.com/sabre-io/http/pull/119 + $left = (int) $contentLength; + // copy with 4MiB chunks + $chunk_size = 4 * 1024 * 1024; + stream_set_chunk_size($output, $chunk_size); + // If this is a partial response, flush the beginning bytes until the first position that is a multiple of the page size. + $contentRange = $response->getHeader('Content-Range'); + // Matching "Content-Range: bytes 1234-5678/7890" + if (null !== $contentRange && preg_match('/^bytes\s([0-9]*)-([0-9]*)\//i', $contentRange, $matches) && '' !== $matches[1]) { + // 4kB should be the default page size on most architectures + $pageSize = 4096; + $offset = (int) $matches[1]; + $delta = ($offset % $pageSize) > 0 ? ($pageSize - $offset % $pageSize) : 0; + if ($delta > 0) { + $left -= stream_copy_to_stream($body, $output, min($delta, $left)); + } + } + while ($left > 0) { + $left -= stream_copy_to_stream($body, $output, min($left, $chunk_size)); + } } else { // workaround for 32 Bit systems to avoid stream_copy_to_stream while (!feof($body)) { @@ -85,7 +118,7 @@ class Sapi { } } } else { - fwrite($output, $body, $contentLength); + fwrite($output, $body, (int) $contentLength); } } else { file_put_contents('php://output', $body); @@ -94,18 +127,16 @@ class Sapi { if (is_resource($body)) { fclose($body); } - } /** * This static method will create a new Request object, based on a PHP * $_SERVER array. * - * @param array $serverArray - * @return Request + * REQUEST_URI and REQUEST_METHOD are required. */ - static function createFromServerArray(array $serverArray) { - + public static function createFromServerArray(array $serverArray): Request + { $headers = []; $method = null; $url = null; @@ -115,61 +146,61 @@ class Sapi { $hostName = 'localhost'; foreach ($serverArray as $key => $value) { - switch ($key) { - - case 'SERVER_PROTOCOL' : - if ($value === 'HTTP/1.0') { + case 'SERVER_PROTOCOL': + if ('HTTP/1.0' === $value) { $httpVersion = '1.0'; + } elseif ('HTTP/2.0' === $value) { + $httpVersion = '2.0'; } break; - case 'REQUEST_METHOD' : + case 'REQUEST_METHOD': $method = $value; break; - case 'REQUEST_URI' : + case 'REQUEST_URI': $url = $value; break; // These sometimes show up without a HTTP_ prefix - case 'CONTENT_TYPE' : + case 'CONTENT_TYPE': $headers['Content-Type'] = $value; break; - case 'CONTENT_LENGTH' : + case 'CONTENT_LENGTH': $headers['Content-Length'] = $value; break; // mod_php on apache will put credentials in these variables. // (fast)cgi does not usually do this, however. - case 'PHP_AUTH_USER' : + case 'PHP_AUTH_USER': if (isset($serverArray['PHP_AUTH_PW'])) { - $headers['Authorization'] = 'Basic ' . base64_encode($value . ':' . $serverArray['PHP_AUTH_PW']); + $headers['Authorization'] = 'Basic '.base64_encode($value.':'.$serverArray['PHP_AUTH_PW']); } break; // Similarly, mod_php may also screw around with digest auth. - case 'PHP_AUTH_DIGEST' : - $headers['Authorization'] = 'Digest ' . $value; + case 'PHP_AUTH_DIGEST': + $headers['Authorization'] = 'Digest '.$value; break; // Apache may prefix the HTTP_AUTHORIZATION header with // REDIRECT_, if mod_rewrite was used. - case 'REDIRECT_HTTP_AUTHORIZATION' : + case 'REDIRECT_HTTP_AUTHORIZATION': $headers['Authorization'] = $value; break; - case 'HTTP_HOST' : + case 'HTTP_HOST': $hostName = $value; $headers['Host'] = $value; break; - case 'HTTPS' : - if (!empty($value) && $value !== 'off') { + case 'HTTPS': + if (!empty($value) && 'off' !== $value) { $protocol = 'https'; } break; - default : - if (substr($key, 0, 5) === 'HTTP_') { + default: + if ('HTTP_' === substr($key, 0, 5)) { // It's a HTTP header // Normalizing it to be prettier @@ -182,21 +213,23 @@ class Sapi { // Turning spaces into dashes. $header = str_replace(' ', '-', $header); $headers[$header] = $value; - } break; - - } + } + if (null === $url) { + throw new InvalidArgumentException('The _SERVER array must have a REQUEST_URI key'); } + if (null === $method) { + throw new InvalidArgumentException('The _SERVER array must have a REQUEST_METHOD key'); + } $r = new Request($method, $url, $headers); $r->setHttpVersion($httpVersion); $r->setRawServerData($serverArray); - $r->setAbsoluteUrl($protocol . '://' . $hostName . $url); - return $r; + $r->setAbsoluteUrl($protocol.'://'.$hostName.$url); + return $r; } - } diff --git a/vendor/sabre/http/lib/URLUtil.php b/vendor/sabre/http/lib/URLUtil.php deleted file mode 100644 index 85c0e1150..000000000 --- a/vendor/sabre/http/lib/URLUtil.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -namespace Sabre\HTTP; - -use Sabre\URI; - -/** - * URL utility class - * - * Note: this class is deprecated. All its functionality moved to functions.php - * or sabre\uri. - * - * @deprecated - * @copyright Copyright (C) fruux GmbH (https://fruux.com/) - * @author Evert Pot (http://evertpot.com/) - * @license http://sabre.io/license/ Modified BSD License - */ -class URLUtil { - - /** - * Encodes the path of a url. - * - * slashes (/) are treated as path-separators. - * - * @deprecated use \Sabre\HTTP\encodePath() - * @param string $path - * @return string - */ - static function encodePath($path) { - - return encodePath($path); - - } - - /** - * Encodes a 1 segment of a path - * - * Slashes are considered part of the name, and are encoded as %2f - * - * @deprecated use \Sabre\HTTP\encodePathSegment() - * @param string $pathSegment - * @return string - */ - static function encodePathSegment($pathSegment) { - - return encodePathSegment($pathSegment); - - } - - /** - * Decodes a url-encoded path - * - * @deprecated use \Sabre\HTTP\decodePath - * @param string $path - * @return string - */ - static function decodePath($path) { - - return decodePath($path); - - } - - /** - * Decodes a url-encoded path segment - * - * @deprecated use \Sabre\HTTP\decodePathSegment() - * @param string $path - * @return string - */ - static function decodePathSegment($path) { - - return decodePathSegment($path); - - } - - /** - * Returns the 'dirname' and 'basename' for a path. - * - * @deprecated Use Sabre\Uri\split(). - * @param string $path - * @return array - */ - static function splitPath($path) { - - return Uri\split($path); - - } - - /** - * Resolves relative urls, like a browser would. - * - * @deprecated Use Sabre\Uri\resolve(). - * @param string $basePath - * @param string $newPath - * @return string - */ - static function resolve($basePath, $newPath) { - - return Uri\resolve($basePath, $newPath); - - } - -} diff --git a/vendor/sabre/http/lib/Util.php b/vendor/sabre/http/lib/Util.php deleted file mode 100644 index e3f13a645..000000000 --- a/vendor/sabre/http/lib/Util.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -namespace Sabre\HTTP; - -/** - * HTTP utility methods - * - * @copyright Copyright (C) fruux GmbH (https://fruux.com/) - * @author Evert Pot (http://evertpot.com/) - * @author Paul Voegler - * @deprecated All these functions moved to functions.php - * @license http://sabre.io/license/ Modified BSD License - */ -class Util { - - /** - * Content negotiation - * - * @deprecated Use \Sabre\HTTP\negotiateContentType - * @param string|null $acceptHeaderValue - * @param array $availableOptions - * @return string|null - */ - static function negotiateContentType($acceptHeaderValue, array $availableOptions) { - - return negotiateContentType($acceptHeaderValue, $availableOptions); - - } - - /** - * Deprecated! Use negotiateContentType. - * - * @deprecated Use \Sabre\HTTP\NegotiateContentType - * @param string|null $acceptHeaderValue - * @param array $availableOptions - * @return string|null - */ - static function negotiate($acceptHeaderValue, array $availableOptions) { - - return negotiateContentType($acceptHeaderValue, $availableOptions); - - } - - /** - * Parses a RFC2616-compatible date string - * - * This method returns false if the date is invalid - * - * @deprecated Use parseDate - * @param string $dateHeader - * @return bool|DateTime - */ - static function parseHTTPDate($dateHeader) { - - return parseDate($dateHeader); - - } - - /** - * Transforms a DateTime object to HTTP's most common date format. - * - * We're serializing it as the RFC 1123 date, which, for HTTP must be - * specified as GMT. - * - * @deprecated Use toDate - * @param \DateTime $dateTime - * @return string - */ - static function toHTTPDate(\DateTime $dateTime) { - - return toDate($dateTime); - - } -} diff --git a/vendor/sabre/http/lib/Version.php b/vendor/sabre/http/lib/Version.php index c40532ae8..20a401773 100644 --- a/vendor/sabre/http/lib/Version.php +++ b/vendor/sabre/http/lib/Version.php @@ -1,19 +1,20 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; /** - * This class contains the version number for the HTTP package + * This class contains the version number for the HTTP package. * * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Version { - +class Version +{ /** - * Full version number + * Full version number. */ - const VERSION = '4.2.4'; - + const VERSION = '5.0.4'; } diff --git a/vendor/sabre/http/lib/functions.php b/vendor/sabre/http/lib/functions.php index d94119623..197a9e661 100644 --- a/vendor/sabre/http/lib/functions.php +++ b/vendor/sabre/http/lib/functions.php @@ -1,8 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre\HTTP; use DateTime; +use InvalidArgumentException; /** * A collection of useful helpers for parsing or generating various HTTP @@ -27,61 +30,64 @@ use DateTime; * http://tools.ietf.org/html/rfc7231#section-7.1.1.1 * * @param string $dateString + * * @return bool|DateTime */ -function parseDate($dateString) { - +function parseDate(string $dateString) +{ // Only the format is checked, valid ranges are checked by strtotime below $month = '(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)'; $weekday = '(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)'; $wkday = '(Mon|Tue|Wed|Thu|Fri|Sat|Sun)'; $time = '([0-1]\d|2[0-3])(\:[0-5]\d){2}'; - $date3 = $month . ' ([12]\d|3[01]| [1-9])'; - $date2 = '(0[1-9]|[12]\d|3[01])\-' . $month . '\-\d{2}'; + $date3 = $month.' ([12]\d|3[01]| [1-9])'; + $date2 = '(0[1-9]|[12]\d|3[01])\-'.$month.'\-\d{2}'; // 4-digit year cannot begin with 0 - unix timestamp begins in 1970 - $date1 = '(0[1-9]|[12]\d|3[01]) ' . $month . ' [1-9]\d{3}'; + $date1 = '(0[1-9]|[12]\d|3[01]) '.$month.' [1-9]\d{3}'; // ANSI C's asctime() format // 4-digit year cannot begin with 0 - unix timestamp begins in 1970 - $asctime_date = $wkday . ' ' . $date3 . ' ' . $time . ' [1-9]\d{3}'; + $asctime_date = $wkday.' '.$date3.' '.$time.' [1-9]\d{3}'; // RFC 850, obsoleted by RFC 1036 - $rfc850_date = $weekday . ', ' . $date2 . ' ' . $time . ' GMT'; + $rfc850_date = $weekday.', '.$date2.' '.$time.' GMT'; // RFC 822, updated by RFC 1123 - $rfc1123_date = $wkday . ', ' . $date1 . ' ' . $time . ' GMT'; + $rfc1123_date = $wkday.', '.$date1.' '.$time.' GMT'; // allowed date formats by RFC 2616 $HTTP_date = "($rfc1123_date|$rfc850_date|$asctime_date)"; // allow for space around the string and strip it $dateString = trim($dateString, ' '); - if (!preg_match('/^' . $HTTP_date . '$/', $dateString)) + if (!preg_match('/^'.$HTTP_date.'$/', $dateString)) { return false; + } // append implicit GMT timezone to ANSI C time format - if (strpos($dateString, ' GMT') === false) + if (false === strpos($dateString, ' GMT')) { $dateString .= ' GMT'; + } try { return new DateTime($dateString, new \DateTimeZone('UTC')); } catch (\Exception $e) { return false; } - } /** - * Transforms a DateTime object to a valid HTTP/1.1 Date header value + * Transforms a DateTime object to a valid HTTP/1.1 Date header value. * * @param DateTime $dateTime + * * @return string */ -function toDate(DateTime $dateTime) { - +function toDate(DateTime $dateTime): string +{ // We need to clone it, as we don't want to affect the existing // DateTime. $dateTime = clone $dateTime; $dateTime->setTimezone(new \DateTimeZone('GMT')); - return $dateTime->format('D, d M Y H:i:s \G\M\T'); + return $dateTime->format('D, d M Y H:i:s \G\M\T'); } /** @@ -101,11 +107,12 @@ function toDate(DateTime $dateTime) { * implying that no accept header was sent. * * @param string|null $acceptHeaderValue - * @param array $availableOptions + * @param array $availableOptions + * * @return string|null */ -function negotiateContentType($acceptHeaderValue, array $availableOptions) { - +function negotiateContentType($acceptHeaderValue, array $availableOptions) +{ if (!$acceptHeaderValue) { // Grabbing the first in the list. return reset($availableOptions); @@ -130,9 +137,10 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions) { $lastChoice = null; foreach ($proposals as $proposal) { - // Ignoring broken values. - if (is_null($proposal)) continue; + if (null === $proposal) { + continue; + } // If the quality is lower we don't have to bother comparing. if ($proposal['quality'] < $lastQuality) { @@ -140,12 +148,11 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions) { } foreach ($options as $optionIndex => $option) { - - if ($proposal['type'] !== '*' && $proposal['type'] !== $option['type']) { + if ('*' !== $proposal['type'] && $proposal['type'] !== $option['type']) { // no match on type. continue; } - if ($proposal['subType'] !== '*' && $proposal['subType'] !== $option['subType']) { + if ('*' !== $proposal['subType'] && $proposal['subType'] !== $option['subType']) { // no match on subtype. continue; } @@ -165,31 +172,25 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions) { // subtype. We need to calculate a score for how specific the // match was. $specificity = - ($proposal['type'] !== '*' ? 20 : 0) + - ($proposal['subType'] !== '*' ? 10 : 0) + + ('*' !== $proposal['type'] ? 20 : 0) + + ('*' !== $proposal['subType'] ? 10 : 0) + count($option['parameters']); - // Does this entry win? if ( ($proposal['quality'] > $lastQuality) || ($proposal['quality'] === $lastQuality && $specificity > $lastSpecificity) || ($proposal['quality'] === $lastQuality && $specificity === $lastSpecificity && $optionIndex < $lastOptionIndex) ) { - $lastQuality = $proposal['quality']; $lastSpecificity = $specificity; $lastOptionIndex = $optionIndex; $lastChoice = $availableOptions[$optionIndex]; - } - } - } return $lastChoice; - } /** @@ -217,10 +218,11 @@ function negotiateContentType($acceptHeaderValue, array $availableOptions) { * uses them. * * @param string|string[] $input + * * @return array */ -function parsePrefer($input) { - +function parsePrefer($input): array +{ $token = '[!#$%&\'*+\-.^_`~A-Za-z0-9]+'; // Work in progress @@ -241,7 +243,6 @@ REGEX; $output = []; foreach (getHeaderValues($input) as $value) { - if (!preg_match($regex, $value, $matches)) { // Ignore continue; @@ -249,22 +250,22 @@ REGEX; // Mapping old values to their new counterparts switch ($matches['name']) { - case 'return-asynch' : + case 'return-asynch': $output['respond-async'] = true; break; - case 'return-representation' : + case 'return-representation': $output['return'] = 'representation'; break; - case 'return-minimal' : + case 'return-minimal': $output['return'] = 'minimal'; break; - case 'strict' : + case 'strict': $output['handling'] = 'strict'; break; - case 'lenient' : + case 'lenient': $output['handling'] = 'lenient'; break; - default : + default: if (isset($matches['value'])) { $value = trim($matches['value'], '"'); } else { @@ -273,11 +274,9 @@ REGEX; $output[strtolower($matches['name'])] = empty($value) ? true : $value; break; } - } return $output; - } /** @@ -296,25 +295,26 @@ REGEX; * * @param string|string[] $values * @param string|string[] $values2 - * @return string[] */ -function getHeaderValues($values, $values2 = null) { - - $values = (array)$values; +function getHeaderValues($values, $values2 = null): array +{ + $values = (array) $values; if ($values2) { - $values = array_merge($values, (array)$values2); + $values = array_merge($values, (array) $values2); } + + $result = array(); foreach ($values as $l1) { foreach (explode(',', $l1) as $l2) { $result[] = trim($l2); } } - return $result; + return $result; } /** - * Parses a mime-type and splits it into: + * Parses a mime-type and splits it into:. * * 1. type * 2. subtype @@ -322,10 +322,11 @@ function getHeaderValues($values, $values2 = null) { * 4. parameters * * @param string $str + * * @return array */ -function parseMimeType($str) { - +function parseMimeType(string $str): array +{ $parameters = []; // If no q= parameter appears, then quality = 1. $quality = 1; @@ -333,17 +334,22 @@ function parseMimeType($str) { $parts = explode(';', $str); // The first part is the mime-type. - $mimeType = array_shift($parts); + $mimeType = trim(array_shift($parts)); + + if ('*' === $mimeType) { + $mimeType = '*/*'; + } - $mimeType = explode('/', trim($mimeType)); - if (count($mimeType) !== 2) { + $mimeType = explode('/', $mimeType); + if (2 !== count($mimeType)) { // Illegal value - return null; + var_dump($mimeType); + die(); + throw new InvalidArgumentException('Not a valid mime-type: '.$str); } list($type, $subType) = $mimeType; foreach ($parts as $part) { - $part = trim($part); if (strpos($part, '=')) { list($partName, $partValue) = @@ -357,89 +363,66 @@ function parseMimeType($str) { // the parameter list. Anything after the q= counts as an // 'accept extension' and could introduce new semantics in // content-negotation. - if ($partName !== 'q') { + if ('q' !== $partName) { $parameters[$partName] = $part; } else { - $quality = (float)$partValue; + $quality = (float) $partValue; break; // Stop parsing parts } - } return [ - 'type' => $type, - 'subType' => $subType, - 'quality' => $quality, + 'type' => $type, + 'subType' => $subType, + 'quality' => $quality, 'parameters' => $parameters, ]; - } /** * Encodes the path of a url. * * slashes (/) are treated as path-separators. - * - * @param string $path - * @return string */ -function encodePath($path) { - - return preg_replace_callback('/([^A-Za-z0-9_\-\.~\(\)\/:@])/', function($match) { - - return '%' . sprintf('%02x', ord($match[0])); - +function encodePath(string $path): string +{ + return preg_replace_callback('/([^A-Za-z0-9_\-\.~\(\)\/:@])/', function ($match) { + return '%'.sprintf('%02x', ord($match[0])); }, $path); - } /** - * Encodes a 1 segment of a path + * Encodes a 1 segment of a path. * * Slashes are considered part of the name, and are encoded as %2f - * - * @param string $pathSegment - * @return string */ -function encodePathSegment($pathSegment) { - - return preg_replace_callback('/([^A-Za-z0-9_\-\.~\(\):@])/', function($match) { - - return '%' . sprintf('%02x', ord($match[0])); - +function encodePathSegment(string $pathSegment): string +{ + return preg_replace_callback('/([^A-Za-z0-9_\-\.~\(\):@])/', function ($match) { + return '%'.sprintf('%02x', ord($match[0])); }, $pathSegment); } /** - * Decodes a url-encoded path - * - * @param string $path - * @return string + * Decodes a url-encoded path. */ -function decodePath($path) { - +function decodePath(string $path): string +{ return decodePathSegment($path); - } /** - * Decodes a url-encoded path segment - * - * @param string $path - * @return string + * Decodes a url-encoded path segment. */ -function decodePathSegment($path) { - +function decodePathSegment(string $path): string +{ $path = rawurldecode($path); $encoding = mb_detect_encoding($path, ['UTF-8', 'ISO-8859-1']); switch ($encoding) { - - case 'ISO-8859-1' : + case 'ISO-8859-1': $path = utf8_encode($path); - } return $path; - } diff --git a/vendor/sabre/http/phpstan.neon b/vendor/sabre/http/phpstan.neon new file mode 100644 index 000000000..241663a72 --- /dev/null +++ b/vendor/sabre/http/phpstan.neon @@ -0,0 +1,3 @@ +parameters: + level: 1 + bootstrap: %currentWorkingDirectory%/vendor/autoload.php diff --git a/vendor/sabre/uri/.gitattributes b/vendor/sabre/uri/.gitattributes new file mode 100644 index 000000000..d1618f3a1 --- /dev/null +++ b/vendor/sabre/uri/.gitattributes @@ -0,0 +1,4 @@ +/tests export-ignore +/.travis.yml export-ignore +/CHANGELOG.md export-ignore +/README.md export-ignore diff --git a/vendor/sabre/uri/.gitignore b/vendor/sabre/uri/.gitignore index 19d1affd4..b6fc3f896 100644 --- a/vendor/sabre/uri/.gitignore +++ b/vendor/sabre/uri/.gitignore @@ -6,8 +6,10 @@ composer.lock tests/cov/ # Composer binaries -bin/phpunit -bin/phpcs +bin # Vim .*.swp + +# development stuff +.php_cs.cache diff --git a/vendor/sabre/uri/.php_cs.dist b/vendor/sabre/uri/.php_cs.dist new file mode 100644 index 000000000..8d61ee259 --- /dev/null +++ b/vendor/sabre/uri/.php_cs.dist @@ -0,0 +1,12 @@ +<?php + +$config = PhpCsFixer\Config::create(); +$config->getFinder() + ->exclude('vendor') + ->in(__DIR__); +$config->setRules([ + '@PSR1' => true, + '@Symfony' =>true +]); + +return $config; \ No newline at end of file diff --git a/vendor/sabre/uri/.travis.yml b/vendor/sabre/uri/.travis.yml deleted file mode 100644 index 75c8270df..000000000 --- a/vendor/sabre/uri/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: php -php: - - 5.4 - - 5.5 - - 5.6 - - 7 - - 7.1 - -script: - - ./bin/phpunit --configuration tests/phpunit.xml.dist - - ./bin/sabre-cs-fixer fix lib/ --dry-run --diff - -before_script: composer install --dev - diff --git a/vendor/sabre/uri/CHANGELOG.md b/vendor/sabre/uri/CHANGELOG.md deleted file mode 100644 index 92aaa7507..000000000 --- a/vendor/sabre/uri/CHANGELOG.md +++ /dev/null @@ -1,57 +0,0 @@ -ChangeLog -========= - -1.2.1 (2017-02-20) ------------------- - -* #16: Correctly parse urls that are only a fragment `#`. - - -1.2.0 (2016-12-06) ------------------- - -* Now throwing `InvalidUriException` if a uri passed to the `parse` function - is invalid or could not be parsed. -* #11: Fix support for URIs that start with a triple slash. PHP's `parse_uri()` - doesn't support them, so we now have a pure-php fallback in case it fails. -* #9: Fix support for relative URI's that have a non-uri encoded colon `:` in - them. - - -1.1.1 (2016-10-27) ------------------- - -* #10: Correctly support file:// URIs in the build() method. (@yuloh) - - -1.1.0 (2016-03-07) ------------------- - -* #6: PHP's `parse_url()` corrupts strings if they contain certain - non ascii-characters such as Chinese or Hebrew. sabre/uri's `parse()` - function now percent-encodes these characters beforehand. - - -1.0.1 (2015-04-28) ------------------- - -* #4: Using php-cs-fixer to automatically enforce conding standards. -* #5: Resolving to and building `mailto:` urls were not correctly handled. - - -1.0.0 (2015-01-27) ------------------- - -* Added a `normalize` function. -* Added a `buildUri` function. -* Fixed a bug in the `resolve` when only a new fragment is specified. - -San José, CalConnect XXXII release! - -0.0.1 (2014-11-17) ------------------- - -* First version! -* Source was lifted from sabre/http package. -* Provides a `resolve` and a `split` function. -* Requires PHP 5.4.8 and up. diff --git a/vendor/sabre/uri/LICENSE b/vendor/sabre/uri/LICENSE index 087996be7..ae2c99290 100644 --- a/vendor/sabre/uri/LICENSE +++ b/vendor/sabre/uri/LICENSE @@ -1,4 +1,4 @@ -Copyright (C) 2014-2017 fruux GmbH (https://fruux.com/) +Copyright (C) 2014-2019 fruux GmbH (https://fruux.com/) All rights reserved. diff --git a/vendor/sabre/uri/README.md b/vendor/sabre/uri/README.md deleted file mode 100644 index aa21bfe06..000000000 --- a/vendor/sabre/uri/README.md +++ /dev/null @@ -1,47 +0,0 @@ -sabre/uri -========= - -sabre/uri is a lightweight library that provides several functions for working -with URIs, staying true to the rules of [RFC3986][2]. - -Partially inspired by [Node.js URL library][3], and created to solve real -problems in PHP applications. 100% unitested and many tests are based on -examples from RFC3986. - -The library provides the following functions: - -1. `resolve` to resolve relative urls. -2. `normalize` to aid in comparing urls. -3. `parse`, which works like PHP's [parse_url][6]. -4. `build` to do the exact opposite of `parse`. -5. `split` to easily get the 'dirname' and 'basename' of a URL without all the - problems those two functions have. - - -Further reading ---------------- - -* [Installation][7] -* [Usage][8] - - -Questions? ----------- - -Head over to the [sabre/dav mailinglist][4], or you can also just open a ticket -on [GitHub][5]. - - -Made at fruux -------------- - -This library is being developed by [fruux](https://fruux.com/). Drop us a line for commercial services or enterprise support. - -[1]: http://sabre.io/uri/ -[2]: https://tools.ietf.org/html/rfc3986/ -[3]: http://nodejs.org/api/url.html -[4]: http://groups.google.com/group/sabredav-discuss -[5]: https://github.com/fruux/sabre-uri/issues/ -[6]: http://php.net/manual/en/function.parse-url.php -[7]: http://sabre.io/uri/install/ -[8]: http://sabre.io/uri/usage/ diff --git a/vendor/sabre/uri/composer.json b/vendor/sabre/uri/composer.json index 49d69e723..30f382937 100644 --- a/vendor/sabre/uri/composer.json +++ b/vendor/sabre/uri/composer.json @@ -9,7 +9,7 @@ "homepage": "http://sabre.io/uri/", "license": "BSD-3-Clause", "require": { - "php": ">=5.4.7" + "php": ">=7" }, "authors": [ { @@ -31,9 +31,13 @@ "Sabre\\Uri\\" : "lib/" } }, + "autoload-dev": { + "psr-4": { + "Sabre\\Uri\\": "tests/" + } + }, "require-dev": { - "sabre/cs": "~1.0.0", - "phpunit/phpunit" : ">=4.0,<6.0" + "phpunit/phpunit" : "^6" }, "config" : { "bin-dir" : "bin/" diff --git a/vendor/sabre/uri/lib/InvalidUriException.php b/vendor/sabre/uri/lib/InvalidUriException.php index 0385fd462..7f37ca54e 100644 --- a/vendor/sabre/uri/lib/InvalidUriException.php +++ b/vendor/sabre/uri/lib/InvalidUriException.php @@ -1,9 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre\Uri; /** - * Invalid Uri + * Invalid Uri. * * This is thrown when an attempt was made to use Sabre\Uri parse a uri that * it could not. @@ -12,6 +14,6 @@ namespace Sabre\Uri; * @author Evert Pot (https://evertpot.com/) * @license http://sabre.io/license/ */ -class InvalidUriException extends \Exception { - +class InvalidUriException extends \Exception +{ } diff --git a/vendor/sabre/uri/lib/Version.php b/vendor/sabre/uri/lib/Version.php index fa544538b..ad6c89867 100644 --- a/vendor/sabre/uri/lib/Version.php +++ b/vendor/sabre/uri/lib/Version.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Uri; /** @@ -9,11 +11,10 @@ namespace Sabre\Uri; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ */ -class Version { - +class Version +{ /** - * Full version number + * Full version number. */ - const VERSION = '1.2.1'; - + const VERSION = '2.1.3'; } diff --git a/vendor/sabre/uri/lib/functions.php b/vendor/sabre/uri/lib/functions.php index 39b4a6f08..161e684d7 100644 --- a/vendor/sabre/uri/lib/functions.php +++ b/vendor/sabre/uri/lib/functions.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Uri; /** @@ -18,30 +20,32 @@ namespace Sabre\Uri; * * @param string $basePath * @param string $newPath + * * @return string + * + * @throws InvalidUriException */ -function resolve($basePath, $newPath) { - - $base = parse($basePath); +function resolve(string $basePath, string $newPath): string +{ $delta = parse($newPath); - $pick = function($part) use ($base, $delta) { + // If the new path defines a scheme, it's absolute and we can just return + // that. + if ($delta['scheme']) { + return build($delta); + } + $base = parse($basePath); + $pick = function ($part) use ($base, $delta) { if ($delta[$part]) { return $delta[$part]; } elseif ($base[$part]) { return $base[$part]; } - return null; + return null; }; - // If the new path defines a scheme, it's absolute and we can just return - // that. - if ($delta['scheme']) { - return build($delta); - } - $newParts = []; $newParts['scheme'] = $pick('scheme'); @@ -49,17 +53,18 @@ function resolve($basePath, $newPath) { $newParts['port'] = $pick('port'); $path = ''; - if ($delta['path']) { + if (is_string($delta['path']) and strlen($delta['path']) > 0) { // If the path starts with a slash - if ($delta['path'][0] === '/') { + if ('/' === $delta['path'][0]) { $path = $delta['path']; } else { // Removing last component from base path. $path = $base['path']; - if (strpos($path, '/') !== false) { - $path = substr($path, 0, strrpos($path, '/')); + $length = strrpos((string) $path, '/'); + if (false !== $length) { + $path = substr($path, 0, $length); } - $path .= '/' . $delta['path']; + $path .= '/'.$delta['path']; } } else { $path = $base['path'] ?: '/'; @@ -68,15 +73,14 @@ function resolve($basePath, $newPath) { $pathParts = explode('/', $path); $newPathParts = []; foreach ($pathParts as $pathPart) { - switch ($pathPart) { //case '' : - case '.' : + case '.': break; - case '..' : + case '..': array_pop($newPathParts); break; - default : + default: $newPathParts[] = $pathPart; break; } @@ -95,8 +99,8 @@ function resolve($basePath, $newPath) { if ($delta['fragment']) { $newParts['fragment'] = $delta['fragment']; } - return build($newParts); + return build($newParts); } /** @@ -109,10 +113,13 @@ function resolve($basePath, $newPath) { * It will also change a %3a into a %3A. * * @param string $uri + * * @return string + * + * @throws InvalidUriException */ -function normalize($uri) { - +function normalize(string $uri): string +{ $parts = parse($uri); if (!empty($parts['path'])) { @@ -123,23 +130,23 @@ function normalize($uri) { case '.': // skip break; - case '..' : + case '..': // One level up in the hierarchy array_pop($newPathParts); break; - default : + default: // Ensuring that everything is correctly percent-encoded. $newPathParts[] = rawurlencode(rawurldecode($pathPart)); break; } } - $parts['path'] = '/' . implode('/', $newPathParts); + $parts['path'] = '/'.implode('/', $newPathParts); } if ($parts['scheme']) { $parts['scheme'] = strtolower($parts['scheme']); $defaultPorts = [ - 'http' => '80', + 'http' => '80', 'https' => '443', ]; @@ -149,8 +156,8 @@ function normalize($uri) { } // A few HTTP specific rules. switch ($parts['scheme']) { - case 'http' : - case 'https' : + case 'http': + case 'https': if (empty($parts['path'])) { // An empty path is equivalent to / in http. $parts['path'] = '/'; @@ -159,10 +166,11 @@ function normalize($uri) { } } - if ($parts['host']) $parts['host'] = strtolower($parts['host']); + if ($parts['host']) { + $parts['host'] = strtolower($parts['host']); + } return build($parts); - } /** @@ -176,10 +184,13 @@ function normalize($uri) { * percent-encoded strings. PHP's parse_url corrupts these characters on OS X. * * @param string $uri + * * @return array + * + * @throws InvalidUriException */ -function parse($uri) { - +function parse(string $uri): array +{ // Normally a URI must be ASCII, however. However, often it's not and // parse_url might corrupt these strings. // @@ -187,7 +198,7 @@ function parse($uri) { // uriencode them first. $uri = preg_replace_callback( '/[^[:ascii:]]/u', - function($matches) { + function ($matches) { return rawurlencode($matches[0]); }, $uri @@ -200,15 +211,14 @@ function parse($uri) { return $result + [ - 'scheme' => null, - 'host' => null, - 'path' => null, - 'port' => null, - 'user' => null, - 'query' => null, + 'scheme' => null, + 'host' => null, + 'path' => null, + 'port' => null, + 'user' => null, + 'query' => null, 'fragment' => null, ]; - } /** @@ -216,46 +226,44 @@ function parse($uri) { * it to generate a new uri. * * @param array $parts + * * @return string */ -function build(array $parts) { - +function build(array $parts): string +{ $uri = ''; $authority = ''; if (!empty($parts['host'])) { $authority = $parts['host']; if (!empty($parts['user'])) { - $authority = $parts['user'] . '@' . $authority; + $authority = $parts['user'].'@'.$authority; } if (!empty($parts['port'])) { - $authority = $authority . ':' . $parts['port']; + $authority = $authority.':'.$parts['port']; } } if (!empty($parts['scheme'])) { // If there's a scheme, there's also a host. - $uri = $parts['scheme'] . ':'; - + $uri = $parts['scheme'].':'; } - if ($authority || (!empty($parts['scheme']) && $parts['scheme'] === 'file')) { + if ($authority || (!empty($parts['scheme']) && 'file' === $parts['scheme'])) { // No scheme, but there is a host. - $uri .= '//' . $authority; - + $uri .= '//'.$authority; } if (!empty($parts['path'])) { $uri .= $parts['path']; } if (!empty($parts['query'])) { - $uri .= '?' . $parts['query']; + $uri .= '?'.$parts['query']; } if (!empty($parts['fragment'])) { - $uri .= '#' . $parts['fragment']; + $uri .= '#'.$parts['fragment']; } return $uri; - } /** @@ -274,16 +282,17 @@ function build(array $parts) { * the end of the string is stripped off. * * @param string $path + * * @return array */ -function split($path) { - +function split(string $path): array +{ $matches = []; if (preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) { return [$matches[1], $matches[2]]; } - return [null,null]; + return [null, null]; } /** @@ -297,10 +306,13 @@ function split($path) { * crude and probably slow, so the original parse_url is usually preferred. * * @param string $uri + * * @return array + * + * @throws InvalidUriException */ -function _parse_fallback($uri) { - +function _parse_fallback(string $uri): array +{ // Normally a URI must be ASCII, however. However, often it's not and // parse_url might corrupt these strings. // @@ -308,45 +320,43 @@ function _parse_fallback($uri) { // uriencode them first. $uri = preg_replace_callback( '/[^[:ascii:]]/u', - function($matches) { + function ($matches) { return rawurlencode($matches[0]); }, $uri ); $result = [ - 'scheme' => null, - 'host' => null, - 'port' => null, - 'user' => null, - 'path' => null, + 'scheme' => null, + 'host' => null, + 'port' => null, + 'user' => null, + 'path' => null, 'fragment' => null, - 'query' => null, + 'query' => null, ]; if (preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) { - $result['scheme'] = $matches[1]; // Take what's left. $uri = substr($uri, strlen($result['scheme']) + 1); - } // Taking off a fragment part - if (strpos($uri, '#') !== false) { + if (false !== strpos($uri, '#')) { list($uri, $result['fragment']) = explode('#', $uri, 2); } // Taking off the query part - if (strpos($uri, '?') !== false) { + if (false !== strpos($uri, '?')) { list($uri, $result['query']) = explode('?', $uri, 2); } - if (substr($uri, 0, 3) === '///') { - // The triple slash uris are a bit unusual, but we have special handling - // for them. - $result['path'] = substr($uri, 2); - $result['host'] = ''; - } elseif (substr($uri, 0, 2) === '//') { + if ('///' === substr($uri, 0, 3)) { + // The triple slash uris are a bit unusual, but we have special handling + // for them. + $result['path'] = substr($uri, 2); + $result['host'] = ''; + } elseif ('//' === substr($uri, 0, 2)) { // Uris that have an authority part. $regex = ' %^ @@ -360,11 +370,21 @@ function _parse_fallback($uri) { if (!preg_match($regex, $uri, $matches)) { throw new InvalidUriException('Invalid, or could not parse URI'); } - if ($matches['host']) $result['host'] = $matches['host']; - if ($matches['port']) $result['port'] = (int)$matches['port']; - if (isset($matches['path'])) $result['path'] = $matches['path']; - if ($matches['user']) $result['user'] = $matches['user']; - if ($matches['pass']) $result['pass'] = $matches['pass']; + if ($matches['host']) { + $result['host'] = $matches['host']; + } + if (isset($matches['port'])) { + $result['port'] = (int) $matches['port']; + } + if (isset($matches['path'])) { + $result['path'] = $matches['path']; + } + if ($matches['user']) { + $result['user'] = $matches['user']; + } + if ($matches['pass']) { + $result['pass'] = $matches['pass']; + } } else { $result['path'] = $uri; } diff --git a/vendor/sabre/uri/phpstan.neon b/vendor/sabre/uri/phpstan.neon new file mode 100644 index 000000000..341d02818 --- /dev/null +++ b/vendor/sabre/uri/phpstan.neon @@ -0,0 +1,3 @@ +parameters: + level: 7 + bootstrap: %currentWorkingDirectory%/vendor/autoload.php diff --git a/vendor/sabre/xml/.gitignore b/vendor/sabre/xml/.gitignore index accb586c7..51fc188bf 100644 --- a/vendor/sabre/xml/.gitignore +++ b/vendor/sabre/xml/.gitignore @@ -2,6 +2,7 @@ vendor composer.lock tests/cov .*.swp +.php_cs.cache # Composer binaries bin/phpunit diff --git a/vendor/sabre/xml/.php_cs.dist b/vendor/sabre/xml/.php_cs.dist new file mode 100644 index 000000000..8d61ee259 --- /dev/null +++ b/vendor/sabre/xml/.php_cs.dist @@ -0,0 +1,12 @@ +<?php + +$config = PhpCsFixer\Config::create(); +$config->getFinder() + ->exclude('vendor') + ->in(__DIR__); +$config->setRules([ + '@PSR1' => true, + '@Symfony' =>true +]); + +return $config; \ No newline at end of file diff --git a/vendor/sabre/xml/.travis.yml b/vendor/sabre/xml/.travis.yml index 96396564e..49a0c9a22 100644 --- a/vendor/sabre/xml/.travis.yml +++ b/vendor/sabre/xml/.travis.yml @@ -1,26 +1,31 @@ language: php +sudo: required +dist: xenial php: - - 5.5 - - 5.6 - 7.0 - 7.1 + - 7.2 + - 7.3snapshot + +addons: + apt: + packages: + # required for php7.3 + - libzip4 matrix: fast_finish: true -sudo: false - cache: directories: - $HOME/.composer/cache -before_install: - - phpenv config-rm xdebug.ini; true - install: - composer install script: - - ./bin/phpunit --configuration tests/phpunit.xml.dist - - ./bin/sabre-cs-fixer fix . --dry-run --diff + - ./bin/phpunit --configuration tests/phpunit.xml.dist --coverage-clover=coverage.xml + +after_success: +- bash <(curl -s https://codecov.io/bash) diff --git a/vendor/sabre/xml/CHANGELOG.md b/vendor/sabre/xml/CHANGELOG.md index faeba20e5..1ad830124 100644 --- a/vendor/sabre/xml/CHANGELOG.md +++ b/vendor/sabre/xml/CHANGELOG.md @@ -1,11 +1,38 @@ ChangeLog ========= -1.5.1 (2019-01-09) +2.1.3 (2019-08-14) +------------------ + +* #166: Throw exception when empty inputs found + +2.1.2 (2019-01-09) ------------------ * #161: Prevent infinite loop on empty xml elements +2.1.1 (2018-10-09) +------------------ + +* #149: Properly detect xml parse errors in `parseCurrentElement()` edge-cases + + +2.1.0 (2018-02-08) +------------------ + +* #112: Added a `mixedContent` deserializer function, which might be useful + if you're parsing HTML-like documents with elements that contain both text + and other elements as siblings. (@staabm). + + +2.0.0 (2016-11-15) +------------------ + +* Now requires PHP 7. +* Uses typehints everywhere. +* Fixed some minor strict typing-related issues. +* Removed workaround for PHP bug [64230](https://bugs.php.net/bug.php?id=64230). + 1.5.0 (2016-10-09) ------------------ diff --git a/vendor/sabre/xml/README.md b/vendor/sabre/xml/README.md index e6fc4db5f..55af24fc6 100644 --- a/vendor/sabre/xml/README.md +++ b/vendor/sabre/xml/README.md @@ -1,7 +1,7 @@ sabre/xml ========= -[![Build Status](https://secure.travis-ci.org/fruux/sabre-xml.svg?branch=master)](http://travis-ci.org/fruux/sabre-xml) +[![Build Status](https://secure.travis-ci.org/sabre-io/xml.svg?branch=master)](http://travis-ci.org/sabre-io/xml) The sabre/xml library is a specialized XML reader and writer. diff --git a/vendor/sabre/xml/composer.json b/vendor/sabre/xml/composer.json index 1b5760393..c782dbc5e 100644 --- a/vendor/sabre/xml/composer.json +++ b/vendor/sabre/xml/composer.json @@ -5,7 +5,7 @@ "homepage" : "https://sabre.io/xml/", "license" : "BSD-3-Clause", "require" : { - "php" : ">=5.5.5", + "php" : ">=7.0", "ext-xmlwriter" : "*", "ext-xmlreader" : "*", "ext-dom" : "*", @@ -44,8 +44,7 @@ } }, "require-dev": { - "sabre/cs": "~1.0.0", - "phpunit/phpunit" : "~4.8|~5.7" + "phpunit/phpunit" : "^6" }, "config" : { "bin-dir" : "bin/" diff --git a/vendor/sabre/xml/lib/ContextStackTrait.php b/vendor/sabre/xml/lib/ContextStackTrait.php index ee3a3baca..bc770ffad 100644 --- a/vendor/sabre/xml/lib/ContextStackTrait.php +++ b/vendor/sabre/xml/lib/ContextStackTrait.php @@ -1,9 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; /** - * Context Stack + * Context Stack. * * The Context maintains information about a document during either reading or * writing. @@ -19,8 +21,8 @@ namespace Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -trait ContextStackTrait { - +trait ContextStackTrait +{ /** * This is the element map. It contains a list of XML elements (in clark * notation) as keys and PHP class names as values. @@ -90,34 +92,27 @@ trait ContextStackTrait { * This allows you to safely modify the elementMap, contextUri or * namespaceMap. After you're done, you can restore the old data again * with popContext. - * - * @return null */ - function pushContext() { - + public function pushContext() + { $this->contextStack[] = [ $this->elementMap, $this->contextUri, $this->namespaceMap, - $this->classMap + $this->classMap, ]; - } /** * Restore the previous "context". - * - * @return null */ - function popContext() { - + public function popContext() + { list( $this->elementMap, $this->contextUri, $this->namespaceMap, $this->classMap ) = array_pop($this->contextStack); - } - } diff --git a/vendor/sabre/xml/lib/Deserializer/functions.php b/vendor/sabre/xml/lib/Deserializer/functions.php index 07038d99a..0eff4b7e0 100644 --- a/vendor/sabre/xml/lib/Deserializer/functions.php +++ b/vendor/sabre/xml/lib/Deserializer/functions.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Deserializer; use Sabre\Xml\Reader; @@ -52,17 +54,13 @@ use Sabre\Xml\Reader; * * Attributes will be removed from the top-level elements. If elements with * the same name appear twice in the list, only the last one will be kept. - * - * - * @param Reader $reader - * @param string $namespace - * @return array */ -function keyValue(Reader $reader, $namespace = null) { - +function keyValue(Reader $reader, string $namespace = null): array +{ // If there's no children, we don't do anything. if ($reader->isEmptyElement) { $reader->next(); + return []; } @@ -81,9 +79,8 @@ function keyValue(Reader $reader, $namespace = null) { $values = []; do { - - if ($reader->nodeType === Reader::ELEMENT) { - if ($namespace !== null && $reader->namespaceURI === $namespace) { + if (Reader::ELEMENT === $reader->nodeType) { + if (null !== $namespace && $reader->namespaceURI === $namespace) { $values[$reader->localName] = $reader->parseCurrentElement()['value']; } else { $clark = $reader->getClark(); @@ -94,12 +91,11 @@ function keyValue(Reader $reader, $namespace = null) { break; } } - } while ($reader->nodeType !== Reader::END_ELEMENT); + } while (Reader::END_ELEMENT !== $reader->nodeType); $reader->read(); return $values; - } /** @@ -146,15 +142,14 @@ function keyValue(Reader $reader, $namespace = null) { * "elem5", * ]; * - * @param Reader $reader - * @param string $namespace * @return string[] */ -function enum(Reader $reader, $namespace = null) { - +function enum(Reader $reader, string $namespace = null): array +{ // If there's no children, we don't do anything. if ($reader->isEmptyElement) { $reader->next(); + return []; } if (!$reader->read()) { @@ -172,8 +167,7 @@ function enum(Reader $reader, $namespace = null) { $values = []; do { - - if ($reader->nodeType !== Reader::ELEMENT) { + if (Reader::ELEMENT !== $reader->nodeType) { continue; } if (!is_null($namespace) && $namespace === $reader->namespaceURI) { @@ -181,12 +175,11 @@ function enum(Reader $reader, $namespace = null) { } else { $values[] = $reader->getClark(); } - } while ($reader->depth >= $currentDepth && $reader->next()); $reader->next(); - return $values; + return $values; } /** @@ -196,16 +189,14 @@ function enum(Reader $reader, $namespace = null) { * This is primarily used by the mapValueObject function from the Service * class, but it can also easily be used for more specific situations. * - * @param Reader $reader - * @param string $className - * @param string $namespace * @return object */ -function valueObject(Reader $reader, $className, $namespace) { - +function valueObject(Reader $reader, string $className, string $namespace) +{ $valueObject = new $className(); if ($reader->isEmptyElement) { $reader->next(); + return $valueObject; } @@ -213,9 +204,7 @@ function valueObject(Reader $reader, $className, $namespace) { $reader->read(); do { - - if ($reader->nodeType === Reader::ELEMENT && $reader->namespaceURI == $namespace) { - + if (Reader::ELEMENT === $reader->nodeType && $reader->namespaceURI == $namespace) { if (property_exists($valueObject, $reader->localName)) { if (is_array($defaultProperties[$reader->localName])) { $valueObject->{$reader->localName}[] = $reader->parseCurrentElement()['value']; @@ -231,16 +220,16 @@ function valueObject(Reader $reader, $className, $namespace) { break; } } - } while ($reader->nodeType !== Reader::END_ELEMENT); + } while (Reader::END_ELEMENT !== $reader->nodeType); $reader->read(); - return $valueObject; + return $valueObject; } /** * This deserializer helps you deserialize xml structures that look like - * this: + * this:. * * <collection> * <item>...</item> @@ -248,7 +237,7 @@ function valueObject(Reader $reader, $className, $namespace) { * <item>...</item> * </collection> * - * Many XML documents use patterns like that, and this deserializer + * Many XML documents use patterns like that, and this deserializer * allow you to get all the 'items' as an array. * * In that previous example, you would register the deserializer as such: @@ -259,25 +248,71 @@ function valueObject(Reader $reader, $className, $namespace) { * * The repeatingElements deserializer simply returns everything as an array. * - * @param Reader $reader - * @param string $childElementName Element name in clark-notation - * @return array + * $childElementName must either be a a clark-notation element name, or if no + * namespace is used, the bare element name. */ -function repeatingElements(Reader $reader, $childElementName) { - - if ($childElementName[0] !== '{') { - $childElementName = '{}' . $childElementName; +function repeatingElements(Reader $reader, string $childElementName): array +{ + if ('{' !== $childElementName[0]) { + $childElementName = '{}'.$childElementName; } $result = []; foreach ($reader->parseGetElements() as $element) { - if ($element['name'] === $childElementName) { $result[] = $element['value']; } - } return $result; +} + +/** + * This deserializer helps you to deserialize structures which contain mixed content like this:. + * + * <p>some text <extref>and a inline tag</extref>and even more text</p> + * + * The above example will return + * + * [ + * 'some text', + * [ + * 'name' => '{}extref', + * 'value' => 'and a inline tag', + * 'attributes' => [] + * ], + * 'and even more text' + * ] + * + * In strict XML documents you wont find this kind of markup but in html this is a quite common pattern. + */ +function mixedContent(Reader $reader): array +{ + // If there's no children, we don't do anything. + if ($reader->isEmptyElement) { + $reader->next(); + + return []; + } + + $previousDepth = $reader->depth; + + $content = []; + $reader->read(); + while (true) { + if (Reader::ELEMENT == $reader->nodeType) { + $content[] = $reader->parseCurrentElement(); + } elseif ($reader->depth >= $previousDepth && in_array($reader->nodeType, [Reader::TEXT, Reader::CDATA, Reader::WHITESPACE])) { + $content[] = $reader->value; + $reader->read(); + } elseif (Reader::END_ELEMENT == $reader->nodeType) { + // Ensuring we are moving the cursor after the end element. + $reader->read(); + break; + } else { + $reader->read(); + } + } + return $content; } diff --git a/vendor/sabre/xml/lib/Element.php b/vendor/sabre/xml/lib/Element.php index dd89c5888..559eb54ea 100644 --- a/vendor/sabre/xml/lib/Element.php +++ b/vendor/sabre/xml/lib/Element.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; /** @@ -15,6 +17,6 @@ namespace Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface Element extends XmlSerializable, XmlDeserializable { - +interface Element extends XmlSerializable, XmlDeserializable +{ } diff --git a/vendor/sabre/xml/lib/Element/Base.php b/vendor/sabre/xml/lib/Element/Base.php index f59ba49a0..a1ce7ea5a 100644 --- a/vendor/sabre/xml/lib/Element/Base.php +++ b/vendor/sabre/xml/lib/Element/Base.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Element; use Sabre\Xml; @@ -15,8 +17,8 @@ use Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Base implements Xml\Element { - +class Base implements Xml\Element +{ /** * PHP value to serialize. * @@ -25,14 +27,11 @@ class Base implements Xml\Element { protected $value; /** - * Constructor - * - * @param mixed $value + * Constructor. */ - function __construct($value = null) { - + public function __construct($value = null) + { $this->value = $value; - } /** @@ -50,14 +49,10 @@ class Base implements Xml\Element { * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. - * - * @param Writer $writer - * @return void */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { $writer->write($this->value); - } /** @@ -78,14 +73,12 @@ class Base implements Xml\Element { * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * - * @param Xml\Reader $reader * @return mixed */ - static function xmlDeserialize(Xml\Reader $reader) { - + public static function xmlDeserialize(Xml\Reader $reader) + { $subTree = $reader->parseInnerTree(); - return $subTree; + return $subTree; } - } diff --git a/vendor/sabre/xml/lib/Element/Cdata.php b/vendor/sabre/xml/lib/Element/Cdata.php index 5f42c4c6e..61d3213ff 100644 --- a/vendor/sabre/xml/lib/Element/Cdata.php +++ b/vendor/sabre/xml/lib/Element/Cdata.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Element; use Sabre\Xml; @@ -27,11 +29,9 @@ class Cdata implements Xml\XmlSerializable protected $value; /** - * Constructor - * - * @param string $value + * Constructor. */ - function __construct($value) + public function __construct(string $value) { $this->value = $value; } @@ -51,14 +51,9 @@ class Cdata implements Xml\XmlSerializable * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. - * - * @param Writer $writer - * @return void */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { $writer->writeCData($this->value); - } - } diff --git a/vendor/sabre/xml/lib/Element/Elements.php b/vendor/sabre/xml/lib/Element/Elements.php index 9eefd1bf8..e51179833 100644 --- a/vendor/sabre/xml/lib/Element/Elements.php +++ b/vendor/sabre/xml/lib/Element/Elements.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Element; use Sabre\Xml; @@ -8,7 +10,7 @@ use Sabre\Xml\Serializer; /** * 'Elements' is a simple list of elements, without values or attributes. - * For example, Elements will parse: + * For example, Elements will parse:. * * <?xml version="1.0"?> * <s:root xmlns:s="http://sabredav.org/ns"> @@ -33,24 +35,21 @@ use Sabre\Xml\Serializer; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Elements implements Xml\Element { - +class Elements implements Xml\Element +{ /** - * Value to serialize + * Value to serialize. * * @var array */ protected $value; /** - * Constructor - * - * @param array $value + * Constructor. */ - function __construct(array $value = []) { - + public function __construct(array $value = []) + { $this->value = $value; - } /** @@ -68,14 +67,10 @@ class Elements implements Xml\Element { * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. - * - * @param Writer $writer - * @return void */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { Serializer\enum($writer, $this->value); - } /** @@ -96,13 +91,10 @@ class Elements implements Xml\Element { * $reader->parseSubTree() will parse the entire sub-tree, and advance to * the next element. * - * @param Xml\Reader $reader * @return mixed */ - static function xmlDeserialize(Xml\Reader $reader) { - + public static function xmlDeserialize(Xml\Reader $reader) + { return Deserializer\enum($reader); - } - } diff --git a/vendor/sabre/xml/lib/Element/KeyValue.php b/vendor/sabre/xml/lib/Element/KeyValue.php index 7ce53bf4c..dacee000a 100644 --- a/vendor/sabre/xml/lib/Element/KeyValue.php +++ b/vendor/sabre/xml/lib/Element/KeyValue.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Element; use Sabre\Xml; @@ -33,24 +35,21 @@ use Sabre\Xml\Deserializer; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class KeyValue implements Xml\Element { - +class KeyValue implements Xml\Element +{ /** - * Value to serialize + * Value to serialize. * * @var array */ protected $value; /** - * Constructor - * - * @param array $value + * Constructor. */ - function __construct(array $value = []) { - + public function __construct(array $value = []) + { $this->value = $value; - } /** @@ -68,14 +67,10 @@ class KeyValue implements Xml\Element { * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. - * - * @param Writer $writer - * @return void */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { $writer->write($this->value); - } /** @@ -96,13 +91,10 @@ class KeyValue implements Xml\Element { * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * - * @param Xml\Reader $reader * @return mixed */ - static function xmlDeserialize(Xml\Reader $reader) { - + public static function xmlDeserialize(Xml\Reader $reader) + { return Deserializer\keyValue($reader); - } - } diff --git a/vendor/sabre/xml/lib/Element/Uri.php b/vendor/sabre/xml/lib/Element/Uri.php index 8f45c0027..898a26457 100644 --- a/vendor/sabre/xml/lib/Element/Uri.php +++ b/vendor/sabre/xml/lib/Element/Uri.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Element; use Sabre\Xml; @@ -20,8 +22,8 @@ use Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Uri implements Xml\Element { - +class Uri implements Xml\Element +{ /** * Uri element value. * @@ -30,11 +32,11 @@ class Uri implements Xml\Element { protected $value; /** - * Constructor + * Constructor. * * @param string $value */ - function __construct($value) + public function __construct($value) { $this->value = $value; } @@ -54,19 +56,15 @@ class Uri implements Xml\Element { * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. - * - * @param Writer $writer - * @return void */ - function xmlSerialize(Xml\Writer $writer) { - + public function xmlSerialize(Xml\Writer $writer) + { $writer->text( \Sabre\Uri\resolve( $writer->contextUri, $this->value ) ); - } /** @@ -87,18 +85,15 @@ class Uri implements Xml\Element { * $reader->parseSubTree() will parse the entire sub-tree, and advance to * the next element. * - * @param Xml\Reader $reader * @return mixed */ - static function xmlDeserialize(Xml\Reader $reader) { - + public static function xmlDeserialize(Xml\Reader $reader) + { return new self( \Sabre\Uri\resolve( $reader->contextUri, $reader->readText() ) ); - } - } diff --git a/vendor/sabre/xml/lib/Element/XmlFragment.php b/vendor/sabre/xml/lib/Element/XmlFragment.php index 642241ca4..413e0f106 100644 --- a/vendor/sabre/xml/lib/Element/XmlFragment.php +++ b/vendor/sabre/xml/lib/Element/XmlFragment.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Element; use Sabre\Xml\Element; @@ -20,20 +22,29 @@ use Sabre\Xml\Writer; * 3. It will have all the relevant xmlns attributes. * 4. It may not have a root element. */ -class XmlFragment implements Element { - +class XmlFragment implements Element +{ + /** + * The inner XML value. + * + * @var string + */ protected $xml; - function __construct($xml) { - + /** + * Constructor. + */ + public function __construct(string $xml) + { $this->xml = $xml; - } - function getXml() { - + /** + * Returns the inner XML document. + */ + public function getXml(): string + { return $this->xml; - } /** @@ -51,12 +62,9 @@ class XmlFragment implements Element { * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. - * - * @param Writer $writer - * @return void */ - function xmlSerialize(Writer $writer) { - + public function xmlSerialize(Writer $writer) + { $reader = new Reader(); // Wrapping the xml in a container, so root-less values can still be @@ -69,28 +77,26 @@ XML; $reader->xml($xml); while ($reader->read()) { - if ($reader->depth < 1) { // Skipping the root node. continue; } switch ($reader->nodeType) { - - case Reader::ELEMENT : + case Reader::ELEMENT: $writer->startElement( $reader->getClark() ); $empty = $reader->isEmptyElement; while ($reader->moveToNextAttribute()) { switch ($reader->namespaceURI) { - case '' : + case '': $writer->writeAttribute($reader->localName, $reader->value); break; - case 'http://www.w3.org/2000/xmlns/' : + case 'http://www.w3.org/2000/xmlns/': // Skip namespace declarations break; - default : + default: $writer->writeAttribute($reader->getClark(), $reader->value); break; } @@ -99,20 +105,17 @@ XML; $writer->endElement(); } break; - case Reader::CDATA : - case Reader::TEXT : + case Reader::CDATA: + case Reader::TEXT: $writer->text( $reader->value ); break; - case Reader::END_ELEMENT : + case Reader::END_ELEMENT: $writer->endElement(); break; - } - } - } /** @@ -133,15 +136,13 @@ XML; * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * - * @param Reader $reader * @return mixed */ - static function xmlDeserialize(Reader $reader) { - + public static function xmlDeserialize(Reader $reader) + { $result = new self($reader->readInnerXml()); $reader->next(); - return $result; + return $result; } - } diff --git a/vendor/sabre/xml/lib/LibXMLException.php b/vendor/sabre/xml/lib/LibXMLException.php index f0190eb51..4701c304a 100644 --- a/vendor/sabre/xml/lib/LibXMLException.php +++ b/vendor/sabre/xml/lib/LibXMLException.php @@ -1,9 +1,11 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; -use - LibXMLError; +use LibXMLError; +use Throwable; /** * This exception is thrown when the Readers runs into a parsing error. @@ -14,12 +16,12 @@ use * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class LibXMLException extends ParseException { - +class LibXMLException extends ParseException +{ /** * The error list. * - * @var LibXMLError[] + * @var []LibXMLError */ protected $errors; @@ -28,26 +30,21 @@ class LibXMLException extends ParseException { * * You should pass a list of LibXMLError objects in its constructor. * - * @param LibXMLError[] $errors - * @param int $code - * @param Exception $previousException + * @param []LibXMLError $errors + * @param int $code + * @param Throwable $previousException */ - function __construct(array $errors, $code = null, Exception $previousException = null) { - + public function __construct(array $errors, int $code = 0, Throwable $previousException = null) + { $this->errors = $errors; - parent::__construct($errors[0]->message . ' on line ' . $errors[0]->line . ', column ' . $errors[0]->column, $code, $previousException); - + parent::__construct($errors[0]->message.' on line '.$errors[0]->line.', column '.$errors[0]->column, $code, $previousException); } /** - * Returns the LibXML errors - * - * @return void + * Returns the LibXML errors. */ - function getErrors() { - + public function getErrors(): array + { return $this->errors; - } - } diff --git a/vendor/sabre/xml/lib/ParseException.php b/vendor/sabre/xml/lib/ParseException.php index 3a6883b2f..e237b8732 100644 --- a/vendor/sabre/xml/lib/ParseException.php +++ b/vendor/sabre/xml/lib/ParseException.php @@ -1,9 +1,10 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; -use - Exception; +use Exception; /** * This is a base exception for any exception related to parsing xml files. @@ -12,6 +13,6 @@ use * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class ParseException extends Exception { - +class ParseException extends Exception +{ } diff --git a/vendor/sabre/xml/lib/Reader.php b/vendor/sabre/xml/lib/Reader.php index 92e5dba96..37e0c86dd 100644 --- a/vendor/sabre/xml/lib/Reader.php +++ b/vendor/sabre/xml/lib/Reader.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; use XMLReader; @@ -17,8 +19,8 @@ use XMLReader; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Reader extends XMLReader { - +class Reader extends XMLReader +{ use ContextStackTrait; /** @@ -31,14 +33,13 @@ class Reader extends XMLReader { * * @return string|null */ - function getClark() { - - if (! $this->localName) { + public function getClark() + { + if (!$this->localName) { return null; } - return '{' . $this->namespaceURI . '}' . $this->localName; - + return '{'.$this->namespaceURI.'}'.$this->localName; } /** @@ -51,31 +52,30 @@ class Reader extends XMLReader { * * This function will also disable the standard libxml error handler (which * usually just results in PHP errors), and throw exceptions instead. - * - * @return array */ - function parse() { - + public function parse(): array + { $previousEntityState = libxml_disable_entity_loader(true); $previousSetting = libxml_use_internal_errors(true); try { - - // Really sorry about the silence operator, seems like I have no - // choice. See: - // - // https://bugs.php.net/bug.php?id=64230 - while ($this->nodeType !== self::ELEMENT && @$this->read()) { - // noop + while (self::ELEMENT !== $this->nodeType) { + if (!$this->read()) { + $errors = libxml_get_errors(); + libxml_clear_errors(); + if ($errors) { + throw new LibXMLException($errors); + } + } } $result = $this->parseCurrentElement(); + // last line of defense in case errors did occur above $errors = libxml_get_errors(); libxml_clear_errors(); if ($errors) { throw new LibXMLException($errors); } - } finally { libxml_use_internal_errors($previousSetting); libxml_disable_entity_loader($previousEntityState); @@ -84,8 +84,6 @@ class Reader extends XMLReader { return $result; } - - /** * parseGetElements parses everything in the current sub-tree, * and returns a an array of elements. @@ -98,18 +96,15 @@ class Reader extends XMLReader { * * If the $elementMap argument is specified, the existing elementMap will * be overridden while parsing the tree, and restored after this process. - * - * @param array $elementMap - * @return array */ - function parseGetElements(array $elementMap = null) { - + public function parseGetElements(array $elementMap = null): array + { $result = $this->parseInnerTree($elementMap); if (!is_array($result)) { return []; } - return $result; + return $result; } /** @@ -123,17 +118,17 @@ class Reader extends XMLReader { * If the $elementMap argument is specified, the existing elementMap will * be overridden while parsing the tree, and restored after this process. * - * @param array $elementMap * @return array|string */ - function parseInnerTree(array $elementMap = null) { - + public function parseInnerTree(array $elementMap = null) + { $text = null; $elements = []; - if ($this->nodeType === self::ELEMENT && $this->isEmptyElement) { + if (self::ELEMENT === $this->nodeType && $this->isEmptyElement) { // Easy! $this->next(); + return null; } @@ -143,12 +138,7 @@ class Reader extends XMLReader { } try { - - // Really sorry about the silence operator, seems like I have no - // choice. See: - // - // https://bugs.php.net/bug.php?id=64230 - if (!@$this->read()) { + if (!$this->read()) { $errors = libxml_get_errors(); libxml_clear_errors(); if ($errors) { @@ -158,9 +148,7 @@ class Reader extends XMLReader { } while (true) { - if (!$this->isValid()) { - $errors = libxml_get_errors(); if ($errors) { @@ -170,46 +158,40 @@ class Reader extends XMLReader { } switch ($this->nodeType) { - case self::ELEMENT : + case self::ELEMENT: $elements[] = $this->parseCurrentElement(); break; - case self::TEXT : - case self::CDATA : + case self::TEXT: + case self::CDATA: $text .= $this->value; $this->read(); break; - case self::END_ELEMENT : + case self::END_ELEMENT: // Ensuring we are moving the cursor after the end element. $this->read(); break 2; - case self::NONE : + case self::NONE: throw new ParseException('We hit the end of the document prematurely. This likely means that some parser "eats" too many elements. Do not attempt to continue parsing.'); - default : + default: // Advance to the next element $this->read(); break; } - } - } finally { - if (!is_null($elementMap)) { $this->popContext(); } - } - return ($elements ? $elements : $text); + return $elements ? $elements : $text; } /** * Reads all text below the current element, and returns this as a string. - * - * @return string */ - function readText() { - + public function readText(): string + { $result = ''; $previousDepth = $this->depth; @@ -218,8 +200,8 @@ class Reader extends XMLReader { $result .= $this->value; } } - return $result; + return $result; } /** @@ -229,11 +211,9 @@ class Reader extends XMLReader { * * name - A clark-notation XML element name. * * value - The parsed value. * * attributes - A key-value list of attributes. - * - * @return array */ - function parseCurrentElement() { - + public function parseCurrentElement(): array + { $name = $this->getClark(); $attributes = []; @@ -248,13 +228,12 @@ class Reader extends XMLReader { ); return [ - 'name' => $name, - 'value' => $value, + 'name' => $name, + 'value' => $value, 'attributes' => $attributes, ]; } - /** * Grabs all the attributes from the current element, and returns them as a * key-value array. @@ -262,24 +241,20 @@ class Reader extends XMLReader { * If the attributes are part of the same namespace, they will simply be * short keys. If they are defined on a different namespace, the attribute * name will be retured in clark-notation. - * - * @return array */ - function parseAttributes() { - + public function parseAttributes(): array + { $attributes = []; while ($this->moveToNextAttribute()) { if ($this->namespaceURI) { - // Ignoring 'xmlns', it doesn't make any sense. - if ($this->namespaceURI === 'http://www.w3.org/2000/xmlns/') { + if ('http://www.w3.org/2000/xmlns/' === $this->namespaceURI) { continue; } $name = $this->getClark(); $attributes[$name] = $this->value; - } else { $attributes[$this->localName] = $this->value; } @@ -287,21 +262,16 @@ class Reader extends XMLReader { $this->moveToElement(); return $attributes; - } /** * Returns the function that should be used to parse the element identified * by it's clark-notation name. - * - * @param string $name - * @return callable */ - function getDeserializerForElementName($name) { - - + public function getDeserializerForElementName(string $name): callable + { if (!array_key_exists($name, $this->elementMap)) { - if (substr($name, 0, 2) == '{}' && array_key_exists(substr($name, 2), $this->elementMap)) { + if ('{}' == substr($name, 0, 2) && array_key_exists(substr($name, 2), $this->elementMap)) { $name = substr($name, 2); } else { return ['Sabre\\Xml\\Element\\Base', 'xmlDeserialize']; @@ -318,13 +288,11 @@ class Reader extends XMLReader { } $type = gettype($deserializer); - if ($type === 'string') { - $type .= ' (' . $deserializer . ')'; - } elseif ($type === 'object') { - $type .= ' (' . get_class($deserializer) . ')'; + if ('string' === $type) { + $type .= ' ('.$deserializer.')'; + } elseif ('object' === $type) { + $type .= ' ('.get_class($deserializer).')'; } - throw new \LogicException('Could not use this type as a deserializer: ' . $type . ' for element: ' . $name); - + throw new \LogicException('Could not use this type as a deserializer: '.$type.' for element: '.$name); } - } diff --git a/vendor/sabre/xml/lib/Serializer/functions.php b/vendor/sabre/xml/lib/Serializer/functions.php index 21448017d..3694d9791 100644 --- a/vendor/sabre/xml/lib/Serializer/functions.php +++ b/vendor/sabre/xml/lib/Serializer/functions.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml\Serializer; use InvalidArgumentException; @@ -34,12 +36,10 @@ use Sabre\Xml\XmlSerializable; * <s:elem4>content</s:elem4> * <s:elem5 attr="val" /> * - * @param Writer $writer * @param string[] $values - * @return void */ -function enum(Writer $writer, array $values) { - +function enum(Writer $writer, array $values) +{ foreach ($values as $value) { $writer->writeElement($value); } @@ -54,29 +54,26 @@ function enum(Writer $writer, array $values) { * Values that are set to null or an empty array are not serialized. To * serialize empty properties, you must specify them as an empty string. * - * @param Writer $writer * @param object $valueObject - * @param string $namespace */ -function valueObject(Writer $writer, $valueObject, $namespace) { +function valueObject(Writer $writer, $valueObject, string $namespace) +{ foreach (get_object_vars($valueObject) as $key => $val) { if (is_array($val)) { // If $val is an array, it has a special meaning. We need to // generate one child element for each item in $val foreach ($val as $child) { - $writer->writeElement('{' . $namespace . '}' . $key, $child); + $writer->writeElement('{'.$namespace.'}'.$key, $child); } - - } elseif ($val !== null) { - $writer->writeElement('{' . $namespace . '}' . $key, $val); + } elseif (null !== $val) { + $writer->writeElement('{'.$namespace.'}'.$key, $val); } } } - /** * This serializer helps you serialize xml structures that look like - * this: + * this:. * * <collection> * <item>...</item> @@ -88,18 +85,12 @@ function valueObject(Writer $writer, $valueObject, $namespace) { * and this could be called like this: * * repeatingElements($writer, $items, '{}item'); - * - * @param Writer $writer - * @param array $items A list of items sabre/xml can serialize. - * @param string $childElementName Element name in clark-notation - * @return void */ -function repeatingElements(Writer $writer, array $items, $childElementName) { - +function repeatingElements(Writer $writer, array $items, string $childElementName) +{ foreach ($items as $item) { $writer->writeElement($childElementName, $item); } - } /** @@ -157,38 +148,25 @@ function repeatingElements(Writer $writer, array $items, $childElementName) { * * You can even mix the two array syntaxes. * - * @param Writer $writer * @param string|int|float|bool|array|object - * @return void */ -function standardSerializer(Writer $writer, $value) { - +function standardSerializer(Writer $writer, $value) +{ if (is_scalar($value)) { - // String, integer, float, boolean - $writer->text($value); - + $writer->text((string) $value); } elseif ($value instanceof XmlSerializable) { - // XmlSerializable classes or Element classes. $value->xmlSerialize($writer); - } elseif (is_object($value) && isset($writer->classMap[get_class($value)])) { - // It's an object which class appears in the classmap. $writer->classMap[get_class($value)]($writer, $value); - } elseif (is_callable($value)) { - // A callback $value($writer); - } elseif (is_null($value)) { - // nothing! - } elseif (is_array($value) && array_key_exists('name', $value)) { - // if the array had a 'name' element, we assume that this array // describes a 'name' and optionally 'attributes' and 'value'. @@ -200,19 +178,13 @@ function standardSerializer(Writer $writer, $value) { $writer->writeAttributes($attributes); $writer->write($value); $writer->endElement(); - } elseif (is_array($value)) { - foreach ($value as $name => $item) { - if (is_int($name)) { - // This item has a numeric index. We just loop through the // array and throw it back in the writer. standardSerializer($writer, $item); - } elseif (is_string($name) && is_array($item) && isset($item['attributes'])) { - // The key is used for a name, but $item has 'attributes' and // possibly 'value' $writer->startElement($name); @@ -221,29 +193,18 @@ function standardSerializer(Writer $writer, $value) { $writer->write($item['value']); } $writer->endElement(); - } elseif (is_string($name)) { - // This was a plain key-value array. $writer->startElement($name); $writer->write($item); $writer->endElement(); - } else { - - throw new InvalidArgumentException('The writer does not know how to serialize arrays with keys of type: ' . gettype($name)); - + throw new InvalidArgumentException('The writer does not know how to serialize arrays with keys of type: '.gettype($name)); } } - } elseif (is_object($value)) { - - throw new InvalidArgumentException('The writer cannot serialize objects of class: ' . get_class($value)); - + throw new InvalidArgumentException('The writer cannot serialize objects of class: '.get_class($value)); } else { - - throw new InvalidArgumentException('The writer cannot serialize values of type: ' . gettype($value)); - + throw new InvalidArgumentException('The writer cannot serialize values of type: '.gettype($value)); } - } diff --git a/vendor/sabre/xml/lib/Service.php b/vendor/sabre/xml/lib/Service.php index acea94ea9..882b2dc2c 100644 --- a/vendor/sabre/xml/lib/Service.php +++ b/vendor/sabre/xml/lib/Service.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; /** @@ -13,8 +15,8 @@ namespace Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Service { - +class Service +{ /** * This is the element map. It contains a list of XML elements (in clark * notation) as keys and PHP class names as values. @@ -59,30 +61,26 @@ class Service { public $classMap = []; /** - * Returns a fresh XML Reader - * - * @return Reader + * Returns a fresh XML Reader. */ - function getReader() { - + public function getReader(): Reader + { $r = new Reader(); $r->elementMap = $this->elementMap; - return $r; + return $r; } /** - * Returns a fresh xml writer - * - * @return Writer + * Returns a fresh xml writer. */ - function getWriter() { - + public function getWriter(): Writer + { $w = new Writer(); $w->namespaceMap = $this->namespaceMap; $w->classMap = $this->classMap; - return $w; + return $w; } /** @@ -99,17 +97,22 @@ class Service { * with the root element name of the document. * * @param string|resource $input - * @param string|null $contextUri - * @param string|null $rootElementName + * * @throws ParseException + * * @return array|object|string */ - function parse($input, $contextUri = null, &$rootElementName = null) { - + public function parse($input, string $contextUri = null, string &$rootElementName = null) + { if (is_resource($input)) { // Unfortunately the XMLReader doesn't support streams. When it // does, we can optimize this. $input = stream_get_contents($input); + + // If input is an empty string, then its safe to throw exception + if ('' === $input) { + throw new ParseException('The input element to parse is empty. Do not attempt to parse'); + } } $r = $this->getReader(); $r->contextUri = $contextUri; @@ -117,8 +120,8 @@ class Service { $result = $r->parse(); $rootElementName = $result['name']; - return $result['value']; + return $result['value']; } /** @@ -137,33 +140,42 @@ class Service { * * @param string|string[] $rootElementName * @param string|resource $input - * @param string|null $contextUri + * @param string|null $contextUri + * * @throws ParseException + * * @return array|object|string */ - function expect($rootElementName, $input, $contextUri = null) { - + public function expect($rootElementName, $input, string $contextUri = null) + { if (is_resource($input)) { // Unfortunately the XMLReader doesn't support streams. When it // does, we can optimize this. $input = stream_get_contents($input); + + // If input is empty string, then its safe to throw exception + if ('' === $input) { + throw new ParseException('The input element to parse is empty. Do not attempt to parse'); + } } $r = $this->getReader(); $r->contextUri = $contextUri; $r->xml($input); - $rootElementName = (array)$rootElementName; + $rootElementName = (array) $rootElementName; foreach ($rootElementName as &$rEl) { - if ($rEl[0] !== '{') $rEl = '{}' . $rEl; + if ('{' !== $rEl[0]) { + $rEl = '{}'.$rEl; + } } $result = $r->parse(); if (!in_array($result['name'], $rootElementName, true)) { - throw new ParseException('Expected ' . implode(' or ', (array)$rootElementName) . ' but received ' . $result['name'] . ' as the root element'); + throw new ParseException('Expected '.implode(' or ', (array) $rootElementName).' but received '.$result['name'].' as the root element'); } - return $result['value']; + return $result['value']; } /** @@ -180,20 +192,20 @@ class Service { * This allows an implementor to easily create URI's relative to the root * of the domain. * - * @param string $rootElementName * @param string|array|XmlSerializable $value - * @param string|null $contextUri + * + * @return string */ - function write($rootElementName, $value, $contextUri = null) { - + public function write(string $rootElementName, $value, string $contextUri = null) + { $w = $this->getWriter(); $w->openMemory(); $w->contextUri = $contextUri; $w->setIndent(true); $w->startDocument(); $w->writeElement($rootElementName, $value); - return $w->outputMemory(); + return $w->outputMemory(); } /** @@ -219,18 +231,15 @@ class Service { * These can easily be mapped by calling: * * $service->mapValueObject('{http://example.org}author', 'Author'); - * - * @param string $elementName - * @param object $className - * @return void */ - function mapValueObject($elementName, $className) { + public function mapValueObject(string $elementName, string $className) + { list($namespace) = self::parseClarkNotation($elementName); - $this->elementMap[$elementName] = function(Reader $reader) use ($className, $namespace) { + $this->elementMap[$elementName] = function (Reader $reader) use ($className, $namespace) { return \Sabre\Xml\Deserializer\valueObject($reader, $className, $namespace); }; - $this->classMap[$className] = function(Writer $writer, $valueObject) use ($namespace) { + $this->classMap[$className] = function (Writer $writer, $valueObject) use ($namespace) { return \Sabre\Xml\Serializer\valueObject($writer, $valueObject, $namespace); }; $this->valueObjectMap[$className] = $elementName; @@ -246,20 +255,20 @@ class Service { * mapValueObject(). * * @param object $object - * @param string $contextUri - * @return void + * + * @throws \InvalidArgumentException */ - function writeValueObject($object, $contextUri = null) { - + public function writeValueObject($object, string $contextUri = null) + { if (!isset($this->valueObjectMap[get_class($object)])) { - throw new \InvalidArgumentException('"' . get_class($object) . '" is not a registered value object class. Register your class with mapValueObject.'); + throw new \InvalidArgumentException('"'.get_class($object).'" is not a registered value object class. Register your class with mapValueObject.'); } + return $this->write( $this->valueObjectMap[get_class($object)], $object, $contextUri ); - } /** @@ -268,22 +277,20 @@ class Service { * * If the string was invalid, it will throw an InvalidArgumentException. * - * @param string $str - * @throws InvalidArgumentException - * @return array + * @throws \InvalidArgumentException */ - static function parseClarkNotation($str) { + public static function parseClarkNotation(string $str): array + { static $cache = []; if (!isset($cache[$str])) { - if (!preg_match('/^{([^}]*)}(.*)$/', $str, $matches)) { - throw new \InvalidArgumentException('\'' . $str . '\' is not a valid clark-notation formatted string'); + throw new \InvalidArgumentException('\''.$str.'\' is not a valid clark-notation formatted string'); } $cache[$str] = [ $matches[1], - $matches[2] + $matches[2], ]; } @@ -294,5 +301,4 @@ class Service { * A list of classes and which XML elements they map to. */ protected $valueObjectMap = []; - } diff --git a/vendor/sabre/xml/lib/Version.php b/vendor/sabre/xml/lib/Version.php index 7edb40d67..65706ec42 100644 --- a/vendor/sabre/xml/lib/Version.php +++ b/vendor/sabre/xml/lib/Version.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; /** @@ -9,11 +11,10 @@ namespace Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ */ -class Version { - +class Version +{ /** - * Full version number + * Full version number. */ - const VERSION = '1.5.0'; - + const VERSION = '2.1.1'; } diff --git a/vendor/sabre/xml/lib/Writer.php b/vendor/sabre/xml/lib/Writer.php index 09d4cb321..f5957bbce 100644 --- a/vendor/sabre/xml/lib/Writer.php +++ b/vendor/sabre/xml/lib/Writer.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; use XMLWriter; @@ -28,8 +30,8 @@ use XMLWriter; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -class Writer extends XMLWriter { - +class Writer extends XMLWriter +{ use ContextStackTrait; /** @@ -93,12 +95,10 @@ class Writer extends XMLWriter { * ] * * @param mixed $value - * @return void */ - function write($value) { - + public function write($value) + { Serializer\standardSerializer($this, $value); - } /** @@ -115,52 +115,48 @@ class Writer extends XMLWriter { * * <entry xmlns="http://w3.org/2005/Atom"> * + * Note: this function doesn't have the string typehint, because PHP's + * XMLWriter::startElement doesn't either. + * * @param string $name - * @return bool */ - function startElement($name) { - - if ($name[0] === '{') { - + public function startElement($name): bool + { + if ('{' === $name[0]) { list($namespace, $localName) = Service::parseClarkNotation($name); if (array_key_exists($namespace, $this->namespaceMap)) { $result = $this->startElementNS( - $this->namespaceMap[$namespace] === '' ? null : $this->namespaceMap[$namespace], + '' === $this->namespaceMap[$namespace] ? null : $this->namespaceMap[$namespace], $localName, null ); } else { - // An empty namespace means it's the global namespace. This is // allowed, but it mustn't get a prefix. - if ($namespace === "" || $namespace === null) { + if ('' === $namespace || null === $namespace) { $result = $this->startElement($localName); $this->writeAttribute('xmlns', ''); } else { if (!isset($this->adhocNamespaces[$namespace])) { - $this->adhocNamespaces[$namespace] = 'x' . (count($this->adhocNamespaces) + 1); + $this->adhocNamespaces[$namespace] = 'x'.(count($this->adhocNamespaces) + 1); } $result = $this->startElementNS($this->adhocNamespaces[$namespace], $localName, $namespace); } } - } else { $result = parent::startElement($name); } if (!$this->namespacesWritten) { - foreach ($this->namespaceMap as $namespace => $prefix) { - $this->writeAttribute(($prefix ? 'xmlns:' . $prefix : 'xmlns'), $namespace); + $this->writeAttribute(($prefix ? 'xmlns:'.$prefix : 'xmlns'), $namespace); } $this->namespacesWritten = true; - } return $result; - } /** @@ -182,18 +178,22 @@ class Writer extends XMLWriter { * becomes: * <author xmlns="http://www.w3.org/2005" /><name>Evert Pot</name></author> * - * @param string $name - * @param string $content + * Note: this function doesn't have the string typehint, because PHP's + * XMLWriter::startElement doesn't either. + * + * @param array|string|object|null $content + * * @return bool */ - function writeElement($name, $content = null) { - + public function writeElement($name, $content = null): bool + { $this->startElement($name); if (!is_null($content)) { $this->write($content); } $this->endElement(); + return true; } /** @@ -204,16 +204,12 @@ class Writer extends XMLWriter { * The key is an attribute name. If the key is a 'localName', the current * xml namespace is assumed. If it's a 'clark notation key', this namespace * will be used instead. - * - * @param array $attributes - * @return void */ - function writeAttributes(array $attributes) { - + public function writeAttributes(array $attributes) + { foreach ($attributes as $name => $value) { $this->writeAttribute($name, $value); } - } /** @@ -223,44 +219,41 @@ class Writer extends XMLWriter { * * Returns true when successful. * + * Note: this function doesn't have typehints, because for some reason + * PHP's XMLWriter::writeAttribute doesn't either. + * * @param string $name * @param string $value - * @return bool */ - function writeAttribute($name, $value) { - - if ($name[0] === '{') { - - list( - $namespace, - $localName - ) = Service::parseClarkNotation($name); - - if (array_key_exists($namespace, $this->namespaceMap)) { - // It's an attribute with a namespace we know - $this->writeAttribute( - $this->namespaceMap[$namespace] . ':' . $localName, - $value - ); - } else { - - // We don't know the namespace, we must add it in-line - if (!isset($this->adhocNamespaces[$namespace])) { - $this->adhocNamespaces[$namespace] = 'x' . (count($this->adhocNamespaces) + 1); - } - $this->writeAttributeNS( - $this->adhocNamespaces[$namespace], - $localName, - $namespace, - $value - ); + public function writeAttribute($name, $value): bool + { + if ('{' !== $name[0]) { + return parent::writeAttribute($name, $value); + } - } + list( + $namespace, + $localName + ) = Service::parseClarkNotation($name); + + if (array_key_exists($namespace, $this->namespaceMap)) { + // It's an attribute with a namespace we know + return $this->writeAttribute( + $this->namespaceMap[$namespace].':'.$localName, + $value + ); + } - } else { - return parent::writeAttribute($name, $value); + // We don't know the namespace, we must add it in-line + if (!isset($this->adhocNamespaces[$namespace])) { + $this->adhocNamespaces[$namespace] = 'x'.(count($this->adhocNamespaces) + 1); } + return $this->writeAttributeNS( + $this->adhocNamespaces[$namespace], + $localName, + $namespace, + $value + ); } - } diff --git a/vendor/sabre/xml/lib/XmlDeserializable.php b/vendor/sabre/xml/lib/XmlDeserializable.php index fa857e82c..83f33db1e 100644 --- a/vendor/sabre/xml/lib/XmlDeserializable.php +++ b/vendor/sabre/xml/lib/XmlDeserializable.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; /** @@ -10,8 +12,8 @@ namespace Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface XmlDeserializable { - +interface XmlDeserializable +{ /** * The deserialize method is called during xml parsing. * @@ -30,9 +32,7 @@ interface XmlDeserializable { * $reader->parseInnerTree() will parse the entire sub-tree, and advance to * the next element. * - * @param Reader $reader * @return mixed */ - static function xmlDeserialize(Reader $reader); - + public static function xmlDeserialize(Reader $reader); } diff --git a/vendor/sabre/xml/lib/XmlSerializable.php b/vendor/sabre/xml/lib/XmlSerializable.php index 3e2c528b9..b22f8d5e8 100644 --- a/vendor/sabre/xml/lib/XmlSerializable.php +++ b/vendor/sabre/xml/lib/XmlSerializable.php @@ -1,5 +1,7 @@ <?php +declare(strict_types=1); + namespace Sabre\Xml; /** @@ -10,8 +12,8 @@ namespace Sabre\Xml; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -interface XmlSerializable { - +interface XmlSerializable +{ /** * The xmlSerialize method is called during xml writing. * @@ -27,10 +29,6 @@ interface XmlSerializable { * This allows serializers to be re-used for different element names. * * If you are opening new elements, you must also close them again. - * - * @param Writer $writer - * @return void */ - function xmlSerialize(Writer $writer); - + public function xmlSerialize(Writer $writer); } diff --git a/vendor/smarty/smarty/NEW_FEATURES.txt b/vendor/smarty/smarty/NEW_FEATURES.txt index b3289dfc1..0b2cae1e0 100644 --- a/vendor/smarty/smarty/NEW_FEATURES.txt +++ b/vendor/smarty/smarty/NEW_FEATURES.txt @@ -35,13 +35,13 @@ Smarty 3.1.32 will be treated now as literal. (This does apply for any number of delimiter repeatations). However {{foo}} is not an literal but will be interpreted as a recursive Smarty tag. If you use - $smarty->setLiteral(array('{{','}}')); + $smarty->setLiterals(array('{{','}}')); {{foo}} is now a literal as well. NOTE: In the last example nested Smarty tags starting with '{{' or ending with '}}' will not work any longer, but this should be very very raw occouring restriction. B) Example 2 Assume your delimiter are '<-' , '->' and '<--' , '-->' shall be literals - $smarty->setLiteral(array('<--','-->')); + $smarty->setLiterals(array('<--','-->')); The capture buffers can now be accessed as array diff --git a/vendor/smarty/smarty/change_log.txt b/vendor/smarty/smarty/change_log.txt index 70762eda5..aeb17e4d9 100644 --- a/vendor/smarty/smarty/change_log.txt +++ b/vendor/smarty/smarty/change_log.txt @@ -1,4 +1,32 @@ -===== 3.1.33 release ===== 12.09.2018 +===== 3.1.34-dev-6 ===== +30.10.2018 + - bugfix a nested subblock in an inheritance child template was not replace by + outer level block with same name in same child template https://github.com/smarty-php/smarty/issues/500 + +29.10.2018 + - bugfix Smarty::$php_handling == PHP_PASSTHRU (default) did eat the "\n" (newline) character if it did directly followed + a PHP tag like "?>" or other https://github.com/smarty-php/smarty/issues/501 + +14.10.2018 + - bugfix autoloader exit shortcut https://github.com/smarty-php/smarty/issues/467 + +11.10.2018 + - bugfix {insert} not works when caching is enabled and included template is present + https://github.com/smarty-php/smarty/issues/496 + - bugfix in date-format modifier; NULL at date string or default_date did not produce correct output + https://github.com/smarty-php/smarty/pull/458 + +09.10.2018 + - bugfix fix of 26.8.2017 https://github.com/smarty-php/smarty/issues/327 + modifier is applied to sum expression https://github.com/smarty-php/smarty/issues/491 + - bugfix indexed arrays could not be defined "array(...)"" + +18.09.2018 + - bugfix large plain text template sections without a Smarty tag > 700kB could + could fail in version 3.1.32 and 3.1.33 because PHP preg_match() restrictions + https://github.com/smarty-php/smarty/issues/488 + +===== 3.1.33 release ===== 12.09.2018 ===== 3.1.33-dev-12 ===== 03.09.2018 - bugfix {foreach} using new style property access like {$item@property} on diff --git a/vendor/smarty/smarty/composer.json b/vendor/smarty/smarty/composer.json index 5007517bc..28c392c95 100644 --- a/vendor/smarty/smarty/composer.json +++ b/vendor/smarty/smarty/composer.json @@ -30,13 +30,16 @@ "php": ">=5.2" }, "autoload": { - "files": [ - "libs/bootstrap.php" + "classmap": [ + "libs/" ] }, "extra": { "branch-alias": { "dev-master": "3.1.x-dev" } + }, + "require-dev": { + "phpunit/phpunit": "6.4.1" } -} \ No newline at end of file +} diff --git a/vendor/smarty/smarty/libs/Autoloader.php b/vendor/smarty/smarty/libs/Autoloader.php index e4dc450f0..c09361b66 100644 --- a/vendor/smarty/smarty/libs/Autoloader.php +++ b/vendor/smarty/smarty/libs/Autoloader.php @@ -90,7 +90,7 @@ class Smarty_Autoloader */ public static function autoload($class) { - if ($class[ 0 ] !== 'S' && strpos($class, 'Smarty') !== 0) { + if ($class[ 0 ] !== 'S' || strpos($class, 'Smarty') !== 0) { return; } $_class = strtolower($class); diff --git a/vendor/smarty/smarty/libs/Smarty.class.php b/vendor/smarty/smarty/libs/Smarty.class.php index a8969926b..44b77a856 100644 --- a/vendor/smarty/smarty/libs/Smarty.class.php +++ b/vendor/smarty/smarty/libs/Smarty.class.php @@ -27,7 +27,7 @@ * @author Uwe Tews <uwe dot tews at gmail dot com> * @author Rodney Rehm * @package Smarty - * @version 3.1.33 + * @version 3.1.34-dev */ /** * set SMARTY_DIR to absolute path to Smarty library files. @@ -112,7 +112,7 @@ class Smarty extends Smarty_Internal_TemplateBase /** * smarty version */ - const SMARTY_VERSION = '3.1.33'; + const SMARTY_VERSION = '3.1.34-dev-7'; /** * define variable scopes */ diff --git a/vendor/smarty/smarty/libs/plugins/modifier.date_format.php b/vendor/smarty/smarty/libs/plugins/modifier.date_format.php index 23b69430b..c8e88c5c9 100644 --- a/vendor/smarty/smarty/libs/plugins/modifier.date_format.php +++ b/vendor/smarty/smarty/libs/plugins/modifier.date_format.php @@ -41,9 +41,9 @@ function smarty_modifier_date_format($string, $format = null, $default_date = '' } $is_loaded = true; } - if ($string !== '' && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') { + if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') { $timestamp = smarty_make_timestamp($string); - } elseif ($default_date !== '') { + } elseif (!empty($default_date)) { $timestamp = smarty_make_timestamp($default_date); } else { return; diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php index 56fbc5615..4bdc3952e 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php @@ -151,6 +151,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>"; } } + $compiler->template->compiled->has_nocache_code = true; return $_output; } } diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php index a3cf0a27b..ff48c6fbc 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php @@ -47,7 +47,7 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase new Smarty_Internal_ParseTree_Tag( $compiler->parser, $compiler->processNocacheCode( - "<?php echo '{$output}';?>", + "<?php echo '{$output}';?>\n", true ) ) @@ -77,7 +77,7 @@ class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase new Smarty_Internal_ParseTree_Tag( $compiler->parser, $compiler->processNocacheCode( - "<?php echo '{$output}';?>", + "<?php echo '{$output}';?>\n", true ) ) diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php index 6392d4cb3..8f7f02d59 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php @@ -150,7 +150,7 @@ class Smarty_Internal_Runtime_Inheritance return; } // make sure we got child block of child template of current block - while ($block->child && $block->tplIndex <= $block->child->tplIndex) { + while ($block->child && $block->child->child && $block->tplIndex <= $block->child->tplIndex) { $block->child = $block->child->child; } $this->process($tpl, $block); diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php index c6c49ef59..d29c39b56 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php @@ -215,9 +215,23 @@ class Smarty_Internal_Templatelexer */ private $yy_global_pattern5 = null; - private $_yy_state = 1; + /** + * preg token pattern for text + * + * @var null + */ + private $yy_global_text = null; + + /** + * preg token pattern for literal + * + * @var null + */ + private $yy_global_literal = null; - private $_yy_stack = array(); + private $_yy_state = 1; + + private $_yy_stack = array(); /** * constructor @@ -319,7 +333,7 @@ class Smarty_Internal_Templatelexer { if (!isset($this->yy_global_pattern1)) { $this->yy_global_pattern1 = - $this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYalphp([ ].*?)?SMARTYrdel|(SMARTYldel)SMARTYal[\/]phpSMARTYrdel)|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([<][?]((php\\s+|=)|\\s+)|[<][%]|[<][?]xml\\s+|[<]script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*[>]|[?][>]|[%][>])|\G((.*?)(?=((SMARTYldel)SMARTYal|[<][?]((php\\s+|=)|\\s+)|[<][%]|[<][?]xml\\s+|[<]script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*[>]|[?][>]|[%][>]SMARTYliteral))|[\s\S]+)/isS"); + $this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYalphp([ ].*?)?SMARTYrdel|(SMARTYldel)SMARTYal[\/]phpSMARTYrdel)|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([<][?]((php\\s+|=)|\\s+)|[<][%]|[<][?]xml\\s+|[<]script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*[>]|[?][>]|[%][>])|\G([\S\s])/isS"); } if (!isset($this->dataLength)) { $this->dataLength = strlen($this->data); @@ -336,11 +350,8 @@ class Smarty_Internal_Templatelexer } if (empty($yymatches)) { throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state TEXT'); + ' an empty string. Input "' . substr($this->data, + $this->counter, 5) . '... state TEXT'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -379,6 +390,7 @@ class Smarty_Internal_Templatelexer public function yy_r1_2() { + $to = $this->dataLength; preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); if (isset($match[ 0 ][ 1 ])) { @@ -425,6 +437,16 @@ class Smarty_Internal_Templatelexer public function yy_r1_19() { + if (!isset($this->yy_global_text)) { + $this->yy_global_text = + $this->replace('/(SMARTYldel)SMARTYal|[<][?]((php\s+|=)|\s+)|[<][%]|[<][?]xml\s+|[<]script\s+language\s*=\s*["\']?\s*php\s*["\']?\s*[>]|[?][>]|[%][>]SMARTYliteral/isS'); + } + $to = $this->dataLength; + preg_match($this->yy_global_text, $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); + if (isset($match[ 0 ][ 1 ])) { + $to = $match[ 0 ][ 1 ]; + } + $this->value = substr($this->data, $this->counter, $to - $this->counter); $this->token = Smarty_Internal_Templateparser::TP_TEXT; } @@ -449,11 +471,8 @@ class Smarty_Internal_Templatelexer } if (empty($yymatches)) { throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state TAG'); + ' an empty string. Input "' . substr($this->data, + $this->counter, 5) . '... state TAG'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -573,7 +592,7 @@ class Smarty_Internal_Templatelexer { if (!isset($this->yy_global_pattern3)) { $this->yy_global_pattern3 = - $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); + $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); } if (!isset($this->dataLength)) { $this->dataLength = strlen($this->data); @@ -590,11 +609,8 @@ class Smarty_Internal_Templatelexer } if (empty($yymatches)) { throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state TAGBODY'); + ' an empty string. Input "' . substr($this->data, + $this->counter, 5) . '... state TAGBODY'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -772,10 +788,15 @@ class Smarty_Internal_Templatelexer public function yy_r3_42() { - $this->token = Smarty_Internal_Templateparser::TP_HATCH; + $this->token = Smarty_Internal_Templateparser::TP_ARRAYOPEN; } public function yy_r3_43() + { + $this->token = Smarty_Internal_Templateparser::TP_HATCH; + } + + public function yy_r3_44() { // resolve conflicts with shorttag and right_delimiter starting with '=' if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === @@ -788,73 +809,73 @@ class Smarty_Internal_Templatelexer } } - public function yy_r3_44() + public function yy_r3_45() { $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE; } - public function yy_r3_47() + public function yy_r3_48() { $this->token = Smarty_Internal_Templateparser::TP_ID; } - public function yy_r3_48() + public function yy_r3_49() { $this->token = Smarty_Internal_Templateparser::TP_INTEGER; } - public function yy_r3_49() + public function yy_r3_50() { $this->token = Smarty_Internal_Templateparser::TP_BACKTICK; $this->yypopstate(); } - public function yy_r3_50() + public function yy_r3_51() { $this->token = Smarty_Internal_Templateparser::TP_VERT; } - public function yy_r3_51() + public function yy_r3_52() { $this->token = Smarty_Internal_Templateparser::TP_DOT; } - public function yy_r3_52() + public function yy_r3_53() { $this->token = Smarty_Internal_Templateparser::TP_COMMA; } - public function yy_r3_53() + public function yy_r3_54() { $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON; } - public function yy_r3_54() + public function yy_r3_55() { $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON; } - public function yy_r3_55() + public function yy_r3_56() { $this->token = Smarty_Internal_Templateparser::TP_COLON; } - public function yy_r3_56() + public function yy_r3_57() { $this->token = Smarty_Internal_Templateparser::TP_QMARK; } - public function yy_r3_57() + public function yy_r3_58() { $this->token = Smarty_Internal_Templateparser::TP_HEX; } - public function yy_r3_58() + public function yy_r3_59() { $this->token = Smarty_Internal_Templateparser::TP_SPACE; } // end function - public function yy_r3_59() + public function yy_r3_60() { $this->token = Smarty_Internal_Templateparser::TP_TEXT; } @@ -863,7 +884,7 @@ class Smarty_Internal_Templatelexer { if (!isset($this->yy_global_pattern4)) { $this->yy_global_pattern4 = - $this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((.*?)(?=(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel))/isS"); + $this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G([\S\s])/isS"); } if (!isset($this->dataLength)) { $this->dataLength = strlen($this->data); @@ -880,11 +901,8 @@ class Smarty_Internal_Templatelexer } if (empty($yymatches)) { throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state LITERAL'); + ' an empty string. Input "' . substr($this->data, + $this->counter, 5) . '... state LITERAL'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -935,6 +953,17 @@ class Smarty_Internal_Templatelexer public function yy_r4_5() { + if (!isset($this->yy_global_literal)) { + $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS'); + } + $to = $this->dataLength; + preg_match($this->yy_global_literal, $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); + if (isset($match[ 0 ][ 1 ])) { + $to = $match[ 0 ][ 1 ]; + } else { + $this->compiler->trigger_template_error("missing or misspelled literal closing tag"); + } + $this->value = substr($this->data, $this->counter, $to - $this->counter); $this->token = Smarty_Internal_Templateparser::TP_LITERAL; } // end function @@ -942,7 +971,7 @@ class Smarty_Internal_Templatelexer { if (!isset($this->yy_global_pattern5)) { $this->yy_global_pattern5 = - $this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))/isS"); + $this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))|\G([\S\s])/isS"); } if (!isset($this->dataLength)) { $this->dataLength = strlen($this->data); @@ -959,11 +988,8 @@ class Smarty_Internal_Templatelexer } if (empty($yymatches)) { throw new Exception('Error: lexing failed because a rule matched' . - ' an empty string. Input "' . substr( - $this->data, - $this->counter, - 5 - ) . '... state DOUBLEQUOTEDSTRING'); + ' an empty string. Input "' . substr($this->data, + $this->counter, 5) . '... state DOUBLEQUOTEDSTRING'); } next($yymatches); // skip global match $this->token = key($yymatches); // token number @@ -1057,4 +1083,13 @@ class Smarty_Internal_Templatelexer { $this->token = Smarty_Internal_Templateparser::TP_TEXT; } + + public function yy_r5_22() + { + $to = $this->dataLength; + $this->value = substr($this->data, $this->counter, $to - $this->counter); + $this->token = Smarty_Internal_Templateparser::TP_TEXT; + } } + + \ No newline at end of file diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php index b008715f7..a26e7a147 100644 --- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php +++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php @@ -4,11 +4,9 @@ class TP_yyStackEntry { public $stateno; /* The state-number */ public $major; /* The major token value. This is the code - * number for the token at this stack level - */ - public $minor; /* The user-supplied minor token value. This - * is the value of the token - */ + ** number for the token at this stack level */ + public $minor; /* The user-supplied minor token value. This + ** is the value of the token */ } // line 11 "../smarty/lexer/smarty_internal_templateparser.y" @@ -29,43 +27,43 @@ class Smarty_Internal_Templateparser const ERR3 = 'PHP in template not allowed. Use SmartyBC to enable it'; const TP_VERT = 1; const TP_COLON = 2; - const TP_UNIMATH = 3; - const TP_PHP = 4; - const TP_TEXT = 5; - const TP_STRIPON = 6; - const TP_STRIPOFF = 7; - const TP_LITERALSTART = 8; - const TP_LITERALEND = 9; - const TP_LITERAL = 10; - const TP_SIMPELOUTPUT = 11; - const TP_SIMPLETAG = 12; - const TP_SMARTYBLOCKCHILDPARENT = 13; - const TP_LDEL = 14; - const TP_RDEL = 15; - const TP_DOLLARID = 16; - const TP_EQUAL = 17; - const TP_ID = 18; - const TP_PTR = 19; - const TP_LDELMAKENOCACHE = 20; - const TP_LDELIF = 21; - const TP_LDELFOR = 22; - const TP_SEMICOLON = 23; - const TP_INCDEC = 24; - const TP_TO = 25; - const TP_STEP = 26; - const TP_LDELFOREACH = 27; - const TP_SPACE = 28; - const TP_AS = 29; - const TP_APTR = 30; - const TP_LDELSETFILTER = 31; - const TP_CLOSETAG = 32; - const TP_LDELSLASH = 33; - const TP_ATTR = 34; - const TP_INTEGER = 35; - const TP_COMMA = 36; - const TP_OPENP = 37; - const TP_CLOSEP = 38; - const TP_MATH = 39; + const TP_PHP = 3; + const TP_TEXT = 4; + const TP_STRIPON = 5; + const TP_STRIPOFF = 6; + const TP_LITERALSTART = 7; + const TP_LITERALEND = 8; + const TP_LITERAL = 9; + const TP_SIMPELOUTPUT = 10; + const TP_SIMPLETAG = 11; + const TP_SMARTYBLOCKCHILDPARENT = 12; + const TP_LDEL = 13; + const TP_RDEL = 14; + const TP_DOLLARID = 15; + const TP_EQUAL = 16; + const TP_ID = 17; + const TP_PTR = 18; + const TP_LDELMAKENOCACHE = 19; + const TP_LDELIF = 20; + const TP_LDELFOR = 21; + const TP_SEMICOLON = 22; + const TP_INCDEC = 23; + const TP_TO = 24; + const TP_STEP = 25; + const TP_LDELFOREACH = 26; + const TP_SPACE = 27; + const TP_AS = 28; + const TP_APTR = 29; + const TP_LDELSETFILTER = 30; + const TP_CLOSETAG = 31; + const TP_LDELSLASH = 32; + const TP_ATTR = 33; + const TP_INTEGER = 34; + const TP_COMMA = 35; + const TP_OPENP = 36; + const TP_CLOSEP = 37; + const TP_MATH = 38; + const TP_UNIMATH = 39; const TP_ISIN = 40; const TP_QMARK = 41; const TP_NOT = 42; @@ -85,724 +83,819 @@ class Smarty_Internal_Templateparser const TP_SLOGOP = 56; const TP_TLOGOP = 57; const TP_SINGLECOND = 58; - const TP_QUOTE = 59; - const TP_BACKTICK = 60; - const YY_NO_ACTION = 511; - const YY_ACCEPT_ACTION = 510; - const YY_ERROR_ACTION = 509; - const YY_SZ_ACTTAB = 2076; - const YY_SHIFT_USE_DFLT = -23; - const YY_SHIFT_MAX = 227; - const YY_REDUCE_USE_DFLT = -68; - const YY_REDUCE_MAX = 176; - const YYNOCODE = 108; + const TP_ARRAYOPEN = 59; + const TP_QUOTE = 60; + const TP_BACKTICK = 61; + const YY_NO_ACTION = 516; + const YY_ACCEPT_ACTION = 515; + const YY_ERROR_ACTION = 514; + const YY_SZ_ACTTAB = 2071; + const YY_SHIFT_USE_DFLT = -31; + const YY_SHIFT_MAX = 230; + const YY_REDUCE_USE_DFLT = -91; + const YY_REDUCE_MAX = 178; + const YYNOCODE = 110; const YYSTACKDEPTH = 500; - const YYNSTATE = 323; - const YYNRULE = 186; - const YYERRORSYMBOL = 61; + const YYNSTATE = 327; + const YYNRULE = 187; + const YYERRORSYMBOL = 62; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; public static $yy_action = array( - 42, 266, 267, 379, 115, 202, 27, 204, 260, 235, - 237, 1, 17, 125, 94, 182, 379, 215, 10, 79, - 317, 168, 379, 12, 107, 425, 308, 318, 224, 298, - 218, 129, 189, 292, 21, 203, 425, 27, 11, 39, - 38, 299, 219, 17, 213, 385, 191, 245, 77, 3, - 303, 315, 42, 385, 160, 385, 75, 29, 385, 95, - 260, 235, 237, 1, 385, 126, 385, 193, 385, 215, - 10, 79, 80, 290, 145, 226, 107, 148, 172, 150, - 224, 298, 218, 85, 217, 315, 21, 280, 101, 280, - 141, 39, 38, 299, 219, 20, 287, 183, 191, 232, - 77, 3, 42, 315, 16, 176, 316, 172, 75, 275, - 260, 235, 237, 1, 167, 128, 236, 193, 319, 215, - 10, 79, 345, 40, 14, 257, 107, 319, 345, 5, - 224, 298, 218, 89, 217, 315, 30, 292, 172, 203, - 74, 39, 38, 299, 219, 132, 287, 205, 191, 74, - 77, 3, 42, 315, 210, 194, 310, 99, 75, 345, - 260, 235, 237, 1, 425, 126, 87, 179, 319, 215, - 10, 79, 345, 95, 195, 425, 107, 272, 345, 176, - 224, 298, 218, 315, 199, 115, 21, 128, 278, 209, - 74, 39, 38, 299, 219, 94, 287, 226, 191, 129, - 77, 3, 42, 315, 277, 309, 11, 308, 75, 13, - 260, 235, 237, 1, 163, 127, 425, 193, 319, 215, - 10, 79, 77, 254, 19, 315, 107, 425, 137, 34, - 224, 298, 218, 196, 217, 33, 21, 220, 280, 159, - 74, 39, 38, 299, 219, 196, 287, 8, 191, 162, - 77, 3, 42, 315, 294, 222, 196, 438, 75, 378, - 260, 235, 237, 1, 438, 126, 16, 193, 271, 215, - 10, 79, 378, 172, 302, 315, 107, 175, 378, 267, - 224, 298, 218, 27, 178, 252, 21, 164, 296, 17, - 83, 39, 38, 299, 219, 196, 287, 205, 191, 170, - 77, 3, 42, 315, 270, 18, 144, 99, 75, 346, - 260, 235, 237, 1, 142, 126, 280, 177, 84, 215, - 10, 79, 346, 172, 280, 4, 107, 95, 346, 321, - 224, 298, 218, 438, 217, 131, 21, 321, 426, 24, - 438, 39, 38, 299, 219, 196, 287, 205, 191, 426, - 77, 3, 42, 315, 201, 9, 101, 99, 75, 381, - 260, 235, 237, 1, 149, 124, 102, 193, 22, 215, - 10, 79, 381, 315, 99, 231, 107, 311, 381, 425, - 224, 298, 218, 23, 217, 319, 7, 207, 196, 17, - 425, 39, 38, 299, 219, 307, 287, 36, 191, 154, - 77, 3, 42, 315, 161, 296, 227, 74, 75, 280, - 260, 235, 237, 1, 16, 91, 273, 76, 312, 215, - 10, 79, 317, 208, 190, 12, 107, 176, 196, 318, - 224, 298, 218, 135, 217, 321, 21, 196, 35, 95, - 263, 39, 38, 299, 219, 157, 287, 111, 191, 88, - 77, 3, 42, 315, 169, 280, 225, 15, 75, 285, - 260, 235, 237, 1, 155, 126, 226, 184, 101, 215, - 10, 79, 454, 172, 280, 454, 107, 246, 253, 454, - 224, 298, 218, 152, 217, 111, 21, 161, 296, 265, - 6, 39, 38, 299, 219, 269, 287, 203, 191, 119, - 77, 3, 42, 315, 158, 262, 321, 274, 75, 97, - 260, 235, 237, 1, 153, 128, 165, 193, 151, 215, - 10, 79, 317, 43, 280, 12, 107, 320, 280, 318, - 224, 298, 218, 8, 217, 171, 30, 306, 196, 36, - 172, 39, 38, 299, 219, 264, 287, 256, 191, 128, - 77, 288, 78, 315, 510, 90, 166, 296, 75, 41, - 37, 223, 104, 228, 250, 251, 255, 122, 226, 289, - 260, 235, 237, 1, 239, 233, 238, 240, 241, 215, - 10, 79, 229, 305, 77, 304, 107, 315, 281, 300, - 224, 298, 218, 261, 211, 203, 314, 28, 86, 108, - 140, 181, 96, 61, 214, 247, 317, 454, 94, 12, - 454, 297, 322, 318, 454, 29, 259, 192, 249, 248, - 308, 313, 138, 27, 302, 143, 130, 82, 95, 17, - 261, 211, 203, 314, 252, 86, 108, 286, 180, 96, - 50, 136, 139, 100, 152, 94, 454, 81, 297, 322, - 295, 321, 146, 259, 192, 249, 295, 308, 261, 295, - 203, 295, 295, 110, 295, 295, 197, 105, 64, 295, - 295, 295, 295, 94, 295, 295, 297, 322, 295, 295, - 295, 259, 192, 249, 261, 308, 203, 276, 295, 110, - 108, 295, 181, 96, 61, 187, 282, 295, 317, 94, - 295, 12, 297, 322, 295, 318, 295, 259, 192, 249, - 295, 308, 295, 291, 295, 295, 295, 295, 295, 260, - 235, 237, 2, 295, 293, 295, 295, 295, 215, 10, - 79, 295, 295, 295, 295, 107, 291, 206, 295, 224, - 298, 218, 260, 235, 237, 2, 295, 293, 295, 295, - 295, 215, 10, 79, 295, 295, 295, 295, 107, 295, - 295, 295, 224, 298, 218, 295, 295, 295, 26, 261, - 295, 203, 295, 295, 110, 295, 295, 197, 113, 60, - 295, 295, 295, 295, 94, 156, 295, 297, 322, 167, - 284, 26, 259, 192, 249, 280, 308, 295, 40, 14, - 257, 295, 261, 200, 203, 295, 295, 110, 295, 295, - 197, 105, 64, 172, 295, 295, 295, 94, 295, 295, - 297, 322, 295, 295, 295, 259, 192, 249, 295, 308, - 295, 295, 295, 295, 261, 295, 203, 295, 295, 98, - 283, 295, 197, 113, 51, 295, 201, 295, 295, 94, - 295, 295, 297, 322, 295, 295, 295, 259, 192, 249, - 261, 308, 203, 295, 295, 110, 295, 295, 197, 113, - 60, 295, 295, 295, 295, 94, 295, 295, 297, 322, - 295, 295, 295, 259, 192, 249, 295, 308, 261, 295, - 203, 295, 295, 110, 188, 295, 197, 113, 60, 196, - 31, 43, 295, 94, 295, 295, 297, 322, 295, 295, - 295, 259, 192, 249, 295, 308, 261, 295, 203, 295, - 295, 98, 198, 295, 197, 113, 45, 295, 109, 295, - 295, 94, 295, 295, 297, 322, 295, 41, 37, 259, - 192, 249, 261, 308, 203, 295, 295, 110, 295, 295, - 197, 113, 67, 233, 238, 240, 241, 94, 295, 295, - 297, 322, 295, 295, 295, 259, 192, 249, 295, 308, - 261, 295, 203, 295, 295, 110, 295, 295, 197, 113, - 57, 196, 295, 43, 295, 94, 295, 295, 297, 322, - 295, 295, 295, 259, 192, 249, 295, 308, 261, 295, - 203, 295, 295, 110, 295, 295, 197, 113, 46, 295, - 295, 295, 295, 94, 295, 295, 297, 322, 295, 41, - 37, 259, 192, 249, 261, 308, 203, 295, 295, 110, - 295, 295, 197, 113, 66, 233, 238, 240, 241, 94, - 301, 295, 297, 322, 295, 295, 295, 259, 192, 249, - 295, 308, 261, 295, 203, 295, 295, 110, 295, 295, - 197, 113, 72, 196, 295, 43, 295, 94, 295, 295, - 297, 322, 295, 295, 295, 259, 192, 249, 295, 308, - 261, 295, 203, 295, 295, 110, 295, 295, 197, 113, - 53, 295, 295, 295, 295, 94, 295, 295, 297, 322, - 230, 41, 37, 259, 192, 249, 261, 308, 203, 295, - 295, 110, 295, 295, 197, 113, 48, 233, 238, 240, - 241, 94, 295, 295, 297, 322, 295, 295, 295, 259, - 192, 249, 295, 308, 261, 295, 203, 295, 295, 110, - 295, 295, 185, 103, 49, 196, 295, 43, 295, 94, - 295, 295, 297, 322, 295, 295, 295, 259, 192, 249, - 295, 308, 261, 295, 203, 295, 295, 110, 295, 295, - 197, 113, 55, 134, 295, 295, 295, 94, 295, 295, - 297, 322, 295, 41, 37, 259, 192, 249, 261, 308, - 203, 295, 295, 110, 295, 295, 197, 113, 71, 233, - 238, 240, 241, 94, 295, 295, 297, 322, 295, 295, - 295, 259, 192, 249, 295, 308, 261, 295, 203, 295, - 295, 110, 295, 295, 197, 113, 59, 196, 295, 43, - 295, 94, 295, 295, 297, 322, 295, 295, 295, 259, - 192, 249, 295, 308, 261, 295, 203, 295, 295, 110, - 295, 295, 197, 113, 63, 295, 295, 295, 295, 94, - 295, 295, 297, 322, 216, 41, 37, 259, 192, 249, - 261, 308, 203, 295, 295, 110, 295, 295, 197, 113, - 62, 233, 238, 240, 241, 94, 295, 295, 297, 322, - 295, 295, 295, 259, 192, 249, 295, 308, 261, 295, - 203, 295, 295, 110, 295, 295, 197, 92, 69, 196, - 295, 43, 295, 94, 295, 295, 297, 322, 295, 295, - 295, 259, 192, 249, 295, 308, 261, 295, 203, 295, - 295, 110, 295, 295, 197, 113, 52, 295, 295, 295, - 295, 94, 295, 295, 297, 322, 295, 41, 37, 259, - 192, 249, 261, 308, 203, 295, 295, 110, 295, 295, - 197, 113, 65, 233, 238, 240, 241, 94, 295, 295, - 297, 322, 295, 196, 295, 259, 192, 249, 295, 308, - 261, 295, 203, 295, 295, 110, 295, 349, 197, 113, - 58, 221, 295, 295, 295, 94, 295, 295, 297, 322, - 27, 295, 295, 259, 192, 249, 17, 308, 261, 425, - 203, 295, 295, 110, 295, 295, 197, 113, 56, 295, - 425, 295, 295, 94, 295, 295, 297, 322, 295, 295, - 295, 259, 192, 249, 261, 308, 203, 295, 295, 110, - 295, 295, 197, 113, 44, 295, 295, 295, 295, 94, - 295, 295, 297, 322, 295, 295, 295, 259, 192, 249, - 295, 308, 261, 295, 203, 295, 295, 110, 295, 295, - 197, 93, 70, 295, 295, 295, 295, 94, 295, 295, - 297, 322, 295, 295, 295, 259, 192, 249, 295, 308, - 261, 295, 203, 295, 295, 110, 295, 295, 186, 113, - 54, 295, 295, 295, 295, 94, 295, 295, 297, 322, - 295, 295, 295, 259, 192, 249, 261, 308, 203, 295, - 295, 110, 295, 295, 197, 113, 73, 295, 295, 295, - 295, 94, 295, 295, 297, 322, 295, 295, 295, 259, - 192, 249, 295, 308, 261, 295, 203, 295, 295, 110, - 295, 295, 197, 113, 68, 295, 295, 295, 295, 94, - 295, 295, 297, 322, 295, 295, 295, 259, 192, 249, - 295, 308, 261, 295, 203, 295, 295, 110, 295, 295, - 197, 93, 47, 295, 295, 295, 295, 94, 295, 295, - 297, 322, 391, 391, 391, 259, 192, 249, 261, 308, - 203, 295, 295, 110, 295, 295, 197, 113, 51, 295, - 295, 295, 295, 94, 295, 295, 297, 322, 196, 295, - 43, 259, 192, 249, 295, 308, 295, 295, 425, 295, - 391, 391, 295, 295, 295, 261, 295, 203, 295, 425, - 110, 295, 295, 197, 118, 27, 391, 391, 391, 391, - 94, 17, 295, 295, 258, 295, 41, 37, 259, 192, - 249, 261, 308, 203, 295, 196, 110, 43, 295, 197, - 120, 295, 233, 238, 240, 241, 94, 295, 295, 295, - 243, 295, 295, 295, 259, 192, 249, 295, 308, 295, - 32, 295, 27, 212, 295, 295, 295, 295, 17, 295, - 295, 295, 454, 41, 37, 454, 295, 295, 295, 454, - 438, 295, 295, 295, 295, 295, 295, 295, 295, 233, - 238, 240, 241, 295, 295, 261, 295, 203, 295, 295, - 110, 295, 295, 197, 112, 295, 438, 295, 295, 438, - 94, 454, 212, 438, 268, 295, 295, 295, 259, 192, - 249, 454, 308, 212, 454, 295, 295, 34, 454, 438, - 295, 295, 454, 295, 295, 454, 295, 133, 4, 454, - 438, 167, 295, 295, 295, 295, 295, 280, 295, 295, - 40, 14, 257, 295, 295, 438, 295, 295, 438, 261, - 454, 203, 438, 295, 110, 172, 438, 197, 121, 438, - 261, 454, 203, 438, 94, 110, 295, 295, 197, 117, - 295, 295, 259, 192, 249, 94, 308, 295, 295, 295, - 295, 295, 295, 259, 192, 249, 261, 308, 203, 295, - 295, 110, 295, 295, 197, 116, 295, 261, 295, 203, - 295, 94, 110, 295, 295, 197, 114, 295, 295, 259, - 192, 249, 94, 308, 196, 295, 43, 295, 295, 295, - 259, 192, 249, 261, 308, 203, 295, 196, 110, 43, - 295, 197, 123, 295, 295, 295, 106, 295, 94, 295, - 196, 174, 43, 295, 295, 295, 259, 192, 249, 196, - 308, 43, 41, 37, 244, 295, 295, 295, 295, 295, - 295, 295, 295, 234, 295, 41, 37, 295, 233, 238, - 240, 241, 295, 295, 295, 295, 295, 295, 41, 37, - 295, 233, 238, 240, 241, 295, 295, 41, 37, 295, - 295, 295, 295, 295, 233, 238, 240, 241, 25, 196, - 295, 43, 295, 233, 238, 240, 241, 454, 295, 295, - 454, 295, 295, 279, 454, 438, 212, 295, 295, 295, - 295, 295, 295, 295, 295, 454, 295, 295, 454, 295, - 295, 295, 454, 438, 196, 295, 43, 41, 37, 295, - 295, 438, 295, 196, 438, 43, 454, 295, 438, 295, - 295, 295, 295, 233, 238, 240, 241, 173, 295, 438, - 295, 295, 438, 295, 454, 295, 438, 454, 295, 295, - 454, 295, 41, 37, 454, 438, 295, 295, 295, 295, - 295, 41, 37, 295, 295, 295, 242, 295, 233, 238, - 240, 241, 295, 295, 295, 295, 295, 233, 238, 240, - 241, 438, 295, 295, 438, 295, 454, 147, 438, 295, - 295, 167, 295, 295, 295, 295, 295, 280, 295, 295, - 40, 14, 257, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 172, + 251, 234, 237, 1, 144, 127, 428, 184, 199, 212, + 10, 54, 19, 175, 282, 215, 109, 389, 428, 428, + 224, 321, 223, 303, 203, 389, 13, 389, 281, 43, + 389, 428, 41, 40, 266, 225, 389, 213, 389, 194, + 389, 52, 4, 308, 301, 383, 34, 209, 222, 3, + 50, 153, 251, 234, 237, 1, 199, 131, 383, 198, + 305, 212, 10, 54, 383, 16, 199, 428, 109, 385, + 132, 18, 224, 321, 223, 222, 221, 12, 32, 428, + 116, 43, 385, 262, 41, 40, 266, 225, 385, 233, + 95, 194, 16, 52, 4, 131, 301, 252, 18, 265, + 164, 3, 50, 324, 251, 234, 237, 1, 23, 130, + 229, 198, 150, 212, 10, 54, 326, 11, 170, 284, + 109, 42, 22, 239, 224, 321, 223, 193, 221, 261, + 13, 52, 157, 43, 301, 286, 41, 40, 266, 225, + 205, 233, 5, 194, 96, 52, 4, 263, 301, 301, + 99, 349, 96, 3, 50, 199, 251, 234, 237, 1, + 238, 130, 241, 181, 349, 212, 10, 54, 382, 240, + 349, 36, 109, 185, 104, 256, 224, 321, 223, 132, + 191, 382, 13, 49, 91, 43, 12, 382, 41, 40, + 266, 225, 257, 233, 152, 194, 457, 52, 4, 457, + 301, 301, 228, 457, 282, 3, 50, 285, 251, 234, + 237, 1, 301, 131, 441, 198, 238, 212, 10, 54, + 349, 441, 325, 175, 109, 30, 349, 273, 224, 321, + 223, 20, 221, 295, 32, 211, 457, 39, 166, 49, + 41, 40, 266, 225, 87, 233, 205, 194, 279, 52, + 4, 24, 301, 204, 200, 280, 99, 3, 50, 199, + 251, 234, 237, 1, 31, 130, 96, 198, 205, 212, + 10, 54, 350, 55, 293, 207, 109, 283, 99, 96, + 224, 321, 223, 199, 180, 350, 13, 134, 230, 43, + 222, 350, 41, 40, 266, 225, 104, 233, 316, 194, + 279, 52, 4, 24, 301, 165, 284, 280, 85, 3, + 50, 25, 251, 234, 237, 1, 131, 129, 210, 198, + 14, 212, 10, 54, 269, 270, 301, 116, 109, 295, + 216, 211, 224, 321, 223, 171, 221, 95, 13, 28, + 219, 43, 323, 9, 41, 40, 266, 225, 151, 233, + 324, 194, 52, 52, 4, 301, 301, 30, 282, 302, + 178, 3, 50, 7, 251, 234, 237, 1, 136, 130, + 304, 179, 238, 212, 10, 54, 279, 175, 282, 24, + 109, 238, 429, 280, 224, 321, 223, 177, 221, 270, + 13, 255, 281, 43, 429, 49, 41, 40, 266, 225, + 275, 233, 318, 194, 49, 52, 4, 276, 301, 163, + 26, 199, 8, 3, 50, 119, 251, 234, 237, 1, + 11, 93, 291, 51, 107, 212, 10, 54, 226, 428, + 206, 201, 109, 148, 178, 322, 224, 321, 223, 441, + 221, 428, 13, 282, 9, 43, 441, 115, 41, 40, + 266, 225, 167, 233, 227, 194, 457, 52, 4, 457, + 301, 96, 158, 457, 101, 3, 50, 271, 251, 234, + 237, 1, 282, 130, 235, 186, 135, 212, 10, 54, + 199, 37, 119, 315, 109, 165, 284, 176, 224, 321, + 223, 104, 221, 149, 13, 281, 146, 43, 281, 300, + 41, 40, 266, 225, 30, 233, 289, 194, 21, 52, + 4, 272, 301, 211, 18, 301, 161, 3, 50, 110, + 251, 234, 237, 1, 137, 128, 282, 198, 268, 212, + 10, 54, 222, 169, 515, 92, 109, 172, 284, 31, + 224, 321, 223, 29, 221, 238, 6, 260, 53, 43, + 232, 139, 41, 40, 266, 225, 154, 233, 178, 194, + 168, 52, 4, 214, 301, 145, 99, 33, 49, 3, + 50, 245, 208, 211, 320, 282, 90, 111, 311, 183, + 98, 70, 309, 297, 236, 178, 95, 319, 142, 258, + 247, 267, 249, 264, 250, 195, 231, 199, 246, 324, + 317, 253, 254, 259, 126, 137, 133, 251, 234, 237, + 1, 326, 290, 105, 143, 156, 212, 10, 54, 88, + 84, 83, 484, 109, 322, 282, 37, 224, 321, 223, + 245, 208, 211, 320, 281, 90, 111, 298, 182, 98, + 56, 245, 298, 211, 178, 95, 103, 147, 258, 197, + 102, 75, 141, 250, 195, 231, 95, 246, 324, 258, + 279, 242, 89, 24, 250, 195, 231, 280, 246, 324, + 298, 298, 298, 298, 298, 298, 298, 16, 298, 192, + 277, 298, 298, 18, 294, 44, 45, 38, 298, 298, + 251, 234, 237, 2, 298, 296, 298, 298, 298, 212, + 10, 54, 310, 312, 313, 314, 109, 162, 298, 298, + 224, 321, 223, 298, 298, 298, 294, 282, 298, 42, + 22, 239, 251, 234, 237, 2, 298, 296, 298, 298, + 298, 212, 10, 54, 298, 159, 298, 298, 109, 298, + 298, 17, 224, 321, 223, 282, 298, 42, 22, 239, + 298, 298, 245, 298, 211, 278, 298, 103, 111, 298, + 183, 98, 70, 298, 298, 298, 298, 95, 298, 298, + 258, 298, 292, 17, 298, 250, 195, 231, 279, 246, + 324, 24, 298, 395, 245, 280, 211, 298, 298, 103, + 298, 298, 197, 102, 75, 16, 298, 140, 298, 95, + 298, 18, 258, 298, 298, 298, 298, 250, 195, 231, + 298, 246, 324, 298, 298, 298, 298, 428, 298, 395, + 395, 395, 202, 277, 298, 245, 298, 211, 298, 428, + 103, 298, 298, 197, 120, 69, 395, 395, 395, 395, + 95, 298, 298, 258, 298, 298, 298, 160, 250, 195, + 231, 86, 246, 324, 245, 16, 211, 282, 298, 103, + 196, 18, 197, 120, 69, 298, 44, 45, 38, 95, + 298, 298, 258, 298, 298, 298, 178, 250, 195, 231, + 298, 246, 324, 310, 312, 313, 314, 298, 298, 190, + 245, 298, 211, 298, 298, 103, 298, 298, 197, 102, + 75, 298, 298, 298, 298, 95, 298, 298, 258, 298, + 298, 298, 298, 250, 195, 231, 298, 246, 324, 298, + 298, 298, 245, 298, 211, 298, 199, 100, 298, 288, + 197, 120, 47, 298, 106, 298, 298, 95, 298, 353, + 258, 155, 298, 218, 298, 250, 195, 231, 298, 246, + 324, 282, 16, 42, 22, 239, 298, 245, 18, 211, + 298, 428, 103, 298, 298, 197, 120, 69, 298, 298, + 298, 298, 95, 428, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 100, 189, 298, 197, 120, 59, 245, 207, 211, + 298, 95, 103, 298, 258, 197, 120, 81, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 120, 80, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 120, 67, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 120, 57, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 120, 58, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 120, 82, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 97, 76, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 120, 71, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 187, 120, 61, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 120, 63, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 94, 79, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 120, 59, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 120, 77, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 188, 108, 64, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 120, 65, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 97, 66, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 120, 68, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 120, 62, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 120, 60, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 120, 74, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 120, 72, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 120, 48, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 120, 46, 298, 298, + 298, 298, 95, 298, 298, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 120, 78, 245, 298, 211, + 298, 95, 103, 298, 258, 197, 120, 73, 298, 250, + 195, 231, 95, 246, 324, 258, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 125, 298, 298, 298, + 298, 298, 95, 298, 298, 298, 298, 298, 298, 244, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 114, 298, 245, 298, 211, + 298, 95, 103, 298, 298, 197, 122, 298, 243, 250, + 195, 231, 95, 246, 324, 298, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 117, 298, 298, 298, + 298, 298, 95, 298, 298, 298, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 121, 298, 245, 298, 211, + 298, 95, 103, 298, 298, 197, 124, 298, 298, 250, + 195, 231, 95, 246, 324, 298, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 298, 245, 298, 211, + 298, 298, 103, 298, 298, 197, 118, 298, 298, 298, + 298, 298, 95, 298, 298, 298, 298, 298, 298, 298, + 250, 195, 231, 298, 246, 324, 245, 298, 211, 298, + 298, 103, 298, 298, 197, 123, 298, 245, 298, 211, + 298, 95, 103, 298, 298, 197, 113, 298, 298, 250, + 195, 231, 95, 246, 324, 298, 298, 298, 298, 298, + 250, 195, 231, 220, 246, 324, 298, 27, 298, 16, + 298, 457, 298, 298, 457, 18, 298, 26, 457, 441, + 44, 45, 38, 217, 44, 45, 38, 298, 298, 298, + 298, 298, 298, 298, 298, 298, 298, 310, 312, 313, + 314, 310, 312, 313, 314, 298, 441, 298, 298, 441, + 298, 457, 220, 441, 457, 298, 298, 457, 298, 298, + 457, 457, 441, 457, 298, 298, 220, 457, 441, 298, + 298, 298, 298, 298, 457, 298, 298, 457, 298, 298, + 5, 457, 441, 298, 298, 298, 298, 298, 298, 441, + 298, 298, 441, 298, 457, 441, 441, 298, 441, 298, + 457, 298, 441, 306, 298, 298, 298, 298, 298, 441, + 298, 298, 441, 298, 457, 220, 441, 298, 298, 298, + 298, 298, 298, 457, 298, 298, 457, 298, 298, 15, + 457, 441, 35, 274, 44, 45, 38, 457, 298, 298, + 457, 298, 298, 298, 457, 441, 298, 298, 298, 298, + 298, 310, 312, 313, 314, 298, 298, 298, 441, 298, + 298, 441, 298, 457, 298, 441, 287, 298, 44, 45, + 38, 298, 441, 298, 298, 441, 298, 457, 298, 441, + 248, 298, 298, 298, 298, 310, 312, 313, 314, 298, + 44, 45, 38, 298, 298, 112, 298, 44, 45, 38, + 298, 173, 298, 298, 44, 45, 38, 310, 312, 313, + 314, 44, 45, 38, 310, 312, 313, 314, 298, 298, + 299, 310, 312, 313, 314, 44, 45, 38, 310, 312, + 313, 314, 174, 298, 298, 298, 138, 298, 298, 298, + 298, 298, 310, 312, 313, 314, 44, 45, 38, 298, + 298, 298, 44, 45, 38, 298, 44, 45, 38, 298, + 44, 45, 38, 310, 312, 313, 314, 307, 298, 310, + 312, 313, 314, 310, 312, 313, 314, 310, 312, 313, + 314, ); public static $yy_lookahead = array( - 3, 9, 10, 15, 71, 17, 28, 74, 11, 12, - 13, 14, 34, 16, 81, 18, 28, 20, 21, 22, - 11, 82, 34, 14, 27, 37, 93, 18, 31, 32, - 33, 45, 35, 66, 37, 68, 48, 28, 52, 42, - 43, 44, 45, 34, 47, 15, 49, 16, 51, 52, - 53, 54, 3, 23, 77, 25, 59, 17, 28, 19, - 11, 12, 13, 14, 34, 16, 36, 18, 38, 20, - 21, 22, 105, 106, 94, 45, 27, 73, 101, 73, - 31, 32, 33, 77, 35, 54, 37, 83, 48, 83, - 94, 42, 43, 44, 45, 14, 47, 16, 49, 18, - 51, 52, 3, 54, 36, 101, 38, 101, 59, 15, - 11, 12, 13, 14, 77, 16, 35, 18, 24, 20, - 21, 22, 28, 86, 87, 88, 27, 24, 34, 37, - 31, 32, 33, 82, 35, 54, 37, 66, 101, 68, - 46, 42, 43, 44, 45, 16, 47, 71, 49, 46, - 51, 52, 3, 54, 78, 79, 53, 81, 59, 15, - 11, 12, 13, 14, 37, 16, 37, 18, 24, 20, - 21, 22, 28, 19, 65, 48, 27, 106, 34, 101, - 31, 32, 33, 54, 35, 71, 37, 16, 74, 18, - 46, 42, 43, 44, 45, 81, 47, 45, 49, 45, - 51, 52, 3, 54, 90, 53, 52, 93, 59, 30, - 11, 12, 13, 14, 82, 16, 37, 18, 24, 20, - 21, 22, 51, 18, 14, 54, 27, 48, 73, 17, - 31, 32, 33, 1, 35, 14, 37, 16, 83, 18, - 46, 42, 43, 44, 45, 1, 47, 37, 49, 77, - 51, 52, 3, 54, 60, 50, 1, 45, 59, 15, - 11, 12, 13, 14, 52, 16, 36, 18, 38, 20, - 21, 22, 28, 101, 102, 54, 27, 8, 34, 10, - 31, 32, 33, 28, 35, 95, 37, 97, 98, 34, - 94, 42, 43, 44, 45, 1, 47, 71, 49, 77, - 51, 52, 3, 54, 78, 23, 73, 81, 59, 15, - 11, 12, 13, 14, 73, 16, 83, 18, 36, 20, - 21, 22, 28, 101, 83, 17, 27, 19, 34, 96, - 31, 32, 33, 45, 35, 16, 37, 96, 37, 41, - 52, 42, 43, 44, 45, 1, 47, 71, 49, 48, - 51, 52, 3, 54, 78, 37, 48, 81, 59, 15, - 11, 12, 13, 14, 71, 16, 48, 18, 17, 20, - 21, 22, 28, 54, 81, 24, 27, 70, 34, 37, - 31, 32, 33, 28, 35, 24, 37, 45, 1, 34, - 48, 42, 43, 44, 45, 53, 47, 2, 49, 73, - 51, 52, 3, 54, 97, 98, 19, 46, 59, 83, - 11, 12, 13, 14, 36, 16, 38, 18, 98, 20, - 21, 22, 11, 64, 65, 14, 27, 101, 1, 18, - 31, 32, 33, 94, 35, 96, 37, 1, 17, 19, - 92, 42, 43, 44, 45, 73, 47, 99, 49, 77, - 51, 52, 3, 54, 16, 83, 18, 30, 59, 70, - 11, 12, 13, 14, 73, 16, 45, 18, 48, 20, - 21, 22, 11, 101, 83, 14, 27, 35, 92, 18, - 31, 32, 33, 94, 35, 99, 37, 97, 98, 53, - 36, 42, 43, 44, 45, 66, 47, 68, 49, 18, - 51, 52, 3, 54, 94, 38, 96, 53, 59, 81, - 11, 12, 13, 14, 73, 16, 77, 18, 73, 20, - 21, 22, 11, 3, 83, 14, 27, 99, 83, 18, - 31, 32, 33, 37, 35, 18, 37, 18, 1, 2, - 101, 42, 43, 44, 45, 35, 47, 18, 49, 16, - 51, 18, 18, 54, 62, 63, 97, 98, 59, 39, - 40, 50, 18, 4, 5, 6, 7, 8, 45, 16, - 11, 12, 13, 14, 18, 55, 56, 57, 58, 20, - 21, 22, 49, 53, 51, 53, 27, 54, 18, 15, - 31, 32, 33, 66, 67, 68, 69, 25, 71, 72, - 51, 74, 75, 76, 18, 18, 11, 11, 81, 14, - 14, 84, 85, 18, 18, 17, 89, 90, 91, 9, - 93, 15, 51, 28, 102, 30, 81, 81, 19, 34, - 66, 67, 68, 69, 95, 71, 72, 83, 74, 75, - 76, 94, 94, 80, 94, 81, 50, 81, 84, 85, - 107, 96, 94, 89, 90, 91, 107, 93, 66, 107, - 68, 107, 107, 71, 107, 107, 74, 75, 76, 107, - 107, 107, 107, 81, 107, 107, 84, 85, 107, 107, - 107, 89, 90, 91, 66, 93, 68, 69, 107, 71, - 72, 107, 74, 75, 76, 103, 104, 107, 11, 81, - 107, 14, 84, 85, 107, 18, 107, 89, 90, 91, - 107, 93, 107, 5, 107, 107, 107, 107, 107, 11, - 12, 13, 14, 107, 16, 107, 107, 107, 20, 21, - 22, 107, 107, 107, 107, 27, 5, 50, 107, 31, - 32, 33, 11, 12, 13, 14, 107, 16, 107, 107, - 107, 20, 21, 22, 107, 107, 107, 107, 27, 107, - 107, 107, 31, 32, 33, 107, 107, 59, 60, 66, - 107, 68, 107, 107, 71, 107, 107, 74, 75, 76, - 107, 107, 107, 107, 81, 73, 107, 84, 85, 77, - 59, 60, 89, 90, 91, 83, 93, 107, 86, 87, - 88, 107, 66, 100, 68, 107, 107, 71, 107, 107, - 74, 75, 76, 101, 107, 107, 107, 81, 107, 107, - 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, - 107, 107, 107, 107, 66, 107, 68, 107, 107, 71, - 104, 107, 74, 75, 76, 107, 78, 107, 107, 81, - 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, - 66, 93, 68, 107, 107, 71, 107, 107, 74, 75, - 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, - 107, 107, 107, 89, 90, 91, 107, 93, 66, 107, - 68, 107, 107, 71, 100, 107, 74, 75, 76, 1, - 2, 3, 107, 81, 107, 107, 84, 85, 107, 107, - 107, 89, 90, 91, 107, 93, 66, 107, 68, 107, - 107, 71, 100, 107, 74, 75, 76, 107, 78, 107, - 107, 81, 107, 107, 84, 85, 107, 39, 40, 89, - 90, 91, 66, 93, 68, 107, 107, 71, 107, 107, - 74, 75, 76, 55, 56, 57, 58, 81, 107, 107, - 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, - 66, 107, 68, 107, 107, 71, 107, 107, 74, 75, - 76, 1, 107, 3, 107, 81, 107, 107, 84, 85, - 107, 107, 107, 89, 90, 91, 107, 93, 66, 107, - 68, 107, 107, 71, 107, 107, 74, 75, 76, 107, - 107, 107, 107, 81, 107, 107, 84, 85, 107, 39, - 40, 89, 90, 91, 66, 93, 68, 107, 107, 71, - 107, 107, 74, 75, 76, 55, 56, 57, 58, 81, - 60, 107, 84, 85, 107, 107, 107, 89, 90, 91, - 107, 93, 66, 107, 68, 107, 107, 71, 107, 107, - 74, 75, 76, 1, 107, 3, 107, 81, 107, 107, - 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, - 66, 107, 68, 107, 107, 71, 107, 107, 74, 75, - 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, - 38, 39, 40, 89, 90, 91, 66, 93, 68, 107, - 107, 71, 107, 107, 74, 75, 76, 55, 56, 57, - 58, 81, 107, 107, 84, 85, 107, 107, 107, 89, - 90, 91, 107, 93, 66, 107, 68, 107, 107, 71, - 107, 107, 74, 75, 76, 1, 107, 3, 107, 81, - 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, - 107, 93, 66, 107, 68, 107, 107, 71, 107, 107, - 74, 75, 76, 29, 107, 107, 107, 81, 107, 107, - 84, 85, 107, 39, 40, 89, 90, 91, 66, 93, - 68, 107, 107, 71, 107, 107, 74, 75, 76, 55, - 56, 57, 58, 81, 107, 107, 84, 85, 107, 107, - 107, 89, 90, 91, 107, 93, 66, 107, 68, 107, - 107, 71, 107, 107, 74, 75, 76, 1, 107, 3, - 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, - 90, 91, 107, 93, 66, 107, 68, 107, 107, 71, - 107, 107, 74, 75, 76, 107, 107, 107, 107, 81, - 107, 107, 84, 85, 38, 39, 40, 89, 90, 91, - 66, 93, 68, 107, 107, 71, 107, 107, 74, 75, - 76, 55, 56, 57, 58, 81, 107, 107, 84, 85, - 107, 107, 107, 89, 90, 91, 107, 93, 66, 107, - 68, 107, 107, 71, 107, 107, 74, 75, 76, 1, - 107, 3, 107, 81, 107, 107, 84, 85, 107, 107, - 107, 89, 90, 91, 107, 93, 66, 107, 68, 107, - 107, 71, 107, 107, 74, 75, 76, 107, 107, 107, - 107, 81, 107, 107, 84, 85, 107, 39, 40, 89, - 90, 91, 66, 93, 68, 107, 107, 71, 107, 107, - 74, 75, 76, 55, 56, 57, 58, 81, 107, 107, - 84, 85, 107, 1, 107, 89, 90, 91, 107, 93, - 66, 107, 68, 107, 107, 71, 107, 15, 74, 75, - 76, 19, 107, 107, 107, 81, 107, 107, 84, 85, - 28, 107, 107, 89, 90, 91, 34, 93, 66, 37, - 68, 107, 107, 71, 107, 107, 74, 75, 76, 107, - 48, 107, 107, 81, 107, 107, 84, 85, 107, 107, - 107, 89, 90, 91, 66, 93, 68, 107, 107, 71, - 107, 107, 74, 75, 76, 107, 107, 107, 107, 81, - 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, - 107, 93, 66, 107, 68, 107, 107, 71, 107, 107, - 74, 75, 76, 107, 107, 107, 107, 81, 107, 107, - 84, 85, 107, 107, 107, 89, 90, 91, 107, 93, - 66, 107, 68, 107, 107, 71, 107, 107, 74, 75, - 76, 107, 107, 107, 107, 81, 107, 107, 84, 85, - 107, 107, 107, 89, 90, 91, 66, 93, 68, 107, - 107, 71, 107, 107, 74, 75, 76, 107, 107, 107, - 107, 81, 107, 107, 84, 85, 107, 107, 107, 89, - 90, 91, 107, 93, 66, 107, 68, 107, 107, 71, - 107, 107, 74, 75, 76, 107, 107, 107, 107, 81, - 107, 107, 84, 85, 107, 107, 107, 89, 90, 91, - 107, 93, 66, 107, 68, 107, 107, 71, 107, 107, - 74, 75, 76, 107, 107, 107, 107, 81, 107, 107, - 84, 85, 1, 2, 3, 89, 90, 91, 66, 93, - 68, 107, 107, 71, 107, 107, 74, 75, 76, 107, - 107, 107, 107, 81, 107, 107, 84, 85, 1, 107, - 3, 89, 90, 91, 107, 93, 107, 107, 37, 107, - 39, 40, 107, 107, 107, 66, 107, 68, 107, 48, - 71, 107, 107, 74, 75, 28, 55, 56, 57, 58, - 81, 34, 107, 107, 85, 107, 39, 40, 89, 90, - 91, 66, 93, 68, 107, 1, 71, 3, 107, 74, - 75, 107, 55, 56, 57, 58, 81, 107, 107, 107, - 85, 107, 107, 107, 89, 90, 91, 107, 93, 107, - 26, 107, 28, 2, 107, 107, 107, 107, 34, 107, - 107, 107, 11, 39, 40, 14, 107, 107, 107, 18, - 19, 107, 107, 107, 107, 107, 107, 107, 107, 55, - 56, 57, 58, 107, 107, 66, 107, 68, 107, 107, - 71, 107, 107, 74, 75, 107, 45, 107, 107, 48, - 81, 50, 2, 52, 53, 107, 107, 107, 89, 90, - 91, 11, 93, 2, 14, 107, 107, 17, 18, 19, - 107, 107, 11, 107, 107, 14, 107, 73, 17, 18, - 19, 77, 107, 107, 107, 107, 107, 83, 107, 107, - 86, 87, 88, 107, 107, 45, 107, 107, 48, 66, - 50, 68, 52, 107, 71, 101, 45, 74, 75, 48, - 66, 50, 68, 52, 81, 71, 107, 107, 74, 75, - 107, 107, 89, 90, 91, 81, 93, 107, 107, 107, - 107, 107, 107, 89, 90, 91, 66, 93, 68, 107, - 107, 71, 107, 107, 74, 75, 107, 66, 107, 68, - 107, 81, 71, 107, 107, 74, 75, 107, 107, 89, - 90, 91, 81, 93, 1, 107, 3, 107, 107, 107, - 89, 90, 91, 66, 93, 68, 107, 1, 71, 3, - 107, 74, 75, 107, 107, 107, 23, 107, 81, 107, - 1, 15, 3, 107, 107, 107, 89, 90, 91, 1, - 93, 3, 39, 40, 15, 107, 107, 107, 107, 107, - 107, 107, 107, 15, 107, 39, 40, 107, 55, 56, - 57, 58, 107, 107, 107, 107, 107, 107, 39, 40, - 107, 55, 56, 57, 58, 107, 107, 39, 40, 107, - 107, 107, 107, 107, 55, 56, 57, 58, 2, 1, - 107, 3, 107, 55, 56, 57, 58, 11, 107, 107, - 14, 107, 107, 15, 18, 19, 2, 107, 107, 107, - 107, 107, 107, 107, 107, 11, 107, 107, 14, 107, - 107, 107, 18, 19, 1, 107, 3, 39, 40, 107, - 107, 45, 107, 1, 48, 3, 50, 107, 52, 107, - 107, 107, 107, 55, 56, 57, 58, 15, 107, 45, - 107, 107, 48, 107, 50, 107, 52, 11, 107, 107, - 14, 107, 39, 40, 18, 19, 107, 107, 107, 107, - 107, 39, 40, 107, 107, 107, 53, 107, 55, 56, - 57, 58, 107, 107, 107, 107, 107, 55, 56, 57, - 58, 45, 107, 107, 48, 107, 50, 73, 52, 107, - 107, 77, 107, 107, 107, 107, 107, 83, 107, 107, - 86, 87, 88, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 101, + 10, 11, 12, 13, 74, 15, 36, 17, 1, 19, + 20, 21, 29, 103, 84, 45, 26, 14, 48, 36, + 30, 31, 32, 53, 34, 22, 36, 24, 98, 39, + 27, 48, 42, 43, 44, 45, 33, 47, 35, 49, + 37, 51, 52, 53, 54, 14, 16, 16, 45, 59, + 60, 96, 10, 11, 12, 13, 1, 15, 27, 17, + 53, 19, 20, 21, 33, 27, 1, 36, 26, 14, + 45, 33, 30, 31, 32, 45, 34, 52, 36, 48, + 72, 39, 27, 75, 42, 43, 44, 45, 33, 47, + 82, 49, 27, 51, 52, 15, 54, 17, 33, 91, + 83, 59, 60, 95, 10, 11, 12, 13, 13, 15, + 15, 17, 17, 19, 20, 21, 97, 35, 99, 100, + 26, 86, 87, 88, 30, 31, 32, 66, 34, 49, + 36, 51, 96, 39, 54, 53, 42, 43, 44, 45, + 72, 47, 16, 49, 18, 51, 52, 79, 54, 54, + 82, 14, 18, 59, 60, 1, 10, 11, 12, 13, + 23, 15, 15, 17, 27, 19, 20, 21, 14, 17, + 33, 13, 26, 15, 48, 17, 30, 31, 32, 45, + 34, 27, 36, 46, 83, 39, 52, 33, 42, 43, + 44, 45, 34, 47, 74, 49, 10, 51, 52, 13, + 54, 54, 50, 17, 84, 59, 60, 14, 10, 11, + 12, 13, 54, 15, 45, 17, 23, 19, 20, 21, + 27, 52, 100, 103, 26, 35, 33, 37, 30, 31, + 32, 22, 34, 67, 36, 69, 50, 39, 83, 46, + 42, 43, 44, 45, 35, 47, 72, 49, 10, 51, + 52, 13, 54, 79, 80, 17, 82, 59, 60, 1, + 10, 11, 12, 13, 16, 15, 18, 17, 72, 19, + 20, 21, 14, 107, 108, 79, 26, 71, 82, 18, + 30, 31, 32, 1, 34, 27, 36, 15, 50, 39, + 45, 33, 42, 43, 44, 45, 48, 47, 53, 49, + 10, 51, 52, 13, 54, 99, 100, 17, 36, 59, + 60, 29, 10, 11, 12, 13, 15, 15, 17, 17, + 13, 19, 20, 21, 8, 9, 54, 72, 26, 67, + 75, 69, 30, 31, 32, 78, 34, 82, 36, 24, + 50, 39, 17, 36, 42, 43, 44, 45, 74, 47, + 95, 49, 51, 51, 52, 54, 54, 35, 84, 37, + 103, 59, 60, 36, 10, 11, 12, 13, 74, 15, + 108, 17, 23, 19, 20, 21, 10, 103, 84, 13, + 26, 23, 36, 17, 30, 31, 32, 7, 34, 9, + 36, 17, 98, 39, 48, 46, 42, 43, 44, 45, + 17, 47, 53, 49, 46, 51, 52, 93, 54, 78, + 16, 1, 36, 59, 60, 101, 10, 11, 12, 13, + 35, 15, 37, 17, 48, 19, 20, 21, 18, 36, + 65, 66, 26, 74, 103, 104, 30, 31, 32, 45, + 34, 48, 36, 84, 36, 39, 52, 17, 42, 43, + 44, 45, 15, 47, 17, 49, 10, 51, 52, 13, + 54, 18, 74, 17, 82, 59, 60, 34, 10, 11, + 12, 13, 84, 15, 93, 17, 15, 19, 20, 21, + 1, 2, 101, 101, 26, 99, 100, 17, 30, 31, + 32, 48, 34, 96, 36, 98, 96, 39, 98, 71, + 42, 43, 44, 45, 35, 47, 37, 49, 27, 51, + 52, 67, 54, 69, 33, 54, 74, 59, 60, 17, + 10, 11, 12, 13, 96, 15, 84, 17, 34, 19, + 20, 21, 45, 78, 63, 64, 26, 99, 100, 16, + 30, 31, 32, 16, 34, 23, 36, 17, 17, 39, + 23, 51, 42, 43, 44, 45, 72, 47, 103, 49, + 78, 51, 52, 17, 54, 74, 82, 41, 46, 59, + 60, 67, 68, 69, 70, 84, 72, 73, 53, 75, + 76, 77, 53, 61, 15, 103, 82, 14, 51, 85, + 14, 37, 17, 8, 90, 91, 92, 1, 94, 95, + 3, 4, 5, 6, 7, 96, 82, 10, 11, 12, + 13, 97, 84, 81, 96, 74, 19, 20, 21, 78, + 82, 82, 1, 26, 104, 84, 2, 30, 31, 32, + 67, 68, 69, 70, 98, 72, 73, 109, 75, 76, + 77, 67, 109, 69, 103, 82, 72, 96, 85, 75, + 76, 77, 96, 90, 91, 92, 82, 94, 95, 85, + 10, 14, 96, 13, 90, 91, 92, 17, 94, 95, + 109, 109, 109, 109, 109, 109, 109, 27, 109, 105, + 106, 109, 109, 33, 4, 38, 39, 40, 109, 109, + 10, 11, 12, 13, 109, 15, 109, 109, 109, 19, + 20, 21, 55, 56, 57, 58, 26, 74, 109, 109, + 30, 31, 32, 109, 109, 109, 4, 84, 109, 86, + 87, 88, 10, 11, 12, 13, 109, 15, 109, 109, + 109, 19, 20, 21, 109, 74, 109, 109, 26, 109, + 60, 61, 30, 31, 32, 84, 109, 86, 87, 88, + 109, 109, 67, 109, 69, 70, 109, 72, 73, 109, + 75, 76, 77, 109, 109, 109, 109, 82, 109, 109, + 85, 109, 60, 61, 109, 90, 91, 92, 10, 94, + 95, 13, 109, 2, 67, 17, 69, 109, 109, 72, + 109, 109, 75, 76, 77, 27, 109, 29, 109, 82, + 109, 33, 85, 109, 109, 109, 109, 90, 91, 92, + 109, 94, 95, 109, 109, 109, 109, 36, 109, 38, + 39, 40, 105, 106, 109, 67, 109, 69, 109, 48, + 72, 109, 109, 75, 76, 77, 55, 56, 57, 58, + 82, 109, 109, 85, 109, 109, 109, 74, 90, 91, + 92, 78, 94, 95, 67, 27, 69, 84, 109, 72, + 102, 33, 75, 76, 77, 109, 38, 39, 40, 82, + 109, 109, 85, 109, 109, 109, 103, 90, 91, 92, + 109, 94, 95, 55, 56, 57, 58, 109, 109, 102, + 67, 109, 69, 109, 109, 72, 109, 109, 75, 76, + 77, 109, 109, 109, 109, 82, 109, 109, 85, 109, + 109, 109, 109, 90, 91, 92, 109, 94, 95, 109, + 109, 109, 67, 109, 69, 109, 1, 72, 109, 106, + 75, 76, 77, 109, 79, 109, 109, 82, 109, 14, + 85, 74, 109, 18, 109, 90, 91, 92, 109, 94, + 95, 84, 27, 86, 87, 88, 109, 67, 33, 69, + 109, 36, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 48, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 102, 109, 75, 76, 77, 67, 79, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 77, 109, 109, + 109, 109, 82, 109, 109, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 77, 67, 109, 69, + 109, 82, 72, 109, 85, 75, 76, 77, 109, 90, + 91, 92, 82, 94, 95, 85, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 109, 109, 109, + 109, 109, 82, 109, 109, 109, 109, 109, 109, 89, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 109, 67, 109, 69, + 109, 82, 72, 109, 109, 75, 76, 109, 89, 90, + 91, 92, 82, 94, 95, 109, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 109, 109, 109, + 109, 109, 82, 109, 109, 109, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 109, 67, 109, 69, + 109, 82, 72, 109, 109, 75, 76, 109, 109, 90, + 91, 92, 82, 94, 95, 109, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 109, 67, 109, 69, + 109, 109, 72, 109, 109, 75, 76, 109, 109, 109, + 109, 109, 82, 109, 109, 109, 109, 109, 109, 109, + 90, 91, 92, 109, 94, 95, 67, 109, 69, 109, + 109, 72, 109, 109, 75, 76, 109, 67, 109, 69, + 109, 82, 72, 109, 109, 75, 76, 109, 109, 90, + 91, 92, 82, 94, 95, 109, 109, 109, 109, 109, + 90, 91, 92, 2, 94, 95, 109, 25, 109, 27, + 109, 10, 109, 109, 13, 33, 109, 16, 17, 18, + 38, 39, 40, 37, 38, 39, 40, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 55, 56, 57, + 58, 55, 56, 57, 58, 109, 45, 109, 109, 48, + 109, 50, 2, 52, 10, 109, 109, 13, 109, 109, + 10, 17, 18, 13, 109, 109, 2, 17, 18, 109, + 109, 109, 109, 109, 10, 109, 109, 13, 109, 109, + 16, 17, 18, 109, 109, 109, 109, 109, 109, 45, + 109, 109, 48, 109, 50, 45, 52, 109, 48, 109, + 50, 109, 52, 53, 109, 109, 109, 109, 109, 45, + 109, 109, 48, 109, 50, 2, 52, 109, 109, 109, + 109, 109, 109, 10, 109, 109, 13, 109, 109, 2, + 17, 18, 2, 37, 38, 39, 40, 10, 109, 109, + 13, 109, 109, 109, 17, 18, 109, 109, 109, 109, + 109, 55, 56, 57, 58, 109, 109, 109, 45, 109, + 109, 48, 109, 50, 109, 52, 14, 109, 38, 39, + 40, 109, 45, 109, 109, 48, 109, 50, 109, 52, + 14, 109, 109, 109, 109, 55, 56, 57, 58, 109, + 38, 39, 40, 109, 109, 22, 109, 38, 39, 40, + 109, 14, 109, 109, 38, 39, 40, 55, 56, 57, + 58, 38, 39, 40, 55, 56, 57, 58, 109, 109, + 61, 55, 56, 57, 58, 38, 39, 40, 55, 56, + 57, 58, 14, 109, 109, 109, 28, 109, 109, 109, + 109, 109, 55, 56, 57, 58, 38, 39, 40, 109, + 109, 109, 38, 39, 40, 109, 38, 39, 40, 109, + 38, 39, 40, 55, 56, 57, 58, 53, 109, 55, + 56, 57, 58, 55, 56, 57, 58, 55, 56, 57, + 58, ); public static $yy_shift_ofst = array( - -23, 399, 399, 449, 49, 49, 449, 349, 49, 49, - 349, -3, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 149, 199, 299, 49, 149, 49, 49, - 49, 49, 49, 49, 249, 49, 99, 99, 499, 499, - 499, 499, 499, 499, 1664, 1617, 1617, 1144, 1982, 1973, - 1938, 1226, 1853, 1062, 980, 1879, 898, 1866, 1888, 1308, - 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, - 1308, 1308, 520, 520, 533, 731, 1372, 171, 255, 129, - 708, 595, 9, 154, 129, 255, 308, 129, 255, 537, - 559, 1751, 244, 344, 511, 221, 294, 411, 40, 411, - -22, 438, 438, 436, 387, 427, 319, 355, -22, -22, - 420, 609, 232, 232, 232, 609, 232, 232, 232, 232, - -23, -23, -23, -23, 1740, 1691, 1954, 1936, 1996, 81, - 687, 461, 212, -22, 31, -14, -14, -22, 288, -14, - 288, -14, -22, 31, -22, -14, -14, -22, -22, 351, - -22, -22, -14, -22, -22, -22, -22, -22, -14, 210, - 232, 609, 232, 395, 609, 232, 609, 232, 395, 92, - 232, -23, -23, -23, -23, -23, -23, 1591, 30, -12, - 94, 144, 342, 596, 179, 103, 194, 454, 230, 152, - 269, 301, 318, 127, 282, -8, 205, 361, 378, 421, - 68, 467, 556, 606, 571, 598, 587, 586, 610, 549, - 572, 574, 570, 532, 530, 553, 298, 523, 544, 510, - 92, 534, 529, 519, 517, 496, 442, 481, + -31, 406, 406, 458, 458, 94, 510, 94, 94, 94, + 510, 458, -10, 94, 94, 354, 146, 94, 94, 94, + 94, 146, 94, 94, 94, 94, 250, 94, 94, 94, + 94, 94, 94, 302, 94, 94, 94, 198, 42, 42, + 42, 42, 42, 42, 42, 42, 1772, 828, 828, 80, + 712, 925, 301, 65, 272, 680, 1942, 1920, 1886, 1776, + 647, 1949, 1977, 2008, 2004, 1963, 1998, 1956, 2012, 2012, + 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, + 2012, 2012, 2012, 768, 650, 272, 65, 272, 65, 134, + 126, 479, 597, 1854, 154, 290, 95, 55, 258, 366, + 248, 366, 282, 443, 437, 38, 38, 437, 7, 481, + 410, 38, 461, 621, 596, 596, 261, 596, 596, 261, + 596, 596, 596, 596, 596, -31, -31, 1840, 1791, 1917, + 1903, 1834, 158, 238, 394, 446, 38, 25, 147, 169, + 147, 25, 169, 25, 38, 38, 25, 25, 38, 25, + 307, 38, 38, 25, 527, 38, 38, 25, 38, 38, + 38, 38, 38, 596, 624, 261, 624, 327, 596, 596, + 261, 596, 261, -31, -31, -31, -31, -31, -31, 781, + 3, 31, 193, 137, -30, 186, -17, 522, 349, 469, + 322, 30, 82, 316, 346, 376, 190, 358, 393, 152, + 209, 380, 385, 245, 315, 523, 585, 554, 576, 575, + 537, 573, 569, 529, 525, 546, 500, 526, 531, 325, + 530, 487, 494, 502, 470, 433, 430, 408, 383, 327, + 374, ); public static $yy_reduce_ofst = array( - 492, 527, 564, 592, 618, 703, 736, 768, 794, 822, - 850, 1068, 1096, 1122, 1150, 1286, 1204, 1232, 1260, 1040, - 1314, 1532, 1478, 1506, 1342, 1450, 1424, 1396, 1368, 1178, - 1014, 986, 932, 904, 876, 958, 1595, 1569, 1771, 1659, - 1760, 1734, 1723, 1797, 712, 1694, 1974, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 114, -33, 372, -67, 6, 76, - 71, 233, 241, 190, 226, 4, 307, 276, 326, 172, - 429, 389, -23, -23, 339, 428, -23, 410, 390, 339, - 391, 386, 348, -23, 222, -23, 293, 155, 441, 445, - 390, 459, -23, -23, -23, 390, -23, -23, -23, 439, - -23, -23, 359, -23, 550, 550, 550, 550, 550, 545, - 555, 550, 550, 554, 566, 539, 539, 554, 547, 539, - 548, 539, 554, 546, 554, 539, 539, 554, 554, 563, - 554, 554, 539, 554, 554, 554, 554, 554, 539, 558, - 78, 320, 78, 522, 320, 78, 320, 78, 522, 196, - 78, 51, -61, -20, -4, 109, 132, + 471, 504, 563, 717, 574, 685, 919, 890, 787, 758, + 855, 823, 1240, 1199, 1140, 1100, 1070, 1129, 1170, 1210, + 1269, 1280, 1310, 1339, 1350, 1380, 1409, 1420, 1450, 1479, + 1490, 1059, 1030, 1000, 930, 960, 989, 1520, 1549, 1700, + 1619, 1689, 1660, 1630, 1590, 1560, 633, 661, 867, 8, + 166, 773, 255, 541, 174, 262, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 294, -70, 196, 120, 68, 274, 19, + 206, 331, 444, 428, 257, 400, 382, 257, 257, 400, + 386, 397, 257, 386, 381, 388, 359, 314, 257, 442, + 482, 491, 484, 257, 257, 455, 386, 257, 257, 438, + 257, 257, 257, 257, 257, 257, 365, 509, 509, 509, + 509, 509, 524, 536, 509, 509, 528, 514, 539, 551, + 538, 514, 556, 514, 528, 528, 514, 514, 528, 514, + 518, 528, 528, 514, 532, 528, 528, 514, 528, 528, + 528, 528, 528, -90, 520, 122, 520, 566, -90, -90, + 122, -90, 122, -45, 36, 155, 101, 61, 17, ); public static $yyExpectedTokens = array( array(), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), array( - 3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 53, 54, 59, + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, ), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,), - array(3, 11, 12, 13, 14, 16, 18, 20, 21, 22, 27, 31, 32, 33, 35, 37, 42, 43, 44, 45, 47, 49, 51, 54, 59,), - array(1, 3, 26, 28, 34, 39, 40, 55, 56, 57, 58,), - array(1, 3, 28, 34, 39, 40, 55, 56, 57, 58,), - array(1, 3, 28, 34, 39, 40, 55, 56, 57, 58,), - array(1, 3, 29, 39, 40, 55, 56, 57, 58,), - array(1, 3, 15, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 53, 55, 56, 57, 58,), - array(1, 3, 15, 39, 40, 55, 56, 57, 58,), - array(1, 3, 38, 39, 40, 55, 56, 57, 58,), - array(1, 3, 23, 39, 40, 55, 56, 57, 58,), - array(1, 3, 38, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58, 60,), - array(1, 3, 15, 39, 40, 55, 56, 57, 58,), - array(1, 2, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 15, 39, 40, 55, 56, 57, 58,), - array(1, 3, 15, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(1, 3, 39, 40, 55, 56, 57, 58,), - array(3, 39, 40, 55, 56, 57, 58,), - array(3, 39, 40, 55, 56, 57, 58,), - array(16, 18, 49, 51, 54,), - array(5, 11, 12, 13, 14, 16, 20, 21, 22, 27, 31, 32, 33, 59, 60,), - array(1, 15, 19, 28, 34, 37, 48,), - array(16, 18, 51, 54,), - array(1, 28, 34,), - array(16, 37, 54,), - array(5, 11, 12, 13, 14, 16, 20, 21, 22, 27, 31, 32, 33, 59, 60,), - array(11, 14, 18, 28, 30, 34,), - array(11, 14, 18, 28, 34,), - array(19, 45, 52,), - array(16, 37, 54,), - array(1, 28, 34,), - array(17, 19, 48,), - array(16, 37, 54,), - array(1, 28, 34,), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 53, 54, 59, + 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array( + 10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, + ), + array(25, 27, 33, 38, 39, 40, 55, 56, 57, 58,), + array(27, 33, 38, 39, 40, 55, 56, 57, 58,), + array(27, 33, 38, 39, 40, 55, 56, 57, 58,), + array(15, 17, 49, 51, 54,), + array(4, 10, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 60, 61,), + array(1, 14, 18, 27, 33, 36, 48,), + array(15, 17, 51, 54,), + array(1, 27, 33,), + array(15, 36, 54,), + array(4, 10, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 60, 61,), + array(14, 38, 39, 40, 55, 56, 57, 58,), + array(2, 38, 39, 40, 55, 56, 57, 58,), + array(37, 38, 39, 40, 55, 56, 57, 58,), + array(37, 38, 39, 40, 55, 56, 57, 58,), + array(14, 38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58, 61,), + array(14, 38, 39, 40, 55, 56, 57, 58,), + array(14, 38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 53, 55, 56, 57, 58,), + array(22, 38, 39, 40, 55, 56, 57, 58,), + array(28, 38, 39, 40, 55, 56, 57, 58,), + array(14, 38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(38, 39, 40, 55, 56, 57, 58,), + array(10, 13, 17, 27, 29, 33,), + array(10, 13, 17, 27, 33,), + array(15, 36, 54,), + array(1, 27, 33,), + array(15, 36, 54,), + array(1, 27, 33,), + array(18, 45, 52,), + array(16, 18, 48,), array(1, 2,), - array(4, 5, 6, 7, 8, 11, 12, 13, 14, 20, 21, 22, 27, 31, 32, 33,), - array(2, 11, 14, 17, 18, 19, 45, 48, 50, 52,), - array(1, 15, 28, 34,), - array(1, 15, 28, 34,), - array(11, 14, 18, 50,), - array(14, 16, 18, 54,), - array(1, 15, 28, 34,), - array(11, 14, 18,), - array(17, 19, 48,), - array(11, 14, 18,), - array(28, 34,), - array(16, 18,), - array(16, 18,), + array(3, 4, 5, 6, 7, 10, 11, 12, 13, 19, 20, 21, 26, 30, 31, 32,), + array(2, 10, 13, 16, 17, 18, 45, 48, 50, 52,), + array(1, 14, 27, 33,), + array(10, 13, 17, 50,), + array(13, 15, 17, 54,), + array(1, 14, 27, 33,), + array(1, 14, 27, 33,), + array(10, 13, 17,), + array(16, 18, 48,), + array(10, 13, 17,), + array(1, 29,), + array(18, 48,), + array(15, 17,), + array(27, 33,), + array(27, 33,), + array(15, 17,), array(1, 53,), - array(1, 19,), - array(1, 30,), - array(16, 54,), - array(28, 34,), - array(28, 34,), - array(28, 34,), - array(19, 48,), - array(19,), + array(27, 33,), + array(1, 18,), + array(27, 33,), + array(15, 54,), array(1,), array(1,), array(1,), - array(19,), + array(18,), + array(1,), + array(1,), + array(18,), + array(1,), array(1,), array(1,), array(1,), array(1,), array(), array(), - array(), - array(), - array(2, 11, 14, 17, 18, 19, 45, 48, 50, 52,), - array(2, 11, 14, 18, 19, 45, 48, 50, 52, 53,), - array(2, 11, 14, 18, 19, 45, 48, 50, 52,), - array(2, 11, 14, 18, 19, 45, 48, 50, 52,), - array(11, 14, 18, 19, 45, 48, 50, 52,), - array(14, 16, 18, 35, 54,), - array(11, 14, 18, 50,), - array(11, 14, 18,), - array(17, 45, 52,), - array(28, 34,), - array(16, 54,), + array(2, 10, 13, 17, 18, 45, 48, 50, 52, 53,), + array(2, 10, 13, 16, 17, 18, 45, 48, 50, 52,), + array(2, 10, 13, 17, 18, 45, 48, 50, 52,), + array(2, 10, 13, 17, 18, 45, 48, 50, 52,), + array(10, 13, 17, 18, 45, 48, 50, 52,), + array(13, 15, 17, 34, 54,), + array(10, 13, 17, 50,), + array(16, 45, 52,), + array(10, 13, 17,), + array(27, 33,), array(45, 52,), + array(15, 54,), array(45, 52,), - array(28, 34,), + array(15, 54,), array(45, 52,), array(45, 52,), array(45, 52,), + array(27, 33,), + array(27, 33,), array(45, 52,), - array(28, 34,), - array(16, 54,), - array(28, 34,), array(45, 52,), + array(27, 33,), array(45, 52,), - array(28, 34,), - array(28, 34,), - array(17, 24,), - array(28, 34,), - array(28, 34,), + array(13, 36,), + array(27, 33,), + array(27, 33,), array(45, 52,), - array(28, 34,), - array(28, 34,), - array(28, 34,), - array(28, 34,), - array(28, 34,), + array(16, 23,), + array(27, 33,), + array(27, 33,), array(45, 52,), - array(14, 37,), - array(1,), - array(19,), + array(27, 33,), + array(27, 33,), + array(27, 33,), + array(27, 33,), + array(27, 33,), array(1,), array(2,), - array(19,), + array(18,), + array(2,), + array(36,), array(1,), - array(19,), array(1,), - array(2,), - array(37,), + array(18,), array(1,), + array(18,), array(), array(), array(), array(), array(), array(), - array(1, 2, 3, 37, 39, 40, 48, 55, 56, 57, 58,), - array(15, 23, 25, 28, 34, 36, 38, 45,), - array(15, 17, 28, 34, 37, 48,), - array(15, 24, 28, 34, 46,), - array(15, 24, 28, 34, 46,), - array(37, 45, 48, 53,), - array(11, 14, 18, 50,), - array(30, 37, 48,), - array(24, 46, 53,), - array(24, 46, 60,), - array(36, 53,), - array(36, 38,), + array(2, 36, 38, 39, 40, 48, 55, 56, 57, 58,), + array(14, 22, 24, 27, 33, 35, 37, 45,), + array(14, 16, 27, 33, 36, 48,), + array(14, 23, 27, 33, 46,), + array(14, 23, 27, 33, 46,), + array(36, 45, 48, 53,), + array(10, 13, 17, 50,), + array(29, 36, 48,), + array(23, 46, 61,), + array(23, 46, 53,), + array(35, 37,), + array(35, 37,), + array(16, 45,), + array(35, 53,), + array(8, 9,), + array(36, 48,), + array(36, 48,), + array(35, 37,), + array(23, 46,), + array(36, 48,), + array(17, 50,), + array(22, 35,), + array(7, 9,), + array(35, 37,), array(45, 53,), - array(8, 10,), - array(37, 48,), - array(37, 48,), - array(37, 48,), - array(23, 36,), - array(9, 10,), - array(18, 50,), - array(24, 46,), - array(36, 38,), - array(17, 45,), - array(36, 38,), - array(38,), - array(18,), - array(15,), - array(51,), + array(24,), + array(16,), + array(8,), + array(37,), + array(14,), array(17,), - array(18,), - array(18,), - array(9,), array(51,), - array(25,), + array(14,), array(15,), - array(18,), array(53,), array(53,), - array(16,), + array(17,), + array(51,), array(41,), + array(17,), + array(17,), + array(17,), array(45,), - array(18,), - array(35,), - array(37,), - array(18,), - array(18,), - array(18,), - array(18,), - array(37,), - array(35,), - array(18,), + array(34,), + array(17,), + array(17,), + array(34,), + array(17,), + array(36,), + array(17,), + array(36,), + array(17,), + array(), array(), array(), array(), @@ -901,39 +994,39 @@ class Smarty_Internal_Templateparser ); public static $yy_default = array( - 334, 509, 509, 494, 509, 473, 509, 509, 473, 473, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 375, 354, 375, 380, 509, 509, - 347, 509, 509, 509, 509, 509, 509, 509, 509, 397, - 472, 347, 471, 387, 497, 495, 382, 386, 359, 377, - 380, 496, 402, 401, 509, 509, 413, 509, 375, 509, - 509, 375, 375, 485, 509, 375, 428, 509, 375, 366, - 323, 427, 389, 389, 438, 509, 389, 438, 428, 438, - 375, 509, 509, 389, 369, 389, 509, 375, 375, 356, - 428, 482, 405, 389, 406, 428, 396, 392, 400, 371, - 480, 404, 332, 393, 427, 427, 427, 427, 427, 509, - 440, 438, 454, 355, 509, 436, 434, 365, 433, 432, - 431, 465, 364, 509, 363, 466, 463, 362, 352, 509, - 351, 357, 435, 344, 350, 358, 361, 348, 464, 438, - 422, 460, 367, 474, 486, 372, 483, 395, 475, 438, - 370, 479, 479, 438, 438, 332, 479, 413, 409, 413, - 403, 403, 413, 439, 413, 403, 403, 509, 509, 409, - 330, 423, 509, 413, 509, 509, 509, 403, 509, 409, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 383, 509, 509, 418, 509, 509, 415, 409, 509, 509, - 454, 509, 509, 509, 509, 484, 411, 509, 324, 426, - 415, 360, 442, 487, 444, 336, 443, 337, 488, 376, - 489, 490, 452, 481, 459, 454, 410, 441, 328, 419, - 325, 326, 437, 420, 477, 327, 476, 398, 399, 414, - 335, 421, 388, 424, 412, 451, 329, 331, 449, 333, - 384, 469, 500, 468, 491, 505, 343, 416, 417, 506, - 374, 391, 492, 493, 498, 341, 373, 418, 425, 353, - 501, 508, 507, 504, 502, 499, 461, 390, 368, 408, - 338, 503, 478, 453, 447, 446, 429, 445, 430, 448, - 450, 342, 462, 339, 340, 455, 470, 458, 457, 407, - 467, 456, 394, + 338, 514, 514, 499, 499, 514, 514, 476, 476, 476, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 379, 358, 379, 514, + 514, 415, 514, 379, 514, 514, 351, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 384, 514, 399, 475, + 351, 403, 390, 474, 500, 502, 384, 501, 363, 381, + 404, 386, 391, 379, 379, 514, 379, 514, 379, 489, + 431, 370, 327, 430, 393, 441, 514, 393, 393, 441, + 431, 441, 393, 431, 514, 379, 360, 514, 393, 379, + 373, 379, 514, 406, 402, 375, 431, 396, 398, 486, + 393, 408, 397, 407, 406, 483, 336, 430, 430, 430, + 430, 430, 514, 443, 457, 441, 367, 438, 514, 436, + 514, 435, 434, 466, 368, 348, 439, 437, 361, 467, + 441, 356, 354, 468, 514, 366, 355, 469, 362, 359, + 352, 369, 365, 371, 478, 463, 477, 441, 374, 376, + 490, 424, 487, 441, 441, 482, 482, 336, 482, 415, + 411, 415, 405, 405, 415, 442, 415, 405, 405, 514, + 514, 411, 514, 514, 425, 514, 514, 405, 415, 514, + 514, 334, 514, 411, 387, 514, 514, 514, 514, 514, + 514, 514, 514, 420, 514, 514, 514, 417, 514, 514, + 514, 411, 413, 514, 514, 514, 514, 488, 514, 457, + 514, 421, 364, 420, 340, 422, 357, 341, 409, 400, + 480, 457, 462, 401, 485, 423, 426, 342, 447, 380, + 416, 339, 428, 329, 330, 444, 445, 446, 394, 331, + 395, 429, 419, 388, 332, 418, 410, 392, 412, 333, + 335, 414, 337, 472, 417, 479, 427, 497, 347, 461, + 460, 459, 378, 346, 464, 510, 495, 511, 498, 473, + 377, 496, 503, 506, 513, 512, 509, 507, 504, 508, + 345, 458, 471, 448, 505, 454, 452, 455, 456, 450, + 491, 449, 492, 493, 494, 470, 451, 328, 453, 343, + 344, 372, 481, 432, 433, 465, 440, ); public static $yyFallback = array(); @@ -1010,8 +1103,6 @@ class Smarty_Internal_Templateparser 'expr ::= DOLLARID COLON ID', 'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', - 'expr ::= array', - 'expr ::= expr modifierlist', 'expr ::= expr tlop value', 'expr ::= expr lop expr', 'expr ::= expr scond', @@ -1040,6 +1131,7 @@ class Smarty_Internal_Templateparser 'value ::= smartytag', 'value ::= value modifierlist', 'value ::= NAMESPACE', + 'value ::= arraydef', 'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID', 'ns1 ::= NAMESPACE', @@ -1097,6 +1189,7 @@ class Smarty_Internal_Templateparser 'modparameters ::= modparameters modparameter', 'modparameters ::=', 'modparameter ::= COLON value', + 'modparameter ::= COLON UNIMATH value', 'modparameter ::= COLON array', 'static_class_access ::= method', 'static_class_access ::= method objectchain', @@ -1107,7 +1200,8 @@ class Smarty_Internal_Templateparser 'lop ::= SLOGOP', 'tlop ::= TLOGOP', 'scond ::= SINGLECOND', - 'array ::= OPENB arrayelements CLOSEB', + 'arraydef ::= OPENB arrayelements CLOSEB', + 'arraydef ::= ARRAYOPEN arrayelements CLOSEP', 'arrayelements ::= arrayelement', 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=', @@ -1128,192 +1222,193 @@ class Smarty_Internal_Templateparser ); public static $yyRuleInfo = array( - array(0 => 62, 1 => 1), - array(0 => 63, 1 => 2), - array(0 => 63, 1 => 2), - array(0 => 63, 1 => 2), - array(0 => 63, 1 => 2), - array(0 => 63, 1 => 4), + array(0 => 63, 1 => 1), + array(0 => 64, 1 => 2), + array(0 => 64, 1 => 2), + array(0 => 64, 1 => 2), + array(0 => 64, 1 => 2), array(0 => 64, 1 => 4), - array(0 => 64, 1 => 1), - array(0 => 65, 1 => 2), - array(0 => 65, 1 => 0), - array(0 => 63, 1 => 2), - array(0 => 63, 1 => 0), - array(0 => 66, 1 => 1), - array(0 => 66, 1 => 1), - array(0 => 66, 1 => 1), - array(0 => 66, 1 => 3), + array(0 => 65, 1 => 4), + array(0 => 65, 1 => 1), array(0 => 66, 1 => 2), + array(0 => 66, 1 => 0), + array(0 => 64, 1 => 2), + array(0 => 64, 1 => 0), array(0 => 67, 1 => 1), + array(0 => 67, 1 => 1), + array(0 => 67, 1 => 1), + array(0 => 67, 1 => 3), array(0 => 67, 1 => 2), - array(0 => 67, 1 => 2), - array(0 => 70, 1 => 2), - array(0 => 69, 1 => 2), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 1), - array(0 => 72, 1 => 1), - array(0 => 68, 1 => 3), + array(0 => 68, 1 => 1), array(0 => 68, 1 => 2), - array(0 => 68, 1 => 4), - array(0 => 68, 1 => 5), - array(0 => 68, 1 => 6), array(0 => 68, 1 => 2), - array(0 => 68, 1 => 2), - array(0 => 68, 1 => 3), - array(0 => 68, 1 => 2), - array(0 => 68, 1 => 3), - array(0 => 68, 1 => 8), - array(0 => 80, 1 => 2), - array(0 => 80, 1 => 1), - array(0 => 68, 1 => 5), - array(0 => 68, 1 => 7), - array(0 => 68, 1 => 6), - array(0 => 68, 1 => 8), - array(0 => 68, 1 => 2), - array(0 => 68, 1 => 3), - array(0 => 68, 1 => 4), - array(0 => 66, 1 => 1), - array(0 => 68, 1 => 2), - array(0 => 68, 1 => 3), - array(0 => 68, 1 => 4), - array(0 => 68, 1 => 5), - array(0 => 73, 1 => 2), + array(0 => 71, 1 => 2), + array(0 => 70, 1 => 2), array(0 => 73, 1 => 1), - array(0 => 73, 1 => 0), - array(0 => 83, 1 => 4), - array(0 => 83, 1 => 2), - array(0 => 83, 1 => 2), - array(0 => 83, 1 => 2), - array(0 => 83, 1 => 2), - array(0 => 83, 1 => 2), - array(0 => 83, 1 => 4), - array(0 => 79, 1 => 1), + array(0 => 73, 1 => 1), + array(0 => 73, 1 => 1), + array(0 => 69, 1 => 3), + array(0 => 69, 1 => 2), + array(0 => 69, 1 => 4), + array(0 => 69, 1 => 5), + array(0 => 69, 1 => 6), + array(0 => 69, 1 => 2), + array(0 => 69, 1 => 2), + array(0 => 69, 1 => 3), + array(0 => 69, 1 => 2), + array(0 => 69, 1 => 3), + array(0 => 69, 1 => 8), + array(0 => 81, 1 => 2), + array(0 => 81, 1 => 1), + array(0 => 69, 1 => 5), + array(0 => 69, 1 => 7), + array(0 => 69, 1 => 6), + array(0 => 69, 1 => 8), + array(0 => 69, 1 => 2), + array(0 => 69, 1 => 3), + array(0 => 69, 1 => 4), + array(0 => 67, 1 => 1), + array(0 => 69, 1 => 2), + array(0 => 69, 1 => 3), + array(0 => 69, 1 => 4), + array(0 => 69, 1 => 5), + array(0 => 74, 1 => 2), + array(0 => 74, 1 => 1), + array(0 => 74, 1 => 0), + array(0 => 84, 1 => 4), + array(0 => 84, 1 => 2), + array(0 => 84, 1 => 2), + array(0 => 84, 1 => 2), + array(0 => 84, 1 => 2), + array(0 => 84, 1 => 2), + array(0 => 84, 1 => 4), + array(0 => 80, 1 => 1), + array(0 => 80, 1 => 3), array(0 => 79, 1 => 3), - array(0 => 78, 1 => 3), - array(0 => 78, 1 => 3), - array(0 => 78, 1 => 3), - array(0 => 78, 1 => 3), + array(0 => 79, 1 => 3), + array(0 => 79, 1 => 3), + array(0 => 79, 1 => 3), + array(0 => 77, 1 => 1), + array(0 => 77, 1 => 1), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 2), + array(0 => 77, 1 => 3), + array(0 => 77, 1 => 3), + array(0 => 85, 1 => 7), + array(0 => 85, 1 => 7), + array(0 => 76, 1 => 1), + array(0 => 76, 1 => 2), + array(0 => 76, 1 => 2), + array(0 => 76, 1 => 2), + array(0 => 76, 1 => 2), + array(0 => 76, 1 => 1), + array(0 => 76, 1 => 1), + array(0 => 76, 1 => 3), + array(0 => 76, 1 => 2), + array(0 => 76, 1 => 2), array(0 => 76, 1 => 1), array(0 => 76, 1 => 1), array(0 => 76, 1 => 3), array(0 => 76, 1 => 3), array(0 => 76, 1 => 3), array(0 => 76, 1 => 1), - array(0 => 76, 1 => 2), - array(0 => 76, 1 => 3), + array(0 => 76, 1 => 1), array(0 => 76, 1 => 3), + array(0 => 76, 1 => 1), array(0 => 76, 1 => 2), + array(0 => 76, 1 => 1), + array(0 => 76, 1 => 1), array(0 => 76, 1 => 3), - array(0 => 76, 1 => 3), - array(0 => 84, 1 => 7), - array(0 => 84, 1 => 7), - array(0 => 75, 1 => 1), - array(0 => 75, 1 => 2), - array(0 => 75, 1 => 2), - array(0 => 75, 1 => 2), - array(0 => 75, 1 => 2), + array(0 => 91, 1 => 1), + array(0 => 91, 1 => 1), array(0 => 75, 1 => 1), array(0 => 75, 1 => 1), array(0 => 75, 1 => 3), - array(0 => 75, 1 => 2), - array(0 => 75, 1 => 2), - array(0 => 75, 1 => 1), - array(0 => 75, 1 => 1), - array(0 => 75, 1 => 3), - array(0 => 75, 1 => 3), - array(0 => 75, 1 => 3), - array(0 => 75, 1 => 1), array(0 => 75, 1 => 1), array(0 => 75, 1 => 3), - array(0 => 75, 1 => 1), - array(0 => 75, 1 => 2), - array(0 => 75, 1 => 1), + array(0 => 75, 1 => 4), array(0 => 75, 1 => 3), - array(0 => 90, 1 => 1), - array(0 => 90, 1 => 1), - array(0 => 74, 1 => 1), - array(0 => 74, 1 => 1), - array(0 => 74, 1 => 3), - array(0 => 74, 1 => 1), - array(0 => 74, 1 => 3), - array(0 => 74, 1 => 4), - array(0 => 74, 1 => 3), - array(0 => 74, 1 => 4), - array(0 => 71, 1 => 2), - array(0 => 71, 1 => 2), - array(0 => 94, 1 => 2), - array(0 => 94, 1 => 0), - array(0 => 95, 1 => 2), - array(0 => 95, 1 => 2), - array(0 => 95, 1 => 4), - array(0 => 95, 1 => 2), - array(0 => 95, 1 => 2), - array(0 => 95, 1 => 4), - array(0 => 95, 1 => 3), - array(0 => 95, 1 => 5), - array(0 => 95, 1 => 3), - array(0 => 95, 1 => 3), - array(0 => 95, 1 => 3), - array(0 => 95, 1 => 3), - array(0 => 95, 1 => 3), - array(0 => 95, 1 => 3), - array(0 => 95, 1 => 2), - array(0 => 81, 1 => 1), - array(0 => 81, 1 => 1), - array(0 => 81, 1 => 2), - array(0 => 96, 1 => 1), - array(0 => 96, 1 => 1), - array(0 => 96, 1 => 3), - array(0 => 93, 1 => 2), - array(0 => 97, 1 => 1), + array(0 => 75, 1 => 4), + array(0 => 72, 1 => 2), + array(0 => 72, 1 => 2), + array(0 => 96, 1 => 2), + array(0 => 96, 1 => 0), array(0 => 97, 1 => 2), + array(0 => 97, 1 => 2), + array(0 => 97, 1 => 4), + array(0 => 97, 1 => 2), + array(0 => 97, 1 => 2), + array(0 => 97, 1 => 4), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 5), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 3), + array(0 => 97, 1 => 2), + array(0 => 82, 1 => 1), + array(0 => 82, 1 => 1), + array(0 => 82, 1 => 2), + array(0 => 98, 1 => 1), + array(0 => 98, 1 => 1), array(0 => 98, 1 => 3), - array(0 => 98, 1 => 3), - array(0 => 98, 1 => 5), - array(0 => 98, 1 => 6), - array(0 => 98, 1 => 2), - array(0 => 89, 1 => 4), - array(0 => 99, 1 => 4), - array(0 => 99, 1 => 4), + array(0 => 95, 1 => 2), + array(0 => 99, 1 => 1), + array(0 => 99, 1 => 2), array(0 => 100, 1 => 3), - array(0 => 100, 1 => 1), - array(0 => 100, 1 => 0), - array(0 => 77, 1 => 3), - array(0 => 77, 1 => 2), - array(0 => 101, 1 => 3), - array(0 => 101, 1 => 2), - array(0 => 82, 1 => 2), - array(0 => 82, 1 => 0), - array(0 => 102, 1 => 2), - array(0 => 102, 1 => 2), - array(0 => 92, 1 => 1), - array(0 => 92, 1 => 2), - array(0 => 92, 1 => 1), - array(0 => 92, 1 => 2), - array(0 => 92, 1 => 3), + array(0 => 100, 1 => 3), + array(0 => 100, 1 => 5), + array(0 => 100, 1 => 6), + array(0 => 100, 1 => 2), + array(0 => 90, 1 => 4), + array(0 => 101, 1 => 4), + array(0 => 101, 1 => 4), + array(0 => 102, 1 => 3), + array(0 => 102, 1 => 1), + array(0 => 102, 1 => 0), + array(0 => 78, 1 => 3), + array(0 => 78, 1 => 2), + array(0 => 103, 1 => 3), + array(0 => 103, 1 => 2), + array(0 => 83, 1 => 2), + array(0 => 83, 1 => 0), + array(0 => 104, 1 => 2), + array(0 => 104, 1 => 3), + array(0 => 104, 1 => 2), + array(0 => 93, 1 => 1), + array(0 => 93, 1 => 2), + array(0 => 93, 1 => 1), + array(0 => 93, 1 => 2), + array(0 => 93, 1 => 3), array(0 => 87, 1 => 1), array(0 => 87, 1 => 1), array(0 => 86, 1 => 1), array(0 => 88, 1 => 1), - array(0 => 85, 1 => 3), - array(0 => 103, 1 => 1), - array(0 => 103, 1 => 3), - array(0 => 103, 1 => 0), - array(0 => 104, 1 => 3), - array(0 => 104, 1 => 3), - array(0 => 104, 1 => 1), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 3), - array(0 => 105, 1 => 2), + array(0 => 94, 1 => 3), + array(0 => 94, 1 => 3), array(0 => 105, 1 => 1), + array(0 => 105, 1 => 3), + array(0 => 105, 1 => 0), array(0 => 106, 1 => 3), array(0 => 106, 1 => 3), array(0 => 106, 1 => 1), - array(0 => 106, 1 => 3), - array(0 => 106, 1 => 3), - array(0 => 106, 1 => 1), - array(0 => 106, 1 => 1), + array(0 => 92, 1 => 2), + array(0 => 92, 1 => 3), + array(0 => 107, 1 => 2), + array(0 => 107, 1 => 1), + array(0 => 108, 1 => 3), + array(0 => 108, 1 => 3), + array(0 => 108, 1 => 1), + array(0 => 108, 1 => 3), + array(0 => 108, 1 => 3), + array(0 => 108, 1 => 1), + array(0 => 108, 1 => 1), ); public static $yyReduceMap = array( @@ -1333,18 +1428,18 @@ class Smarty_Internal_Templateparser 58 => 7, 66 => 7, 67 => 7, - 71 => 7, - 80 => 7, - 85 => 7, - 86 => 7, - 91 => 7, - 95 => 7, - 96 => 7, - 100 => 7, - 102 => 7, - 107 => 7, - 169 => 7, - 174 => 7, + 78 => 7, + 83 => 7, + 84 => 7, + 89 => 7, + 93 => 7, + 94 => 7, + 98 => 7, + 99 => 7, + 101 => 7, + 106 => 7, + 170 => 7, + 175 => 7, 8 => 8, 9 => 9, 10 => 10, @@ -1385,18 +1480,18 @@ class Smarty_Internal_Templateparser 50 => 50, 51 => 51, 60 => 51, - 149 => 51, - 153 => 51, - 157 => 51, + 148 => 51, + 152 => 51, + 156 => 51, 158 => 51, 52 => 52, - 150 => 52, - 156 => 52, + 149 => 52, + 155 => 52, 53 => 53, 54 => 54, 55 => 54, 56 => 56, - 134 => 56, + 133 => 56, 59 => 59, 61 => 61, 62 => 62, @@ -1406,61 +1501,61 @@ class Smarty_Internal_Templateparser 68 => 68, 69 => 69, 70 => 69, + 71 => 71, 72 => 72, - 99 => 72, 73 => 73, 74 => 74, 75 => 75, 76 => 76, 77 => 77, - 78 => 78, 79 => 79, - 81 => 81, - 83 => 81, - 84 => 81, - 114 => 81, - 82 => 82, + 81 => 79, + 82 => 79, + 113 => 79, + 80 => 80, + 85 => 85, + 86 => 86, 87 => 87, 88 => 88, - 89 => 89, 90 => 90, - 92 => 92, - 93 => 93, - 94 => 93, + 91 => 91, + 92 => 91, + 95 => 95, + 96 => 96, 97 => 97, - 98 => 98, - 101 => 101, + 100 => 100, + 102 => 102, 103 => 103, 104 => 104, 105 => 105, - 106 => 106, + 107 => 107, 108 => 108, 109 => 109, 110 => 110, 111 => 111, 112 => 112, - 113 => 113, + 114 => 114, + 172 => 114, 115 => 115, - 171 => 115, 116 => 116, 117 => 117, 118 => 118, 119 => 119, 120 => 120, + 128 => 120, 121 => 121, - 129 => 121, 122 => 122, 123 => 123, - 124 => 124, - 125 => 124, - 127 => 124, - 128 => 124, - 126 => 126, + 124 => 123, + 126 => 123, + 127 => 123, + 125 => 125, + 129 => 129, 130 => 130, 131 => 131, + 176 => 131, 132 => 132, - 175 => 132, - 133 => 133, + 134 => 134, 135 => 135, 136 => 136, 137 => 137, @@ -1474,11 +1569,11 @@ class Smarty_Internal_Templateparser 145 => 145, 146 => 146, 147 => 147, - 148 => 148, + 150 => 150, 151 => 151, - 152 => 152, + 153 => 153, 154 => 154, - 155 => 155, + 157 => 157, 159 => 159, 160 => 160, 161 => 161, @@ -1489,19 +1584,20 @@ class Smarty_Internal_Templateparser 166 => 166, 167 => 167, 168 => 168, - 170 => 170, - 172 => 172, + 169 => 168, + 171 => 171, 173 => 173, - 176 => 176, + 174 => 174, 177 => 177, 178 => 178, 179 => 179, - 182 => 179, 180 => 180, 183 => 180, 181 => 181, - 184 => 184, + 184 => 181, + 182 => 182, 185 => 185, + 186 => 186, ); /** @@ -1625,33 +1721,34 @@ class Smarty_Internal_Templateparser public $yystack = array(); public $yyTokenName = array( - '$', 'VERT', 'COLON', 'UNIMATH', - 'PHP', 'TEXT', 'STRIPON', 'STRIPOFF', - 'LITERALSTART', 'LITERALEND', 'LITERAL', 'SIMPELOUTPUT', - 'SIMPLETAG', 'SMARTYBLOCKCHILDPARENT', 'LDEL', 'RDEL', - 'DOLLARID', 'EQUAL', 'ID', 'PTR', - 'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON', - 'INCDEC', 'TO', 'STEP', 'LDELFOREACH', - 'SPACE', 'AS', 'APTR', 'LDELSETFILTER', - 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', - 'COMMA', 'OPENP', 'CLOSEP', 'MATH', + '$', 'VERT', 'COLON', 'PHP', + 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART', + 'LITERALEND', 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG', + 'SMARTYBLOCKCHILDPARENT', 'LDEL', 'RDEL', 'DOLLARID', + 'EQUAL', 'ID', 'PTR', 'LDELMAKENOCACHE', + 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', + 'TO', 'STEP', 'LDELFOREACH', 'SPACE', + 'AS', 'APTR', 'LDELSETFILTER', 'CLOSETAG', + 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', + 'OPENP', 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT', 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP', - 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', - 'BACKTICK', 'error', 'start', 'template', - 'literal_e2', 'literal_e1', 'smartytag', 'tagbody', - 'tag', 'outattr', 'eqoutattr', 'varindexed', - 'output', 'attributes', 'variable', 'value', - 'expr', 'modifierlist', 'statement', 'statements', - 'foraction', 'varvar', 'modparameters', 'attribute', - 'ternary', 'array', 'tlop', 'lop', - 'scond', 'function', 'ns1', 'doublequoted_with_quotes', - 'static_class_access', 'object', 'arrayindex', 'indexdef', - 'varvarele', 'objectchain', 'objectelement', 'method', - 'params', 'modifier', 'modparameter', 'arrayelements', - 'arrayelement', 'doublequoted', 'doublequotedcontent', + 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'ARRAYOPEN', + 'QUOTE', 'BACKTICK', 'error', 'start', + 'template', 'literal_e2', 'literal_e1', 'smartytag', + 'tagbody', 'tag', 'outattr', 'eqoutattr', + 'varindexed', 'output', 'attributes', 'variable', + 'value', 'expr', 'modifierlist', 'statement', + 'statements', 'foraction', 'varvar', 'modparameters', + 'attribute', 'ternary', 'tlop', 'lop', + 'scond', 'array', 'function', 'ns1', + 'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'object', + 'arrayindex', 'indexdef', 'varvarele', 'objectchain', + 'objectelement', 'method', 'params', 'modifier', + 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted', + 'doublequotedcontent', ); /** @@ -1762,11 +1859,9 @@ class Smarty_Internal_Templateparser } $yytos = array_pop($this->yystack); if ($this->yyTraceFILE && $this->yyidx >= 0) { - fwrite( - $this->yyTraceFILE, + fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . - "\n" - ); + "\n"); } $yymajor = $yytos->major; self::yy_destructor($yymajor, $yytos->minor); @@ -1818,8 +1913,7 @@ class Smarty_Internal_Templateparser $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; $nextstate = $this->yy_find_reduce_action( $this->yystack[ $this->yyidx ]->stateno, - self::$yyRuleInfo[ $yyruleno ][ 0 ] - ); + self::$yyRuleInfo[ $yyruleno ][ 0 ]); if (isset(self::$yyExpectedTokens[ $nextstate ])) { $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]); if (isset($res4[ $nextstate ][ $token ])) { @@ -1905,8 +1999,7 @@ class Smarty_Internal_Templateparser $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; $nextstate = $this->yy_find_reduce_action( $this->yystack[ $this->yyidx ]->stateno, - self::$yyRuleInfo[ $yyruleno ][ 0 ] - ); + self::$yyRuleInfo[ $yyruleno ][ 0 ]); if (isset($res2[ $nextstate ][ $token ])) { if ($res2[ $nextstate ][ $token ]) { $this->yyidx = $yyidx; @@ -2036,19 +2129,12 @@ class Smarty_Internal_Templateparser $yytos->minor = $yypMinor; $this->yystack[] = $yytos; if ($this->yyTraceFILE && $this->yyidx > 0) { - fprintf( - $this->yyTraceFILE, - "%sShift %d\n", - $this->yyTracePrompt, - $yyNewState - ); + fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, + $yyNewState); fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); for ($i = 1; $i <= $this->yyidx; $i++) { - fprintf( - $this->yyTraceFILE, - " %s", - $this->yyTokenName[ $this->yystack[ $i ]->major ] - ); + fprintf($this->yyTraceFILE, " %s", + $this->yyTokenName[ $this->yystack[ $i ]->major ]); } fwrite($this->yyTraceFILE, "\n"); } @@ -2606,7 +2692,7 @@ class Smarty_Internal_Templateparser '\')'; } - // line 642 "../smarty/lexer/smarty_internal_templateparser.y" + // line 638 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r69() { $this->_retvalue = @@ -2615,18 +2701,8 @@ class Smarty_Internal_Templateparser $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 648 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r72() - { - $this->_retvalue = - $this->compiler->compileTag('private_modifier', array(), array( - 'value' => $this->yystack[ $this->yyidx + -1 ]->minor, - 'modifierlist' => $this->yystack[ $this->yyidx + 0 ]->minor - )); - } - - // line 652 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r73() + // line 642 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r71() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor[ 'pre' ] . @@ -2636,8 +2712,8 @@ class Smarty_Internal_Templateparser ')'; } - // line 656 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r74() + // line 646 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r72() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . @@ -2645,14 +2721,14 @@ class Smarty_Internal_Templateparser $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 660 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r75() + // line 650 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r73() { $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - // line 664 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r76() + // line 654 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r74() { $this->_retvalue = 'in_array(' . @@ -2662,8 +2738,8 @@ class Smarty_Internal_Templateparser ')'; } - // line 672 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r77() + // line 662 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r75() { $this->_retvalue = 'in_array(' . @@ -2673,8 +2749,8 @@ class Smarty_Internal_Templateparser ')'; } - // line 676 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r78() + // line 666 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r76() { $this->_retvalue = $this->yystack[ $this->yyidx + -5 ]->minor . @@ -2684,8 +2760,8 @@ class Smarty_Internal_Templateparser $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 686 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r79() + // line 676 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r77() { $this->_retvalue = $this->yystack[ $this->yyidx + -5 ]->minor . @@ -2695,38 +2771,38 @@ class Smarty_Internal_Templateparser $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 691 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r81() + // line 681 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r79() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 712 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r82() + // line 702 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r80() { $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 716 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r87() + // line 706 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r85() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 720 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r88() + // line 710 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r86() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.'; } - // line 725 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r89() + // line 715 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r87() { $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 742 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r90() + // line 732 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r88() { if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) { if ($this->security) { @@ -2738,14 +2814,14 @@ class Smarty_Internal_Templateparser } } - // line 746 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r92() + // line 736 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r90() { $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - // line 764 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r93() + // line 754 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r91() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . @@ -2753,8 +2829,8 @@ class Smarty_Internal_Templateparser $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 775 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r97() + // line 765 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r95() { $prefixVar = $this->compiler->getNewPrefixVariable(); if ($this->yystack[ $this->yyidx + -2 ]->minor[ 'var' ] === '\'smarty\'') { @@ -2777,8 +2853,8 @@ class Smarty_Internal_Templateparser $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]; } - // line 792 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r98() + // line 772 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r96() { $prefixVar = $this->compiler->getNewPrefixVariable(); $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor); @@ -2786,8 +2862,18 @@ class Smarty_Internal_Templateparser $this->_retvalue = $prefixVar; } - // line 811 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r101() + // line 785 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r97() + { + $this->_retvalue = + $this->compiler->compileTag('private_modifier', array(), array( + 'value' => $this->yystack[ $this->yyidx + -1 ]->minor, + 'modifierlist' => $this->yystack[ $this->yyidx + 0 ]->minor + )); + } + + // line 804 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r100() { if (!in_array(strtolower($this->yystack[ $this->yyidx + -2 ]->minor), array('self', 'parent')) && (!$this->security || @@ -2813,21 +2899,21 @@ class Smarty_Internal_Templateparser } } - // line 822 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r103() + // line 815 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r102() { $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 825 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r104() + // line 818 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r103() { $this->_retvalue = $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\''); } - // line 838 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r105() + // line 831 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r104() { if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] === '\'smarty\'') { $smarty_var = @@ -2844,8 +2930,8 @@ class Smarty_Internal_Templateparser } } - // line 848 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r106() + // line 841 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r105() { $this->_retvalue = '$_smarty_tpl->tpl_vars[' . @@ -2854,15 +2940,15 @@ class Smarty_Internal_Templateparser $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 852 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r108() + // line 845 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r107() { $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\''); } - // line 856 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r109() + // line 849 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r108() { $this->_retvalue = '(is_array($tmp = ' . @@ -2872,14 +2958,14 @@ class Smarty_Internal_Templateparser ' :null)'; } - // line 860 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r110() + // line 853 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r109() { $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -1 ]->minor); } - // line 864 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r111() + // line 857 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r110() { $this->_retvalue = '(is_array($tmp = ' . @@ -2889,8 +2975,8 @@ class Smarty_Internal_Templateparser ' : null)'; } - // line 867 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r112() + // line 860 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r111() { $this->_retvalue = array( @@ -2899,8 +2985,8 @@ class Smarty_Internal_Templateparser ); } - // line 880 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r113() + // line 873 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r112() { $this->_retvalue = array( @@ -2909,14 +2995,14 @@ class Smarty_Internal_Templateparser ); } - // line 886 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r115() + // line 879 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r114() { return; } - // line 889 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r116() + // line 882 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r115() { $this->_retvalue = '[' . @@ -2924,14 +3010,14 @@ class Smarty_Internal_Templateparser ']'; } - // line 893 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r117() + // line 886 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r116() { $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']'; } - // line 897 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r118() + // line 890 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r117() { $this->_retvalue = '[' . @@ -2941,26 +3027,26 @@ class Smarty_Internal_Templateparser ']'; } - // line 901 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r119() + // line 894 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r118() { $this->_retvalue = '[\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\']'; } - // line 906 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r120() + // line 899 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r119() { $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']'; } - // line 911 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r121() + // line 904 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r120() { $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']'; } - // line 915 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r122() + // line 908 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r121() { $this->_retvalue = '[' . @@ -2969,8 +3055,8 @@ class Smarty_Internal_Templateparser ']'; } - // line 918 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r123() + // line 911 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r122() { $this->_retvalue = '[' . @@ -2984,14 +3070,14 @@ class Smarty_Internal_Templateparser ']'; } - // line 924 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r124() + // line 917 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r123() { $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']'; } - // line 940 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r126() + // line 933 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r125() { $this->_retvalue = '[' . @@ -2999,32 +3085,32 @@ class Smarty_Internal_Templateparser ']'; } - // line 950 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r130() + // line 943 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r129() { $this->_retvalue = '[]'; } - // line 954 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r131() + // line 947 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r130() { $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\''; } - // line 959 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r132() + // line 952 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r131() { $this->_retvalue = '\'\''; } - // line 967 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r133() + // line 960 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r132() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 973 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r135() + // line 966 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r134() { $var = trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), @@ -3032,14 +3118,14 @@ class Smarty_Internal_Templateparser $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\''); } - // line 980 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r136() + // line 973 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r135() { $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - // line 989 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r137() + // line 982 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r136() { if ($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ] === '\'smarty\'') { $this->_retvalue = @@ -3054,20 +3140,20 @@ class Smarty_Internal_Templateparser } } - // line 994 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r138() + // line 987 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r137() { $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 999 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r139() + // line 992 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r138() { $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 1006 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r140() + // line 999 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r139() { if ($this->security && substr($this->yystack[ $this->yyidx + -1 ]->minor, 0, 1) === '_') { $this->compiler->trigger_template_error(self::ERR1); @@ -3076,8 +3162,8 @@ class Smarty_Internal_Templateparser '->' . $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 1013 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r141() + // line 1006 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r140() { if ($this->security) { $this->compiler->trigger_template_error(self::ERR2); @@ -3089,8 +3175,8 @@ class Smarty_Internal_Templateparser '}'; } - // line 1020 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r142() + // line 1013 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r141() { if ($this->security) { $this->compiler->trigger_template_error(self::ERR2); @@ -3099,8 +3185,8 @@ class Smarty_Internal_Templateparser '->{' . $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}'; } - // line 1028 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r143() + // line 1021 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r142() { if ($this->security) { $this->compiler->trigger_template_error(self::ERR2); @@ -3114,22 +3200,22 @@ class Smarty_Internal_Templateparser '}'; } - // line 1036 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r144() + // line 1029 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r143() { $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 1044 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r145() + // line 1037 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r144() { $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + -1 ]->minor); } - // line 1051 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r146() + // line 1044 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r145() { if ($this->security && substr($this->yystack[ $this->yyidx + -3 ]->minor, 0, 1) === '_') { $this->compiler->trigger_template_error(self::ERR1); @@ -3141,8 +3227,8 @@ class Smarty_Internal_Templateparser ')'; } - // line 1062 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r147() + // line 1055 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r146() { if ($this->security) { $this->compiler->trigger_template_error(self::ERR2); @@ -3157,15 +3243,15 @@ class Smarty_Internal_Templateparser $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . ')'; } - // line 1079 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r148() + // line 1072 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r147() { $this->_retvalue = array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor)); } - // line 1083 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r151() + // line 1076 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r150() { $this->_retvalue = array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array( @@ -3173,53 +3259,60 @@ class Smarty_Internal_Templateparser )); } - // line 1091 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r152() + // line 1084 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r151() { $this->_retvalue = array(array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor)); } - // line 1099 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r154() + // line 1092 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r153() { $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor); } - // line 1118 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r155() + // line 1105 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r154() { $this->_retvalue = array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); } - // line 1123 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1114 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r157() + { + $this->_retvalue = + array(trim($this->yystack[ $this->yyidx + -1 ]->minor) . $this->yystack[ $this->yyidx + 0 ]->minor); + } + + // line 1119 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r159() { $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method'); } - // line 1128 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1124 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r160() { $this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method'); } - // line 1133 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1129 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r161() { $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, ''); } - // line 1138 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1134 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r162() { $this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property'); } - // line 1144 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1140 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r163() { $this->_retvalue = @@ -3229,13 +3322,13 @@ class Smarty_Internal_Templateparser ); } - // line 1148 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1144 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r164() { $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' '; } - // line 1167 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1163 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r165() { static $lops = array( @@ -3257,7 +3350,7 @@ class Smarty_Internal_Templateparser $this->_retvalue = $lops[ $op ]; } - // line 1180 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1176 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r166() { static $tlops = array( @@ -3272,7 +3365,7 @@ class Smarty_Internal_Templateparser $this->_retvalue = $tlops[ $op ]; } - // line 1194 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1190 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r167() { static $scond = array( @@ -3285,67 +3378,67 @@ class Smarty_Internal_Templateparser $this->_retvalue = $scond[ $op ]; } - // line 1202 "../smarty/lexer/smarty_internal_templateparser.y" + // line 1201 "../smarty/lexer/smarty_internal_templateparser.y" public function yy_r168() { $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; } - // line 1210 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r170() + // line 1209 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r171() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 1214 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r172() + // line 1213 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r173() { $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 1230 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r173() + // line 1229 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r174() { $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor; } - // line 1236 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r176() + // line 1235 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r177() { $this->compiler->leaveDoubleQuote(); $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor->to_smarty_php($this); } - // line 1241 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r177() + // line 1240 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r178() { $this->yystack[ $this->yyidx + -1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor); $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; } - // line 1245 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r178() + // line 1244 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r179() { $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor); } - // line 1249 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r179() + // line 1248 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r180() { $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + -1 ]->minor); } - // line 1253 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r180() + // line 1252 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r181() { $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'); } - // line 1265 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r181() + // line 1264 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r182() { $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' . @@ -3353,13 +3446,13 @@ class Smarty_Internal_Templateparser '\']->value'); } - // line 1269 "../smarty/lexer/smarty_internal_templateparser.y" - public function yy_r184() + // line 1268 "../smarty/lexer/smarty_internal_templateparser.y" + public function yy_r185() { $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor); } - public function yy_r185() + public function yy_r186() { $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor); } @@ -3368,13 +3461,9 @@ class Smarty_Internal_Templateparser { if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) { - fprintf( - $this->yyTraceFILE, - "%sReduce (%d) [%s].\n", - $this->yyTracePrompt, - $yyruleno, - self::$yyRuleName[ $yyruleno ] - ); + fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", + $this->yyTracePrompt, $yyruleno, + self::$yyRuleName[ $yyruleno ]); } $this->_retvalue = $yy_lefthand_side = null; if (isset(self::$yyReduceMap[ $yyruleno ])) { @@ -3453,12 +3542,8 @@ class Smarty_Internal_Templateparser } $yyendofinput = ($yymajor == 0); if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sInput %s\n", - $this->yyTracePrompt, - $this->yyTokenName[ $yymajor ] - ); + fprintf($this->yyTraceFILE, "%sInput %s\n", + $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]); } do { $yyact = $this->yy_find_shift_action($yymajor); @@ -3479,11 +3564,8 @@ class Smarty_Internal_Templateparser $this->yy_reduce($yyact - self::YYNSTATE); } elseif ($yyact === self::YY_ERROR_ACTION) { if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sSyntax Error!\n", - $this->yyTracePrompt - ); + fprintf($this->yyTraceFILE, "%sSyntax Error!\n", + $this->yyTracePrompt); } if (self::YYERRORSYMBOL) { if ($this->yyerrcnt < 0) { @@ -3492,12 +3574,8 @@ class Smarty_Internal_Templateparser $yymx = $this->yystack[ $this->yyidx ]->major; if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) { if ($this->yyTraceFILE) { - fprintf( - $this->yyTraceFILE, - "%sDiscard input token %s\n", - $this->yyTracePrompt, - $this->yyTokenName[ $yymajor ] - ); + fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", + $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]); } $this->yy_destructor($yymajor, $yytokenvalue); $yymajor = self::YYNOCODE; @@ -3537,3 +3615,4 @@ class Smarty_Internal_Templateparser } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0); } } + -- cgit v1.2.3 From d184e2708f788b365648cedc7c2b6c9fac224631 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Sun, 10 Nov 2019 13:04:13 +0000 Subject: fix language tests (cherry picked from commit 1affcb80172576dc46e4434cd10e1a534a9bb6c2) --- tests/unit/includes/LanguageTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/includes/LanguageTest.php b/tests/unit/includes/LanguageTest.php index dd71115c4..0ca9eacd0 100644 --- a/tests/unit/includes/LanguageTest.php +++ b/tests/unit/includes/LanguageTest.php @@ -139,7 +139,7 @@ class LanguageTest extends UnitTestCase { 'en-gb', 'British English', [ - 'de' => 'Britisches Englisch', + 'de' => 'Englisch (Vereinigtes Königreich)', 'nb' => 'engelsk (Storbritannia)' ] ], @@ -147,7 +147,7 @@ class LanguageTest extends UnitTestCase { 'en-au', 'Australian English', [ - 'de' => 'Australisches Englisch', + 'de' => 'Englisch (Australien)', 'nb' => 'engelsk (Australia)' ] ], @@ -161,4 +161,4 @@ class LanguageTest extends UnitTestCase { ] ]; } -} \ No newline at end of file +} -- cgit v1.2.3 From 602768209bcaf3572d6f8457e91d3de12540c636 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 11 Nov 2019 08:06:44 +0000 Subject: bump version --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 38e1ad2d6..fb580e3a9 100755 --- a/boot.php +++ b/boot.php @@ -50,7 +50,7 @@ require_once('include/attach.php'); require_once('include/bbcode.php'); define ( 'PLATFORM_NAME', 'hubzilla' ); -define ( 'STD_VERSION', '4.5' ); +define ( 'STD_VERSION', '4.6RC' ); define ( 'ZOT_REVISION', '6.0a' ); define ( 'DB_UPDATE_VERSION', 1234 ); -- cgit v1.2.3 From de7891771dbfe1aae9ea75e2688e3696b54d2ecb Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 11 Nov 2019 08:14:42 +0000 Subject: update strings --- util/hmessages.po | 17290 ++++++++++++++++++++++++++-------------------------- 1 file changed, 8666 insertions(+), 8624 deletions(-) diff --git a/util/hmessages.po b/util/hmessages.po index 325056f9f..1ee79b449 100644 --- a/util/hmessages.po +++ b/util/hmessages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 4.4RC\n" +"Project-Id-Version: 4.6RC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-01 21:45+0200\n" +"POT-Creation-Date: 2019-11-11 08:09+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,15430 +17,15472 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../Zotlabs/Access/Permissions.php:56 -msgid "Can view my channel stream and posts" -msgstr "" - -#: ../../Zotlabs/Access/Permissions.php:57 -msgid "Can send me their channel stream and posts" -msgstr "" - -#: ../../Zotlabs/Access/Permissions.php:58 -msgid "Can view my default channel profile" -msgstr "" - -#: ../../Zotlabs/Access/Permissions.php:59 -msgid "Can view my connections" -msgstr "" - -#: ../../Zotlabs/Access/Permissions.php:60 -msgid "Can view my file storage and photos" +#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3231 +#: ../../Zotlabs/Module/Admin/Site.php:187 +msgid "Default" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:61 -msgid "Can upload/modify my file storage and photos" +#: ../../view/theme/redbasic/php/config.php:16 +#: ../../view/theme/redbasic/php/config.php:19 +msgid "Focus (Hubzilla default)" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:62 -msgid "Can view my channel webpages" +#: ../../view/theme/redbasic/php/config.php:94 +#: ../../addon/channelreputation/channelreputation.php:142 +#: ../../addon/openclipatar/openclipatar.php:53 +#: ../../addon/photocache/Mod_Photocache.php:67 +#: ../../addon/redred/Mod_Redred.php:90 ../../addon/redphotos/redphotos.php:136 +#: ../../addon/statusnet/Mod_Statusnet.php:193 +#: ../../addon/statusnet/Mod_Statusnet.php:251 +#: ../../addon/statusnet/Mod_Statusnet.php:306 +#: ../../addon/statusnet/statusnet.php:602 ../../addon/frphotos/frphotos.php:97 +#: ../../addon/rtof/Mod_Rtof.php:72 ../../addon/wppost/Mod_Wppost.php:97 +#: ../../addon/content_import/Mod_content_import.php:142 +#: ../../addon/openstreetmap/openstreetmap.php:153 +#: ../../addon/ijpost/Mod_Ijpost.php:72 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:65 +#: ../../addon/dwpost/Mod_Dwpost.php:71 +#: ../../addon/startpage/Mod_Startpage.php:73 +#: ../../addon/twitter/Mod_Twitter.php:184 +#: ../../addon/pumpio/Mod_Pumpio.php:115 +#: ../../addon/cart/submodules/subscriptions.php:410 +#: ../../addon/cart/submodules/hzservices.php:642 +#: ../../addon/cart/submodules/manualcat.php:250 +#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1258 +#: ../../addon/nofed/Mod_Nofed.php:53 +#: ../../addon/smileybutton/Mod_Smileybutton.php:55 +#: ../../addon/redfiles/redfiles.php:124 +#: ../../addon/diaspora/Mod_Diaspora.php:102 ../../addon/piwik/piwik.php:95 +#: ../../addon/workflow/workflow.php:1256 +#: ../../addon/workflow/workflow.php:1302 +#: ../../addon/workflow/workflow.php:1399 +#: ../../addon/workflow/workflow.php:2398 +#: ../../addon/workflow/Settings/Mod_WorkflowSettings.php:94 +#: ../../addon/likebanner/likebanner.php:57 +#: ../../addon/chords/Mod_Chords.php:60 ../../addon/fuzzloc/Mod_Fuzzloc.php:56 +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92 +#: ../../addon/hubwall/hubwall.php:95 +#: ../../addon/flashcards/Mod_Flashcards.php:213 +#: ../../addon/libertree/Mod_Libertree.php:70 ../../addon/logrot/logrot.php:35 +#: ../../addon/skeleton/Mod_Skeleton.php:51 ../../addon/nsfw/Mod_Nsfw.php:61 +#: ../../addon/mailtest/mailtest.php:100 ../../addon/ljpost/Mod_Ljpost.php:78 +#: ../../addon/hzfiles/hzfiles.php:86 +#: ../../addon/jappixmini/Mod_Jappixmini.php:261 +#: ../../addon/pageheader/Mod_Pageheader.php:54 ../../addon/irc/irc.php:45 +#: ../../addon/xmpp/Mod_Xmpp.php:70 ../../include/js_strings.php:22 +#: ../../Zotlabs/Widget/Wiki_pages.php:42 +#: ../../Zotlabs/Widget/Wiki_pages.php:99 +#: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Module/Tokens.php:188 +#: ../../Zotlabs/Module/Import_items.php:129 +#: ../../Zotlabs/Module/Import.php:646 ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:344 ../../Zotlabs/Module/Group.php:150 +#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Oauth.php:111 +#: ../../Zotlabs/Module/Chat.php:211 ../../Zotlabs/Module/Chat.php:250 +#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Mitem.php:259 +#: ../../Zotlabs/Module/Filestorage.php:203 +#: ../../Zotlabs/Module/Connect.php:124 ../../Zotlabs/Module/Editpost.php:86 +#: ../../Zotlabs/Module/Admin/Themes.php:158 +#: ../../Zotlabs/Module/Admin/Features.php:66 +#: ../../Zotlabs/Module/Admin/Security.php:112 +#: ../../Zotlabs/Module/Admin/Accounts.php:168 +#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Logs.php:84 +#: ../../Zotlabs/Module/Admin/Channels.php:147 +#: ../../Zotlabs/Module/Admin/Account_edit.php:73 +#: ../../Zotlabs/Module/Admin/Profs.php:178 +#: ../../Zotlabs/Module/Admin/Addons.php:442 +#: ../../Zotlabs/Module/Events.php:501 ../../Zotlabs/Module/Permcats.php:128 +#: ../../Zotlabs/Module/Mood.php:158 ../../Zotlabs/Module/Appman.php:155 +#: ../../Zotlabs/Module/Email_validation.php:40 +#: ../../Zotlabs/Module/Photos.php:1055 ../../Zotlabs/Module/Photos.php:1096 +#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Module/Profiles.php:723 +#: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Xchan.php:15 +#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Module/Affinity.php:87 +#: ../../Zotlabs/Module/Rate.php:166 +#: ../../Zotlabs/Module/Settings/Network.php:61 +#: ../../Zotlabs/Module/Settings/Features.php:46 +#: ../../Zotlabs/Module/Settings/Channel.php:493 +#: ../../Zotlabs/Module/Settings/Account.php:103 +#: ../../Zotlabs/Module/Settings/Events.php:41 +#: ../../Zotlabs/Module/Settings/Manage.php:41 +#: ../../Zotlabs/Module/Settings/Channel_home.php:89 +#: ../../Zotlabs/Module/Settings/Calendar.php:41 +#: ../../Zotlabs/Module/Settings/Display.php:189 +#: ../../Zotlabs/Module/Settings/Directory.php:41 +#: ../../Zotlabs/Module/Settings/Editor.php:41 +#: ../../Zotlabs/Module/Settings/Connections.php:41 +#: ../../Zotlabs/Module/Settings/Photos.php:41 +#: ../../Zotlabs/Module/Settings/Profiles.php:50 +#: ../../Zotlabs/Module/Settings/Conversation.php:48 +#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Pconfig.php:116 +#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Thing.php:326 +#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Pdledit.php:107 +#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Connedit.php:904 +#: ../../Zotlabs/Module/Locs.php:121 ../../Zotlabs/Module/Sources.php:125 +#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Lib/ThreadItem.php:796 +msgid "Submit" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:63 -msgid "Can view my wiki pages" +#: ../../view/theme/redbasic/php/config.php:98 +msgid "Theme settings" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:64 -msgid "Can create/edit my channel webpages" +#: ../../view/theme/redbasic/php/config.php:99 +msgid "Narrow navbar" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:65 -msgid "Can write to my wiki pages" +#: ../../view/theme/redbasic/php/config.php:99 +#: ../../view/theme/redbasic/php/config.php:116 +#: ../../addon/channelreputation/channelreputation.php:110 +#: ../../addon/redred/Mod_Redred.php:63 +#: ../../addon/statusnet/Mod_Statusnet.php:260 +#: ../../addon/statusnet/Mod_Statusnet.php:282 +#: ../../addon/statusnet/Mod_Statusnet.php:291 ../../addon/rtof/Mod_Rtof.php:49 +#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86 +#: ../../addon/content_import/Mod_content_import.php:137 +#: ../../addon/content_import/Mod_content_import.php:138 +#: ../../addon/ijpost/Mod_Ijpost.php:61 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 +#: ../../addon/dwpost/Mod_Dwpost.php:60 ../../addon/twitter/Mod_Twitter.php:162 +#: ../../addon/twitter/Mod_Twitter.php:171 ../../addon/pumpio/Mod_Pumpio.php:94 +#: ../../addon/pumpio/Mod_Pumpio.php:98 ../../addon/pumpio/Mod_Pumpio.php:102 +#: ../../addon/cart/submodules/subscriptions.php:153 +#: ../../addon/cart/submodules/subscriptions.php:425 +#: ../../addon/cart/submodules/hzservices.php:64 +#: ../../addon/cart/submodules/hzservices.php:648 +#: ../../addon/cart/submodules/hzservices.php:652 +#: ../../addon/cart/submodules/paypalbutton.php:87 +#: ../../addon/cart/submodules/paypalbutton.php:95 +#: ../../addon/cart/submodules/manualcat.php:63 +#: ../../addon/cart/submodules/manualcat.php:256 +#: ../../addon/cart/submodules/manualcat.php:260 +#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 +#: ../../addon/cart/cart.php:1252 ../../addon/nofed/Mod_Nofed.php:42 +#: ../../addon/smileybutton/Mod_Smileybutton.php:44 +#: ../../addon/libertree/Mod_Libertree.php:59 +#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/ljpost/Mod_Ljpost.php:66 +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 +#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Filestorage.php:198 +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Module/Admin/Site.php:255 ../../Zotlabs/Module/Removeme.php:63 +#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Events.php:479 +#: ../../Zotlabs/Module/Api.php:99 ../../Zotlabs/Module/Photos.php:670 +#: ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Settings/Channel.php:309 +#: ../../Zotlabs/Module/Settings/Display.php:89 +#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 +#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Wiki.php:227 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 +#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Sources.php:124 +#: ../../Zotlabs/Module/Sources.php:159 ../../Zotlabs/Lib/Libzotdir.php:162 +#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../Zotlabs/Storage/Browser.php:411 ../../boot.php:1679 +msgid "No" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:66 -msgid "Can post on my channel (wall) page" +#: ../../view/theme/redbasic/php/config.php:99 +#: ../../view/theme/redbasic/php/config.php:116 +#: ../../addon/channelreputation/channelreputation.php:110 +#: ../../addon/redred/Mod_Redred.php:63 +#: ../../addon/statusnet/Mod_Statusnet.php:260 +#: ../../addon/statusnet/Mod_Statusnet.php:282 +#: ../../addon/statusnet/Mod_Statusnet.php:291 ../../addon/rtof/Mod_Rtof.php:49 +#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86 +#: ../../addon/content_import/Mod_content_import.php:137 +#: ../../addon/content_import/Mod_content_import.php:138 +#: ../../addon/ijpost/Mod_Ijpost.php:61 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 +#: ../../addon/dwpost/Mod_Dwpost.php:60 ../../addon/twitter/Mod_Twitter.php:162 +#: ../../addon/twitter/Mod_Twitter.php:171 ../../addon/pumpio/Mod_Pumpio.php:94 +#: ../../addon/pumpio/Mod_Pumpio.php:98 ../../addon/pumpio/Mod_Pumpio.php:102 +#: ../../addon/cart/submodules/subscriptions.php:153 +#: ../../addon/cart/submodules/subscriptions.php:425 +#: ../../addon/cart/submodules/hzservices.php:64 +#: ../../addon/cart/submodules/hzservices.php:648 +#: ../../addon/cart/submodules/hzservices.php:652 +#: ../../addon/cart/submodules/paypalbutton.php:87 +#: ../../addon/cart/submodules/paypalbutton.php:95 +#: ../../addon/cart/submodules/manualcat.php:63 +#: ../../addon/cart/submodules/manualcat.php:256 +#: ../../addon/cart/submodules/manualcat.php:260 +#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 +#: ../../addon/cart/cart.php:1252 ../../addon/nofed/Mod_Nofed.php:42 +#: ../../addon/smileybutton/Mod_Smileybutton.php:44 +#: ../../addon/libertree/Mod_Libertree.php:59 +#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/ljpost/Mod_Ljpost.php:66 +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 +#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Filestorage.php:198 +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Module/Admin/Site.php:257 ../../Zotlabs/Module/Removeme.php:63 +#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Events.php:479 +#: ../../Zotlabs/Module/Api.php:98 ../../Zotlabs/Module/Photos.php:670 +#: ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Settings/Channel.php:309 +#: ../../Zotlabs/Module/Settings/Display.php:89 +#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 +#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Wiki.php:227 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 +#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 +#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163 +#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../Zotlabs/Storage/Browser.php:411 +#: ../../boot.php:1679 +msgid "Yes" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:67 -msgid "Can comment on or like my posts" +#: ../../view/theme/redbasic/php/config.php:100 +msgid "Navigation bar background color" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:68 -msgid "Can send me private mail messages" +#: ../../view/theme/redbasic/php/config.php:101 +msgid "Navigation bar icon color " msgstr "" -#: ../../Zotlabs/Access/Permissions.php:69 -msgid "Can like/dislike profiles and profile things" +#: ../../view/theme/redbasic/php/config.php:102 +msgid "Navigation bar active icon color " msgstr "" -#: ../../Zotlabs/Access/Permissions.php:70 -msgid "Can forward to all my channel connections via ! mentions in posts" +#: ../../view/theme/redbasic/php/config.php:103 +msgid "Link color" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:71 -msgid "Can chat with me" +#: ../../view/theme/redbasic/php/config.php:104 +msgid "Set font-color for banner" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:72 -msgid "Can source my public posts in derived channels" +#: ../../view/theme/redbasic/php/config.php:105 +msgid "Set the background color" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:73 -msgid "Can administer my channel" +#: ../../view/theme/redbasic/php/config.php:106 +msgid "Set the background image" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:283 -msgid "Social Networking" +#: ../../view/theme/redbasic/php/config.php:107 +msgid "Set the background color of items" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:284 -msgid "Social - Federation" +#: ../../view/theme/redbasic/php/config.php:108 +msgid "Set the background color of comments" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:285 -msgid "Social - Mostly Public" +#: ../../view/theme/redbasic/php/config.php:109 +msgid "Set font-size for the entire application" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:286 -msgid "Social - Restricted" +#: ../../view/theme/redbasic/php/config.php:109 +msgid "Examples: 1rem, 100%, 16px" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:287 -msgid "Social - Private" +#: ../../view/theme/redbasic/php/config.php:110 +msgid "Set font-color for posts and comments" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:290 -msgid "Community Forum" +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Set radius of corners" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:291 -msgid "Forum - Mostly Public" +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Example: 4px" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:292 -msgid "Forum - Restricted" +#: ../../view/theme/redbasic/php/config.php:112 +msgid "Set shadow depth of photos" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:293 -msgid "Forum - Private" +#: ../../view/theme/redbasic/php/config.php:113 +msgid "Set maximum width of content region in pixel" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:296 -msgid "Feed Republish" +#: ../../view/theme/redbasic/php/config.php:113 +msgid "Leave empty for default width" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:297 -msgid "Feed - Mostly Public" +#: ../../view/theme/redbasic/php/config.php:114 +msgid "Set size of conversation author photo" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:298 -msgid "Feed - Restricted" +#: ../../view/theme/redbasic/php/config.php:115 +msgid "Set size of followup author photos" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:301 -msgid "Special Purpose" +#: ../../view/theme/redbasic/php/config.php:116 +msgid "Show advanced settings" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:302 -msgid "Special - Celebrity/Soapbox" +#: ../../util/nconfig.php:34 +msgid "Source channel not found." msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:303 -msgid "Special - Group Repository" +#: ../../addon/channelreputation/channelreputation.php:100 +#: ../../addon/channelreputation/channelreputation.php:101 +#: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177 +#: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259 +#: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317 +msgid "Access Denied" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:306 -#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Connedit.php:935 -#: ../../Zotlabs/Module/Profiles.php:795 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/selectors.php:115 -#: ../../include/selectors.php:151 ../../include/event.php:1376 -#: ../../include/event.php:1383 ../../include/connections.php:730 -#: ../../include/connections.php:737 -msgid "Other" +#: ../../addon/channelreputation/channelreputation.php:108 +msgid "Enable Community Moderation" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:307 -msgid "Custom/Expert Mode" +#: ../../addon/channelreputation/channelreputation.php:116 +msgid "Reputation automatically given to new members" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:42 -#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17 -#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12 -#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20 -#: ../../Zotlabs/Module/Menu.php:91 ../../Zotlabs/Module/Layouts.php:31 -#: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Cards.php:42 -#: ../../Zotlabs/Module/Webpages.php:39 ../../Zotlabs/Module/Filestorage.php:53 -#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1319 -msgid "Requested profile is not available." +#: ../../addon/channelreputation/channelreputation.php:117 +msgid "Reputation will never fall below this value" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 -#: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102 -#: ../../Zotlabs/Module/Articles.php:88 ../../Zotlabs/Module/Editlayout.php:67 -#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:179 -#: ../../Zotlabs/Module/Channel.php:342 ../../Zotlabs/Module/Channel.php:381 -#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87 -#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Events.php:277 -#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Regmod.php:20 -#: ../../Zotlabs/Module/Article_edit.php:51 -#: ../../Zotlabs/Module/New_channel.php:105 -#: ../../Zotlabs/Module/New_channel.php:130 -#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:206 -#: ../../Zotlabs/Module/Moderate.php:13 -#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:280 -#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341 -#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67 -#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101 -#: ../../Zotlabs/Module/Mood.php:126 ../../Zotlabs/Module/Connections.php:32 -#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:70 -#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:59 -#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428 -#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Poke.php:157 -#: ../../Zotlabs/Module/Profile_photo.php:336 -#: ../../Zotlabs/Module/Profile_photo.php:349 -#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:417 -#: ../../Zotlabs/Module/Item.php:436 ../../Zotlabs/Module/Item.php:446 -#: ../../Zotlabs/Module/Item.php:1326 ../../Zotlabs/Module/Page.php:34 -#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:399 -#: ../../Zotlabs/Module/Chat.php:115 ../../Zotlabs/Module/Chat.php:120 -#: ../../Zotlabs/Module/Menu.php:129 ../../Zotlabs/Module/Menu.php:140 -#: ../../Zotlabs/Module/Channel_calendar.php:224 -#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 -#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Cloud.php:40 -#: ../../Zotlabs/Module/Defperms.php:181 ../../Zotlabs/Module/Group.php:14 -#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Profiles.php:198 -#: ../../Zotlabs/Module/Profiles.php:635 -#: ../../Zotlabs/Module/Editwebpage.php:68 -#: ../../Zotlabs/Module/Editwebpage.php:89 -#: ../../Zotlabs/Module/Editwebpage.php:107 -#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10 -#: ../../Zotlabs/Module/Cards.php:86 ../../Zotlabs/Module/Webpages.php:133 -#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74 -#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:80 -#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Suggest.php:32 -#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:150 -#: ../../Zotlabs/Module/Register.php:80 -#: ../../Zotlabs/Module/Cover_photo.php:347 -#: ../../Zotlabs/Module/Cover_photo.php:360 -#: ../../Zotlabs/Module/Display.php:451 ../../Zotlabs/Module/Network.php:19 -#: ../../Zotlabs/Module/Filestorage.php:17 -#: ../../Zotlabs/Module/Filestorage.php:72 -#: ../../Zotlabs/Module/Filestorage.php:90 -#: ../../Zotlabs/Module/Filestorage.php:113 -#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Common.php:38 -#: ../../Zotlabs/Module/Viewconnections.php:28 -#: ../../Zotlabs/Module/Viewconnections.php:33 -#: ../../Zotlabs/Module/Service_limits.php:11 ../../Zotlabs/Module/Rate.php:113 -#: ../../Zotlabs/Module/Card_edit.php:51 -#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Lib/Chatroom.php:133 -#: ../../Zotlabs/Web/WebServer.php:123 ../../addon/keepout/keepout.php:36 -#: ../../addon/flashcards/Mod_Flashcards.php:281 -#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44 -#: ../../include/attach.php:150 ../../include/attach.php:199 -#: ../../include/attach.php:272 ../../include/attach.php:380 -#: ../../include/attach.php:394 ../../include/attach.php:401 -#: ../../include/attach.php:483 ../../include/attach.php:1043 -#: ../../include/attach.php:1117 ../../include/attach.php:1280 -#: ../../include/items.php:3790 ../../include/photos.php:27 -msgid "Permission denied." +#: ../../addon/channelreputation/channelreputation.php:118 +msgid "Minimum reputation before posting is allowed" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 -#: ../../Zotlabs/Module/Editblock.php:113 -msgid "Block Name" +#: ../../addon/channelreputation/channelreputation.php:119 +msgid "Minimum reputation before commenting is allowed" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2560 -msgid "Blocks" +#: ../../addon/channelreputation/channelreputation.php:120 +msgid "Minimum reputation before a member is able to moderate other posts" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:156 -msgid "Block Title" +#: ../../addon/channelreputation/channelreputation.php:121 +msgid "" +"Max ratio of moderator's reputation that can be added to/deducted from " +"reputation of person being moderated" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:177 -#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:266 -msgid "Created" +#: ../../addon/channelreputation/channelreputation.php:122 +msgid "Reputation \"cost\" to post" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:178 -#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:267 -msgid "Edited" +#: ../../addon/channelreputation/channelreputation.php:123 +msgid "Reputation \"cost\" to comment" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:116 -#: ../../Zotlabs/Module/Cdav.php:1084 ../../Zotlabs/Module/Cdav.php:1390 -#: ../../Zotlabs/Module/New_channel.php:189 -#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Menu.php:181 -#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:798 -#: ../../Zotlabs/Module/Cards.php:113 ../../Zotlabs/Module/Webpages.php:254 -#: ../../Zotlabs/Storage/Browser.php:282 ../../Zotlabs/Storage/Browser.php:396 -#: ../../Zotlabs/Widget/Cdav.php:140 ../../Zotlabs/Widget/Cdav.php:178 -msgid "Create" +#: ../../addon/channelreputation/channelreputation.php:124 +msgid "" +"Reputation automatically recovers at this rate per hour until it reaches " +"minimum_to_post" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114 -#: ../../Zotlabs/Module/Article_edit.php:99 -#: ../../Zotlabs/Module/Admin/Profs.php:175 ../../Zotlabs/Module/Thing.php:266 -#: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Editblock.php:114 -#: ../../Zotlabs/Module/Connections.php:298 -#: ../../Zotlabs/Module/Connections.php:336 -#: ../../Zotlabs/Module/Connections.php:356 ../../Zotlabs/Module/Wiki.php:211 -#: ../../Zotlabs/Module/Wiki.php:384 ../../Zotlabs/Module/Menu.php:175 -#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Group.php:252 -#: ../../Zotlabs/Module/Editwebpage.php:142 -#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Card_edit.php:99 -#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Lib/Apps.php:557 -#: ../../Zotlabs/Lib/ThreadItem.php:148 ../../Zotlabs/Storage/Browser.php:296 -#: ../../Zotlabs/Widget/Cdav.php:138 ../../Zotlabs/Widget/Cdav.php:175 -#: ../../include/channel.php:1418 ../../include/channel.php:1422 -#: ../../include/menu.php:118 -msgid "Edit" +#: ../../addon/channelreputation/channelreputation.php:125 +msgid "" +"When minimum_to_moderate > reputation > minimum_to_post reputation recovers " +"at this rate per hour" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1075 -#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194 -#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Widget/Cdav.php:136 -#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392 -msgid "Share" +#: ../../addon/channelreputation/channelreputation.php:139 +msgid "Community Moderation Settings" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138 -#: ../../Zotlabs/Module/Cdav.php:1081 ../../Zotlabs/Module/Cdav.php:1392 -#: ../../Zotlabs/Module/Article_edit.php:129 -#: ../../Zotlabs/Module/Admin/Accounts.php:175 -#: ../../Zotlabs/Module/Admin/Channels.php:149 -#: ../../Zotlabs/Module/Admin/Profs.php:176 ../../Zotlabs/Module/Thing.php:267 -#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editblock.php:139 -#: ../../Zotlabs/Module/Connections.php:306 -#: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Connedit.php:668 -#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:800 -#: ../../Zotlabs/Module/Editwebpage.php:167 -#: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Card_edit.php:129 -#: ../../Zotlabs/Module/Oauth.php:174 ../../Zotlabs/Lib/Apps.php:558 -#: ../../Zotlabs/Lib/ThreadItem.php:168 ../../Zotlabs/Storage/Browser.php:297 -#: ../../include/conversation.php:691 ../../include/conversation.php:736 -msgid "Delete" +#: ../../addon/channelreputation/channelreputation.php:229 +msgid "Channel Reputation" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Events.php:702 -#: ../../Zotlabs/Module/Wiki.php:213 ../../Zotlabs/Module/Wiki.php:409 -#: ../../Zotlabs/Module/Layouts.php:198 ../../Zotlabs/Module/Webpages.php:261 -#: ../../Zotlabs/Module/Pubsites.php:60 -msgid "View" +#: ../../addon/channelreputation/channelreputation.php:230 +#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1274 +#: ../../Zotlabs/Lib/ThreadItem.php:463 +msgid "Close" msgstr "" -#: ../../Zotlabs/Module/Invite.php:37 -msgid "Total invitation limit exceeded." +#: ../../addon/channelreputation/channelreputation.php:233 +msgid "An Error has occurred." msgstr "" -#: ../../Zotlabs/Module/Invite.php:61 -#, php-format -msgid "%s : Not a valid email address." +#: ../../addon/channelreputation/channelreputation.php:251 +msgid "Upvote" msgstr "" -#: ../../Zotlabs/Module/Invite.php:75 -msgid "Please join us on $Projectname" +#: ../../addon/channelreputation/channelreputation.php:252 +msgid "Downvote" msgstr "" -#: ../../Zotlabs/Module/Invite.php:85 -msgid "Invitation limit exceeded. Please contact your site administrator." +#: ../../addon/channelreputation/channelreputation.php:374 +msgid "Can moderate reputation on my channel." msgstr "" -#: ../../Zotlabs/Module/Invite.php:90 -#: ../../addon/notifyadmin/notifyadmin.php:40 -#, php-format -msgid "%s : Message delivery failed." +#: ../../addon/superblock/superblock.php:337 +msgid "Block Completely" msgstr "" -#: ../../Zotlabs/Module/Invite.php:94 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "" -msgstr[1] "" - -#: ../../Zotlabs/Module/Invite.php:110 -msgid "Invite App" +#: ../../addon/superblock/Mod_Superblock.php:20 +msgid "Superblock App" msgstr "" -#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:51 -#: ../../Zotlabs/Module/Cdav.php:899 ../../Zotlabs/Module/Permcats.php:62 -#: ../../Zotlabs/Module/Lang.php:17 ../../Zotlabs/Module/Uexport.php:61 -#: ../../Zotlabs/Module/Pubstream.php:20 ../../Zotlabs/Module/Connect.php:104 -#: ../../Zotlabs/Module/Tokens.php:99 ../../Zotlabs/Module/Oauth2.php:106 -#: ../../Zotlabs/Module/Randprof.php:29 ../../Zotlabs/Module/Mood.php:134 -#: ../../Zotlabs/Module/Bookmarks.php:78 ../../Zotlabs/Module/Wiki.php:52 -#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Poke.php:165 -#: ../../Zotlabs/Module/Chat.php:102 ../../Zotlabs/Module/Notes.php:56 -#: ../../Zotlabs/Module/Affinity.php:52 ../../Zotlabs/Module/Defperms.php:189 -#: ../../Zotlabs/Module/Group.php:106 ../../Zotlabs/Module/Cards.php:51 -#: ../../Zotlabs/Module/Webpages.php:48 ../../Zotlabs/Module/Sources.php:88 -#: ../../Zotlabs/Module/Suggest.php:40 ../../Zotlabs/Module/Probe.php:18 -#: ../../Zotlabs/Module/Oauth.php:100 ../../addon/skeleton/Mod_Skeleton.php:32 -#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/planets/Mod_Planets.php:20 -#: ../../addon/wppost/Mod_Wppost.php:41 ../../addon/nsfw/Mod_Nsfw.php:33 -#: ../../addon/ijpost/Mod_Ijpost.php:35 ../../addon/dwpost/Mod_Dwpost.php:36 -#: ../../addon/gallery/Mod_Gallery.php:58 ../../addon/ljpost/Mod_Ljpost.php:36 +#: ../../addon/superblock/Mod_Superblock.php:20 +#: ../../addon/nsabait/Mod_Nsabait.php:20 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 +#: ../../addon/photocache/Mod_Photocache.php:42 +#: ../../addon/gallery/Mod_Gallery.php:58 +#: ../../addon/planets/Mod_Planets.php:20 ../../addon/redred/Mod_Redred.php:50 +#: ../../addon/statusnet/Mod_Statusnet.php:146 ../../addon/rtof/Mod_Rtof.php:36 +#: ../../addon/wppost/Mod_Wppost.php:41 ../../addon/hsse/Mod_Hsse.php:21 +#: ../../addon/ijpost/Mod_Ijpost.php:35 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 +#: ../../addon/dwpost/Mod_Dwpost.php:36 #: ../../addon/startpage/Mod_Startpage.php:50 +#: ../../addon/twitter/Mod_Twitter.php:78 ../../addon/pumpio/Mod_Pumpio.php:53 +#: ../../addon/sendzid/Mod_Sendzid.php:20 ../../addon/nofed/Mod_Nofed.php:33 +#: ../../addon/smileybutton/Mod_Smileybutton.php:35 #: ../../addon/diaspora/Mod_Diaspora.php:58 -#: ../../addon/photocache/Mod_Photocache.php:42 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 -#: ../../addon/nsabait/Mod_Nsabait.php:20 -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 ../../addon/rtof/Mod_Rtof.php:36 -#: ../../addon/jappixmini/Mod_Jappixmini.php:96 -#: ../../addon/superblock/Mod_Superblock.php:20 -#: ../../addon/nofed/Mod_Nofed.php:33 ../../addon/redred/Mod_Redred.php:50 -#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/pubcrawl/Mod_Pubcrawl.php:40 -#: ../../addon/libertree/Mod_Libertree.php:35 +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 #: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 -#: ../../addon/statusnet/Mod_Statusnet.php:146 -#: ../../addon/twitter/Mod_Twitter.php:78 -#: ../../addon/smileybutton/Mod_Smileybutton.php:35 -#: ../../addon/sendzid/Mod_Sendzid.php:20 -#: ../../addon/pageheader/Mod_Pageheader.php:34 +#: ../../addon/libertree/Mod_Libertree.php:35 +#: ../../addon/skeleton/Mod_Skeleton.php:32 ../../addon/nsfw/Mod_Nsfw.php:33 +#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/ljpost/Mod_Ljpost.php:37 +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 #: ../../addon/authchoose/Mod_Authchoose.php:28 -#: ../../addon/xmpp/Mod_Xmpp.php:35 ../../addon/pumpio/Mod_Pumpio.php:53 +#: ../../addon/pageheader/Mod_Pageheader.php:34 +#: ../../addon/xmpp/Mod_Xmpp.php:35 ../../Zotlabs/Module/Tokens.php:99 +#: ../../Zotlabs/Module/Group.php:106 ../../Zotlabs/Module/Oauth.php:100 +#: ../../Zotlabs/Module/Chat.php:102 ../../Zotlabs/Module/Poke.php:165 +#: ../../Zotlabs/Module/Cdav.php:899 ../../Zotlabs/Module/Webpages.php:48 +#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Pubstream.php:20 +#: ../../Zotlabs/Module/Permcats.php:62 ../../Zotlabs/Module/Lang.php:17 +#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Mood.php:134 +#: ../../Zotlabs/Module/Cards.php:51 ../../Zotlabs/Module/Articles.php:52 +#: ../../Zotlabs/Module/Bookmarks.php:78 ../../Zotlabs/Module/Probe.php:18 +#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Notes.php:56 +#: ../../Zotlabs/Module/Affinity.php:52 ../../Zotlabs/Module/Defperms.php:189 +#: ../../Zotlabs/Module/Oauth2.php:106 ../../Zotlabs/Module/Randprof.php:29 +#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Wiki.php:52 +#: ../../Zotlabs/Module/Suggest.php:40 ../../Zotlabs/Module/Sources.php:88 msgid "Not Installed" msgstr "" -#: ../../Zotlabs/Module/Invite.php:111 -msgid "Send email invitations to join this network" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:124 -msgid "You have no more invitations available" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:155 -msgid "Send invitations" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:156 -msgid "Enter email addresses, one per line:" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:289 -msgid "Your message:" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:158 -msgid "Please join my community on $Projectname." +#: ../../addon/superblock/Mod_Superblock.php:21 +msgid "Block channels" msgstr "" -#: ../../Zotlabs/Module/Invite.php:160 -msgid "You will need to supply this invitation code:" +#: ../../addon/superblock/Mod_Superblock.php:63 +msgid "superblock settings updated" msgstr "" -#: ../../Zotlabs/Module/Invite.php:161 -msgid "1. Register at any $Projectname location (they are all inter-connected)" +#: ../../addon/superblock/Mod_Superblock.php:87 +msgid "Currently blocked" msgstr "" -#: ../../Zotlabs/Module/Invite.php:163 -msgid "2. Enter my $Projectname network address into the site searchbar." +#: ../../addon/superblock/Mod_Superblock.php:89 +msgid "No channels currently blocked" msgstr "" -#: ../../Zotlabs/Module/Invite.php:164 -msgid "or visit" +#: ../../addon/superblock/Mod_Superblock.php:91 +#: ../../Zotlabs/Module/Tagrm.php:137 ../../Zotlabs/Module/Admin/Addons.php:459 +#: ../../Zotlabs/Module/Profile_photo.php:499 +#: ../../Zotlabs/Module/Cover_photo.php:430 ../../Zotlabs/Module/Photos.php:993 +msgid "Remove" msgstr "" -#: ../../Zotlabs/Module/Invite.php:166 -msgid "3. Click [Connect]" +#: ../../addon/nsabait/Mod_Nsabait.php:20 +#: ../../addon/nsabait/Mod_Nsabait.php:24 +msgid "NSA Bait App" msgstr "" -#: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Permcats.php:128 -#: ../../Zotlabs/Module/Locs.php:121 ../../Zotlabs/Module/Mitem.php:259 -#: ../../Zotlabs/Module/Events.php:501 ../../Zotlabs/Module/Appman.php:155 -#: ../../Zotlabs/Module/Import_items.php:129 ../../Zotlabs/Module/Setup.php:304 -#: ../../Zotlabs/Module/Setup.php:344 ../../Zotlabs/Module/Connect.php:124 -#: ../../Zotlabs/Module/Admin/Features.php:66 -#: ../../Zotlabs/Module/Admin/Accounts.php:168 -#: ../../Zotlabs/Module/Admin/Logs.php:84 -#: ../../Zotlabs/Module/Admin/Channels.php:147 -#: ../../Zotlabs/Module/Admin/Themes.php:158 -#: ../../Zotlabs/Module/Admin/Site.php:289 -#: ../../Zotlabs/Module/Admin/Addons.php:441 -#: ../../Zotlabs/Module/Admin/Profs.php:178 -#: ../../Zotlabs/Module/Admin/Account_edit.php:73 -#: ../../Zotlabs/Module/Admin/Security.php:112 -#: ../../Zotlabs/Module/Settings/Channel.php:493 -#: ../../Zotlabs/Module/Settings/Features.php:46 -#: ../../Zotlabs/Module/Settings/Events.php:41 -#: ../../Zotlabs/Module/Settings/Calendar.php:41 -#: ../../Zotlabs/Module/Settings/Conversation.php:48 -#: ../../Zotlabs/Module/Settings/Connections.php:41 -#: ../../Zotlabs/Module/Settings/Photos.php:41 -#: ../../Zotlabs/Module/Settings/Account.php:103 -#: ../../Zotlabs/Module/Settings/Profiles.php:50 -#: ../../Zotlabs/Module/Settings/Manage.php:41 -#: ../../Zotlabs/Module/Settings/Channel_home.php:89 -#: ../../Zotlabs/Module/Settings/Directory.php:41 -#: ../../Zotlabs/Module/Settings/Editor.php:41 -#: ../../Zotlabs/Module/Settings/Display.php:189 -#: ../../Zotlabs/Module/Settings/Network.php:61 -#: ../../Zotlabs/Module/Tokens.php:188 ../../Zotlabs/Module/Thing.php:326 -#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Import.php:646 -#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Mood.php:158 -#: ../../Zotlabs/Module/Photos.php:1055 ../../Zotlabs/Module/Photos.php:1096 -#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Module/Wiki.php:215 -#: ../../Zotlabs/Module/Pdledit.php:107 ../../Zotlabs/Module/Poke.php:217 -#: ../../Zotlabs/Module/Connedit.php:904 ../../Zotlabs/Module/Chat.php:211 -#: ../../Zotlabs/Module/Chat.php:250 -#: ../../Zotlabs/Module/Email_validation.php:40 -#: ../../Zotlabs/Module/Pconfig.php:116 ../../Zotlabs/Module/Affinity.php:87 -#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Group.php:150 -#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Profiles.php:723 -#: ../../Zotlabs/Module/Editpost.php:86 ../../Zotlabs/Module/Sources.php:125 -#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Module/Filestorage.php:203 -#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Oauth.php:111 -#: ../../Zotlabs/Lib/ThreadItem.php:796 ../../Zotlabs/Widget/Eventstools.php:16 -#: ../../Zotlabs/Widget/Wiki_pages.php:42 -#: ../../Zotlabs/Widget/Wiki_pages.php:99 -#: ../../view/theme/redbasic_c/php/config.php:95 -#: ../../view/theme/redbasic/php/config.php:94 -#: ../../addon/skeleton/Mod_Skeleton.php:51 -#: ../../addon/openclipatar/openclipatar.php:53 -#: ../../addon/wppost/Mod_Wppost.php:97 ../../addon/nsfw/Mod_Nsfw.php:61 -#: ../../addon/flashcards/Mod_Flashcards.php:218 -#: ../../addon/ijpost/Mod_Ijpost.php:72 ../../addon/dwpost/Mod_Dwpost.php:71 -#: ../../addon/likebanner/likebanner.php:57 -#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:45 -#: ../../addon/ljpost/Mod_Ljpost.php:73 -#: ../../addon/startpage/Mod_Startpage.php:73 -#: ../../addon/diaspora/Mod_Diaspora.php:102 -#: ../../addon/photocache/Mod_Photocache.php:67 -#: ../../addon/hzfiles/hzfiles.php:86 ../../addon/mailtest/mailtest.php:100 -#: ../../addon/openstreetmap/openstreetmap.php:134 -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:56 ../../addon/rtof/Mod_Rtof.php:72 -#: ../../addon/jappixmini/Mod_Jappixmini.php:261 -#: ../../addon/channelreputation/channelreputation.php:142 -#: ../../addon/nofed/Mod_Nofed.php:53 ../../addon/redred/Mod_Redred.php:90 -#: ../../addon/logrot/logrot.php:35 -#: ../../addon/content_import/Mod_content_import.php:142 -#: ../../addon/frphotos/frphotos.php:97 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:65 -#: ../../addon/chords/Mod_Chords.php:60 -#: ../../addon/libertree/Mod_Libertree.php:70 -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92 -#: ../../addon/statusnet/Mod_Statusnet.php:193 -#: ../../addon/statusnet/Mod_Statusnet.php:251 -#: ../../addon/statusnet/Mod_Statusnet.php:306 -#: ../../addon/statusnet/statusnet.php:602 -#: ../../addon/twitter/Mod_Twitter.php:184 -#: ../../addon/smileybutton/Mod_Smileybutton.php:55 -#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1264 -#: ../../addon/cart/submodules/manualcat.php:248 -#: ../../addon/cart/submodules/hzservices.php:640 -#: ../../addon/cart/submodules/subscriptions.php:410 -#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/Mod_Pageheader.php:54 -#: ../../addon/xmpp/Mod_Xmpp.php:70 ../../addon/pumpio/Mod_Pumpio.php:115 -#: ../../addon/redfiles/redfiles.php:124 ../../addon/hubwall/hubwall.php:95 -#: ../../include/js_strings.php:22 -msgid "Submit" +#: ../../addon/nsabait/Mod_Nsabait.php:24 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 +#: ../../addon/planets/Mod_Planets.php:23 ../../addon/hsse/Mod_Hsse.php:26 +#: ../../addon/authchoose/Mod_Authchoose.php:33 +msgid "Installed" msgstr "" -#: ../../Zotlabs/Module/Articles.php:51 -msgid "Articles App" +#: ../../addon/nsabait/Mod_Nsabait.php:26 +msgid "Make yourself a political target" msgstr "" -#: ../../Zotlabs/Module/Articles.php:52 -msgid "Create interactive articles" +#: ../../addon/visage/Mod_Visage.php:21 +msgid "Who viewed my channel/profile" msgstr "" -#: ../../Zotlabs/Module/Articles.php:115 -msgid "Add Article" +#: ../../addon/visage/Mod_Visage.php:25 +msgid "Recent Channel/Profile Viewers" msgstr "" -#: ../../Zotlabs/Module/Articles.php:222 ../../Zotlabs/Lib/Apps.php:324 -#: ../../include/nav.php:514 -msgid "Articles" +#: ../../addon/visage/Mod_Visage.php:36 +msgid "No entries." msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:79 -#: ../../Zotlabs/Module/Article_edit.php:17 -#: ../../Zotlabs/Module/Article_edit.php:33 -#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 -#: ../../Zotlabs/Module/Editwebpage.php:80 ../../Zotlabs/Module/Editpost.php:24 -#: ../../Zotlabs/Module/Card_edit.php:17 ../../Zotlabs/Module/Card_edit.php:33 -msgid "Item not found" +#: ../../addon/openclipatar/openclipatar.php:50 +#: ../../addon/openclipatar/openclipatar.php:128 +msgid "System defaults:" msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:128 ../../Zotlabs/Module/Layouts.php:129 -#: ../../Zotlabs/Module/Layouts.php:189 -msgid "Layout Name" +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "Preferred Clipart IDs" msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:129 ../../Zotlabs/Module/Layouts.php:132 -msgid "Layout Description (Optional)" +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "List of preferred clipart ids. These will be shown first." msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:137 -msgid "Edit Layout" +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "Default Search Term" msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:140 ../../Zotlabs/Module/Cdav.php:1083 -#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Article_edit.php:131 -#: ../../Zotlabs/Module/Admin/Addons.php:426 -#: ../../Zotlabs/Module/Oauth2.php:117 ../../Zotlabs/Module/Oauth2.php:145 -#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Wiki.php:368 -#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Profile_photo.php:505 -#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Fbrowser.php:66 -#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:801 -#: ../../Zotlabs/Module/Editwebpage.php:169 -#: ../../Zotlabs/Module/Editpost.php:110 ../../Zotlabs/Module/Filer.php:55 -#: ../../Zotlabs/Module/Cover_photo.php:434 ../../Zotlabs/Module/Tagrm.php:15 -#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Card_edit.php:131 -#: ../../Zotlabs/Module/Oauth.php:112 ../../Zotlabs/Module/Oauth.php:138 -#: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 -#: ../../include/conversation.php:1415 ../../include/conversation.php:1464 -msgid "Cancel" +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "The default search term. These will be shown second." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86 -#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Share.php:71 -#: ../../Zotlabs/Module/Cloud.php:126 ../../Zotlabs/Module/Group.php:98 -#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:82 -#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Web/WebServer.php:122 -#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:75 -#: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109 -#: ../../include/items.php:416 -msgid "Permission denied" +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Return After" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Page to load after image selection." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:111 -msgid "Profile Visibility Editor" +#: ../../addon/openclipatar/openclipatar.php:57 ../../include/nav.php:110 +#: ../../include/conversation.php:1038 ../../Zotlabs/Module/Connedit.php:608 +#: ../../Zotlabs/Lib/Apps.php:343 +msgid "View Profile" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:361 -#: ../../include/channel.php:1766 -msgid "Profile" +#: ../../addon/openclipatar/openclipatar.php:58 ../../include/nav.php:115 +#: ../../include/channel.php:1430 +msgid "Edit Profile" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:115 -msgid "Click on a contact to add or remove." +#: ../../addon/openclipatar/openclipatar.php:59 +msgid "Profile List" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:124 -msgid "Visible To" +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Order of Preferred" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:140 -#: ../../Zotlabs/Module/Connections.php:217 -msgid "All Connections" +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Sort order of preferred clipart ids." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 -msgid "Calendar entries imported." +#: ../../addon/openclipatar/openclipatar.php:62 +#: ../../addon/openclipatar/openclipatar.php:68 +msgid "Newest first" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 -msgid "No calendar entries found." +#: ../../addon/openclipatar/openclipatar.php:65 +msgid "As entered" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:870 -msgid "INVALID EVENT DISMISSED!" +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Order of other" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:871 -msgid "Summary: " +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Sort order of other clipart ids." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:871 ../../Zotlabs/Module/Cdav.php:872 -#: ../../Zotlabs/Module/Cdav.php:879 ../../Zotlabs/Module/Embedphotos.php:174 -#: ../../Zotlabs/Module/Photos.php:790 ../../Zotlabs/Module/Photos.php:1254 -#: ../../Zotlabs/Lib/Activity.php:1095 ../../Zotlabs/Lib/Apps.php:1114 -#: ../../Zotlabs/Lib/Apps.php:1198 ../../Zotlabs/Storage/Browser.php:164 -#: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84 -#: ../../addon/pubcrawl/as.php:1071 ../../include/conversation.php:1166 -msgid "Unknown" +#: ../../addon/openclipatar/openclipatar.php:69 +msgid "Most downloaded first" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:872 -msgid "Date: " +#: ../../addon/openclipatar/openclipatar.php:70 +msgid "Most liked first" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 -msgid "Reason: " +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Preferred IDs Message" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:878 -msgid "INVALID CARD DISMISSED!" +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Message to display above preferred results." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:879 -msgid "Name: " +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Uploaded by: " msgstr "" -#: ../../Zotlabs/Module/Cdav.php:899 -msgid "CardDAV App" +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Drawn by: " msgstr "" -#: ../../Zotlabs/Module/Cdav.php:900 -msgid "CalDAV capable addressbook" +#: ../../addon/openclipatar/openclipatar.php:182 +#: ../../addon/openclipatar/openclipatar.php:194 +msgid "Use this image" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:968 ../../Zotlabs/Module/Cal.php:167 -#: ../../Zotlabs/Module/Channel_calendar.php:387 -msgid "Link to source" +#: ../../addon/openclipatar/openclipatar.php:192 +msgid "Or select from a free OpenClipart.org image:" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1034 ../../Zotlabs/Module/Events.php:468 -msgid "Event title" +#: ../../addon/openclipatar/openclipatar.php:195 +msgid "Search Term" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:474 -msgid "Start date and time" +#: ../../addon/openclipatar/openclipatar.php:232 +msgid "Unknown error. Please try again later." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1036 -msgid "End date and time" +#: ../../addon/openclipatar/openclipatar.php:298 +#: ../../Zotlabs/Module/Profile_photo.php:252 +msgid "" +"Shift-reload the page or clear browser cache if the new photo does not " +"display immediately." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:497 -msgid "Timezone:" +#: ../../addon/openclipatar/openclipatar.php:308 +msgid "Profile photo updated successfully." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1039 ../../Zotlabs/Module/Events.php:481 -#: ../../Zotlabs/Module/Appman.php:145 ../../Zotlabs/Module/Rbmark.php:101 -#: ../../addon/rendezvous/rendezvous.php:173 -#: ../../addon/cart/submodules/manualcat.php:260 -#: ../../addon/cart/submodules/hzservices.php:652 -msgid "Description" +#: ../../addon/bookmarker/bookmarker.php:38 +#: ../../Zotlabs/Lib/ThreadItem.php:440 +msgid "Save Bookmarks" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1040 ../../Zotlabs/Module/Locs.php:117 -#: ../../Zotlabs/Module/Events.php:483 ../../Zotlabs/Module/Profiles.php:509 -#: ../../Zotlabs/Module/Profiles.php:734 ../../Zotlabs/Module/Pubsites.php:52 -#: ../../include/js_strings.php:25 -msgid "Location" +#: ../../addon/queueworker/Mod_Queueworker.php:77 +msgid "Max queueworker threads" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:697 -#: ../../Zotlabs/Module/Events.php:706 ../../Zotlabs/Module/Cal.php:205 -#: ../../Zotlabs/Module/Photos.php:944 -msgid "Previous" +#: ../../addon/queueworker/Mod_Queueworker.php:91 +msgid "Assume workers dead after ___ seconds" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:698 -#: ../../Zotlabs/Module/Events.php:707 ../../Zotlabs/Module/Setup.php:260 -#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:953 -msgid "Next" +#: ../../addon/queueworker/Mod_Queueworker.php:105 +msgid "" +"Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:708 -#: ../../Zotlabs/Module/Cal.php:207 -msgid "Today" +#: ../../addon/queueworker/Mod_Queueworker.php:116 +msgid "Queueworker Settings" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:703 -msgid "Month" +#: ../../addon/queueworker/Mod_Queueworker.php:119 ../../include/text.php:1106 +#: ../../include/text.php:1118 ../../Zotlabs/Widget/Notes.php:23 +#: ../../Zotlabs/Module/Admin/Profs.php:94 +#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Filer.php:53 +#: ../../Zotlabs/Module/Rbmark.php:32 ../../Zotlabs/Module/Rbmark.php:104 +msgid "Save" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1064 ../../Zotlabs/Module/Events.php:704 -msgid "Week" +#: ../../addon/tour/tour.php:76 +msgid "Edit your profile and change settings." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1065 ../../Zotlabs/Module/Events.php:705 -msgid "Day" +#: ../../addon/tour/tour.php:77 +msgid "Click here to see activity from your connections." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1066 -msgid "List month" +#: ../../addon/tour/tour.php:78 +msgid "Click here to see your channel home." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1067 -msgid "List week" +#: ../../addon/tour/tour.php:79 +msgid "You can access your private messages from here." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1068 -msgid "List day" +#: ../../addon/tour/tour.php:80 +msgid "Create new events here." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1076 -msgid "More" +#: ../../addon/tour/tour.php:81 +msgid "" +"You can accept new connections and change permissions for existing ones " +"here. You can also e.g. create groups of contacts." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1077 -msgid "Less" +#: ../../addon/tour/tour.php:82 +msgid "System notifications will arrive here" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1078 ../../Zotlabs/Module/Cdav.php:1391 -#: ../../Zotlabs/Module/Admin/Addons.php:456 ../../Zotlabs/Module/Oauth2.php:58 -#: ../../Zotlabs/Module/Oauth2.php:144 ../../Zotlabs/Module/Connedit.php:939 -#: ../../Zotlabs/Module/Profiles.php:799 ../../Zotlabs/Module/Oauth.php:53 -#: ../../Zotlabs/Module/Oauth.php:137 ../../Zotlabs/Lib/Apps.php:536 -msgid "Update" +#: ../../addon/tour/tour.php:83 +msgid "Search for content and users" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1079 -msgid "Select calendar" +#: ../../addon/tour/tour.php:84 +msgid "Browse for new contacts" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:143 -msgid "Channel Calendars" +#: ../../addon/tour/tour.php:85 +msgid "Launch installed apps" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:129 -#: ../../Zotlabs/Widget/Cdav.php:143 -msgid "CalDAV Calendars" +#: ../../addon/tour/tour.php:86 +msgid "Looking for help? Click here." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1082 -msgid "Delete all" +#: ../../addon/tour/tour.php:87 +msgid "" +"New events have occurred in your network. Click here to see what has " +"happened!" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1085 -msgid "Sorry! Editing of recurrent events is not yet implemented." +#: ../../addon/tour/tour.php:88 +msgid "You have received a new private message. Click here to see from who!" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1095 ../../Zotlabs/Widget/Appcategories.php:43 -#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139 -#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409 -#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511 -#: ../../include/taxonomy.php:532 -msgid "Categories" +#: ../../addon/tour/tour.php:89 +msgid "There are events this week. Click here too see which!" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1375 ../../Zotlabs/Module/Sharedwithme.php:104 -#: ../../Zotlabs/Module/Admin/Channels.php:159 -#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 -#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923 -#: ../../Zotlabs/Module/Chat.php:259 ../../Zotlabs/Module/Group.php:154 -#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth.php:139 -#: ../../Zotlabs/Lib/NativeWikiPage.php:561 -#: ../../Zotlabs/Storage/Browser.php:291 -#: ../../Zotlabs/Widget/Wiki_page_history.php:22 -#: ../../addon/rendezvous/rendezvous.php:172 -msgid "Name" +#: ../../addon/tour/tour.php:90 +msgid "You have received a new introduction. Click here to see who!" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Connedit.php:924 -msgid "Organisation" +#: ../../addon/tour/tour.php:91 +msgid "" +"There is a new system notification. Click here to see what has happened!" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1377 ../../Zotlabs/Module/Connedit.php:925 -msgid "Title" +#: ../../addon/tour/tour.php:94 +msgid "Click here to share text, images, videos and sound." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Connedit.php:926 -#: ../../Zotlabs/Module/Profiles.php:786 -msgid "Phone" +#: ../../addon/tour/tour.php:95 +msgid "You can write an optional title for your update (good for long posts)." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1379 -#: ../../Zotlabs/Module/Admin/Accounts.php:171 -#: ../../Zotlabs/Module/Admin/Accounts.php:183 -#: ../../Zotlabs/Module/Connedit.php:927 ../../Zotlabs/Module/Profiles.php:787 -#: ../../addon/openid/MysqlProvider.php:56 -#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/Mod_Rtof.php:57 -#: ../../addon/redred/Mod_Redred.php:71 ../../include/network.php:1732 -msgid "Email" +#: ../../addon/tour/tour.php:96 +msgid "Entering some categories here makes it easier to find your post later." +msgstr "" + +#: ../../addon/tour/tour.php:97 +msgid "Share photos, links, location, etc." +msgstr "" + +#: ../../addon/tour/tour.php:98 +msgid "" +"Only want to share content for a while? Make it expire at a certain date." +msgstr "" + +#: ../../addon/tour/tour.php:99 +msgid "You can password protect content." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Connedit.php:928 -#: ../../Zotlabs/Module/Profiles.php:788 -msgid "Instant messenger" +#: ../../addon/tour/tour.php:100 +msgid "Choose who you share with." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Connedit.php:929 -#: ../../Zotlabs/Module/Profiles.php:789 -msgid "Website" +#: ../../addon/tour/tour.php:102 +msgid "Click here when you are done." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Locs.php:118 -#: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Profiles.php:502 -#: ../../Zotlabs/Module/Profiles.php:790 -msgid "Address" +#: ../../addon/tour/tour.php:105 +msgid "Adjust from which channels posts should be displayed." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Connedit.php:931 -#: ../../Zotlabs/Module/Profiles.php:791 -msgid "Note" +#: ../../addon/tour/tour.php:106 +msgid "Only show posts from channels in the specified privacy group." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Connedit.php:932 -#: ../../Zotlabs/Module/Profiles.php:792 ../../include/event.php:1369 -#: ../../include/connections.php:723 -msgid "Mobile" +#: ../../addon/tour/tour.php:110 +msgid "" +"Easily find posts containing tags (keywords preceded by the \"#\" symbol)." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Connedit.php:933 -#: ../../Zotlabs/Module/Profiles.php:793 ../../include/event.php:1370 -#: ../../include/connections.php:724 -msgid "Home" +#: ../../addon/tour/tour.php:111 +msgid "Easily find posts in given category." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Connedit.php:934 -#: ../../Zotlabs/Module/Profiles.php:794 ../../include/event.php:1373 -#: ../../include/connections.php:727 -msgid "Work" +#: ../../addon/tour/tour.php:112 +msgid "Easily find posts by date." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1388 ../../Zotlabs/Module/Connedit.php:936 -#: ../../Zotlabs/Module/Profiles.php:796 -#: ../../addon/jappixmini/Mod_Jappixmini.php:216 -msgid "Add Contact" +#: ../../addon/tour/tour.php:113 +msgid "" +"Suggested users who have volounteered to be shown as suggestions, and who we " +"think you might find interesting." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1389 ../../Zotlabs/Module/Connedit.php:937 -#: ../../Zotlabs/Module/Profiles.php:797 -msgid "Add Field" +#: ../../addon/tour/tour.php:114 +msgid "Here you see channels you have connected to." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:942 -msgid "P.O. Box" +#: ../../addon/tour/tour.php:115 +msgid "Save your search so you can repeat it at a later date." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:943 -msgid "Additional" +#: ../../addon/tour/tour.php:118 +msgid "" +"If you see this icon you can be sure that the sender is who it say it is. It " +"is normal that it is not always possible to verify the sender, so the icon " +"will be missing sometimes. There is usually no need to worry about that." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:944 -msgid "Street" +#: ../../addon/tour/tour.php:119 +msgid "" +"Danger! It seems someone tried to forge a message! This message is not " +"necessarily from who it says it is from!" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:945 -msgid "Locality" +#: ../../addon/tour/tour.php:126 +msgid "" +"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can " +"pause it at any time and continue where you left off by reloading the page, " +"or navigting to another page.</p><p>You can also advance by pressing the " +"return key" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Connedit.php:946 -msgid "Region" +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 +msgid "Add some colour to tag clouds" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1399 ../../Zotlabs/Module/Connedit.php:947 -msgid "ZIP Code" +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 +msgid "Rainbow Tag App" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1400 ../../Zotlabs/Module/Connedit.php:948 -#: ../../Zotlabs/Module/Profiles.php:757 -msgid "Country" +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 +msgid "Rainbow Tag" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1447 -msgid "Default Calendar" +#: ../../addon/photocache/Mod_Photocache.php:27 +msgid "Photo Cache settings saved." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1458 -msgid "Default Addressbook" +#: ../../addon/photocache/Mod_Photocache.php:36 +msgid "" +"Photo Cache addon saves a copy of images from external sites locally to " +"increase your anonymity in the web." msgstr "" -#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25 -msgid "This site is not a directory server" +#: ../../addon/photocache/Mod_Photocache.php:42 +msgid "Photo Cache App" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:28 -msgid "Permission category name is required." +#: ../../addon/photocache/Mod_Photocache.php:53 +msgid "Minimal photo size for caching" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:47 -msgid "Permission category saved." +#: ../../addon/photocache/Mod_Photocache.php:55 +msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default." msgstr "" -#: ../../Zotlabs/Module/Permcats.php:62 -msgid "Permission Categories App" +#: ../../addon/photocache/Mod_Photocache.php:64 +msgid "Photo Cache" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:63 -msgid "Create custom connection permission limits" +#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 +msgid "Gallery" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:79 -msgid "" -"Use this form to create permission rules for various classes of people or " -"connections." +#: ../../addon/gallery/gallery.php:41 +msgid "Photo Gallery" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 -msgid "Permission Categories" +#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1327 +#: ../../Zotlabs/Module/Hcard.php:12 ../../Zotlabs/Module/Editwebpage.php:32 +#: ../../Zotlabs/Module/Profile.php:20 ../../Zotlabs/Module/Webpages.php:39 +#: ../../Zotlabs/Module/Filestorage.php:53 ../../Zotlabs/Module/Connect.php:17 +#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Cards.php:42 +#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Editblock.php:31 +#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Articles.php:43 +#: ../../Zotlabs/Module/Menu.php:92 ../../Zotlabs/Module/Layouts.php:31 +msgid "Requested profile is not available." msgstr "" -#: ../../Zotlabs/Module/Permcats.php:120 -msgid "Permission category name" +#: ../../addon/gallery/Mod_Gallery.php:58 +msgid "Gallery App" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:121 ../../Zotlabs/Module/Tokens.php:181 -#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:266 -msgid "My Settings" +#: ../../addon/gallery/Mod_Gallery.php:59 +msgid "A simple gallery for your photo albums" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:123 ../../Zotlabs/Module/Tokens.php:183 -#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:264 -msgid "inherited" +#: ../../addon/planets/Mod_Planets.php:20 +#: ../../addon/planets/Mod_Planets.php:23 +msgid "Random Planet App" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:126 ../../Zotlabs/Module/Tokens.php:186 -#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:269 -msgid "Individual Permissions" +#: ../../addon/planets/Mod_Planets.php:25 +msgid "" +"Set a random planet from the Star Wars Empire as your location when posting" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187 -#: ../../Zotlabs/Module/Connedit.php:911 -msgid "" -"Some permissions may be inherited from your channel's <a href=\"settings" -"\"><strong>privacy settings</strong></a>, which have higher priority than " -"individual settings. You can <strong>not</strong> change those settings here." +#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44 +#: ../../addon/keepout/keepout.php:36 +#: ../../addon/flashcards/Mod_Flashcards.php:276 ../../include/photos.php:27 +#: ../../include/items.php:3796 ../../include/attach.php:150 +#: ../../include/attach.php:199 ../../include/attach.php:272 +#: ../../include/attach.php:380 ../../include/attach.php:394 +#: ../../include/attach.php:401 ../../include/attach.php:483 +#: ../../include/attach.php:1043 ../../include/attach.php:1117 +#: ../../include/attach.php:1280 ../../Zotlabs/Module/Article_edit.php:51 +#: ../../Zotlabs/Module/Network.php:19 ../../Zotlabs/Module/Register.php:80 +#: ../../Zotlabs/Module/Setup.php:206 +#: ../../Zotlabs/Module/Viewconnections.php:28 +#: ../../Zotlabs/Module/Viewconnections.php:33 +#: ../../Zotlabs/Module/Channel.php:169 ../../Zotlabs/Module/Channel.php:332 +#: ../../Zotlabs/Module/Channel.php:371 ../../Zotlabs/Module/Group.php:14 +#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Card_edit.php:51 +#: ../../Zotlabs/Module/Editwebpage.php:68 +#: ../../Zotlabs/Module/Editwebpage.php:89 +#: ../../Zotlabs/Module/Editwebpage.php:107 +#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Chat.php:115 +#: ../../Zotlabs/Module/Chat.php:120 +#: ../../Zotlabs/Module/Channel_calendar.php:224 +#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Poke.php:157 +#: ../../Zotlabs/Module/Item.php:417 ../../Zotlabs/Module/Item.php:436 +#: ../../Zotlabs/Module/Item.php:446 ../../Zotlabs/Module/Item.php:1315 +#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Profile.php:85 +#: ../../Zotlabs/Module/Profile.php:101 +#: ../../Zotlabs/Module/Sharedwithme.php:16 +#: ../../Zotlabs/Module/Webpages.php:133 +#: ../../Zotlabs/Module/Filestorage.php:17 +#: ../../Zotlabs/Module/Filestorage.php:72 +#: ../../Zotlabs/Module/Filestorage.php:90 +#: ../../Zotlabs/Module/Filestorage.php:113 +#: ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Editpost.php:17 +#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Events.php:277 +#: ../../Zotlabs/Module/Manage.php:10 ../../Zotlabs/Module/Authtest.php:16 +#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Moderate.php:13 +#: ../../Zotlabs/Module/Display.php:451 ../../Zotlabs/Module/Common.php:38 +#: ../../Zotlabs/Module/New_channel.php:105 +#: ../../Zotlabs/Module/New_channel.php:130 +#: ../../Zotlabs/Module/Service_limits.php:11 ../../Zotlabs/Module/Mood.php:126 +#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Cards.php:86 +#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Regmod.php:20 +#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 +#: ../../Zotlabs/Module/Message.php:18 +#: ../../Zotlabs/Module/Profile_photo.php:336 +#: ../../Zotlabs/Module/Profile_photo.php:349 +#: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Settings.php:59 +#: ../../Zotlabs/Module/Editlayout.php:67 +#: ../../Zotlabs/Module/Editlayout.php:90 +#: ../../Zotlabs/Module/Connections.php:32 +#: ../../Zotlabs/Module/Cover_photo.php:347 +#: ../../Zotlabs/Module/Cover_photo.php:360 ../../Zotlabs/Module/Photos.php:69 +#: ../../Zotlabs/Module/Page.php:34 ../../Zotlabs/Module/Page.php:133 +#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635 +#: ../../Zotlabs/Module/Articles.php:89 ../../Zotlabs/Module/Bookmarks.php:70 +#: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102 +#: ../../Zotlabs/Module/Mail.php:150 ../../Zotlabs/Module/Block.php:24 +#: ../../Zotlabs/Module/Block.php:74 ../../Zotlabs/Module/Rate.php:113 +#: ../../Zotlabs/Module/Menu.php:130 ../../Zotlabs/Module/Menu.php:141 +#: ../../Zotlabs/Module/Defperms.php:181 ../../Zotlabs/Module/Thing.php:280 +#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341 +#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Wiki.php:59 +#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428 +#: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Connedit.php:399 +#: ../../Zotlabs/Module/Notifications.php:11 +#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 +#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Locs.php:87 +#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Lib/Chatroom.php:133 +#: ../../Zotlabs/Web/WebServer.php:123 +msgid "Permission denied." msgstr "" -#: ../../Zotlabs/Module/Channel.php:41 ../../Zotlabs/Module/Ochannel.php:32 -#: ../../Zotlabs/Module/Chat.php:31 ../../addon/chess/Mod_Chess.php:343 -msgid "You must be logged in to see this page." +#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1610 +msgid "Male" msgstr "" -#: ../../Zotlabs/Module/Channel.php:98 ../../Zotlabs/Module/Hcard.php:37 -#: ../../Zotlabs/Module/Profile.php:45 -msgid "Posts and comments" +#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1608 +msgid "Female" msgstr "" -#: ../../Zotlabs/Module/Channel.php:105 ../../Zotlabs/Module/Hcard.php:44 -#: ../../Zotlabs/Module/Profile.php:52 -msgid "Only posts" +#: ../../addon/openid/Mod_Openid.php:30 +msgid "OpenID protocol error. No ID returned." msgstr "" -#: ../../Zotlabs/Module/Channel.php:122 +#: ../../addon/openid/Mod_Openid.php:76 ../../addon/openid/Mod_Openid.php:178 +#: ../../Zotlabs/Zot/Auth.php:264 #, php-format -msgid "This is the home page of %s." +msgid "Welcome %s. Remote authentication successful." msgstr "" -#: ../../Zotlabs/Module/Channel.php:176 -msgid "Insufficient permissions. Request redirected to profile page." +#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 +msgid "Login failed." msgstr "" -#: ../../Zotlabs/Module/Channel.php:193 ../../Zotlabs/Module/Network.php:173 -msgid "Search Results For:" +#: ../../addon/openid/openid.php:49 +msgid "" +"We encountered a problem while logging in with the OpenID you provided. " +"Please check the correct spelling of the ID." msgstr "" -#: ../../Zotlabs/Module/Channel.php:228 ../../Zotlabs/Module/Hq.php:134 -#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Display.php:80 -#: ../../Zotlabs/Module/Network.php:203 -msgid "Reset form" +#: ../../addon/openid/openid.php:49 +msgid "The error message was:" msgstr "" -#: ../../Zotlabs/Module/Channel.php:483 ../../Zotlabs/Module/Display.php:378 -msgid "" -"You must enable javascript for your browser to be able to view this content." +#: ../../addon/openid/MysqlProvider.php:52 +msgid "First Name" msgstr "" -#: ../../Zotlabs/Module/Lang.php:17 -msgid "Language App" +#: ../../addon/openid/MysqlProvider.php:53 +msgid "Last Name" msgstr "" -#: ../../Zotlabs/Module/Lang.php:18 -msgid "Change UI language" +#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:75 +msgid "Nickname" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:61 -msgid "Channel Export App" +#: ../../addon/openid/MysqlProvider.php:55 +msgid "Full Name" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:62 -msgid "Export your channel" +#: ../../addon/openid/MysqlProvider.php:56 +#: ../../addon/openid/MysqlProvider.php:57 ../../addon/redred/Mod_Redred.php:71 +#: ../../addon/rtof/Mod_Rtof.php:57 ../../include/network.php:1732 +#: ../../Zotlabs/Module/Cdav.php:1377 +#: ../../Zotlabs/Module/Admin/Accounts.php:171 +#: ../../Zotlabs/Module/Admin/Accounts.php:183 +#: ../../Zotlabs/Module/Profiles.php:787 ../../Zotlabs/Module/Connedit.php:927 +msgid "Email" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 -msgid "Export Channel" +#: ../../addon/openid/MysqlProvider.php:58 +#: ../../addon/openid/MysqlProvider.php:59 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:360 +msgid "Profile Photo" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:74 -msgid "" -"Export your basic channel information to a file. This acts as a backup of " -"your connections, permissions, profile and basic data, which can be used to " -"import your data to a new server hub, but does not contain your content." +#: ../../addon/openid/MysqlProvider.php:61 +msgid "Profile Photo 16px" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:75 -msgid "Export Content" +#: ../../addon/openid/MysqlProvider.php:62 +msgid "Profile Photo 32px" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:76 -msgid "" -"Export your channel information and recent content to a JSON backup that can " -"be restored or imported to another server hub. This backs up all of your " -"connections, permissions, profile data and several months of posts. This " -"file may be VERY large. Please be patient - it may take several minutes for " -"this download to begin." +#: ../../addon/openid/MysqlProvider.php:63 +msgid "Profile Photo 48px" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:78 -msgid "Export your posts from a given year." +#: ../../addon/openid/MysqlProvider.php:64 +msgid "Profile Photo 64px" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:80 -msgid "" -"You may also export your posts and conversations for a particular year or " -"month. Adjust the date in your browser location bar to select other dates. " -"If the export fails (possibly due to memory exhaustion on your server hub), " -"please try again selecting a more limited date range." +#: ../../addon/openid/MysqlProvider.php:65 +msgid "Profile Photo 80px" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:81 -#, php-format -msgid "" -"To select all posts for a given year, such as this year, visit <a href=\"%1$s" -"\">%2$s</a>" +#: ../../addon/openid/MysqlProvider.php:66 +msgid "Profile Photo 128px" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:82 -#, php-format -msgid "" -"To select all posts for a given month, such as January of this year, visit " -"<a href=\"%1$s\">%2$s</a>" +#: ../../addon/openid/MysqlProvider.php:67 +msgid "Timezone" msgstr "" -#: ../../Zotlabs/Module/Uexport.php:83 -#, php-format -msgid "" -"These content files may be imported or restored by visiting <a href=\"%1$s\">" -"%2$s</a> on any site containing your channel. For best results please import " -"or restore these in date order (oldest first)." +#: ../../addon/openid/MysqlProvider.php:68 +#: ../../Zotlabs/Module/Profiles.php:767 +msgid "Homepage URL" msgstr "" -#: ../../Zotlabs/Module/Hq.php:140 -msgid "Welcome to Hubzilla!" +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:358 +msgid "Language" msgstr "" -#: ../../Zotlabs/Module/Hq.php:140 -msgid "You have got no unseen posts..." +#: ../../addon/openid/MysqlProvider.php:70 +msgid "Birth Year" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:71 +msgid "Birth Month" msgstr "" -#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:516 -#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:67 -#: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Display.php:29 -#: ../../Zotlabs/Module/Viewconnections.php:23 -msgid "Public access denied." +#: ../../addon/openid/MysqlProvider.php:72 +msgid "Birth Day" msgstr "" -#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:352 -#: ../../Zotlabs/Lib/Apps.php:352 ../../Zotlabs/Widget/Sitesearch.php:31 -#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../include/text.php:1103 -#: ../../include/text.php:1115 ../../include/acl_selectors.php:118 -#: ../../include/nav.php:186 -msgid "Search" +#: ../../addon/openid/MysqlProvider.php:73 +msgid "Birthdate" msgstr "" -#: ../../Zotlabs/Module/Search.php:230 -#, php-format -msgid "Items tagged with: %s" +#: ../../addon/openid/MysqlProvider.php:74 +#: ../../Zotlabs/Module/Profiles.php:486 +msgid "Gender" msgstr "" -#: ../../Zotlabs/Module/Search.php:232 -#, php-format -msgid "Search results for: %s" +#: ../../addon/moremoods/moremoods.php:19 +msgid "lonely" msgstr "" -#: ../../Zotlabs/Module/Pubstream.php:20 -msgid "Public Stream App" +#: ../../addon/moremoods/moremoods.php:20 +msgid "drunk" msgstr "" -#: ../../Zotlabs/Module/Pubstream.php:21 -msgid "The unmoderated public stream of this hub" +#: ../../addon/moremoods/moremoods.php:21 +msgid "horny" msgstr "" -#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 -#: ../../Zotlabs/Widget/Notifications.php:142 -msgid "Public Stream" +#: ../../addon/moremoods/moremoods.php:22 +msgid "stoned" msgstr "" -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." +#: ../../addon/moremoods/moremoods.php:23 +msgid "fucked up" msgstr "" -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." +#: ../../addon/moremoods/moremoods.php:24 +msgid "clusterfucked" msgstr "" -#: ../../Zotlabs/Module/Locs.php:66 -msgid "" -"Please select another location to become primary before removing the primary " -"location." +#: ../../addon/moremoods/moremoods.php:25 +msgid "crazy" msgstr "" -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" +#: ../../addon/moremoods/moremoods.php:26 +msgid "hurt" msgstr "" -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." +#: ../../addon/moremoods/moremoods.php:27 +msgid "sleepy" msgstr "" -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" +#: ../../addon/moremoods/moremoods.php:28 +msgid "grumpy" msgstr "" -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" +#: ../../addon/moremoods/moremoods.php:29 +msgid "high" msgstr "" -#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:176 -msgid "Drop" +#: ../../addon/moremoods/moremoods.php:30 +msgid "semi-conscious" msgstr "" -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" +#: ../../addon/moremoods/moremoods.php:31 +msgid "in love" msgstr "" -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." +#: ../../addon/moremoods/moremoods.php:32 +msgid "in lust" msgstr "" -#: ../../Zotlabs/Module/Locs.php:124 -msgid "" -"When possible, drop a location by logging into that website/hub and removing " -"your channel." +#: ../../addon/moremoods/moremoods.php:33 +msgid "naked" msgstr "" -#: ../../Zotlabs/Module/Locs.php:125 -msgid "Use this form to drop the location if the hub is no longer operating." +#: ../../addon/moremoods/moremoods.php:34 +msgid "stinky" msgstr "" -#: ../../Zotlabs/Module/Apporder.php:47 -msgid "Change Order of Pinned Navbar Apps" +#: ../../addon/moremoods/moremoods.php:35 +msgid "sweaty" msgstr "" -#: ../../Zotlabs/Module/Apporder.php:47 -msgid "Change Order of App Tray Apps" +#: ../../addon/moremoods/moremoods.php:36 +msgid "bleeding out" msgstr "" -#: ../../Zotlabs/Module/Apporder.php:48 -msgid "" -"Use arrows to move the corresponding app left (top) or right (bottom) in the " -"navbar" +#: ../../addon/moremoods/moremoods.php:37 +msgid "victorious" msgstr "" -#: ../../Zotlabs/Module/Apporder.php:48 -msgid "Use arrows to move the corresponding app up or down in the app tray" +#: ../../addon/moremoods/moremoods.php:38 +msgid "defeated" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:208 -msgid "Menu not found." +#: ../../addon/moremoods/moremoods.php:39 +msgid "envious" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:63 -msgid "Unable to create element." +#: ../../addon/moremoods/moremoods.php:40 +msgid "jealous" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:87 -msgid "Unable to update menu element." +#: ../../addon/dirstats/dirstats.php:94 +msgid "Hubzilla Directory Stats" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:103 -msgid "Unable to add menu element." +#: ../../addon/dirstats/dirstats.php:95 +msgid "Total Hubs" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Menu.php:231 -#: ../../Zotlabs/Module/Xchan.php:41 -msgid "Not found." +#: ../../addon/dirstats/dirstats.php:97 +msgid "Hubzilla Hubs" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 -msgid "Menu Item Permissions" +#: ../../addon/dirstats/dirstats.php:99 +msgid "Friendica Hubs" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247 -#: ../../Zotlabs/Module/Settings/Channel.php:526 -msgid "(click to open/close)" +#: ../../addon/dirstats/dirstats.php:101 +msgid "Diaspora Pods" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 -msgid "Link Name" +#: ../../addon/dirstats/dirstats.php:103 +msgid "Hubzilla Channels" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 -msgid "Link or Submenu Target" +#: ../../addon/dirstats/dirstats.php:105 +msgid "Friendica Channels" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:175 -msgid "Enter URL of the link or select a menu name to create a submenu" +#: ../../addon/dirstats/dirstats.php:107 +msgid "Diaspora Channels" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256 -msgid "Use magic-auth if available" +#: ../../addon/dirstats/dirstats.php:109 +msgid "Aged 35 and above" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 -#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Events.php:479 -#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:255 -#: ../../Zotlabs/Module/Settings/Channel.php:309 -#: ../../Zotlabs/Module/Settings/Display.php:89 -#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 -#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Api.php:99 -#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 -#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Menu.php:162 -#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Defperms.php:197 -#: ../../Zotlabs/Module/Profiles.php:681 ../../Zotlabs/Module/Sources.php:124 -#: ../../Zotlabs/Module/Sources.php:159 -#: ../../Zotlabs/Module/Filestorage.php:198 -#: ../../Zotlabs/Module/Filestorage.php:206 ../../Zotlabs/Lib/Libzotdir.php:162 -#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Storage/Browser.php:411 ../../boot.php:1681 -#: ../../view/theme/redbasic_c/php/config.php:100 -#: ../../view/theme/redbasic_c/php/config.php:115 -#: ../../view/theme/redbasic/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:116 -#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86 -#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60 -#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49 -#: ../../addon/jappixmini/Mod_Jappixmini.php:161 -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -#: ../../addon/jappixmini/Mod_Jappixmini.php:199 -#: ../../addon/jappixmini/Mod_Jappixmini.php:203 -#: ../../addon/jappixmini/Mod_Jappixmini.php:207 -#: ../../addon/channelreputation/channelreputation.php:110 -#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63 -#: ../../addon/content_import/Mod_content_import.php:137 -#: ../../addon/content_import/Mod_content_import.php:138 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 -#: ../../addon/libertree/Mod_Libertree.php:59 -#: ../../addon/statusnet/Mod_Statusnet.php:260 -#: ../../addon/statusnet/Mod_Statusnet.php:282 -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:162 -#: ../../addon/twitter/Mod_Twitter.php:171 -#: ../../addon/smileybutton/Mod_Smileybutton.php:44 -#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 -#: ../../addon/cart/cart.php:1258 -#: ../../addon/cart/submodules/paypalbutton.php:87 -#: ../../addon/cart/submodules/paypalbutton.php:95 -#: ../../addon/cart/submodules/manualcat.php:63 -#: ../../addon/cart/submodules/manualcat.php:254 -#: ../../addon/cart/submodules/manualcat.php:258 -#: ../../addon/cart/submodules/hzservices.php:64 -#: ../../addon/cart/submodules/hzservices.php:646 -#: ../../addon/cart/submodules/hzservices.php:650 -#: ../../addon/cart/submodules/subscriptions.php:153 -#: ../../addon/cart/submodules/subscriptions.php:425 -#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 -#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -msgid "No" +#: ../../addon/dirstats/dirstats.php:111 +msgid "Aged 34 and under" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 -#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Events.php:479 -#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:257 -#: ../../Zotlabs/Module/Settings/Channel.php:309 -#: ../../Zotlabs/Module/Settings/Display.php:89 -#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 -#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Api.php:98 -#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 -#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221 -#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 -#: ../../Zotlabs/Module/Filestorage.php:198 -#: ../../Zotlabs/Module/Filestorage.php:206 ../../Zotlabs/Lib/Libzotdir.php:162 -#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165 -#: ../../Zotlabs/Storage/Browser.php:411 ../../boot.php:1681 -#: ../../view/theme/redbasic_c/php/config.php:100 -#: ../../view/theme/redbasic_c/php/config.php:115 -#: ../../view/theme/redbasic/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:116 -#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86 -#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60 -#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49 -#: ../../addon/jappixmini/Mod_Jappixmini.php:161 -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -#: ../../addon/jappixmini/Mod_Jappixmini.php:199 -#: ../../addon/jappixmini/Mod_Jappixmini.php:203 -#: ../../addon/jappixmini/Mod_Jappixmini.php:207 -#: ../../addon/channelreputation/channelreputation.php:110 -#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63 -#: ../../addon/content_import/Mod_content_import.php:137 -#: ../../addon/content_import/Mod_content_import.php:138 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 -#: ../../addon/libertree/Mod_Libertree.php:59 -#: ../../addon/statusnet/Mod_Statusnet.php:260 -#: ../../addon/statusnet/Mod_Statusnet.php:282 -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:162 -#: ../../addon/twitter/Mod_Twitter.php:171 -#: ../../addon/smileybutton/Mod_Smileybutton.php:44 -#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 -#: ../../addon/cart/cart.php:1258 -#: ../../addon/cart/submodules/paypalbutton.php:87 -#: ../../addon/cart/submodules/paypalbutton.php:95 -#: ../../addon/cart/submodules/manualcat.php:63 -#: ../../addon/cart/submodules/manualcat.php:254 -#: ../../addon/cart/submodules/manualcat.php:258 -#: ../../addon/cart/submodules/hzservices.php:64 -#: ../../addon/cart/submodules/hzservices.php:646 -#: ../../addon/cart/submodules/hzservices.php:650 -#: ../../addon/cart/submodules/subscriptions.php:153 -#: ../../addon/cart/submodules/subscriptions.php:425 -#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 -#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -msgid "Yes" +#: ../../addon/dirstats/dirstats.php:113 +msgid "Average Age" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257 -msgid "Open link in new window" +#: ../../addon/dirstats/dirstats.php:115 +msgid "Known Chatrooms" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 -msgid "Order in list" +#: ../../addon/dirstats/dirstats.php:117 +msgid "Known Tags" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 -msgid "Higher numbers will sink to bottom of listing" +#: ../../addon/dirstats/dirstats.php:119 +msgid "" +"Please note Diaspora and Friendica statistics are merely those **this " +"directory** is aware of, and not all those known in the network. This also " +"applies to chatrooms," msgstr "" -#: ../../Zotlabs/Module/Mitem.php:179 -msgid "Submit and finish" +#: ../../addon/redred/Mod_Redred.php:24 +msgid "Channel is required." msgstr "" -#: ../../Zotlabs/Module/Mitem.php:180 -msgid "Submit and continue" +#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:325 +msgid "Invalid channel." msgstr "" -#: ../../Zotlabs/Module/Mitem.php:189 -msgid "Menu:" +#: ../../addon/redred/Mod_Redred.php:38 +msgid "Hubzilla Crosspost Connector Settings saved." msgstr "" -#: ../../Zotlabs/Module/Mitem.php:192 -msgid "Link Target" +#: ../../addon/redred/Mod_Redred.php:50 +#: ../../addon/statusnet/Mod_Statusnet.php:146 +msgid "Hubzilla Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:195 -msgid "Edit menu" +#: ../../addon/redred/Mod_Redred.php:51 +msgid "Relay public postings to another Hubzilla channel" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:198 -msgid "Edit element" +#: ../../addon/redred/Mod_Redred.php:63 +msgid "Send public postings to Hubzilla channel by default" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:199 -msgid "Drop element" +#: ../../addon/redred/Mod_Redred.php:67 +msgid "Hubzilla API Path" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:200 -msgid "New element" +#: ../../addon/redred/Mod_Redred.php:67 ../../addon/rtof/Mod_Rtof.php:53 +msgid "https://{sitename}/api" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:201 -msgid "Edit this menu container" +#: ../../addon/redred/Mod_Redred.php:71 +msgid "Hubzilla login name" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:202 -msgid "Add menu element" +#: ../../addon/redred/Mod_Redred.php:75 +msgid "Hubzilla channel name" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:203 -msgid "Delete this menu item" +#: ../../addon/redred/Mod_Redred.php:79 +#: ../../addon/jappixmini/Mod_Jappixmini.php:195 +msgid "Hubzilla password" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:204 -msgid "Edit this menu item" +#: ../../addon/redred/Mod_Redred.php:87 +msgid "Hubzilla Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:222 -msgid "Menu item not found." +#: ../../addon/redred/redred.php:50 +msgid "Post to Hubzilla" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:235 -msgid "Menu item deleted." +#: ../../addon/redphotos/redphotos.php:106 +msgid "Photos imported" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:237 -msgid "Menu item could not be deleted." +#: ../../addon/redphotos/redphotos.php:119 ../../addon/frphotos/frphotos.php:82 +#: ../../addon/redfiles/redfiles.php:109 ../../addon/hzfiles/hzfiles.php:75 +#: ../../include/items.php:435 ../../Zotlabs/Module/Import_items.php:120 +#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Group.php:98 +#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Module/Cloud.php:119 +#: ../../Zotlabs/Module/Share.php:71 ../../Zotlabs/Module/Subthread.php:86 +#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:82 +#: ../../Zotlabs/Web/WebServer.php:122 +msgid "Permission denied" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:244 -msgid "Edit Menu Element" +#: ../../addon/redphotos/redphotos.php:129 +msgid "Redmatrix Photo Album Import" msgstr "" -#: ../../Zotlabs/Module/Mitem.php:254 -msgid "Link text" +#: ../../addon/redphotos/redphotos.php:130 +msgid "This will import all your Redmatrix photo albums to this channel." msgstr "" -#: ../../Zotlabs/Module/Events.php:113 -#: ../../Zotlabs/Module/Channel_calendar.php:51 -msgid "Event can not end before it has started." +#: ../../addon/redphotos/redphotos.php:131 +#: ../../addon/redfiles/redfiles.php:121 +msgid "Redmatrix Server base URL" msgstr "" -#: ../../Zotlabs/Module/Events.php:115 ../../Zotlabs/Module/Events.php:124 -#: ../../Zotlabs/Module/Events.php:146 -#: ../../Zotlabs/Module/Channel_calendar.php:53 -#: ../../Zotlabs/Module/Channel_calendar.php:61 -#: ../../Zotlabs/Module/Channel_calendar.php:78 -msgid "Unable to generate preview." +#: ../../addon/redphotos/redphotos.php:132 +#: ../../addon/redfiles/redfiles.php:122 +msgid "Redmatrix Login Username" msgstr "" -#: ../../Zotlabs/Module/Events.php:122 -#: ../../Zotlabs/Module/Channel_calendar.php:59 -msgid "Event title and start time are required." +#: ../../addon/redphotos/redphotos.php:133 +#: ../../addon/redfiles/redfiles.php:123 +msgid "Redmatrix Login Password" msgstr "" -#: ../../Zotlabs/Module/Events.php:144 ../../Zotlabs/Module/Events.php:271 -#: ../../Zotlabs/Module/Channel_calendar.php:76 -#: ../../Zotlabs/Module/Channel_calendar.php:218 -msgid "Event not found." +#: ../../addon/redphotos/redphotos.php:134 +msgid "Import just this album" msgstr "" -#: ../../Zotlabs/Module/Events.php:266 -#: ../../Zotlabs/Module/Channel_calendar.php:213 -#: ../../Zotlabs/Module/Tagger.php:73 ../../Zotlabs/Module/Like.php:394 -#: ../../include/conversation.php:119 ../../include/text.php:2120 -#: ../../include/event.php:1207 -msgid "event" +#: ../../addon/redphotos/redphotos.php:134 +msgid "Leave blank to import all albums" msgstr "" -#: ../../Zotlabs/Module/Events.php:468 -msgid "Edit event title" +#: ../../addon/redphotos/redphotos.php:135 +msgid "Maximum count to import" msgstr "" -#: ../../Zotlabs/Module/Events.php:468 ../../Zotlabs/Module/Events.php:473 -#: ../../Zotlabs/Module/Appman.php:143 ../../Zotlabs/Module/Appman.php:144 -#: ../../Zotlabs/Module/Profiles.php:745 ../../Zotlabs/Module/Profiles.php:749 -#: ../../include/datetime.php:211 -msgid "Required" +#: ../../addon/redphotos/redphotos.php:135 +msgid "0 or blank to import all available" msgstr "" -#: ../../Zotlabs/Module/Events.php:470 -msgid "Categories (comma-separated list)" +#: ../../addon/redphotos/redphotohelper.php:71 ../../addon/pubcrawl/as.php:1692 +#: ../../addon/diaspora/Receiver.php:1592 ../../include/text.php:2119 +#: ../../include/conversation.php:116 ../../Zotlabs/Module/Like.php:392 +#: ../../Zotlabs/Module/Tagger.php:69 ../../Zotlabs/Module/Subthread.php:112 +#: ../../Zotlabs/Lib/Activity.php:2444 +msgid "photo" msgstr "" -#: ../../Zotlabs/Module/Events.php:471 -msgid "Edit Category" +#: ../../addon/statusnet/Mod_Statusnet.php:61 +msgid "" +"Please contact your site administrator.<br />The provided API URL is not " +"valid." msgstr "" -#: ../../Zotlabs/Module/Events.php:471 -msgid "Category" +#: ../../addon/statusnet/Mod_Statusnet.php:98 +msgid "We could not contact the GNU social API with the Path you entered." msgstr "" -#: ../../Zotlabs/Module/Events.php:474 -msgid "Edit start date and time" +#: ../../addon/statusnet/Mod_Statusnet.php:130 +msgid "GNU social settings updated." msgstr "" -#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Events.php:478 -msgid "Finish date and time are not known or not relevant" +#: ../../addon/statusnet/Mod_Statusnet.php:147 +msgid "" +"Relay public postings to a connected GNU social account (formerly StatusNet)" msgstr "" -#: ../../Zotlabs/Module/Events.php:477 -msgid "Edit finish date and time" +#: ../../addon/statusnet/Mod_Statusnet.php:181 +msgid "Globally Available GNU social OAuthKeys" msgstr "" -#: ../../Zotlabs/Module/Events.php:477 -msgid "Finish date and time" +#: ../../addon/statusnet/Mod_Statusnet.php:183 +msgid "" +"There are preconfigured OAuth key pairs for some GNU social servers " +"available. If you are using one of them, please use these credentials.<br /" +">If not feel free to connect to any other GNU social instance (see below)." msgstr "" -#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Events.php:480 -msgid "Adjust for viewer timezone" +#: ../../addon/statusnet/Mod_Statusnet.php:198 +msgid "Provide your own OAuth Credentials" msgstr "" -#: ../../Zotlabs/Module/Events.php:479 +#: ../../addon/statusnet/Mod_Statusnet.php:200 msgid "" -"Important for events that happen in a particular place. Not practical for " -"global holidays." +"No consumer key pair for GNU social found. Register your Hubzilla Account as " +"an desktop client on your GNU social account, copy the consumer key pair " +"here and enter the API base root.<br />Before you register your own OAuth " +"key pair ask the administrator if there is already a key pair for this " +"Hubzilla installation at your favourite GNU social installation." msgstr "" -#: ../../Zotlabs/Module/Events.php:481 -msgid "Edit Description" +#: ../../addon/statusnet/Mod_Statusnet.php:204 +msgid "OAuth Consumer Key" msgstr "" -#: ../../Zotlabs/Module/Events.php:483 -msgid "Edit Location" +#: ../../addon/statusnet/Mod_Statusnet.php:208 +msgid "OAuth Consumer Secret" msgstr "" -#: ../../Zotlabs/Module/Events.php:486 ../../Zotlabs/Module/Photos.php:1097 -#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Lib/ThreadItem.php:806 -#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359 -msgid "Preview" +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Base API Path" msgstr "" -#: ../../Zotlabs/Module/Events.php:487 ../../addon/hsse/hsse.php:225 -#: ../../include/conversation.php:1431 -msgid "Permission settings" +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Remember the trailing /" msgstr "" -#: ../../Zotlabs/Module/Events.php:502 -msgid "Advanced Options" +#: ../../addon/statusnet/Mod_Statusnet.php:216 +msgid "GNU social application name" msgstr "" -#: ../../Zotlabs/Module/Events.php:613 -msgid "l, F j" +#: ../../addon/statusnet/Mod_Statusnet.php:239 +msgid "" +"To connect to your GNU social account click the button below to get a " +"security code from GNU social which you have to copy into the input box " +"below and submit the form. Only your <strong>public</strong> posts will be " +"posted to GNU social." msgstr "" -#: ../../Zotlabs/Module/Events.php:641 -#: ../../Zotlabs/Module/Channel_calendar.php:370 -msgid "Edit event" +#: ../../addon/statusnet/Mod_Statusnet.php:241 +msgid "Log in with GNU social" msgstr "" -#: ../../Zotlabs/Module/Events.php:643 -#: ../../Zotlabs/Module/Channel_calendar.php:372 -msgid "Delete event" +#: ../../addon/statusnet/Mod_Statusnet.php:244 +msgid "Copy the security code from GNU social here" msgstr "" -#: ../../Zotlabs/Module/Events.php:669 ../../include/text.php:1939 -msgid "Link to Source" +#: ../../addon/statusnet/Mod_Statusnet.php:254 +msgid "Cancel Connection Process" msgstr "" -#: ../../Zotlabs/Module/Events.php:677 -#: ../../Zotlabs/Module/Channel_calendar.php:401 -msgid "calendar" +#: ../../addon/statusnet/Mod_Statusnet.php:256 +msgid "Current GNU social API is" msgstr "" -#: ../../Zotlabs/Module/Events.php:696 -msgid "Edit Event" +#: ../../addon/statusnet/Mod_Statusnet.php:260 +msgid "Cancel GNU social Connection" msgstr "" -#: ../../Zotlabs/Module/Events.php:696 -msgid "Create Event" +#: ../../addon/statusnet/Mod_Statusnet.php:272 +#: ../../addon/twitter/Mod_Twitter.php:147 +msgid "Currently connected to: " msgstr "" -#: ../../Zotlabs/Module/Events.php:699 ../../include/channel.php:1769 -msgid "Export" +#: ../../addon/statusnet/Mod_Statusnet.php:277 +msgid "" +"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile " +"details from unknown viewers?</em>) the link potentially included in public " +"postings relayed to GNU social will lead the visitor to a blank page " +"informing the visitor that the access to your profile has been restricted." msgstr "" -#: ../../Zotlabs/Module/Events.php:739 -msgid "Event removed" +#: ../../addon/statusnet/Mod_Statusnet.php:282 +msgid "Post to GNU social by default" msgstr "" -#: ../../Zotlabs/Module/Events.php:742 -#: ../../Zotlabs/Module/Channel_calendar.php:488 -msgid "Failed to remove event" +#: ../../addon/statusnet/Mod_Statusnet.php:282 +msgid "" +"If enabled your public postings will be posted to the associated GNU-social " +"account by default" msgstr "" -#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 -msgid "App installed." +#: ../../addon/statusnet/Mod_Statusnet.php:291 +#: ../../addon/twitter/Mod_Twitter.php:171 +msgid "Clear OAuth configuration" msgstr "" -#: ../../Zotlabs/Module/Appman.php:49 -msgid "Malformed app." +#: ../../addon/statusnet/Mod_Statusnet.php:303 +msgid "GNU-Social Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Appman.php:132 -msgid "Embed code" +#: ../../addon/statusnet/statusnet.php:145 +msgid "Post to GNU social" msgstr "" -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Edit App" +#: ../../addon/statusnet/statusnet.php:593 +#: ../../Zotlabs/Module/Admin/Site.php:297 +msgid "Site name" msgstr "" -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Create App" +#: ../../addon/statusnet/statusnet.php:594 +msgid "API URL" msgstr "" -#: ../../Zotlabs/Module/Appman.php:143 -msgid "Name of app" +#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:501 +#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141 +#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 +msgid "Consumer Secret" msgstr "" -#: ../../Zotlabs/Module/Appman.php:144 -msgid "Location (URL) of app" +#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:500 +#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140 +msgid "Consumer Key" msgstr "" -#: ../../Zotlabs/Module/Appman.php:146 -msgid "Photo icon URL" +#: ../../addon/statusnet/statusnet.php:597 +msgid "Application name" msgstr "" -#: ../../Zotlabs/Module/Appman.php:146 -msgid "80 x 80 pixels - optional" +#: ../../addon/frphotos/frphotos.php:92 +msgid "Friendica Photo Album Import" msgstr "" -#: ../../Zotlabs/Module/Appman.php:147 -msgid "Categories (optional, comma separated list)" +#: ../../addon/frphotos/frphotos.php:93 +msgid "This will import all your Friendica photo albums to this Red channel." msgstr "" -#: ../../Zotlabs/Module/Appman.php:148 -msgid "Version ID" +#: ../../addon/frphotos/frphotos.php:94 +msgid "Friendica Server base URL" msgstr "" -#: ../../Zotlabs/Module/Appman.php:149 -msgid "Price of app" +#: ../../addon/frphotos/frphotos.php:95 +msgid "Friendica Login Username" msgstr "" -#: ../../Zotlabs/Module/Appman.php:150 -msgid "Location (URL) to purchase app" +#: ../../addon/frphotos/frphotos.php:96 +msgid "Friendica Login Password" msgstr "" -#: ../../Zotlabs/Module/Regmod.php:15 -msgid "Please login." +#: ../../addon/rtof/Mod_Rtof.php:24 +msgid "Friendica Crosspost Connector Settings saved." msgstr "" -#: ../../Zotlabs/Module/Magic.php:78 -msgid "Hub not found." +#: ../../addon/rtof/Mod_Rtof.php:36 +msgid "Friendica Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:69 -#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Lib/Activity.php:2320 -#: ../../addon/redphotos/redphotohelper.php:71 -#: ../../addon/diaspora/Receiver.php:1592 ../../addon/pubcrawl/as.php:1690 -#: ../../include/conversation.php:116 ../../include/text.php:2117 -msgid "photo" +#: ../../addon/rtof/Mod_Rtof.php:37 +msgid "Relay public postings to a connected Friendica account" msgstr "" -#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Like.php:392 -#: ../../Zotlabs/Lib/Activity.php:2320 ../../addon/diaspora/Receiver.php:1592 -#: ../../addon/pubcrawl/as.php:1690 ../../include/conversation.php:144 -#: ../../include/text.php:2123 -msgid "status" +#: ../../addon/rtof/Mod_Rtof.php:49 +msgid "Send public postings to Friendica by default" msgstr "" -#: ../../Zotlabs/Module/Subthread.php:143 -#, php-format -msgid "%1$s is following %2$s's %3$s" +#: ../../addon/rtof/Mod_Rtof.php:53 +msgid "Friendica API Path" msgstr "" -#: ../../Zotlabs/Module/Subthread.php:145 -#, php-format -msgid "%1$s stopped following %2$s's %3$s" +#: ../../addon/rtof/Mod_Rtof.php:57 +msgid "Friendica login name" msgstr "" -#: ../../Zotlabs/Module/Article_edit.php:44 ../../Zotlabs/Module/Cal.php:31 -#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75 -#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41 -#: ../../Zotlabs/Module/Card_edit.php:44 -msgid "Channel not found." +#: ../../addon/rtof/Mod_Rtof.php:61 +msgid "Friendica password" msgstr "" -#: ../../Zotlabs/Module/Article_edit.php:101 -#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:222 -#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:292 -#: ../../Zotlabs/Module/Mail.php:435 ../../Zotlabs/Module/Card_edit.php:101 -#: ../../addon/hsse/hsse.php:95 ../../include/conversation.php:1298 -msgid "Insert web link" +#: ../../addon/rtof/Mod_Rtof.php:69 +msgid "Friendica Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Article_edit.php:117 -#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:671 -#: ../../Zotlabs/Module/Photos.php:1041 ../../Zotlabs/Module/Card_edit.php:117 -#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427 -msgid "Title (optional)" +#: ../../addon/rtof/rtof.php:51 +msgid "Post to Friendica" msgstr "" -#: ../../Zotlabs/Module/Article_edit.php:128 -msgid "Edit Article" +#: ../../addon/wppost/wppost.php:46 +msgid "Post to WordPress" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:68 -msgid "Nothing to import." +#: ../../addon/wppost/Mod_Wppost.php:28 +msgid "Wordpress Settings saved." msgstr "" -#: ../../Zotlabs/Module/Import_items.php:72 ../../Zotlabs/Module/Import.php:83 -#: ../../Zotlabs/Module/Import.php:99 -msgid "Unable to download data from old server" +#: ../../addon/wppost/Mod_Wppost.php:41 +msgid "Wordpress Post App" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:77 ../../Zotlabs/Module/Import.php:106 -msgid "Imported file is empty." +#: ../../addon/wppost/Mod_Wppost.php:42 +msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:93 -#, php-format -msgid "Warning: Database versions differ by %1$d updates." +#: ../../addon/wppost/Mod_Wppost.php:65 +msgid "WordPress username" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:108 -msgid "Import completed" +#: ../../addon/wppost/Mod_Wppost.php:69 +msgid "WordPress password" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:125 -msgid "Import Items" +#: ../../addon/wppost/Mod_Wppost.php:73 +msgid "WordPress API URL" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:126 -msgid "Use this form to import existing posts and content from an export file." +#: ../../addon/wppost/Mod_Wppost.php:74 +msgid "Typically https://your-blog.tld/xmlrpc.php" msgstr "" -#: ../../Zotlabs/Module/Import_items.php:127 -#: ../../Zotlabs/Module/Import.php:629 -msgid "File to Upload" +#: ../../addon/wppost/Mod_Wppost.php:77 +msgid "WordPress blogid" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:147 ../../Zotlabs/Module/Manage.php:138 -#, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." +#: ../../addon/wppost/Mod_Wppost.php:78 +msgid "For multi-user sites such as wordpress.com, otherwise leave blank" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:157 -#: ../../Zotlabs/Module/New_channel.php:164 -#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256 -#: ../../Zotlabs/Widget/Notifications.php:162 ../../include/nav.php:326 -msgid "Loading" +#: ../../addon/wppost/Mod_Wppost.php:82 +msgid "Post to WordPress by default" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:159 -msgid "Your real name is recommended." +#: ../../addon/wppost/Mod_Wppost.php:86 +msgid "Forward comments (requires hubzilla_wp plugin)" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:160 -msgid "" -"Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation " -"Group\"" +#: ../../addon/wppost/Mod_Wppost.php:94 +msgid "Wordpress Post" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:165 -msgid "" -"This will be used to create a unique network address (like an email address)." +#: ../../addon/content_import/Mod_content_import.php:27 +msgid "No server specified" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:167 -msgid "Allowed characters are a-z 0-9, - and _" +#: ../../addon/content_import/Mod_content_import.php:73 +msgid "Posts imported" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:175 -msgid "Channel name" +#: ../../addon/content_import/Mod_content_import.php:113 +msgid "Files imported" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:177 -#: ../../Zotlabs/Module/Register.php:263 -msgid "Choose a short nickname" +#: ../../addon/content_import/Mod_content_import.php:122 +msgid "" +"This addon app copies existing content and file storage to a cloned/copied " +"channel. Once the app is installed, visit the newly installed app. This will " +"allow you to set the location of your original channel and an optional date " +"range of files/conversations to copy." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:178 -#: ../../Zotlabs/Module/Settings/Channel.php:535 -#: ../../Zotlabs/Module/Register.php:264 -msgid "Channel role and privacy" +#: ../../addon/content_import/Mod_content_import.php:135 +#: ../../Zotlabs/Lib/Apps.php:331 +msgid "Content Import" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:178 +#: ../../addon/content_import/Mod_content_import.php:136 msgid "" -"Select a channel permission role compatible with your usage needs and " -"privacy requirements." +"This will import all your conversations and cloud files from a cloned " +"channel on another server. This may take a while if you have lots of posts " +"and or files." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:178 -#: ../../Zotlabs/Module/Register.php:264 -msgid "Read more about channel permission roles" +#: ../../addon/content_import/Mod_content_import.php:137 +msgid "Include posts" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:181 -msgid "Create a Channel" +#: ../../addon/content_import/Mod_content_import.php:137 +msgid "Conversations, Articles, Cards, and other posted content" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:182 -msgid "" -"A channel is a unique network identity. It can represent a person (social " -"network profile), a forum (group), a business or celebrity page, a newsfeed, " -"and many other things." +#: ../../addon/content_import/Mod_content_import.php:138 +msgid "Include files" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:183 -msgid "" -"or <a href=\"import\">import an existing channel</a> from another location." +#: ../../addon/content_import/Mod_content_import.php:138 +msgid "Files, Photos and other cloud storage" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:188 -msgid "Validate" +#: ../../addon/content_import/Mod_content_import.php:139 +msgid "Original Server base URL" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:35 -msgid "" -"Channel removals are not allowed within 48 hours of changing the account " -"password." +#: ../../addon/content_import/Mod_content_import.php:140 +#: ../../addon/hzfiles/hzfiles.php:84 +msgid "Since modified date yyyy-mm-dd" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:60 -msgid "Remove This Channel" +#: ../../addon/content_import/Mod_content_import.php:141 +#: ../../addon/hzfiles/hzfiles.php:85 +msgid "Until modified date yyyy-mm-dd" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -#: ../../Zotlabs/Module/Changeaddr.php:78 -msgid "WARNING: " +#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 +msgid "Set your location" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:61 -msgid "This channel will be completely removed from the network. " +#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 +msgid "Clear browser location" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "This action is permanent and can not be undone!" +#: ../../addon/hsse/hsse.php:95 ../../include/conversation.php:1298 +#: ../../Zotlabs/Module/Article_edit.php:100 +#: ../../Zotlabs/Module/Card_edit.php:101 +#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:222 +#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Mail.php:292 +#: ../../Zotlabs/Module/Mail.php:435 +msgid "Insert web link" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:62 -#: ../../Zotlabs/Module/Removeaccount.php:59 -#: ../../Zotlabs/Module/Changeaddr.php:79 -msgid "Please enter your password for verification:" +#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 +msgid "Embed (existing) photo from your photo albums" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "Remove this channel and all its clones from the network" +#: ../../addon/hsse/hsse.php:134 ../../include/conversation.php:1337 +#: ../../Zotlabs/Module/Chat.php:220 ../../Zotlabs/Module/Mail.php:245 +#: ../../Zotlabs/Module/Mail.php:366 +msgid "Please enter a link URL:" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "" -"By default only the instance of the channel located on this hub will be " -"removed from the network" +#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 +msgid "Tag term:" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:594 -msgid "Remove Channel" +#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 +msgid "Where are you right now?" msgstr "" -#: ../../Zotlabs/Module/Sharedwithme.php:103 -msgid "Files: shared with me" +#: ../../addon/hsse/hsse.php:139 ../../include/conversation.php:1342 +#: ../../Zotlabs/Module/Profile_photo.php:507 +#: ../../Zotlabs/Module/Cover_photo.php:436 ../../Zotlabs/Module/Wiki.php:403 +msgid "Choose images to embed" msgstr "" -#: ../../Zotlabs/Module/Sharedwithme.php:105 -msgid "NEW" +#: ../../addon/hsse/hsse.php:140 ../../include/conversation.php:1343 +#: ../../Zotlabs/Module/Profile_photo.php:508 +#: ../../Zotlabs/Module/Cover_photo.php:437 ../../Zotlabs/Module/Wiki.php:404 +msgid "Choose an album" msgstr "" -#: ../../Zotlabs/Module/Sharedwithme.php:106 -#: ../../Zotlabs/Storage/Browser.php:293 ../../include/text.php:1515 -msgid "Size" +#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 +msgid "Choose a different album..." msgstr "" -#: ../../Zotlabs/Module/Sharedwithme.php:107 -#: ../../Zotlabs/Storage/Browser.php:294 -msgid "Last Modified" +#: ../../addon/hsse/hsse.php:142 ../../include/conversation.php:1345 +#: ../../Zotlabs/Module/Profile_photo.php:510 +#: ../../Zotlabs/Module/Cover_photo.php:439 ../../Zotlabs/Module/Wiki.php:406 +msgid "Error getting album list" msgstr "" -#: ../../Zotlabs/Module/Sharedwithme.php:108 -msgid "Remove all files" +#: ../../addon/hsse/hsse.php:143 ../../include/conversation.php:1346 +#: ../../Zotlabs/Module/Profile_photo.php:511 +#: ../../Zotlabs/Module/Cover_photo.php:440 ../../Zotlabs/Module/Wiki.php:407 +msgid "Error getting photo link" msgstr "" -#: ../../Zotlabs/Module/Sharedwithme.php:109 -msgid "Remove this file" +#: ../../addon/hsse/hsse.php:144 ../../include/conversation.php:1347 +#: ../../Zotlabs/Module/Profile_photo.php:512 +#: ../../Zotlabs/Module/Cover_photo.php:441 ../../Zotlabs/Module/Wiki.php:408 +msgid "Error getting album" msgstr "" -#: ../../Zotlabs/Module/Setup.php:167 -msgid "$Projectname Server - Setup" +#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 +msgid "Comments enabled" msgstr "" -#: ../../Zotlabs/Module/Setup.php:171 -msgid "Could not connect to database." +#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 +msgid "Comments disabled" msgstr "" -#: ../../Zotlabs/Module/Setup.php:175 -msgid "" -"Could not connect to specified site URL. Possible SSL certificate or DNS " -"issue." +#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359 +#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Module/Events.php:486 +#: ../../Zotlabs/Module/Photos.php:1097 ../../Zotlabs/Lib/ThreadItem.php:806 +msgid "Preview" msgstr "" -#: ../../Zotlabs/Module/Setup.php:182 -msgid "Could not create table." +#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392 +#: ../../Zotlabs/Widget/Cdav.php:136 ../../Zotlabs/Module/Webpages.php:256 +#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1075 +#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194 +msgid "Share" msgstr "" -#: ../../Zotlabs/Module/Setup.php:188 -msgid "Your site database has been installed." +#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 +msgid "Page link name" msgstr "" -#: ../../Zotlabs/Module/Setup.php:194 -msgid "" -"You may need to import the file \"install/schema_xxx.sql\" manually using a " -"database client." +#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 +msgid "Post as" msgstr "" -#: ../../Zotlabs/Module/Setup.php:195 ../../Zotlabs/Module/Setup.php:259 -#: ../../Zotlabs/Module/Setup.php:766 -msgid "Please see the file \"install/INSTALL.txt\"." +#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1406 +#: ../../Zotlabs/Lib/ThreadItem.php:797 +msgid "Bold" msgstr "" -#: ../../Zotlabs/Module/Setup.php:256 -msgid "System check" +#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1407 +#: ../../Zotlabs/Lib/ThreadItem.php:798 +msgid "Italic" msgstr "" -#: ../../Zotlabs/Module/Setup.php:261 -msgid "Check again" +#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1408 +#: ../../Zotlabs/Lib/ThreadItem.php:799 +msgid "Underline" msgstr "" -#: ../../Zotlabs/Module/Setup.php:282 -msgid "Database connection" +#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1409 +#: ../../Zotlabs/Lib/ThreadItem.php:800 +msgid "Quote" msgstr "" -#: ../../Zotlabs/Module/Setup.php:283 -msgid "" -"In order to install $Projectname we need to know how to connect to your " -"database." +#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1410 +#: ../../Zotlabs/Lib/ThreadItem.php:801 +msgid "Code" msgstr "" -#: ../../Zotlabs/Module/Setup.php:284 -msgid "" -"Please contact your hosting provider or site administrator if you have " -"questions about these settings." +#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1411 +#: ../../Zotlabs/Lib/ThreadItem.php:803 +msgid "Attach/Upload file" msgstr "" -#: ../../Zotlabs/Module/Setup.php:285 -msgid "" -"The database you specify below should already exist. If it does not, please " -"create it before continuing." +#: ../../addon/hsse/hsse.php:208 ../../include/conversation.php:1414 +#: ../../Zotlabs/Module/Wiki.php:400 +msgid "Embed an image from your albums" msgstr "" -#: ../../Zotlabs/Module/Setup.php:289 -msgid "Database Server Name" +#: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 +#: ../../include/conversation.php:1415 ../../include/conversation.php:1464 +#: ../../Zotlabs/Module/Article_edit.php:130 +#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 +#: ../../Zotlabs/Module/Card_edit.php:131 ../../Zotlabs/Module/Oauth.php:112 +#: ../../Zotlabs/Module/Oauth.php:138 ../../Zotlabs/Module/Editwebpage.php:169 +#: ../../Zotlabs/Module/Cdav.php:1081 ../../Zotlabs/Module/Cdav.php:1391 +#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 +#: ../../Zotlabs/Module/Editpost.php:110 +#: ../../Zotlabs/Module/Admin/Addons.php:427 +#: ../../Zotlabs/Module/Profile_photo.php:505 +#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Filer.php:55 +#: ../../Zotlabs/Module/Editlayout.php:140 +#: ../../Zotlabs/Module/Cover_photo.php:434 +#: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Oauth2.php:117 +#: ../../Zotlabs/Module/Oauth2.php:145 ../../Zotlabs/Module/Wiki.php:368 +#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Connedit.php:941 +msgid "Cancel" msgstr "" -#: ../../Zotlabs/Module/Setup.php:289 -msgid "Default is 127.0.0.1" +#: ../../addon/hsse/hsse.php:210 ../../addon/hsse/hsse.php:257 +#: ../../include/conversation.php:1416 ../../include/conversation.php:1463 +#: ../../Zotlabs/Module/Profile_photo.php:506 +#: ../../Zotlabs/Module/Cover_photo.php:435 ../../Zotlabs/Module/Wiki.php:402 +msgid "OK" msgstr "" -#: ../../Zotlabs/Module/Setup.php:290 -msgid "Database Port" +#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 +msgid "Toggle voting" msgstr "" -#: ../../Zotlabs/Module/Setup.php:290 -msgid "Communication port number - use 0 for default" +#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 +msgid "Disable comments" msgstr "" -#: ../../Zotlabs/Module/Setup.php:291 -msgid "Database Login Name" +#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 +msgid "Toggle comments" msgstr "" -#: ../../Zotlabs/Module/Setup.php:292 -msgid "Database Login Password" +#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427 +#: ../../Zotlabs/Module/Article_edit.php:116 +#: ../../Zotlabs/Module/Card_edit.php:117 +#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:671 +#: ../../Zotlabs/Module/Photos.php:1041 +msgid "Title (optional)" msgstr "" -#: ../../Zotlabs/Module/Setup.php:293 -msgid "Database Name" +#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 +msgid "Categories (optional, comma-separated list)" msgstr "" -#: ../../Zotlabs/Module/Setup.php:294 -msgid "Database Type" +#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1431 +#: ../../Zotlabs/Module/Events.php:487 +msgid "Permission settings" msgstr "" -#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 -msgid "Site administrator email address" +#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 +msgid "Other networks and post services" msgstr "" -#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 -msgid "" -"Your account email address must match this in order to use the web admin " -"panel." +#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456 +#: ../../Zotlabs/Module/Mail.php:296 ../../Zotlabs/Module/Mail.php:439 +msgid "Set expiration date" msgstr "" -#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 -msgid "Website URL" +#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 +msgid "Set publish date" msgstr "" -#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 -msgid "Please use SSL (https) URL if available." +#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461 +#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:298 +#: ../../Zotlabs/Module/Mail.php:441 ../../Zotlabs/Lib/ThreadItem.php:810 +msgid "Encrypt text" msgstr "" -#: ../../Zotlabs/Module/Setup.php:298 ../../Zotlabs/Module/Setup.php:340 -msgid "Please select a default timezone for your website" +#: ../../addon/hsse/Mod_Hsse.php:15 +msgid "WYSIWYG status editor" msgstr "" -#: ../../Zotlabs/Module/Setup.php:325 -msgid "Site settings" +#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 +msgid "WYSIWYG Status App" msgstr "" -#: ../../Zotlabs/Module/Setup.php:379 -msgid "PHP version 7.1 or greater is required." +#: ../../addon/hsse/Mod_Hsse.php:34 +msgid "WYSIWYG Status" msgstr "" -#: ../../Zotlabs/Module/Setup.php:380 -msgid "PHP version" +#: ../../addon/openstreetmap/openstreetmap.php:131 +msgid "View Larger" msgstr "" -#: ../../Zotlabs/Module/Setup.php:396 -msgid "Could not find a command line version of PHP in the web server PATH." +#: ../../addon/openstreetmap/openstreetmap.php:154 +msgid "Tile Server URL" msgstr "" -#: ../../Zotlabs/Module/Setup.php:397 +#: ../../addon/openstreetmap/openstreetmap.php:154 msgid "" -"If you don't have a command line version of PHP installed on server, you " -"will not be able to run background polling via cron." +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank" +"\">public tile servers</a>" msgstr "" -#: ../../Zotlabs/Module/Setup.php:401 -msgid "PHP executable path" +#: ../../addon/openstreetmap/openstreetmap.php:155 +msgid "Nominatim (reverse geocoding) Server URL" msgstr "" -#: ../../Zotlabs/Module/Setup.php:401 +#: ../../addon/openstreetmap/openstreetmap.php:155 msgid "" -"Enter full path to php executable. You can leave this blank to continue the " -"installation." +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=" +"\"_blank\">Nominatim servers</a>" msgstr "" -#: ../../Zotlabs/Module/Setup.php:406 -msgid "Command line PHP" +#: ../../addon/openstreetmap/openstreetmap.php:156 +msgid "Default zoom" msgstr "" -#: ../../Zotlabs/Module/Setup.php:416 +#: ../../addon/openstreetmap/openstreetmap.php:156 msgid "" -"Unable to check command line PHP, as shell_exec() is disabled. This is " -"required." +"The default zoom level. (1:world, 18:highest, also depends on tile server)" msgstr "" -#: ../../Zotlabs/Module/Setup.php:420 -msgid "" -"The command line version of PHP on your system does not have " -"\"register_argc_argv\" enabled." +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include marker on map" msgstr "" -#: ../../Zotlabs/Module/Setup.php:421 -msgid "This is required for message delivery to work." +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include a marker on the map." msgstr "" -#: ../../Zotlabs/Module/Setup.php:424 -msgid "PHP register_argc_argv" +#: ../../addon/openstreetmap/openstreetmap.php:169 +#: ../../addon/rendezvous/rendezvous.php:82 ../../addon/twitter/twitter.php:489 +#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/piwik/piwik.php:116 +#: ../../addon/logrot/logrot.php:54 ../../addon/xmpp/xmpp.php:54 +#: ../../Zotlabs/Module/Settings/Channel.php:266 +#: ../../Zotlabs/Module/Defperms.php:111 +msgid "Settings updated." msgstr "" -#: ../../Zotlabs/Module/Setup.php:444 -msgid "" -"This is not sufficient to upload larger images or files. You should be able " -"to upload at least 4 MB at once." +#: ../../addon/ijpost/Mod_Ijpost.php:23 +msgid "Insane Journal Crosspost Connector Settings saved." msgstr "" -#: ../../Zotlabs/Module/Setup.php:446 -#, php-format -msgid "" -"Your max allowed total upload size is set to %s. Maximum size of one file to " -"upload is set to %s. You are allowed to upload up to %d files at once." +#: ../../addon/ijpost/Mod_Ijpost.php:35 +msgid "Insane Journal Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Setup.php:452 -msgid "You can adjust these settings in the server php.ini file." +#: ../../addon/ijpost/Mod_Ijpost.php:36 +msgid "Relay public postings to Insane Journal" msgstr "" -#: ../../Zotlabs/Module/Setup.php:454 -msgid "PHP upload limits" +#: ../../addon/ijpost/Mod_Ijpost.php:53 +msgid "InsaneJournal username" msgstr "" -#: ../../Zotlabs/Module/Setup.php:477 -msgid "" -"Error: the \"openssl_pkey_new\" function on this system is not able to " -"generate encryption keys" +#: ../../addon/ijpost/Mod_Ijpost.php:57 +msgid "InsaneJournal password" msgstr "" -#: ../../Zotlabs/Module/Setup.php:478 -msgid "" -"If running under Windows, please see \"http://www.php.net/manual/en/openssl." -"installation.php\"." +#: ../../addon/ijpost/Mod_Ijpost.php:61 +msgid "Post to InsaneJournal by default" msgstr "" -#: ../../Zotlabs/Module/Setup.php:481 -msgid "Generate encryption keys" +#: ../../addon/ijpost/Mod_Ijpost.php:69 +msgid "Insane Journal Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Setup.php:498 -msgid "libCurl PHP module" +#: ../../addon/ijpost/ijpost.php:44 +msgid "Post to Insane Journal" msgstr "" -#: ../../Zotlabs/Module/Setup.php:499 -msgid "GD graphics PHP module" +#: ../../addon/wholikesme/wholikesme.php:29 +msgid "Who likes me?" msgstr "" -#: ../../Zotlabs/Module/Setup.php:500 -msgid "OpenSSL PHP module" +#: ../../addon/qrator/qrator.php:48 +msgid "QR code" msgstr "" -#: ../../Zotlabs/Module/Setup.php:501 -msgid "PDO database PHP module" +#: ../../addon/qrator/qrator.php:63 +msgid "QR Generator" msgstr "" -#: ../../Zotlabs/Module/Setup.php:502 -msgid "mb_string PHP module" +#: ../../addon/qrator/qrator.php:64 +msgid "Enter some text" msgstr "" -#: ../../Zotlabs/Module/Setup.php:503 -msgid "xml PHP module" +#: ../../addon/pubcrawl/as.php:1080 ../../include/conversation.php:1166 +#: ../../Zotlabs/Widget/Album.php:84 ../../Zotlabs/Widget/Portfolio.php:95 +#: ../../Zotlabs/Module/Embedphotos.php:174 ../../Zotlabs/Module/Cdav.php:871 +#: ../../Zotlabs/Module/Cdav.php:872 ../../Zotlabs/Module/Cdav.php:879 +#: ../../Zotlabs/Module/Photos.php:790 ../../Zotlabs/Module/Photos.php:1254 +#: ../../Zotlabs/Lib/Activity.php:1192 ../../Zotlabs/Lib/Apps.php:1114 +#: ../../Zotlabs/Lib/Apps.php:1198 ../../Zotlabs/Storage/Browser.php:164 +msgid "Unknown" msgstr "" -#: ../../Zotlabs/Module/Setup.php:504 -msgid "zip PHP module" +#: ../../addon/pubcrawl/as.php:1348 ../../addon/pubcrawl/as.php:1544 +#: ../../addon/pubcrawl/as.php:1738 ../../include/network.php:1731 +#: ../../Zotlabs/Lib/Activity.php:2294 ../../Zotlabs/Lib/Activity.php:2488 +msgid "ActivityPub" msgstr "" -#: ../../Zotlabs/Module/Setup.php:508 ../../Zotlabs/Module/Setup.php:510 -msgid "Apache mod_rewrite module" +#: ../../addon/pubcrawl/as.php:1692 ../../addon/diaspora/Receiver.php:1592 +#: ../../include/text.php:2125 ../../include/conversation.php:144 +#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Subthread.php:112 +#: ../../Zotlabs/Lib/Activity.php:2444 +msgid "status" msgstr "" -#: ../../Zotlabs/Module/Setup.php:508 -msgid "" -"Error: Apache webserver mod-rewrite module is required but not installed." +#: ../../addon/pubcrawl/as.php:1729 ../../addon/diaspora/Receiver.php:1532 +#: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:447 +#: ../../Zotlabs/Lib/Activity.php:2479 +#, php-format +msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Setup.php:514 ../../Zotlabs/Module/Setup.php:517 -msgid "exec" +#: ../../addon/pubcrawl/as.php:1731 ../../include/conversation.php:163 +#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:2481 +#, php-format +msgid "%1$s doesn't like %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Setup.php:514 -msgid "" -"Error: exec is required but is either not installed or has been disabled in " -"php.ini" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 +msgid "ActivityPub Protocol Settings updated." msgstr "" -#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:523 -msgid "shell_exec" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:34 +msgid "" +"The activitypub protocol does not support location independence. Connections " +"you make within that network may be unreachable from alternate channel " +"locations." msgstr "" -#: ../../Zotlabs/Module/Setup.php:520 -msgid "" -"Error: shell_exec is required but is either not installed or has been " -"disabled in php.ini" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 +msgid "Activitypub Protocol App" msgstr "" -#: ../../Zotlabs/Module/Setup.php:528 -msgid "Error: libCURL PHP module required but not installed." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +msgid "Deliver to ActivityPub recipients in privacy groups" msgstr "" -#: ../../Zotlabs/Module/Setup.php:532 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 msgid "" -"Error: GD PHP module with JPEG support or ImageMagick graphics library " -"required but not installed." +"May result in a large number of mentions and expose all the members of your " +"privacy group" msgstr "" -#: ../../Zotlabs/Module/Setup.php:536 -msgid "Error: openssl PHP module required but not installed." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 +msgid "Send multi-media HTML articles" msgstr "" -#: ../../Zotlabs/Module/Setup.php:542 -msgid "" -"Error: PDO database PHP module missing a driver for either mysql or pgsql." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 +msgid "Not supported by some microblog services such as Mastodon" msgstr "" -#: ../../Zotlabs/Module/Setup.php:547 -msgid "Error: PDO database PHP module required but not installed." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 +msgid "Activitypub Protocol" msgstr "" -#: ../../Zotlabs/Module/Setup.php:551 -msgid "Error: mb_string PHP module required but not installed." +#: ../../addon/ldapauth/ldapauth.php:70 +msgid "An account has been created for you." msgstr "" -#: ../../Zotlabs/Module/Setup.php:555 -msgid "Error: xml PHP module required for DAV but not installed." +#: ../../addon/ldapauth/ldapauth.php:77 +msgid "Authentication successful but rejected: account creation is disabled." msgstr "" -#: ../../Zotlabs/Module/Setup.php:559 -msgid "Error: zip PHP module required but not installed." +#: ../../addon/dwpost/Mod_Dwpost.php:24 +msgid "Dreamwidth Crosspost Connector Settings saved." msgstr "" -#: ../../Zotlabs/Module/Setup.php:578 ../../Zotlabs/Module/Setup.php:587 -msgid ".htconfig.php is writable" +#: ../../addon/dwpost/Mod_Dwpost.php:36 +msgid "Dreamwidth Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Setup.php:583 -msgid "" -"The web installer needs to be able to create a file called \".htconfig.php\" " -"in the top folder of your web server and it is unable to do so." +#: ../../addon/dwpost/Mod_Dwpost.php:37 +msgid "Relay public postings to Dreamwidth" msgstr "" -#: ../../Zotlabs/Module/Setup.php:584 -msgid "" -"This is most often a permission setting, as the web server may not be able " -"to write files in your folder - even if you can." +#: ../../addon/dwpost/Mod_Dwpost.php:52 +msgid "Dreamwidth username" msgstr "" -#: ../../Zotlabs/Module/Setup.php:585 -msgid "Please see install/INSTALL.txt for additional information." +#: ../../addon/dwpost/Mod_Dwpost.php:56 +msgid "Dreamwidth password" msgstr "" -#: ../../Zotlabs/Module/Setup.php:601 -msgid "" -"This software uses the Smarty3 template engine to render its web views. " -"Smarty3 compiles templates to PHP to speed up rendering." +#: ../../addon/dwpost/Mod_Dwpost.php:60 +msgid "Post to Dreamwidth by default" msgstr "" -#: ../../Zotlabs/Module/Setup.php:602 -#, php-format -msgid "" -"In order to store these compiled templates, the web server needs to have " -"write access to the directory %s under the top level web folder." +#: ../../addon/dwpost/Mod_Dwpost.php:68 +msgid "Dreamwidth Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Setup.php:603 ../../Zotlabs/Module/Setup.php:624 -msgid "" -"Please ensure that the user that your web server runs as (e.g. www-data) has " -"write access to this folder." +#: ../../addon/dwpost/dwpost.php:47 +msgid "Post to Dreamwidth" msgstr "" -#: ../../Zotlabs/Module/Setup.php:604 -#, php-format -msgid "" -"Note: as a security measure, you should give the web server write access to " -"%s only--not the template files (.tpl) that it contains." +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslap" msgstr "" -#: ../../Zotlabs/Module/Setup.php:607 -#, php-format -msgid "%s is writable" +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslapped" msgstr "" -#: ../../Zotlabs/Module/Setup.php:623 -msgid "" -"This software uses the store directory to save uploaded files. The web " -"server needs to have write access to the store directory under the top level " -"web folder" +#: ../../addon/morepokes/morepokes.php:20 +msgid "shag" msgstr "" -#: ../../Zotlabs/Module/Setup.php:627 -msgid "store is writable" +#: ../../addon/morepokes/morepokes.php:20 +msgid "shagged" msgstr "" -#: ../../Zotlabs/Module/Setup.php:659 -msgid "" -"SSL certificate cannot be validated. Fix certificate or disable https access " -"to this site." +#: ../../addon/morepokes/morepokes.php:21 +msgid "patent" msgstr "" -#: ../../Zotlabs/Module/Setup.php:660 -msgid "" -"If you have https access to your website or allow connections to TCP port " -"443 (the https: port), you MUST use a browser-valid certificate. You MUST " -"NOT use self-signed certificates!" +#: ../../addon/morepokes/morepokes.php:21 +msgid "patented" msgstr "" -#: ../../Zotlabs/Module/Setup.php:661 -msgid "" -"This restriction is incorporated because public posts from you may for " -"example contain references to images on your own hub." +#: ../../addon/morepokes/morepokes.php:22 +msgid "hug" msgstr "" -#: ../../Zotlabs/Module/Setup.php:662 -msgid "" -"If your certificate is not recognized, members of other sites (who may " -"themselves have valid certificates) will get a warning message on their own " -"site complaining about security issues." +#: ../../addon/morepokes/morepokes.php:22 +msgid "hugged" msgstr "" -#: ../../Zotlabs/Module/Setup.php:663 -msgid "" -"This can cause usability issues elsewhere (not just on your own site) so we " -"must insist on this requirement." +#: ../../addon/morepokes/morepokes.php:23 +msgid "murder" msgstr "" -#: ../../Zotlabs/Module/Setup.php:664 -msgid "" -"Providers are available that issue free certificates which are browser-valid." +#: ../../addon/morepokes/morepokes.php:23 +msgid "murdered" msgstr "" -#: ../../Zotlabs/Module/Setup.php:665 -msgid "" -"If you are confident that the certificate is valid and signed by a trusted " -"authority, check to see if you have failed to install an intermediate cert. " -"These are not normally required by browsers, but are required for server-to-" -"server communications." +#: ../../addon/morepokes/morepokes.php:24 +msgid "worship" msgstr "" -#: ../../Zotlabs/Module/Setup.php:667 -msgid "SSL certificate validation" +#: ../../addon/morepokes/morepokes.php:24 +msgid "worshipped" msgstr "" -#: ../../Zotlabs/Module/Setup.php:673 -msgid "" -"Url rewrite in .htaccess is not working. Check your server configuration." -"Test: " +#: ../../addon/morepokes/morepokes.php:25 +msgid "kiss" msgstr "" -#: ../../Zotlabs/Module/Setup.php:676 -msgid "Url rewrite is working" +#: ../../addon/morepokes/morepokes.php:25 +msgid "kissed" msgstr "" -#: ../../Zotlabs/Module/Setup.php:689 -msgid "" -"The database configuration file \".htconfig.php\" could not be written. " -"Please use the enclosed text to create a configuration file in your web " -"server root." +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempt" msgstr "" -#: ../../Zotlabs/Module/Setup.php:718 ../../addon/rendezvous/rendezvous.php:401 -msgid "Errors encountered creating database tables." +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempted" msgstr "" -#: ../../Zotlabs/Module/Setup.php:764 -msgid "<h1>What next?</h1>" +#: ../../addon/morepokes/morepokes.php:27 +msgid "raise eyebrows at" msgstr "" -#: ../../Zotlabs/Module/Setup.php:765 -msgid "" -"IMPORTANT: You will need to [manually] setup a scheduled task for the poller." +#: ../../addon/morepokes/morepokes.php:27 +msgid "raised their eyebrows at" msgstr "" -#: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135 -msgid "Continue" +#: ../../addon/morepokes/morepokes.php:28 +msgid "insult" msgstr "" -#: ../../Zotlabs/Module/Connect.php:104 -msgid "Premium Channel App" +#: ../../addon/morepokes/morepokes.php:28 +msgid "insulted" msgstr "" -#: ../../Zotlabs/Module/Connect.php:105 -msgid "" -"Allows you to set restrictions and terms on those that connect with your " -"channel" +#: ../../addon/morepokes/morepokes.php:29 +msgid "praise" msgstr "" -#: ../../Zotlabs/Module/Connect.php:116 -msgid "Premium Channel Setup" +#: ../../addon/morepokes/morepokes.php:29 +msgid "praised" msgstr "" -#: ../../Zotlabs/Module/Connect.php:118 -msgid "Enable premium channel connection restrictions" +#: ../../addon/morepokes/morepokes.php:30 +msgid "be dubious of" msgstr "" -#: ../../Zotlabs/Module/Connect.php:119 -msgid "" -"Please enter your restrictions or conditions, such as paypal receipt, usage " -"guidelines, etc." +#: ../../addon/morepokes/morepokes.php:30 +msgid "was dubious of" msgstr "" -#: ../../Zotlabs/Module/Connect.php:121 ../../Zotlabs/Module/Connect.php:141 -msgid "" -"This channel may require additional steps or acknowledgement of the " -"following conditions prior to connecting:" +#: ../../addon/morepokes/morepokes.php:31 +msgid "eat" msgstr "" -#: ../../Zotlabs/Module/Connect.php:122 -msgid "" -"Potential connections will then see the following text before proceeding:" +#: ../../addon/morepokes/morepokes.php:31 +msgid "ate" msgstr "" -#: ../../Zotlabs/Module/Connect.php:123 ../../Zotlabs/Module/Connect.php:144 -msgid "" -"By continuing, I certify that I have complied with any instructions provided " -"on this page." +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggle and fawn at" msgstr "" -#: ../../Zotlabs/Module/Connect.php:132 -msgid "(No specific instructions have been provided by the channel owner.)" +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggled and fawned at" msgstr "" -#: ../../Zotlabs/Module/Connect.php:140 -msgid "Restricted or Premium Channel" +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubt" msgstr "" -#: ../../Zotlabs/Module/Admin/Queue.php:35 -msgid "Queue Statistics" +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubted" msgstr "" -#: ../../Zotlabs/Module/Admin/Queue.php:36 -msgid "Total Entries" +#: ../../addon/morepokes/morepokes.php:34 +msgid "glare" msgstr "" -#: ../../Zotlabs/Module/Admin/Queue.php:37 -msgid "Priority" +#: ../../addon/morepokes/morepokes.php:34 +msgid "glared at" msgstr "" -#: ../../Zotlabs/Module/Admin/Queue.php:38 -msgid "Destination URL" +#: ../../addon/morepokes/morepokes.php:35 +msgid "fuck" msgstr "" -#: ../../Zotlabs/Module/Admin/Queue.php:39 -msgid "Mark hub permanently offline" +#: ../../addon/morepokes/morepokes.php:35 +msgid "fucked" msgstr "" -#: ../../Zotlabs/Module/Admin/Queue.php:40 -msgid "Empty queue for this hub" +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonk" msgstr "" -#: ../../Zotlabs/Module/Admin/Queue.php:41 -msgid "Last known contact" +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonked" msgstr "" -#: ../../Zotlabs/Module/Admin/Features.php:55 -#: ../../Zotlabs/Module/Admin/Features.php:56 -#: ../../Zotlabs/Module/Settings/Features.php:36 ../../include/features.php:55 -msgid "Off" +#: ../../addon/morepokes/morepokes.php:37 +msgid "declare undying love for" msgstr "" -#: ../../Zotlabs/Module/Admin/Features.php:55 -#: ../../Zotlabs/Module/Admin/Features.php:56 -#: ../../Zotlabs/Module/Settings/Features.php:36 ../../include/features.php:55 -msgid "On" +#: ../../addon/morepokes/morepokes.php:37 +msgid "declared undying love for" msgstr "" -#: ../../Zotlabs/Module/Admin/Features.php:56 -#, php-format -msgid "Lock feature %s" +#: ../../addon/rendezvous/rendezvous.php:57 +msgid "Errors encountered deleting database table " msgstr "" -#: ../../Zotlabs/Module/Admin/Features.php:64 -msgid "Manage Additional Features" +#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:498 +msgid "Submit Settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:19 -#: ../../Zotlabs/Module/Admin/Dbsync.php:59 -msgid "Update has been marked successful" +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "Drop tables when uninstalling?" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:32 -#, php-format -msgid "Verification of update %s failed. Check system logs." +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "" +"If checked, the Rendezvous database tables will be deleted when the plugin " +"is uninstalled." msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:35 -#: ../../Zotlabs/Module/Admin/Dbsync.php:74 -#, php-format -msgid "Update %s was successfully applied." +#: ../../addon/rendezvous/rendezvous.php:97 +msgid "Mapbox Access Token" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:39 -#, php-format -msgid "Verifying update %s did not return a status. Unknown if it succeeded." +#: ../../addon/rendezvous/rendezvous.php:97 +msgid "" +"If you enter a Mapbox access token, it will be used to retrieve map tiles " +"from Mapbox instead of the default OpenStreetMap tile server." msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:42 -#, php-format -msgid "Update %s does not contain a verification function." +#: ../../addon/rendezvous/rendezvous.php:162 +msgid "Rendezvous" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:46 -#: ../../Zotlabs/Module/Admin/Dbsync.php:81 -#, php-format -msgid "Update function %s could not be found." +#: ../../addon/rendezvous/rendezvous.php:167 +msgid "" +"This identity has been deleted by another member due to inactivity. Please " +"press the \"New identity\" button or refresh the page to register a new " +"identity. You may use the same name." msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:71 -#, php-format -msgid "Executing update procedure %s failed. Check system logs." +#: ../../addon/rendezvous/rendezvous.php:168 +msgid "Welcome to Rendezvous!" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:78 -#, php-format +#: ../../addon/rendezvous/rendezvous.php:169 msgid "" -"Update %s did not return a status. It cannot be determined if it was " -"successful." +"Enter your name to join this rendezvous. To begin sharing your location with " +"the other members, tap the GPS control. When your location is discovered, a " +"red dot will appear and others will be able to see you on the map." msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:99 -msgid "Failed Updates" +#: ../../addon/rendezvous/rendezvous.php:171 +msgid "Let's meet here" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:101 -msgid "Mark success (if update was manually applied)" +#: ../../addon/rendezvous/rendezvous.php:172 +#: ../../Zotlabs/Widget/Wiki_page_history.php:22 +#: ../../Zotlabs/Module/Group.php:154 ../../Zotlabs/Module/Oauth.php:113 +#: ../../Zotlabs/Module/Oauth.php:139 ../../Zotlabs/Module/Chat.php:259 +#: ../../Zotlabs/Module/Cdav.php:1373 ../../Zotlabs/Module/Sharedwithme.php:104 +#: ../../Zotlabs/Module/Admin/Channels.php:159 +#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 +#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923 +#: ../../Zotlabs/Lib/NativeWikiPage.php:561 +#: ../../Zotlabs/Storage/Browser.php:291 +msgid "Name" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:102 -msgid "Attempt to verify this update if a verification procedure exists" +#: ../../addon/rendezvous/rendezvous.php:173 +#: ../../addon/cart/submodules/hzservices.php:654 +#: ../../addon/cart/submodules/manualcat.php:262 +#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:481 +#: ../../Zotlabs/Module/Appman.php:145 ../../Zotlabs/Module/Rbmark.php:101 +msgid "Description" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:103 -msgid "Attempt to execute this update step automatically" +#: ../../addon/rendezvous/rendezvous.php:174 +msgid "New marker" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:108 -msgid "No failed updates." +#: ../../addon/rendezvous/rendezvous.php:175 +msgid "Edit marker" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:37 -#, php-format -msgid "%s account blocked/unblocked" -msgid_plural "%s account blocked/unblocked" -msgstr[0] "" -msgstr[1] "" - -#: ../../Zotlabs/Module/Admin/Accounts.php:44 -#, php-format -msgid "%s account deleted" -msgid_plural "%s accounts deleted" -msgstr[0] "" -msgstr[1] "" +#: ../../addon/rendezvous/rendezvous.php:176 +msgid "New identity" +msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:80 -msgid "Account not found" +#: ../../addon/rendezvous/rendezvous.php:177 +msgid "Delete marker" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2632 -#, php-format -msgid "Account '%s' deleted" +#: ../../addon/rendezvous/rendezvous.php:178 +msgid "Delete member" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:99 -#, php-format -msgid "Account '%s' blocked" +#: ../../addon/rendezvous/rendezvous.php:179 +msgid "Edit proximity alert" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:107 -#, php-format -msgid "Account '%s' unblocked" +#: ../../addon/rendezvous/rendezvous.php:180 +msgid "" +"A proximity alert will be issued when this member is within a certain radius " +"of you.<br><br>Enter a radius in meters (0 to disable):" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:166 -#: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Themes.php:122 -#: ../../Zotlabs/Module/Admin/Themes.php:156 -#: ../../Zotlabs/Module/Admin/Site.php:287 -#: ../../Zotlabs/Module/Admin/Addons.php:341 -#: ../../Zotlabs/Module/Admin/Addons.php:439 -#: ../../Zotlabs/Module/Admin/Security.php:92 -#: ../../Zotlabs/Module/Admin.php:138 -msgid "Administration" +#: ../../addon/rendezvous/rendezvous.php:180 +#: ../../addon/rendezvous/rendezvous.php:185 +msgid "distance" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:167 -#: ../../Zotlabs/Module/Admin/Accounts.php:180 -#: ../../Zotlabs/Module/Admin.php:96 ../../Zotlabs/Widget/Admin.php:23 -msgid "Accounts" +#: ../../addon/rendezvous/rendezvous.php:181 +msgid "Proximity alert distance (meters)" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:169 -#: ../../Zotlabs/Module/Admin/Channels.php:148 -msgid "select all" +#: ../../addon/rendezvous/rendezvous.php:182 +#: ../../addon/rendezvous/rendezvous.php:184 +msgid "" +"A proximity alert will be issued when you are within a certain radius of the " +"marker location.<br><br>Enter a radius in meters (0 to disable):" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:170 -msgid "Registrations waiting for confirm" +#: ../../addon/rendezvous/rendezvous.php:183 +msgid "Marker proximity alert" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:171 -msgid "Request date" +#: ../../addon/rendezvous/rendezvous.php:186 +msgid "Reminder note" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:172 -msgid "No registrations." +#: ../../addon/rendezvous/rendezvous.php:187 +msgid "" +"Enter a note to be displayed when you are within the specified proximity..." msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:173 -#: ../../Zotlabs/Module/Connections.php:320 ../../include/conversation.php:735 -msgid "Approve" +#: ../../addon/rendezvous/rendezvous.php:199 +msgid "Add new rendezvous" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Authorize.php:33 -msgid "Deny" +#: ../../addon/rendezvous/rendezvous.php:200 +msgid "" +"Create a new rendezvous and share the access link with those you wish to " +"invite to the group. Those who open the link become members of the " +"rendezvous. They can view other member locations, add markers to the map, or " +"share their own locations with the group." msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:176 -#: ../../Zotlabs/Module/Connedit.php:636 -msgid "Block" +#: ../../addon/rendezvous/rendezvous.php:232 +msgid "You have no rendezvous. Press the button above to create a rendezvous!" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:177 -#: ../../Zotlabs/Module/Connedit.php:636 -msgid "Unblock" +#: ../../addon/rendezvous/rendezvous.php:401 ../../Zotlabs/Module/Setup.php:718 +msgid "Errors encountered creating database tables." msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:182 -msgid "ID" +#: ../../addon/startpage/Mod_Startpage.php:50 +msgid "Startpage App" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:184 -msgid "All Channels" +#: ../../addon/startpage/Mod_Startpage.php:51 +msgid "Set a preferred page to load on login from home page" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:185 -msgid "Register date" +#: ../../addon/startpage/Mod_Startpage.php:62 +msgid "Page to load after login" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:186 -msgid "Last login" +#: ../../addon/startpage/Mod_Startpage.php:62 +msgid "" +"Examples: "apps", "network?f=&gid=37" (privacy " +"collection), "channel" or "notifications/system" (leave " +"blank for default network page (grid)." msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:187 -msgid "Expires" +#: ../../addon/startpage/Mod_Startpage.php:70 +msgid "Startpage" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:188 -msgid "Service Class" +#: ../../addon/adultphotoflag/adultphotoflag.php:24 +msgid "Flag Adult Photos" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:190 +#: ../../addon/adultphotoflag/adultphotoflag.php:25 msgid "" -"Selected accounts will be deleted!\\n\\nEverything these accounts had posted " -"on this site will be permanently deleted!\\n\\nAre you sure?" +"Provide photo edit option to hide inappropriate photos from default album " +"view" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:191 -msgid "" -"The account {0} will be deleted!\\n\\nEverything this account has posted on " -"this site will be permanently deleted!\\n\\nAre you sure?" +#: ../../addon/upgrade_info/upgrade_info.php:48 +msgid "Your channel has been upgraded to $Projectname version" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:28 -msgid "Log settings updated." +#: ../../addon/upgrade_info/upgrade_info.php:50 +msgid "Please have a look at the" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48 -#: ../../Zotlabs/Widget/Admin.php:58 -msgid "Logs" +#: ../../addon/upgrade_info/upgrade_info.php:52 +msgid "git history" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:85 -msgid "Clear" +#: ../../addon/upgrade_info/upgrade_info.php:54 +msgid "change log" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:91 -msgid "Debugging" +#: ../../addon/upgrade_info/upgrade_info.php:55 +msgid "for further info." msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "Log file" +#: ../../addon/upgrade_info/upgrade_info.php:60 +msgid "Upgrade Info" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "" -"Must be writable by web server. Relative to your top-level webserver " -"directory." +#: ../../addon/upgrade_info/upgrade_info.php:64 +msgid "Do not show this again" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:93 -msgid "Log level" +#: ../../addon/twitter/Mod_Twitter.php:65 +msgid "Twitter settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:31 -#, php-format -msgid "%s channel censored/uncensored" -msgid_plural "%s channels censored/uncensored" -msgstr[0] "" -msgstr[1] "" +#: ../../addon/twitter/Mod_Twitter.php:78 +msgid "Twitter Crosspost Connector App" +msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:40 -#, php-format -msgid "%s channel code allowed/disallowed" -msgid_plural "%s channels code allowed/disallowed" -msgstr[0] "" -msgstr[1] "" +#: ../../addon/twitter/Mod_Twitter.php:79 +msgid "Relay public posts to Twitter" +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:103 +msgid "" +"No consumer key pair for Twitter found. Please contact your site " +"administrator." +msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:46 -#, php-format -msgid "%s channel deleted" -msgid_plural "%s channels deleted" -msgstr[0] "" -msgstr[1] "" +#: ../../addon/twitter/Mod_Twitter.php:125 +msgid "" +"At this Hubzilla instance the Twitter plugin was enabled but you have not " +"yet connected your account to your Twitter account. To do so click the " +"button below to get a PIN from Twitter which you have to copy into the input " +"box below and submit the form. Only your <strong>public</strong> posts will " +"be posted to Twitter." +msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:65 -msgid "Channel not found" +#: ../../addon/twitter/Mod_Twitter.php:127 +msgid "Log in with Twitter" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:75 -#, php-format -msgid "Channel '%s' deleted" +#: ../../addon/twitter/Mod_Twitter.php:130 +msgid "Copy the PIN from Twitter here" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' censored" +#: ../../addon/twitter/Mod_Twitter.php:152 +msgid "" +"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile " +"details from unknown viewers?</em>) the link potentially included in public " +"postings relayed to Twitter will lead the visitor to a blank page informing " +"the visitor that the access to your profile has been restricted." msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' uncensored" +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Twitter post length" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code allowed" +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Maximum tweet length" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code disallowed" +#: ../../addon/twitter/Mod_Twitter.php:162 +msgid "Send public postings to Twitter by default" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:146 -#: ../../Zotlabs/Module/Admin.php:114 ../../Zotlabs/Widget/Admin.php:24 -msgid "Channels" +#: ../../addon/twitter/Mod_Twitter.php:162 +msgid "" +"If enabled your public postings will be posted to the associated Twitter " +"account by default" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:150 -msgid "Censor" +#: ../../addon/twitter/Mod_Twitter.php:181 +msgid "Twitter Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:151 -msgid "Uncensor" +#: ../../addon/twitter/twitter.php:109 +msgid "Post to Twitter" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:152 -msgid "Allow Code" +#: ../../addon/pumpio/pumpio.php:152 +msgid "You are now authenticated to pumpio." msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:153 -msgid "Disallow Code" +#: ../../addon/pumpio/pumpio.php:153 +msgid "return to the featured settings page" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:423 -msgid "Channel" +#: ../../addon/pumpio/pumpio.php:168 +msgid "Post to Pump.io" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:158 -msgid "UID" +#: ../../addon/pumpio/Mod_Pumpio.php:40 +msgid "Pump.io Settings saved." msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:162 -msgid "" -"Selected channels will be deleted!\\n\\nEverything that was posted in these " -"channels on this site will be permanently deleted!\\n\\nAre you sure?" +#: ../../addon/pumpio/Mod_Pumpio.php:53 +msgid "Pump.io Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Admin/Channels.php:163 -msgid "" -"The channel {0} will be deleted!\\n\\nEverything that was posted in this " -"channel on this site will be permanently deleted!\\n\\nAre you sure?" +#: ../../addon/pumpio/Mod_Pumpio.php:54 +msgid "Relay public posts to pump.io" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:26 -msgid "Theme settings updated." +#: ../../addon/pumpio/Mod_Pumpio.php:73 +msgid "Pump.io servername" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:61 -msgid "No themes found." +#: ../../addon/pumpio/Mod_Pumpio.php:73 +msgid "Without \"http://\" or \"https://\"" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:72 -#: ../../Zotlabs/Module/Admin/Addons.php:259 ../../Zotlabs/Module/Thing.php:94 -#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45 -#: ../../Zotlabs/Module/Display.php:455 ../../Zotlabs/Module/Filestorage.php:26 -#: ../../Zotlabs/Module/Admin.php:62 -#: ../../addon/flashcards/Mod_Flashcards.php:240 -#: ../../addon/flashcards/Mod_Flashcards.php:241 ../../include/items.php:3713 -msgid "Item not found." +#: ../../addon/pumpio/Mod_Pumpio.php:77 +msgid "Pump.io username" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:95 -#: ../../Zotlabs/Module/Admin/Addons.php:310 -msgid "Disable" +#: ../../addon/pumpio/Mod_Pumpio.php:77 +msgid "Without the servername" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:97 -#: ../../Zotlabs/Module/Admin/Addons.php:313 -msgid "Enable" +#: ../../addon/pumpio/Mod_Pumpio.php:88 +msgid "You are not authenticated to pumpio" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:116 -msgid "Screenshot" +#: ../../addon/pumpio/Mod_Pumpio.php:90 +msgid "(Re-)Authenticate your pump.io connection" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:123 -#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28 -msgid "Themes" +#: ../../addon/pumpio/Mod_Pumpio.php:94 +msgid "Post to pump.io by default" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:124 -#: ../../Zotlabs/Module/Admin/Addons.php:343 -msgid "Toggle" +#: ../../addon/pumpio/Mod_Pumpio.php:98 +msgid "Should posts be public" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:125 -#: ../../Zotlabs/Module/Admin/Addons.php:344 ../../Zotlabs/Lib/Apps.php:338 -#: ../../Zotlabs/Widget/Newmember.php:53 -#: ../../Zotlabs/Widget/Settings_menu.php:61 ../../include/nav.php:101 -msgid "Settings" +#: ../../addon/pumpio/Mod_Pumpio.php:102 +msgid "Mirror all public posts" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:134 -#: ../../Zotlabs/Module/Admin/Addons.php:351 -msgid "Author: " +#: ../../addon/pumpio/Mod_Pumpio.php:112 +msgid "Pump.io Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:135 -#: ../../Zotlabs/Module/Admin/Addons.php:352 -msgid "Maintainer: " +#: ../../addon/gravatar/gravatar.php:123 +msgid "generic profile image" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:162 -msgid "[Experimental]" +#: ../../addon/gravatar/gravatar.php:124 +msgid "random geometric pattern" msgstr "" -#: ../../Zotlabs/Module/Admin/Themes.php:163 -msgid "[Unsupported]" +#: ../../addon/gravatar/gravatar.php:125 +msgid "monster face" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:161 -msgid "Site settings updated." +#: ../../addon/gravatar/gravatar.php:126 +msgid "computer generated face" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:187 -#: ../../view/theme/redbasic_c/php/config.php:15 -#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3229 -msgid "Default" +#: ../../addon/gravatar/gravatar.php:127 +msgid "retro arcade style face" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:198 -#: ../../Zotlabs/Module/Settings/Display.php:119 -#, php-format -msgid "%s - (Incompatible)" +#: ../../addon/gravatar/gravatar.php:128 +msgid "Hub default profile photo" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:205 -msgid "mobile" +#: ../../addon/gravatar/gravatar.php:143 +msgid "Information" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:207 -msgid "experimental" +#: ../../addon/gravatar/gravatar.php:143 +msgid "" +"Libravatar addon is installed, too. Please disable Libravatar addon or this " +"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if " +"nothing was found at Libravatar." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:209 -msgid "unsupported" +#: ../../addon/gravatar/gravatar.php:150 ../../addon/msgfooter/msgfooter.php:46 +#: ../../addon/xmpp/xmpp.php:43 +msgid "Save Settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:256 -msgid "Yes - with approval" +#: ../../addon/gravatar/gravatar.php:151 +msgid "Default avatar image" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:262 -msgid "My site is not a public server" +#: ../../addon/gravatar/gravatar.php:151 +msgid "Select default avatar image if none was found at Gravatar. See README" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:263 -msgid "My site has paid access only" +#: ../../addon/gravatar/gravatar.php:152 +msgid "Rating of images" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:264 -msgid "My site has free access only" +#: ../../addon/gravatar/gravatar.php:152 +msgid "Select the appropriate avatar rating for your site. See README" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:265 -msgid "My site offers free accounts with optional paid upgrades" +#: ../../addon/gravatar/gravatar.php:165 +msgid "Gravatar settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:279 -msgid "Default permission role for new accounts" +#: ../../addon/msgfooter/msgfooter.php:47 +msgid "text to include in all outgoing posts from this site" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:279 -msgid "" -"This role will be used for the first channel created after registration." +#: ../../addon/sendzid/Mod_Sendzid.php:14 +msgid "Send your identity to all websites" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:288 ../../Zotlabs/Widget/Admin.php:22 -msgid "Site" +#: ../../addon/sendzid/Mod_Sendzid.php:20 +msgid "Sendzid App" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:290 -#: ../../Zotlabs/Module/Register.php:277 -msgid "Registration" +#: ../../addon/sendzid/Mod_Sendzid.php:32 +msgid "Send ZID" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:291 -msgid "File upload" +#: ../../addon/cart/widgets/catalogitem.php:57 +#: ../../addon/cart/submodules/hzservices.php:657 +#: ../../addon/cart/submodules/manualcat.php:265 +msgid "Price" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:292 -msgid "Policies" +#: ../../addon/cart/manual_payments.php:7 +msgid "Error: order mismatch. Please try again." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:293 ../../include/contact_widgets.php:16 -msgid "Advanced" +#: ../../addon/cart/manual_payments.php:61 +msgid "Manual payments are not enabled." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:297 -#: ../../addon/statusnet/statusnet.php:593 -msgid "Site name" +#: ../../addon/cart/manual_payments.php:68 +#: ../../addon/cart/submodules/paypalbutton.php:392 +#: ../../addon/cart/cart.php:1460 +msgid "Order not found." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:299 -msgid "Banner/Logo" +#: ../../addon/cart/manual_payments.php:77 +msgid "Finished" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:299 -msgid "Unfiltered HTML/CSS/JS is allowed" +#: ../../addon/cart/manual_payments.php:93 +#: ../../addon/cart/submodules/paypalbutton.php:456 +#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1438 +#: ../../Zotlabs/Module/Wiki.php:77 +msgid "Invalid channel" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:300 -msgid "Administrator Information" +#: ../../addon/cart/submodules/subscriptions.php:151 +msgid "Enable Subscription Management Module" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../addon/cart/submodules/subscriptions.php:223 msgid "" -"Contact information for site administrators. Displayed on siteinfo page. " -"BBCode can be used here" +"Cannot include subscription items with different terms in the same order." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:301 ../../Zotlabs/Module/Siteinfo.php:24 -msgid "Site Information" +#: ../../addon/cart/submodules/subscriptions.php:372 +msgid "Select Subscription to Edit" +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:380 +msgid "Edit Subscriptions" +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:414 +msgid "Subscription SKU" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:301 -msgid "" -"Publicly visible description of this site. Displayed on siteinfo page. " -"BBCode can be used here" +#: ../../addon/cart/submodules/subscriptions.php:419 +msgid "Catalog Description" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:302 -msgid "System language" +#: ../../addon/cart/submodules/subscriptions.php:423 +msgid "Subscription available for purchase." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:303 -msgid "System theme" +#: ../../addon/cart/submodules/subscriptions.php:428 +msgid "Maximum active subscriptions to this item per account." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:303 -msgid "" -"Default system theme - may be over-ridden by user profiles - <a href='#' " -"id='cnftheme'>change theme settings</a>" +#: ../../addon/cart/submodules/subscriptions.php:431 +msgid "Subscription price." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:306 -msgid "Allow Feeds as Connections" +#: ../../addon/cart/submodules/subscriptions.php:435 +msgid "Quantity" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:306 -msgid "(Heavy system resource usage)" +#: ../../addon/cart/submodules/subscriptions.php:439 +msgid "Term" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:307 -msgid "Maximum image size" +#: ../../addon/cart/submodules/hzservices.php:62 +msgid "Enable Hubzilla Services Module" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:307 -msgid "" -"Maximum size in bytes of uploaded images. Default is 0, which means no " -"limits." +#: ../../addon/cart/submodules/hzservices.php:161 +#: ../../addon/cart/submodules/manualcat.php:174 +msgid "New Sku" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:308 -msgid "Does this site allow new member registration?" +#: ../../addon/cart/submodules/hzservices.php:196 +#: ../../addon/cart/submodules/manualcat.php:210 +msgid "Cannot save edits to locked item." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:309 -msgid "Invitation only" +#: ../../addon/cart/submodules/hzservices.php:245 +#: ../../addon/cart/submodules/hzservices.php:332 +msgid "SKU not found." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:309 -msgid "" -"Only allow new member registrations with an invitation code. Above register " -"policy must be set to Yes." +#: ../../addon/cart/submodules/hzservices.php:298 +#: ../../addon/cart/submodules/hzservices.php:302 +msgid "Invalid Activation Directive." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:310 -msgid "Minimum age" +#: ../../addon/cart/submodules/hzservices.php:373 +#: ../../addon/cart/submodules/hzservices.php:377 +msgid "Invalid Deactivation Directive." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:310 -msgid "Minimum age (in years) for who may register on this site." +#: ../../addon/cart/submodules/hzservices.php:563 +msgid "Add to this privacy group" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:311 -msgid "Which best describes the types of account offered by this hub?" +#: ../../addon/cart/submodules/hzservices.php:579 +msgid "Set user service class" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:311 -msgid "This is displayed on the public server site list." +#: ../../addon/cart/submodules/hzservices.php:606 +msgid "You must be using a local account to purchase this service." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:312 -msgid "Register text" +#: ../../addon/cart/submodules/hzservices.php:646 +#: ../../addon/cart/submodules/manualcat.php:254 +msgid "Changes Locked" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:312 -msgid "Will be displayed prominently on the registration page." +#: ../../addon/cart/submodules/hzservices.php:650 +#: ../../addon/cart/submodules/manualcat.php:258 +msgid "Item available for purchase." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:314 -msgid "Site homepage to show visitors (default: login box)" +#: ../../addon/cart/submodules/hzservices.php:660 +#: ../../addon/cart/submodules/manualcat.php:268 +msgid "Photo URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:314 -msgid "" -"example: 'pubstream' to show public stream, 'page/sys/home' to show a system " -"webpage called 'home' or 'include:home.html' to include a file." +#: ../../addon/cart/submodules/hzservices.php:664 +msgid "Add buyer to privacy group" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:315 -msgid "Preserve site homepage URL" +#: ../../addon/cart/submodules/hzservices.php:669 +msgid "Add buyer as connection" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:315 -msgid "" -"Present the site homepage in a frame at the original location instead of " -"redirecting" +#: ../../addon/cart/submodules/hzservices.php:677 +#: ../../addon/cart/submodules/hzservices.php:719 +msgid "Set Service Class" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:316 -msgid "Accounts abandoned after x days" +#: ../../addon/cart/submodules/paypalbutton.php:85 +msgid "Enable Paypal Button Module" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:316 -msgid "" -"Will not waste system resources polling external sites for abandonded " -"accounts. Enter 0 for no time limit." +#: ../../addon/cart/submodules/paypalbutton.php:93 +msgid "Use Production Key" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:317 -msgid "Allowed friend domains" +#: ../../addon/cart/submodules/paypalbutton.php:100 +msgid "Paypal Sandbox Client Key" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:317 -msgid "" -"Comma separated list of domains which are allowed to establish friendships " -"with this site. Wildcards are accepted. Empty to allow any domains" +#: ../../addon/cart/submodules/paypalbutton.php:107 +msgid "Paypal Sandbox Secret Key" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:318 -msgid "Verify Email Addresses" +#: ../../addon/cart/submodules/paypalbutton.php:113 +msgid "Paypal Production Client Key" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:318 -msgid "" -"Check to verify email addresses used in account registration (recommended)." +#: ../../addon/cart/submodules/paypalbutton.php:120 +msgid "Paypal Production Secret Key" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:319 -msgid "Force publish" +#: ../../addon/cart/submodules/paypalbutton.php:252 +msgid "Paypal button payments are not enabled." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../addon/cart/submodules/paypalbutton.php:270 msgid "" -"Check to force all profiles on this site to be listed in the site directory." +"Paypal button payments are not properly configured. Please choose another " +"payment option." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:320 -msgid "Import Public Streams" +#: ../../addon/cart/submodules/manualcat.php:61 +msgid "Enable Manual Cart Module" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:320 -msgid "" -"Import and allow access to public content pulled from other sites. Warning: " -"this content is unmoderated." +#: ../../addon/cart/myshop.php:30 +msgid "Access Denied." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:321 -msgid "Site only Public Streams" +#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1328 +msgid "Order Not Found" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:321 -msgid "" -"Allow access to public content originating only from this site if Imported " -"Public Streams are disabled." +#: ../../addon/cart/myshop.php:186 ../../addon/cart/myshop.php:220 +#: ../../addon/cart/myshop.php:269 ../../addon/cart/myshop.php:327 +msgid "Invalid Item" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:322 -msgid "Allow anybody on the internet to access the Public streams" +#: ../../addon/cart/Settings/Cart.php:56 +msgid "Enable Test Catalog" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:322 -msgid "" -"Disable to require authentication before viewing. Warning: this content is " -"unmoderated." +#: ../../addon/cart/Settings/Cart.php:68 +msgid "Enable Manual Payments" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:323 -msgid "Only import Public stream posts with this text" +#: ../../addon/cart/Settings/Cart.php:88 +msgid "Base Merchant Currency" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:323 -#: ../../Zotlabs/Module/Admin/Site.php:324 -#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893 -msgid "" -"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " -"all posts" +#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1257 +msgid "Cart Settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:324 -msgid "Do not import Public stream posts with this text" +#: ../../addon/cart/cart.php:150 +msgid "DB Cleanup Failure" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:327 -msgid "Login on Homepage" +#: ../../addon/cart/cart.php:556 +msgid "[cart] Item Added" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:327 -msgid "" -"Present a login box to visitors on the home page if no other content has " -"been configured." +#: ../../addon/cart/cart.php:945 +msgid "Order already checked out." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:328 -msgid "Enable context help" +#: ../../addon/cart/cart.php:1250 +msgid "Drop database tables when uninstalling." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:328 -msgid "" -"Display contextual help for the current page when the help button is pressed." +#: ../../addon/cart/cart.php:1269 ../../addon/cart/cart.php:1272 +msgid "Shop" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:330 -msgid "Reply-to email address for system generated email." +#: ../../addon/cart/cart.php:1292 ../../addon/flashcards/Mod_Flashcards.php:37 +#: ../../Zotlabs/Module/Wiki.php:35 +msgid "Profile Unavailable." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:331 -msgid "Sender (From) email address for system generated email." +#: ../../addon/cart/cart.php:1389 +msgid "Cart utilities for orders and payments" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:332 -msgid "Name of email sender for system generated email." +#: ../../addon/cart/cart.php:1427 +msgid "You must be logged into the Grid to shop." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:334 -msgid "Directory Server URL" +#: ../../addon/cart/cart.php:1468 +msgid "Access denied." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:334 -msgid "Default directory server" +#: ../../addon/cart/cart.php:1520 ../../addon/cart/cart.php:1663 +msgid "No Order Found" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:336 -msgid "Proxy user" +#: ../../addon/cart/cart.php:1529 +msgid "An unknown error has occurred Please start again." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:337 -msgid "Proxy URL" +#: ../../addon/cart/cart.php:1696 +msgid "Invalid Payment Type. Please start again." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:338 -msgid "Network timeout" +#: ../../addon/cart/cart.php:1703 +msgid "Order not found" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:338 -msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." +#: ../../addon/nofed/Mod_Nofed.php:21 +msgid "nofed Settings saved." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:339 -msgid "Delivery interval" +#: ../../addon/nofed/Mod_Nofed.php:33 +msgid "No Federation App" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:339 +#: ../../addon/nofed/Mod_Nofed.php:34 msgid "" -"Delay background delivery processes by this many seconds to reduce system " -"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " -"for large dedicated servers." +"Prevent posting from being federated to anybody. It will exist only on your " +"channel page." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:340 -msgid "Deliveries per process" +#: ../../addon/nofed/Mod_Nofed.php:42 +msgid "Federate posts by default" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:340 -msgid "" -"Number of deliveries to attempt in a single operating system process. Adjust " -"if necessary to tune system performance. Recommend: 1-5." +#: ../../addon/nofed/Mod_Nofed.php:50 +msgid "No Federation" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:341 -msgid "Queue Threshold" +#: ../../addon/nofed/nofed.php:47 +msgid "Federate" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:341 -msgid "" -"Always defer immediate delivery if queue contains more than this number of " -"entries." +#: ../../addon/smileybutton/Mod_Smileybutton.php:35 +msgid "Smileybutton App" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:342 -msgid "Poll interval" +#: ../../addon/smileybutton/Mod_Smileybutton.php:36 +msgid "Adds a smileybutton to the jot editor" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:342 -msgid "" -"Delay background polling processes by this many seconds to reduce system " -"load. If 0, use delivery interval." +#: ../../addon/smileybutton/Mod_Smileybutton.php:44 +msgid "Hide the button and show the smilies directly." +msgstr "" + +#: ../../addon/smileybutton/Mod_Smileybutton.php:52 +msgid "Smileybutton Settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:343 -msgid "Path to ImageMagick convert program" +#: ../../addon/redfiles/redfilehelper.php:64 +msgid "file" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:343 -msgid "" -"If set, use this program to generate photo thumbnails for huge images ( > " -"4000 pixels in either dimension), otherwise memory exhaustion may occur. " -"Example: /usr/bin/convert" +#: ../../addon/redfiles/redfiles.php:119 +msgid "Redmatrix File Storage Import" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:344 -msgid "Allow SVG thumbnails in file browser" +#: ../../addon/redfiles/redfiles.php:120 +msgid "This will import all your Redmatrix cloud files to this channel." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:344 -msgid "WARNING: SVG images may contain malicious code." +#: ../../addon/diaspora/p.php:48 ../../addon/diaspora/util.php:336 +#: ../../addon/diaspora/util.php:349 ../../Zotlabs/Lib/Enotify.php:61 +msgid "$projectname" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:345 -msgid "Maximum Load Average" +#: ../../addon/diaspora/import_diaspora.php:18 +msgid "No username found in import file." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:345 -msgid "" -"Maximum system load before delivery and poll processes are deferred - " -"default 50." +#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:75 +msgid "Unable to create a unique channel address. Import failed." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:346 -msgid "Expiration period in days for imported (grid/network) content" +#: ../../addon/diaspora/import_diaspora.php:141 +#: ../../Zotlabs/Module/Import.php:594 +msgid "Import completed." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:346 -msgid "0 for no expiration of imported content" +#: ../../addon/diaspora/Mod_Diaspora.php:43 +msgid "Diaspora Protocol Settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../addon/diaspora/Mod_Diaspora.php:52 msgid "" -"Do not expire any posts which have comments less than this many days ago" +"The diaspora protocol does not support location independence. Connections " +"you make within that network may be unreachable from alternate channel " +"locations." msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:349 -msgid "" -"Public servers: Optional landing (marketing) webpage for new registrants" +#: ../../addon/diaspora/Mod_Diaspora.php:58 +msgid "Diaspora Protocol App" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:349 -#, php-format -msgid "Create this page first. Default is %s/register" +#: ../../addon/diaspora/Mod_Diaspora.php:77 +msgid "Allow any Diaspora member to comment on your public posts" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:350 -msgid "Page to display after creating a new channel" +#: ../../addon/diaspora/Mod_Diaspora.php:81 +msgid "Prevent your hashtags from being redirected to other sites" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:350 -msgid "Default: profiles" +#: ../../addon/diaspora/Mod_Diaspora.php:85 +msgid "Sign and forward posts and comments with no existing Diaspora signature" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:352 -msgid "Optional: site location" +#: ../../addon/diaspora/Mod_Diaspora.php:90 +msgid "Followed hashtags (comma separated, do not include the #)" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:352 -msgid "Region or country" +#: ../../addon/diaspora/Mod_Diaspora.php:99 +msgid "Diaspora Protocol" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:289 +#: ../../addon/diaspora/Receiver.php:1536 #, php-format -msgid "Plugin %s disabled." +msgid "%1$s dislikes %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:294 +#: ../../addon/diaspora/Receiver.php:2178 ../../Zotlabs/Module/Like.php:457 #, php-format -msgid "Plugin %s enabled." +msgid "%1$s is attending %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:342 -#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Widget/Admin.php:27 -msgid "Addons" +#: ../../addon/diaspora/Receiver.php:2180 ../../Zotlabs/Module/Like.php:459 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:353 -msgid "Minimum project version: " +#: ../../addon/diaspora/Receiver.php:2182 ../../Zotlabs/Module/Like.php:461 +#, php-format +msgid "%1$s may attend %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:354 -msgid "Maximum project version: " +#: ../../addon/piwik/piwik.php:85 +msgid "" +"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " +"analytics tool." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:355 -msgid "Minimum PHP version: " +#: ../../addon/piwik/piwik.php:88 +#, php-format +msgid "" +"If you do not want that your visits are logged this way you <a href='%s'>can " +"set a cookie to prevent Piwik from tracking further visits of the site</a> " +"(opt-out)." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:356 -msgid "Compatible Server Roles: " +#: ../../addon/piwik/piwik.php:96 +msgid "Piwik Base URL" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:357 -msgid "Requires: " +#: ../../addon/piwik/piwik.php:96 +msgid "" +"Absolute path to your Piwik installation. (without protocol (http/s), with " +"trailing slash)" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:358 -#: ../../Zotlabs/Module/Admin/Addons.php:445 -msgid "Disabled - version incompatibility" +#: ../../addon/piwik/piwik.php:97 +msgid "Site ID" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:414 -msgid "Enter the public git repository URL of the addon repo." +#: ../../addon/piwik/piwik.php:98 +msgid "Show opt-out cookie link?" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:415 -msgid "Addon repo git URL" +#: ../../addon/piwik/piwik.php:99 +msgid "Asynchronous tracking" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "Custom repo name" +#: ../../addon/piwik/piwik.php:100 +msgid "Enable frontend JavaScript error tracking" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "(optional)" +#: ../../addon/piwik/piwik.php:100 +msgid "This feature requires Piwik >= 2.2.0" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:417 -msgid "Download Addon Repo" +#: ../../addon/workflow/workflow.php:212 +msgid "Workflow user." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:424 -msgid "Install new repo" +#: ../../addon/workflow/workflow.php:259 +msgid "This channel" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:425 ../../Zotlabs/Lib/Apps.php:536 -msgid "Install" +#: ../../addon/workflow/workflow.php:272 ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:448 -msgid "Manage Repos" +#: ../../addon/workflow/workflow.php:480 ../../addon/workflow/workflow.php:1233 +#: ../../addon/workflow/workflow.php:1251 +msgid "Workflow" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:449 -msgid "Installed Addon Repositories" +#: ../../addon/workflow/workflow.php:1250 +msgid "Add item to which workflow" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:450 -msgid "Install a New Addon Repository" +#: ../../addon/workflow/workflow.php:1297 +#: ../../addon/workflow/workflow.php:1394 +msgid "Create Workflow Item" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:457 -msgid "Switch branch" +#: ../../addon/workflow/workflow.php:2270 +msgid "Link" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:458 -#: ../../Zotlabs/Module/Photos.php:993 -#: ../../Zotlabs/Module/Profile_photo.php:499 -#: ../../Zotlabs/Module/Cover_photo.php:430 ../../Zotlabs/Module/Tagrm.php:137 -#: ../../addon/superblock/Mod_Superblock.php:91 -msgid "Remove" +#: ../../addon/workflow/workflow.php:2272 +msgid "Web link." msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:89 -msgid "New Profile Field" +#: ../../addon/workflow/workflow.php:2291 +#: ../../addon/workflow/workflow.php:2344 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Connedit.php:925 +msgid "Title" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 -msgid "Field nickname" +#: ../../addon/workflow/workflow.php:2293 +#: ../../addon/workflow/workflow.php:2346 +msgid "Brief description or title" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 -msgid "System name of field" +#: ../../addon/workflow/workflow.php:2299 ../../Zotlabs/Widget/Notes.php:21 +#: ../../Zotlabs/Lib/Apps.php:369 +msgid "Notes" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:91 -#: ../../Zotlabs/Module/Admin/Profs.php:111 -msgid "Input type" +#: ../../addon/workflow/workflow.php:2301 +#: ../../addon/workflow/workflow.php:2354 +msgid "Notes and Info" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:92 -#: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Field Name" +#: ../../addon/workflow/workflow.php:2352 +msgid "Body" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:92 -#: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Label on profile pages" +#: ../../addon/workflow/Settings/Mod_WorkflowSettings.php:101 +msgid "Workflow Settings" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:93 -#: ../../Zotlabs/Module/Admin/Profs.php:113 -msgid "Help text" +#: ../../addon/donate/donate.php:21 +msgid "Project Servers and Resources" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:93 -#: ../../Zotlabs/Module/Admin/Profs.php:113 -msgid "Additional info (optional)" +#: ../../addon/donate/donate.php:22 +msgid "Project Creator and Tech Lead" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:94 -#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32 -#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53 -#: ../../Zotlabs/Widget/Notes.php:23 -#: ../../addon/queueworker/Mod_Queueworker.php:119 ../../include/text.php:1104 -#: ../../include/text.php:1116 -msgid "Save" +#: ../../addon/donate/donate.php:49 +msgid "" +"And the hundreds of other people and organisations who helped make the " +"Hubzilla possible." msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:103 -msgid "Field definition not found" +#: ../../addon/donate/donate.php:52 +msgid "" +"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving " +"their time and expertise - and often paying out of pocket for services they " +"share with others." msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:109 -msgid "Edit Profile Field" +#: ../../addon/donate/donate.php:53 +msgid "" +"There is no corporate funding and no ads, and we do not collect and sell " +"your personal information. (We don't control your personal information - " +"<strong>you do</strong>.)" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:168 ../../Zotlabs/Widget/Admin.php:30 -msgid "Profile Fields" +#: ../../addon/donate/donate.php:54 +msgid "" +"Help support our ground-breaking work in decentralisation, web identity, and " +"privacy." msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:169 -msgid "Basic Profile Fields" +#: ../../addon/donate/donate.php:56 +msgid "" +"Your donations keep servers and services running and also helps us to " +"provide innovative new features and continued development." msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:170 -msgid "Advanced Profile Fields" +#: ../../addon/donate/donate.php:59 +msgid "Donate" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:170 -msgid "(In addition to basic fields)" +#: ../../addon/donate/donate.php:61 +msgid "" +"Choose a project, developer, or public hub to support with a one-time " +"donation" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:172 -msgid "All available fields" +#: ../../addon/donate/donate.php:62 +msgid "Donate Now" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:173 -msgid "Custom Fields" +#: ../../addon/donate/donate.php:63 +msgid "" +"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:177 -msgid "Create Custom Field" +#: ../../addon/donate/donate.php:64 +msgid "" +"Please indicate if you would like your first name or full name (or nothing) " +"to appear in our sponsor listing" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:29 -#, php-format -msgid "Password changed for account %d." +#: ../../addon/donate/donate.php:65 +msgid "Sponsor" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:46 -msgid "Account settings updated." +#: ../../addon/donate/donate.php:68 +msgid "Special thanks to: " msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:61 -msgid "Account not found." +#: ../../addon/likebanner/likebanner.php:51 +msgid "Your Webbie:" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:68 -msgid "Account Edit" +#: ../../addon/likebanner/likebanner.php:54 +msgid "Fontsize (px):" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:69 -msgid "New Password" +#: ../../addon/likebanner/likebanner.php:68 +msgid "Link:" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:70 -msgid "New Password again" +#: ../../addon/likebanner/likebanner.php:70 +msgid "Like us on Hubzilla" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:71 -msgid "Account language (for emails)" +#: ../../addon/likebanner/likebanner.php:72 +msgid "Embed:" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:72 -msgid "Service class" +#: ../../addon/chords/chords.php:33 +msgid "Quick Reference" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:83 +#: ../../addon/chords/Mod_Chords.php:44 msgid "" -"By default, unfiltered HTML is allowed in embedded media. This is inherently " -"insecure." +"This is a fairly comprehensive and complete guitar chord dictionary which " +"will list most of the available ways to play a certain chord, starting from " +"the base of the fingerboard up to a few frets beyond the twelfth fret " +"(beyond which everything repeats). A couple of non-standard tunings are " +"provided for the benefit of slide players, etc." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../addon/chords/Mod_Chords.php:46 msgid "" -"The recommended setting is to only allow unfiltered HTML from the following " -"sites:" +"Chord names start with a root note (A-G) and may include sharps (#) and " +"flats (b). This software will parse most of the standard naming conventions " +"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:87 +#: ../../addon/chords/Mod_Chords.php:48 msgid "" -"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/" -"<br />https://vimeo.com/<br />https://soundcloud.com/<br />" +"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " +"E7b13b11 ..." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:88 -msgid "" -"All other embedded content will be filtered, <strong>unless</strong> " -"embedded content from that site is explicitly blocked." +#: ../../addon/chords/Mod_Chords.php:51 +msgid "Guitar Chords" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:93 ../../Zotlabs/Widget/Admin.php:25 -msgid "Security" +#: ../../addon/chords/Mod_Chords.php:52 +msgid "The complete online chord dictionary" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:95 -msgid "Block public" +#: ../../addon/chords/Mod_Chords.php:57 +msgid "Tuning" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:95 -msgid "" -"Check to block public access to all otherwise public personal pages on this " -"site unless you are currently authenticated." +#: ../../addon/chords/Mod_Chords.php:58 +msgid "Chord name: example: Em7" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "Provide a cloud root directory" +#: ../../addon/chords/Mod_Chords.php:59 +msgid "Show for left handed stringing" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "" -"The cloud root directory lists all channel names which provide public files" +#: ../../addon/opensearch/opensearch.php:26 +#, php-format +msgctxt "opensearch" +msgid "Search %1$s (%2$s)" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:97 -msgid "Show total disk space available to cloud uploads" +#: ../../addon/opensearch/opensearch.php:28 +msgctxt "opensearch" +msgid "$Projectname" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:98 -msgid "Set \"Transport Security\" HTTP header" +#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Module/Home.php:72 +#: ../../Zotlabs/Module/Home.php:80 ../../Zotlabs/Lib/Enotify.php:66 +msgid "$Projectname" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:99 -msgid "Set \"Content Security Policy\" HTTP header" +#: ../../addon/opensearch/opensearch.php:43 +msgid "Search $Projectname" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:100 -msgid "Allowed email domains" +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 +msgid "Fuzzloc Settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:100 -msgid "" -"Comma separated list of domains which are allowed in email addresses for " -"registrations to this site. Wildcards are accepted. Empty to allow any " -"domains" +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 +msgid "Fuzzy Location App" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:101 -msgid "Not allowed email domains" +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35 +msgid "" +"Blur your precise location if your channel uses browser location mapping" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:101 -msgid "" -"Comma separated list of domains which are not allowed in email addresses for " -"registrations to this site. Wildcards are accepted. Empty to allow any " -"domains, unless allowed domains have been defined." +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40 +msgid "Minimum offset in meters" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:102 -msgid "Allow communications only from these sites" +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44 +msgid "Maximum offset in meters" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:102 -msgid "" -"One site per line. Leave empty to allow communication from anywhere by " -"default" +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 +msgid "Fuzzy Location" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:103 -msgid "Block communications from these sites" +#: ../../addon/flattrwidget/flattrwidget.php:50 +msgid "Flattr this!" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:104 -msgid "Allow communications only from these channels" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 +msgid "Flattr widget settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:104 -msgid "" -"One channel (hash) per line. Leave empty to allow from any channel by default" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 +msgid "Flattr Widget App" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:105 -msgid "Block communications from these channels" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54 +msgid "Add a Flattr button to your channel page" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:106 -msgid "Only allow embeds from secure (SSL) websites and links." +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 +msgid "Flattr user" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:107 -msgid "Allow unfiltered embedded HTML content only from these domains" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "URL of the Thing to flattr" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:107 -msgid "One site per line. By default embedded content is filtered." +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "If empty channel URL is used" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:108 -msgid "Block embedded HTML from these domains" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "Title of the Thing to flattr" msgstr "" -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "If empty \"channel name on The Hubzilla\" will be used" msgstr "" -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "Static or dynamic flattr button" msgstr "" -#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153 -#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88 -msgctxt "acl" -msgid "Profile" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "static" msgstr "" -#: ../../Zotlabs/Module/Moderate.php:65 -msgid "Comment approved" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "dynamic" msgstr "" -#: ../../Zotlabs/Module/Moderate.php:69 -msgid "Comment deleted" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "Alignment of the widget" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:70 -#: ../../Zotlabs/Module/Settings/Channel.php:74 -#: ../../Zotlabs/Module/Settings/Channel.php:75 -#: ../../Zotlabs/Module/Settings/Channel.php:78 -#: ../../Zotlabs/Module/Settings/Channel.php:89 -#: ../../Zotlabs/Module/Connedit.php:725 ../../Zotlabs/Widget/Affinity.php:32 -#: ../../include/selectors.php:134 ../../include/channel.php:493 -#: ../../include/channel.php:494 ../../include/channel.php:501 -msgid "Friends" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "left" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:266 -#: ../../Zotlabs/Module/Defperms.php:111 -#: ../../addon/rendezvous/rendezvous.php:82 -#: ../../addon/openstreetmap/openstreetmap.php:150 -#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54 -#: ../../addon/twitter/twitter.php:605 ../../addon/piwik/piwik.php:116 -#: ../../addon/xmpp/xmpp.php:54 -msgid "Settings updated." +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "right" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:327 -msgid "Nobody except yourself" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 +msgid "Flattr Widget" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:328 -msgid "Only those you specifically allow" +#: ../../addon/hubwall/hubwall.php:19 +msgid "Send email to all members" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:329 -msgid "Approved connections" +#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:65 +#, php-format +msgid "%s Administrator" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:330 -msgid "Any connections" +#: ../../addon/hubwall/hubwall.php:50 ../../addon/mailtest/mailtest.php:50 +msgid "No recipients found." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:331 -msgid "Anybody on this website" +#: ../../addon/hubwall/hubwall.php:73 +#, php-format +msgid "%1$d of %2$d messages sent." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:332 -msgid "Anybody in this network" +#: ../../addon/hubwall/hubwall.php:81 +msgid "Send email to all hub members." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:333 -msgid "Anybody authenticated" +#: ../../addon/hubwall/hubwall.php:92 ../../addon/mailtest/mailtest.php:96 +msgid "Message subject" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:334 -msgid "Anybody on the internet" +#: ../../addon/hubwall/hubwall.php:93 +msgid "Sender Email address" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:409 -msgid "Publish your default profile in the network directory" +#: ../../addon/hubwall/hubwall.php:94 +msgid "Test mode (only send to hub administrator)" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:414 -msgid "Allow us to suggest you as a potential friend to new members?" +#: ../../addon/notifyadmin/notifyadmin.php:34 +msgid "New registration" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:418 -msgid "or" +#: ../../addon/notifyadmin/notifyadmin.php:40 +#: ../../Zotlabs/Module/Invite.php:90 +#, php-format +msgid "%s : Message delivery failed." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:427 -msgid "Your channel address is" +#: ../../addon/notifyadmin/notifyadmin.php:42 +#, php-format +msgid "Message sent to %s. New account registration: %s" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:430 -msgid "Your files/photos are accessible via WebDAV at" +#: ../../addon/flashcards/Mod_Flashcards.php:169 +msgid "Not allowed." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:470 -msgid "Automatic membership approval" +#: ../../addon/flashcards/Mod_Flashcards.php:205 +#: ../../include/acl_selectors.php:123 ../../Zotlabs/Module/Chat.php:243 +#: ../../Zotlabs/Module/Filestorage.php:190 ../../Zotlabs/Module/Photos.php:675 +#: ../../Zotlabs/Module/Photos.php:1044 ../../Zotlabs/Module/Thing.php:319 +#: ../../Zotlabs/Module/Thing.php:372 ../../Zotlabs/Module/Connedit.php:690 +msgid "Permissions" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:470 -#: ../../Zotlabs/Module/Defperms.php:255 -msgid "" -"If enabled, connection requests will be approved without your interaction" +#: ../../addon/flashcards/Mod_Flashcards.php:212 +#: ../../Zotlabs/Module/Filestorage.php:197 +msgid "Set/edit permissions" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:491 -msgid "Channel Settings" +#: ../../addon/flashcards/Mod_Flashcards.php:235 +#: ../../addon/flashcards/Mod_Flashcards.php:236 ../../include/items.php:3719 +#: ../../Zotlabs/Module/Filestorage.php:26 +#: ../../Zotlabs/Module/Admin/Themes.php:72 +#: ../../Zotlabs/Module/Admin/Addons.php:260 +#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45 +#: ../../Zotlabs/Module/Display.php:455 ../../Zotlabs/Module/Admin.php:62 +#: ../../Zotlabs/Module/Thing.php:94 +msgid "Item not found." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:498 -msgid "Basic Settings" +#: ../../addon/libertree/libertree.php:43 +msgid "Post to Libertree" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:499 ../../include/channel.php:1643 -msgid "Full Name:" +#: ../../addon/libertree/Mod_Libertree.php:25 +msgid "Libertree Crosspost Connector Settings saved." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:500 -#: ../../Zotlabs/Module/Settings/Account.php:104 -msgid "Email Address:" +#: ../../addon/libertree/Mod_Libertree.php:35 +msgid "Libertree Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:501 -msgid "Your Timezone:" +#: ../../addon/libertree/Mod_Libertree.php:36 +msgid "Relay public posts to Libertree" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:502 -msgid "Default Post Location:" +#: ../../addon/libertree/Mod_Libertree.php:51 +msgid "Libertree API token" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:502 -msgid "Geographical location to display on your posts" +#: ../../addon/libertree/Mod_Libertree.php:55 +msgid "Libertree site URL" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:503 -msgid "Use Browser Location:" +#: ../../addon/libertree/Mod_Libertree.php:59 +msgid "Post to Libertree by default" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:505 -msgid "Adult Content" +#: ../../addon/libertree/Mod_Libertree.php:67 +msgid "Libertree Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:505 -msgid "" -"This channel frequently or regularly publishes adult content. (Please tag " -"any adult material and/or nudity with #NSFW)" +#: ../../addon/randpost/randpost.php:97 +msgid "You're welcome." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:507 -msgid "Security and Privacy Settings" +#: ../../addon/randpost/randpost.php:98 +msgid "Ah shucks..." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:509 -msgid "Your permissions are already configured. Click to view/adjust" +#: ../../addon/randpost/randpost.php:99 +msgid "Don't mention it." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:511 -msgid "Hide my online presence" +#: ../../addon/randpost/randpost.php:100 +msgid "<blush>" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:511 -msgid "Prevents displaying in your profile that you are online" +#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:327 +msgid "Report Bug" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:513 -msgid "Simple Privacy Settings:" +#: ../../addon/totp/Mod_Totp.php:23 +msgid "TOTP Two-Step Verification" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:514 -msgid "" -"Very Public - <em>extremely permissive (should be used with caution)</em>" +#: ../../addon/totp/Mod_Totp.php:24 +msgid "Enter the 2-step verification generated by your authenticator app:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:515 -msgid "" -"Typical - <em>default public, privacy when desired (similar to social " -"network permissions but with improved privacy)</em>" +#: ../../addon/totp/Mod_Totp.php:25 +msgid "Success!" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:516 -msgid "Private - <em>default private, never open or public</em>" +#: ../../addon/totp/Mod_Totp.php:26 +msgid "Invalid code, please try again." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:517 -msgid "Blocked - <em>default blocked to/from everybody</em>" +#: ../../addon/totp/Mod_Totp.php:27 +msgid "Too many invalid codes..." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:519 -msgid "Allow others to tag your posts" +#: ../../addon/totp/Mod_Totp.php:28 +msgid "Verify" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:519 +#: ../../addon/totp/Settings/Totp.php:90 msgid "" -"Often used by the community to retro-actively flag inappropriate content" +"You haven't set a TOTP secret yet.\n" +"Please click the button below to generate one and register this site\n" +"with your preferred authenticator app." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:521 -msgid "Channel Permission Limits" +#: ../../addon/totp/Settings/Totp.php:93 +msgid "Your TOTP secret is" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "Expire other channel content after this many days" +#: ../../addon/totp/Settings/Totp.php:94 +msgid "" +"Be sure to save it somewhere in case you lose or replace your mobile " +"device.\n" +"Use your mobile device to scan the QR code below to register this site\n" +"with your preferred authenticator app." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "0 or blank to use the website limit." +#: ../../addon/totp/Settings/Totp.php:99 +msgid "Test" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -#, php-format -msgid "This website expires after %d days." +#: ../../addon/totp/Settings/Totp.php:100 +msgid "Generate New Secret" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "This website does not expire imported content." +#: ../../addon/totp/Settings/Totp.php:101 +msgid "Go" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "The website limit takes precedence if lower than your limit." +#: ../../addon/totp/Settings/Totp.php:102 +msgid "Enter your password" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:524 -msgid "Maximum Friend Requests/Day:" +#: ../../addon/totp/Settings/Totp.php:103 +msgid "enter TOTP code from your device" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:524 -msgid "May reduce spam activity" +#: ../../addon/totp/Settings/Totp.php:104 +msgid "Pass!" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:525 -msgid "Default Privacy Group" +#: ../../addon/totp/Settings/Totp.php:105 +msgid "Fail" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:527 -msgid "Use my default audience setting for the type of object published" +#: ../../addon/totp/Settings/Totp.php:106 +msgid "Incorrect password, try again." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:536 -msgid "Default permissions category" +#: ../../addon/totp/Settings/Totp.php:107 +msgid "Record your new TOTP secret and rescan the QR code above." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:542 -msgid "Maximum private messages per day from unknown people:" +#: ../../addon/totp/Settings/Totp.php:115 +msgid "TOTP Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:542 -msgid "Useful to reduce spamming" +#: ../../addon/logrot/logrot.php:36 +msgid "Logfile archive directory" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:545 -#: ../../Zotlabs/Lib/Enotify.php:68 -msgid "Notification Settings" +#: ../../addon/logrot/logrot.php:36 +msgid "Directory to store rotated logs" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:546 -msgid "By default post a status message when:" +#: ../../addon/logrot/logrot.php:37 +msgid "Logfile size in bytes before rotating" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:547 -msgid "accepting a friend request" +#: ../../addon/logrot/logrot.php:38 +msgid "Number of logfiles to retain" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:548 -msgid "joining a forum/community" +#: ../../addon/testdrive/testdrive.php:104 +#, php-format +msgid "Your account on %s will expire in a few days." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:549 -msgid "making an <em>interesting</em> profile change" +#: ../../addon/testdrive/testdrive.php:105 +msgid "Your $Productname test account is about to expire." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:550 -msgid "Send a notification email when:" +#: ../../addon/skeleton/Mod_Skeleton.php:32 +msgid "Skeleton App" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:551 -msgid "You receive a connection request" +#: ../../addon/skeleton/Mod_Skeleton.php:33 +msgid "A skeleton for addons, you can copy/paste" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:552 -msgid "Your connections are confirmed" +#: ../../addon/skeleton/Mod_Skeleton.php:40 +msgid "Some setting" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:553 -msgid "Someone writes on your profile wall" +#: ../../addon/skeleton/Mod_Skeleton.php:40 +msgid "A setting" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:554 -msgid "Someone writes a followup comment" +#: ../../addon/skeleton/Mod_Skeleton.php:48 +msgid "Skeleton Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:555 -msgid "You receive a private message" +#: ../../addon/nsfw/nsfw.php:152 +msgid "Possible adult content" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:556 -msgid "You receive a friend suggestion" +#: ../../addon/nsfw/nsfw.php:167 +#, php-format +msgid "%s - view" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:557 -msgid "You are tagged in a post" +#: ../../addon/nsfw/Mod_Nsfw.php:22 +msgid "NSFW Settings saved." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:558 -msgid "You are poked/prodded/etc. in a post" +#: ../../addon/nsfw/Mod_Nsfw.php:33 +msgid "NSFW App" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:560 -msgid "Someone likes your post/comment" +#: ../../addon/nsfw/Mod_Nsfw.php:34 +msgid "Collapse content that contains predefined words" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:563 -msgid "Show visual notifications including:" +#: ../../addon/nsfw/Mod_Nsfw.php:44 +msgid "" +"This app looks in posts for the words/text you specify below, and collapses " +"any content containing those keywords so it is not displayed at " +"inappropriate times, such as sexual innuendo that may be improper in a work " +"setting. It is polite and recommended to tag any content containing nudity " +"with #NSFW. This filter can also match any other word/text you specify, and " +"can thereby be used as a general purpose content filter." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:565 -msgid "Unseen stream activity" +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Comma separated list of keywords to hide" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:566 -msgid "Unseen channel activity" +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Word, /regular-expression/, lang=xx, lang!=xx" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:567 -msgid "Unseen private messages" +#: ../../addon/nsfw/Mod_Nsfw.php:58 +msgid "NSFW" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:567 -#: ../../Zotlabs/Module/Settings/Channel.php:572 -#: ../../Zotlabs/Module/Settings/Channel.php:573 -#: ../../Zotlabs/Module/Settings/Channel.php:574 -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -msgid "Recommended" +#: ../../addon/upload_limits/upload_limits.php:25 +msgid "Show Upload Limits" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:568 -msgid "Upcoming events" +#: ../../addon/upload_limits/upload_limits.php:27 +msgid "Hubzilla configured maximum size: " msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:569 -msgid "Events today" +#: ../../addon/upload_limits/upload_limits.php:28 +msgid "PHP upload_max_filesize: " msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:570 -msgid "Upcoming birthdays" +#: ../../addon/upload_limits/upload_limits.php:29 +msgid "PHP post_max_size (must be larger than upload_max_filesize): " msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:570 -msgid "Not available in all themes" +#: ../../addon/tictac/tictac.php:21 +msgid "Three Dimensional Tic-Tac-Toe" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:571 -msgid "System (personal) notifications" +#: ../../addon/tictac/tictac.php:54 +msgid "3D Tic-Tac-Toe" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:572 -msgid "System info messages" +#: ../../addon/tictac/tictac.php:59 +msgid "New game" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:573 -msgid "System critical alerts" +#: ../../addon/tictac/tictac.php:60 +msgid "New game with handicap" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:574 -msgid "New connections" +#: ../../addon/tictac/tictac.php:61 +msgid "" +"Three dimensional tic-tac-toe is just like the traditional game except that " +"it is played on multiple levels simultaneously. " msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:575 -msgid "System Registrations" +#: ../../addon/tictac/tictac.php:62 +msgid "" +"In this case there are three levels. You win by getting three in a row on " +"any level, as well as up, down, and diagonally across the different levels." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:576 -msgid "Unseen shared files" +#: ../../addon/tictac/tictac.php:64 +msgid "" +"The handicap game disables the center position on the middle level because " +"the player claiming this square often has an unfair advantage." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:577 -msgid "Unseen public stream activity" +#: ../../addon/tictac/tictac.php:183 +msgid "You go first..." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:578 -msgid "Unseen likes and dislikes" +#: ../../addon/tictac/tictac.php:188 +msgid "I'm going first this time..." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:579 -msgid "Unseen forum posts" +#: ../../addon/tictac/tictac.php:194 +msgid "You won!" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:580 -msgid "Email notification hub (hostname)" +#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 +msgid "\"Cat\" game!" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:580 -#, php-format -msgid "" -"If your channel is mirrored to multiple hubs, set this to your preferred " -"location. This will prevent duplicate email notifications. Example: %s" +#: ../../addon/tictac/tictac.php:223 +msgid "I won!" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:581 -msgid "Show new wall posts, private messages and connections under Notices" +#: ../../addon/gnusoc/gnusoc.php:451 +msgid "Follow" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:583 -msgid "Notify me of events this many days in advance" +#: ../../addon/gnusoc/gnusoc.php:454 +#, php-format +msgid "%1$s is now following %2$s" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:583 -msgid "Must be greater than 0" +#: ../../addon/gnusoc/Mod_Gnusoc.php:16 +msgid "" +"The GNU-Social protocol does not support location independence. Connections " +"you make within that network may be unreachable from alternate channel " +"locations." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:588 -msgid "Advanced Account/Page Type Settings" +#: ../../addon/gnusoc/Mod_Gnusoc.php:22 +msgid "GNU-Social Protocol App" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:589 -msgid "Change the behaviour of this account for special situations" +#: ../../addon/gnusoc/Mod_Gnusoc.php:34 +msgid "GNU-Social Protocol" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:591 -msgid "Miscellaneous Settings" +#: ../../addon/mailtest/mailtest.php:19 +msgid "Send test email" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:592 -msgid "Default photo upload folder" +#: ../../addon/mailtest/mailtest.php:66 +msgid "Mail sent." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:592 -#: ../../Zotlabs/Module/Settings/Channel.php:593 -msgid "%Y - current year, %m - current month" +#: ../../addon/mailtest/mailtest.php:68 +msgid "Sending of mail failed." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:593 -msgid "Default file upload folder" +#: ../../addon/mailtest/mailtest.php:77 +msgid "Mail Test" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:595 -msgid "Remove this channel." +#: ../../addon/ljpost/Mod_Ljpost.php:37 +msgid "Livejournal Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Settings/Features.php:43 -msgid "Additional Features" +#: ../../addon/ljpost/Mod_Ljpost.php:38 +msgid "Relay public posts to Livejournal" msgstr "" -#: ../../Zotlabs/Module/Settings/Events.php:39 -msgid "Events Settings" +#: ../../addon/ljpost/Mod_Ljpost.php:54 +msgid "Livejournal username" msgstr "" -#: ../../Zotlabs/Module/Settings/Calendar.php:39 -msgid "Calendar Settings" +#: ../../addon/ljpost/Mod_Ljpost.php:58 +msgid "Livejournal password" msgstr "" -#: ../../Zotlabs/Module/Settings/Conversation.php:22 -msgid "Settings saved." +#: ../../addon/ljpost/Mod_Ljpost.php:62 +msgid "Post to Livejournal by default" msgstr "" -#: ../../Zotlabs/Module/Settings/Conversation.php:24 -msgid "Settings saved. Reload page please." +#: ../../addon/ljpost/Mod_Ljpost.php:66 +msgid "Send wall-to-wall posts to Livejournal" msgstr "" -#: ../../Zotlabs/Module/Settings/Conversation.php:46 -msgid "Conversation Settings" +#: ../../addon/ljpost/Mod_Ljpost.php:75 +msgid "Livejournal Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Settings/Connections.php:39 -msgid "Connections Settings" +#: ../../addon/ljpost/ljpost.php:49 +msgid "Post to Livejournal" msgstr "" -#: ../../Zotlabs/Module/Settings/Photos.php:39 -msgid "Photos Settings" +#: ../../addon/ljpost/ljpost.php:125 +msgid "Posted by" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:19 -msgid "Not valid email." +#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 +msgid "Invalid game." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:22 -msgid "Protected email address. Cannot change to that email." +#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417 +msgid "You are not a player in this game." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:31 -msgid "System failure storing new email. Please try again." +#: ../../addon/chess/Mod_Chess.php:242 +msgid "You must be a local channel to create a game." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:48 -msgid "Password verification failed." +#: ../../addon/chess/Mod_Chess.php:260 +msgid "You must select one opponent that is not yourself." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:55 -msgid "Passwords do not match. Password unchanged." +#: ../../addon/chess/Mod_Chess.php:271 +msgid "Random color chosen." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:59 -msgid "Empty passwords are not allowed. Password unchanged." +#: ../../addon/chess/Mod_Chess.php:279 +msgid "Error creating new game." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:73 -msgid "Password changed." +#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 +msgid "Requested channel is not available." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:75 -msgid "Password update failed. Please try again." +#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 +msgid "Chess not installed." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:99 -msgid "Account Settings" +#: ../../addon/chess/Mod_Chess.php:326 +msgid "You must select a local channel /chess/channelname" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:100 -msgid "Current Password" +#: ../../addon/chess/Mod_Chess.php:343 ../../Zotlabs/Module/Ochannel.php:32 +#: ../../Zotlabs/Module/Channel.php:42 ../../Zotlabs/Module/Chat.php:31 +msgid "You must be logged in to see this page." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:101 -msgid "Enter New Password" +#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132 +#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157 +#: ../../Zotlabs/Module/Display.php:174 ../../Zotlabs/Module/Display.php:180 +#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77 +#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185 +msgid "Page not found." msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:102 -msgid "Confirm New Password" +#: ../../addon/chess/chess.php:645 +msgid "Enable notifications" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:102 -msgid "Leave password fields blank unless changing" +#: ../../addon/mdpost/mdpost.php:41 ../../include/text.php:1983 +#: ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 +#: ../../Zotlabs/Module/Wiki.php:371 +msgid "Markdown" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:105 -#: ../../Zotlabs/Module/Removeaccount.php:61 -msgid "Remove Account" +#: ../../addon/mdpost/mdpost.php:42 +msgid "Use markdown for editing posts" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:106 -msgid "Remove this account including all its channels" +#: ../../addon/hzfiles/hzfiles.php:81 +msgid "Hubzilla File Storage Import" msgstr "" -#: ../../Zotlabs/Module/Settings/Profiles.php:47 -msgid "Profiles Settings" +#: ../../addon/hzfiles/hzfiles.php:82 +msgid "This will import all your cloud files from another server." msgstr "" -#: ../../Zotlabs/Module/Settings/Manage.php:39 -msgid "Channel Manager Settings" +#: ../../addon/hzfiles/hzfiles.php:83 +msgid "Hubzilla Server base URL" msgstr "" -#: ../../Zotlabs/Module/Settings/Featured.php:24 -msgid "No feature settings configured" +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 +msgid "Jappixmini App" msgstr "" -#: ../../Zotlabs/Module/Settings/Featured.php:33 -msgid "Addon Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:97 +msgid "Provides a Facebook-like chat using Jappix Mini" msgstr "" -#: ../../Zotlabs/Module/Settings/Featured.php:34 -msgid "Please save/submit changes to any panel before opening another." +#: ../../addon/jappixmini/Mod_Jappixmini.php:157 ../../include/channel.php:1526 +#: ../../include/channel.php:1697 +msgid "Status:" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel_home.php:44 -#: ../../Zotlabs/Module/Settings/Network.php:41 -msgid "Max height of content (in pixels)" +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +msgid "Hide Jappixmini Chat-Widget from the webinterface" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel_home.php:46 -#: ../../Zotlabs/Module/Settings/Network.php:43 -msgid "Click to expand content exceeding this height" +#: ../../addon/jappixmini/Mod_Jappixmini.php:166 +msgid "Jabber username" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel_home.php:59 -msgid "Personal menu to display in your channel pages" +#: ../../addon/jappixmini/Mod_Jappixmini.php:172 +msgid "Jabber server" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel_home.php:86 -msgid "Channel Home Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:178 +msgid "Jabber BOSH host URL" msgstr "" -#: ../../Zotlabs/Module/Settings/Directory.php:39 -msgid "Directory Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:185 +msgid "Jabber password" msgstr "" -#: ../../Zotlabs/Module/Settings/Editor.php:39 -msgid "Editor Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +msgid "Encrypt Jabber password with Hubzilla password" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:128 -#, php-format -msgid "%s - (Experimental)" +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../Zotlabs/Module/Settings/Channel.php:567 +#: ../../Zotlabs/Module/Settings/Channel.php:572 +#: ../../Zotlabs/Module/Settings/Channel.php:573 +#: ../../Zotlabs/Module/Settings/Channel.php:574 +msgid "Recommended" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:184 -msgid "Display Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +msgid "Approve subscription requests from Hubzilla contacts automatically" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:185 -msgid "Theme Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 +msgid "Purge internal list of jabber addresses of contacts" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:186 -msgid "Custom Theme Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:212 +msgid "Configuration Help" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:187 -msgid "Content Settings" +#: ../../addon/jappixmini/Mod_Jappixmini.php:216 +#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Profiles.php:796 +#: ../../Zotlabs/Module/Connedit.php:936 +msgid "Add Contact" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:193 -msgid "Display Theme:" +#: ../../addon/jappixmini/Mod_Jappixmini.php:258 +msgid "Jappixmini Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:194 -msgid "Select scheme" +#: ../../addon/authchoose/Mod_Authchoose.php:22 +msgid "" +"Allow magic authentication only to websites of your immediate connections" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:196 -msgid "Preload images before rendering the page" +#: ../../addon/authchoose/Mod_Authchoose.php:28 +#: ../../addon/authchoose/Mod_Authchoose.php:33 +msgid "Authchoose App" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:196 -msgid "" -"The subjective page load time will be longer but the page will be ready when " -"displayed" +#: ../../addon/authchoose/Mod_Authchoose.php:39 +msgid "Authchoose" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:197 -msgid "Enable user zoom on mobile devices" +#: ../../addon/pageheader/Mod_Pageheader.php:22 +msgid "pageheader Settings saved." msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:198 -msgid "Update browser every xx seconds" +#: ../../addon/pageheader/Mod_Pageheader.php:34 +msgid "Page Header App" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:198 -msgid "Minimum of 10 seconds, no maximum" +#: ../../addon/pageheader/Mod_Pageheader.php:35 +msgid "Inserts a page header" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:199 -msgid "Maximum number of conversations to load at any time:" +#: ../../addon/pageheader/Mod_Pageheader.php:43 +msgid "Message to display on every page on this server" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:199 -msgid "Maximum of 100 items" +#: ../../addon/pageheader/Mod_Pageheader.php:51 +msgid "Page Header" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:200 -msgid "Show emoticons (smilies) as images" +#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 +msgid "Popular Channels" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:201 -msgid "Provide channel menu in navigation bar" +#: ../../addon/irc/irc.php:37 +msgid "Channels to auto connect" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:201 -msgid "Default: channel menu located in app menu" +#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 +msgid "Comma separated list" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:202 -msgid "Manual conversation updates" +#: ../../addon/irc/irc.php:45 +msgid "IRC Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:202 -msgid "Default is on, turning this off may increase screen jumping" +#: ../../addon/irc/irc.php:54 +msgid "IRC settings saved." msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:203 -msgid "Link post titles to source" +#: ../../addon/irc/irc.php:58 +msgid "IRC Chatroom" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:205 -#: ../../Zotlabs/Widget/Newmember.php:75 -msgid "New Member Links" +#: ../../addon/xmpp/xmpp.php:44 +msgid "Jabber BOSH host" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:205 -msgid "Display new member quick links menu" +#: ../../addon/xmpp/xmpp.php:45 +msgid "Use central userbase" msgstr "" -#: ../../Zotlabs/Module/Settings/Network.php:58 -msgid "Stream Settings" +#: ../../addon/xmpp/xmpp.php:45 +msgid "" +"If enabled, members will automatically login to an ejabberd server that has " +"to be installed on this machine with synchronized credentials via the " +"\"auth_ejabberd.php\" script." msgstr "" -#: ../../Zotlabs/Module/Embedphotos.php:168 ../../Zotlabs/Module/Photos.php:784 -#: ../../Zotlabs/Module/Photos.php:1332 ../../Zotlabs/Widget/Portfolio.php:87 -#: ../../Zotlabs/Widget/Album.php:78 -msgid "View Photo" +#: ../../addon/xmpp/Mod_Xmpp.php:23 +msgid "XMPP settings updated." msgstr "" -#: ../../Zotlabs/Module/Embedphotos.php:184 ../../Zotlabs/Module/Photos.php:815 -#: ../../Zotlabs/Widget/Portfolio.php:108 ../../Zotlabs/Widget/Album.php:95 -msgid "Edit Album" +#: ../../addon/xmpp/Mod_Xmpp.php:35 +msgid "XMPP App" msgstr "" -#: ../../Zotlabs/Module/Embedphotos.php:186 ../../Zotlabs/Module/Photos.php:685 -#: ../../Zotlabs/Module/Profile_photo.php:498 -#: ../../Zotlabs/Module/Cover_photo.php:429 -#: ../../Zotlabs/Storage/Browser.php:398 ../../Zotlabs/Widget/Cdav.php:146 -#: ../../Zotlabs/Widget/Cdav.php:182 ../../Zotlabs/Widget/Portfolio.php:110 -#: ../../Zotlabs/Widget/Album.php:97 -msgid "Upload" +#: ../../addon/xmpp/Mod_Xmpp.php:36 +msgid "Embedded XMPP (Jabber) client" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:39 -#, php-format -msgid "This channel is limited to %d tokens" +#: ../../addon/xmpp/Mod_Xmpp.php:52 +msgid "Individual credentials" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:45 -msgid "Name and Password are required." +#: ../../addon/xmpp/Mod_Xmpp.php:58 +msgid "Jabber BOSH server" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:85 -msgid "Token saved." +#: ../../addon/xmpp/Mod_Xmpp.php:67 +msgid "XMPP Settings" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:99 -msgid "Guest Access App" +#: ../../include/zot.php:774 +msgid "Invalid data packet" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:100 -msgid "Create access tokens so that non-members can access private content" +#: ../../include/zot.php:801 ../../Zotlabs/Lib/Libzot.php:652 +msgid "Unable to verify channel signature" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:133 -msgid "" -"Use this form to create temporary access identifiers to share things with " -"non-members. These identities may be used in Access Control Lists and " -"visitors may login using these credentials to access private content." +#: ../../include/zot.php:2628 ../../Zotlabs/Lib/Libsync.php:733 +#, php-format +msgid "Unable to verify site signature for %s" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:135 -msgid "" -"You may also provide <em>dropbox</em> style access links to friends and " -"associates by adding the Login Password to any specific site URL as shown. " -"Examples:" +#: ../../include/zot.php:4325 +msgid "invalid target signature" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:170 -msgid "Guest Access Tokens" +#: ../../include/text.php:522 +msgid "prev" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:177 -msgid "Login Name" +#: ../../include/text.php:524 +msgid "first" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:178 -msgid "Login Password" +#: ../../include/text.php:553 +msgid "last" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:179 -msgid "Expires (yyyy-mm-dd)" +#: ../../include/text.php:556 +msgid "next" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 -msgid "Their Settings" +#: ../../include/text.php:574 +msgid "older" msgstr "" -#: ../../Zotlabs/Module/Achievements.php:38 -msgid "Some blurb about what to do when you're new here" +#: ../../include/text.php:576 +msgid "newer" msgstr "" -#: ../../Zotlabs/Module/Thing.php:120 -msgid "Thing updated" +#: ../../include/text.php:1000 +msgid "No connections" msgstr "" -#: ../../Zotlabs/Module/Thing.php:172 -msgid "Object store: failed" +#: ../../include/text.php:1012 ../../include/features.php:133 +#: ../../Zotlabs/Module/Connections.php:351 ../../Zotlabs/Lib/Apps.php:332 +msgid "Connections" msgstr "" -#: ../../Zotlabs/Module/Thing.php:176 -msgid "Thing added" +#: ../../include/text.php:1032 +#, php-format +msgid "View all %s connections" msgstr "" -#: ../../Zotlabs/Module/Thing.php:202 +#: ../../include/text.php:1094 #, php-format -msgid "OBJ: %1$s %2$s %3$s" +msgid "Network: %s" msgstr "" -#: ../../Zotlabs/Module/Thing.php:265 -msgid "Show Thing" +#: ../../include/text.php:1105 ../../include/text.php:1117 +#: ../../include/nav.php:186 ../../include/acl_selectors.php:118 +#: ../../Zotlabs/Widget/Sitesearch.php:31 +#: ../../Zotlabs/Widget/Activity_filter.php:151 +#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:355 +#: ../../Zotlabs/Lib/Apps.php:352 +msgid "Search" msgstr "" -#: ../../Zotlabs/Module/Thing.php:272 -msgid "item not found." +#: ../../include/text.php:1197 ../../include/text.php:1201 +msgid "poke" msgstr "" -#: ../../Zotlabs/Module/Thing.php:305 -msgid "Edit Thing" +#: ../../include/text.php:1197 ../../include/text.php:1201 +#: ../../include/conversation.php:251 +msgid "poked" msgstr "" -#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:364 -msgid "Select a profile" +#: ../../include/text.php:1202 +msgid "ping" msgstr "" -#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 -msgid "Post an activity" +#: ../../include/text.php:1202 +msgid "pinged" msgstr "" -#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 -msgid "Only sends to viewers of the applicable profile" +#: ../../include/text.php:1203 +msgid "prod" msgstr "" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 -msgid "Name of thing e.g. something" +#: ../../include/text.php:1203 +msgid "prodded" msgstr "" -#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:370 -msgid "URL of thing (optional)" +#: ../../include/text.php:1204 +msgid "slap" msgstr "" -#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:371 -msgid "URL for photo of thing (optional)" +#: ../../include/text.php:1204 +msgid "slapped" msgstr "" -#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:372 -#: ../../Zotlabs/Module/Photos.php:675 ../../Zotlabs/Module/Photos.php:1044 -#: ../../Zotlabs/Module/Connedit.php:690 ../../Zotlabs/Module/Chat.php:243 -#: ../../Zotlabs/Module/Filestorage.php:190 -#: ../../addon/flashcards/Mod_Flashcards.php:210 -#: ../../include/acl_selectors.php:123 -msgid "Permissions" +#: ../../include/text.php:1205 +msgid "finger" msgstr "" -#: ../../Zotlabs/Module/Thing.php:362 -msgid "Add Thing to your Profile" +#: ../../include/text.php:1205 +msgid "fingered" msgstr "" -#: ../../Zotlabs/Module/Notify.php:61 ../../Zotlabs/Module/Notifications.php:55 -msgid "No more system notifications." +#: ../../include/text.php:1206 +msgid "rebuff" msgstr "" -#: ../../Zotlabs/Module/Notify.php:65 ../../Zotlabs/Module/Notifications.php:59 -msgid "System Notifications" +#: ../../include/text.php:1206 +msgid "rebuffed" msgstr "" -#: ../../Zotlabs/Module/Follow.php:36 -msgid "Connection added." +#: ../../include/text.php:1229 +msgid "happy" msgstr "" -#: ../../Zotlabs/Module/Import.php:157 -#, php-format -msgid "Your service plan only allows %d channels." +#: ../../include/text.php:1230 +msgid "sad" msgstr "" -#: ../../Zotlabs/Module/Import.php:184 -msgid "No channel. Import failed." +#: ../../include/text.php:1231 +msgid "mellow" msgstr "" -#: ../../Zotlabs/Module/Import.php:594 -#: ../../addon/diaspora/import_diaspora.php:141 -msgid "Import completed." +#: ../../include/text.php:1232 +msgid "tired" msgstr "" -#: ../../Zotlabs/Module/Import.php:622 -msgid "You must be logged in to use this feature." +#: ../../include/text.php:1233 +msgid "perky" msgstr "" -#: ../../Zotlabs/Module/Import.php:627 -msgid "Import Channel" +#: ../../include/text.php:1234 +msgid "angry" msgstr "" -#: ../../Zotlabs/Module/Import.php:628 -msgid "" -"Use this form to import an existing channel from a different server/hub. You " -"may retrieve the channel identity from the old server/hub via the network or " -"provide an export file." +#: ../../include/text.php:1235 +msgid "stupefied" msgstr "" -#: ../../Zotlabs/Module/Import.php:630 -msgid "Or provide the old server/hub details" +#: ../../include/text.php:1236 +msgid "puzzled" msgstr "" -#: ../../Zotlabs/Module/Import.php:632 -msgid "Your old identity address (xyz@example.com)" +#: ../../include/text.php:1237 +msgid "interested" msgstr "" -#: ../../Zotlabs/Module/Import.php:633 -msgid "Your old login email address" +#: ../../include/text.php:1238 +msgid "bitter" msgstr "" -#: ../../Zotlabs/Module/Import.php:634 -msgid "Your old login password" +#: ../../include/text.php:1239 +msgid "cheerful" msgstr "" -#: ../../Zotlabs/Module/Import.php:635 -msgid "Import a few months of posts if possible (limited by available memory" +#: ../../include/text.php:1240 +msgid "alive" msgstr "" -#: ../../Zotlabs/Module/Import.php:637 -msgid "" -"For either option, please choose whether to make this hub your new primary " -"address, or whether your old location should continue this role. You will be " -"able to post from either location, but only one can be marked as the primary " -"location for files, photos, and media." +#: ../../include/text.php:1241 +msgid "annoyed" msgstr "" -#: ../../Zotlabs/Module/Import.php:639 -msgid "Make this hub my primary location" +#: ../../include/text.php:1242 +msgid "anxious" msgstr "" -#: ../../Zotlabs/Module/Import.php:640 -msgid "Move this channel (disable all previous locations)" +#: ../../include/text.php:1243 +msgid "cranky" msgstr "" -#: ../../Zotlabs/Module/Import.php:641 -msgid "Use this channel nickname instead of the one provided" +#: ../../include/text.php:1244 +msgid "disturbed" msgstr "" -#: ../../Zotlabs/Module/Import.php:641 -msgid "" -"Leave blank to keep your existing channel nickname. You will be randomly " -"assigned a similar nickname if either name is already allocated on this site." +#: ../../include/text.php:1245 +msgid "frustrated" msgstr "" -#: ../../Zotlabs/Module/Import.php:643 -msgid "" -"This process may take several minutes to complete. Please submit the form " -"only once and leave this page open until finished." +#: ../../include/text.php:1246 +msgid "depressed" msgstr "" -#: ../../Zotlabs/Module/Rmagic.php:44 -msgid "Authentication failed." +#: ../../include/text.php:1247 +msgid "motivated" msgstr "" -#: ../../Zotlabs/Module/Rmagic.php:93 ../../boot.php:1677 -#: ../../include/channel.php:2475 -msgid "Remote Authentication" +#: ../../include/text.php:1248 +msgid "relaxed" msgstr "" -#: ../../Zotlabs/Module/Rmagic.php:94 ../../include/channel.php:2476 -msgid "Enter your channel address (e.g. channel@example.com)" +#: ../../include/text.php:1249 +msgid "surprised" msgstr "" -#: ../../Zotlabs/Module/Rmagic.php:95 ../../include/channel.php:2477 -msgid "Authenticate" +#: ../../include/text.php:1437 ../../include/js_strings.php:96 +msgid "Monday" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:54 -msgid "Name and Secret are required" +#: ../../include/text.php:1437 ../../include/js_strings.php:97 +msgid "Tuesday" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:106 -msgid "OAuth2 Apps Manager App" +#: ../../include/text.php:1437 ../../include/js_strings.php:98 +msgid "Wednesday" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:107 -msgid "OAuth2 authenticatication tokens for mobile and remote apps" +#: ../../include/text.php:1437 ../../include/js_strings.php:99 +msgid "Thursday" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:115 -msgid "Add OAuth2 application" +#: ../../include/text.php:1437 ../../include/js_strings.php:100 +msgid "Friday" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 -#: ../../Zotlabs/Module/Oauth.php:113 -msgid "Name of application" +#: ../../include/text.php:1437 ../../include/js_strings.php:101 +msgid "Saturday" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 -#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141 -#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:615 -msgid "Consumer Secret" +#: ../../include/text.php:1437 ../../include/js_strings.php:95 +msgid "Sunday" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 -#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:115 -msgid "Automatically generated - change if desired. Max length 20" +#: ../../include/text.php:1441 ../../include/js_strings.php:71 +msgid "January" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 -#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 -msgid "Redirect" +#: ../../include/text.php:1441 ../../include/js_strings.php:72 +msgid "February" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 -#: ../../Zotlabs/Module/Oauth.php:116 -msgid "" -"Redirect URI - leave blank unless your application specifically requires this" +#: ../../include/text.php:1441 ../../include/js_strings.php:73 +msgid "March" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 -msgid "Grant Types" +#: ../../include/text.php:1441 ../../include/js_strings.php:74 +msgid "April" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122 -msgid "leave blank unless your application sepcifically requires this" +#: ../../include/text.php:1441 +msgid "May" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 -msgid "Authorization scope" +#: ../../include/text.php:1441 ../../include/js_strings.php:76 +msgid "June" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:134 -msgid "OAuth2 Application not found." +#: ../../include/text.php:1441 ../../include/js_strings.php:77 +msgid "July" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:143 ../../Zotlabs/Module/Oauth2.php:193 -#: ../../Zotlabs/Module/Oauth.php:110 ../../Zotlabs/Module/Oauth.php:136 -#: ../../Zotlabs/Module/Oauth.php:172 -msgid "Add application" +#: ../../include/text.php:1441 ../../include/js_strings.php:78 +msgid "August" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150 -msgid "leave blank unless your application specifically requires this" +#: ../../include/text.php:1441 ../../include/js_strings.php:79 +msgid "September" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:192 -msgid "Connected OAuth2 Apps" +#: ../../include/text.php:1441 ../../include/js_strings.php:80 +msgid "October" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:196 ../../Zotlabs/Module/Oauth.php:175 -msgid "Client key starts with" +#: ../../include/text.php:1441 ../../include/js_strings.php:81 +msgid "November" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:197 ../../Zotlabs/Module/Oauth.php:176 -msgid "No name" +#: ../../include/text.php:1441 ../../include/js_strings.php:82 +msgid "December" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:198 ../../Zotlabs/Module/Oauth.php:177 -msgid "Remove authorization" +#: ../../include/text.php:1515 +msgid "Unknown Attachment" msgstr "" -#: ../../Zotlabs/Module/Cal.php:64 -msgid "Permissions denied." +#: ../../include/text.php:1517 ../../Zotlabs/Module/Sharedwithme.php:106 +#: ../../Zotlabs/Storage/Browser.php:293 +msgid "Size" msgstr "" -#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 -msgid "Authorize application connection" +#: ../../include/text.php:1517 ../../include/feedutils.php:870 +msgid "unknown" msgstr "" -#: ../../Zotlabs/Module/Api.php:75 -msgid "Return to your app and insert this Security Code:" +#: ../../include/text.php:1553 +msgid "remove category" msgstr "" -#: ../../Zotlabs/Module/Api.php:85 -msgid "Please login to continue." +#: ../../include/text.php:1629 +msgid "remove from file" msgstr "" -#: ../../Zotlabs/Module/Api.php:97 -msgid "" -"Do you want to authorize this application to access your posts and contacts, " -"and/or create new posts for you?" +#: ../../include/text.php:1793 ../../include/message.php:13 +msgid "Download binary/encrypted content" msgstr "" -#: ../../Zotlabs/Module/Attach.php:13 -msgid "Item not available." +#: ../../include/text.php:1941 ../../Zotlabs/Module/Events.php:669 +msgid "Link to Source" msgstr "" -#: ../../Zotlabs/Module/Randprof.php:29 -msgid "Random Channel App" +#: ../../include/text.php:1963 ../../include/language.php:423 +msgid "default" msgstr "" -#: ../../Zotlabs/Module/Randprof.php:30 -msgid "Visit a random channel in the $Projectname network" +#: ../../include/text.php:1971 +msgid "Page layout" msgstr "" -#: ../../Zotlabs/Module/Editblock.php:138 -msgid "Edit Block" +#: ../../include/text.php:1971 +msgid "You can create your own with the layouts tool" msgstr "" -#: ../../Zotlabs/Module/Profile.php:93 -msgid "vcard" +#: ../../include/text.php:1981 ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 +#: ../../Zotlabs/Module/Wiki.php:371 +msgid "BBcode" msgstr "" -#: ../../Zotlabs/Module/Apps.php:50 ../../Zotlabs/Widget/Appstore.php:14 -msgid "Available Apps" +#: ../../include/text.php:1982 +msgid "HTML" msgstr "" -#: ../../Zotlabs/Module/Apps.php:50 -msgid "Installed Apps" +#: ../../include/text.php:1984 ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 +msgid "Text" msgstr "" -#: ../../Zotlabs/Module/Apps.php:53 -msgid "Manage Apps" +#: ../../include/text.php:1985 +msgid "Comanche Layout" msgstr "" -#: ../../Zotlabs/Module/Apps.php:54 -msgid "Create Custom App" +#: ../../include/text.php:1990 +msgid "PHP" msgstr "" -#: ../../Zotlabs/Module/Mood.php:76 ../../include/conversation.php:268 -#, php-format -msgctxt "mood" -msgid "%1$s is %2$s" +#: ../../include/text.php:1999 +msgid "Page content type" msgstr "" -#: ../../Zotlabs/Module/Mood.php:134 -msgid "Mood App" +#: ../../include/text.php:2122 ../../include/event.php:1213 +#: ../../include/conversation.php:119 +#: ../../Zotlabs/Module/Channel_calendar.php:213 +#: ../../Zotlabs/Module/Like.php:394 ../../Zotlabs/Module/Tagger.php:73 +#: ../../Zotlabs/Module/Events.php:266 +msgid "event" msgstr "" -#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155 -msgid "Set your current mood and tell your friends" +#: ../../include/text.php:2127 ../../include/conversation.php:146 +#: ../../Zotlabs/Module/Tagger.php:79 +msgid "comment" msgstr "" -#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 -msgid "Mood" +#: ../../include/text.php:2132 +msgid "activity" msgstr "" -#: ../../Zotlabs/Module/Connections.php:58 -#: ../../Zotlabs/Module/Connections.php:115 -#: ../../Zotlabs/Module/Connections.php:273 -msgid "Active" +#: ../../include/text.php:2233 +msgid "a-z, 0-9, -, and _ only" msgstr "" -#: ../../Zotlabs/Module/Connections.php:63 -#: ../../Zotlabs/Module/Connections.php:181 -#: ../../Zotlabs/Module/Connections.php:278 -msgid "Blocked" +#: ../../include/text.php:2559 +msgid "Design Tools" msgstr "" -#: ../../Zotlabs/Module/Connections.php:68 -#: ../../Zotlabs/Module/Connections.php:188 -#: ../../Zotlabs/Module/Connections.php:277 -msgid "Ignored" +#: ../../include/text.php:2562 ../../Zotlabs/Module/Blocks.php:154 +msgid "Blocks" msgstr "" -#: ../../Zotlabs/Module/Connections.php:73 -#: ../../Zotlabs/Module/Connections.php:202 -#: ../../Zotlabs/Module/Connections.php:276 -msgid "Hidden" +#: ../../include/text.php:2563 ../../Zotlabs/Module/Menu.php:171 +msgid "Menus" msgstr "" -#: ../../Zotlabs/Module/Connections.php:78 -#: ../../Zotlabs/Module/Connections.php:195 -msgid "Archived/Unreachable" +#: ../../include/text.php:2564 ../../Zotlabs/Module/Layouts.php:184 +msgid "Layouts" msgstr "" -#: ../../Zotlabs/Module/Connections.php:83 -#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:179 -#: ../../Zotlabs/Module/Notifications.php:50 -msgid "New" +#: ../../include/text.php:2565 +msgid "Pages" msgstr "" -#: ../../Zotlabs/Module/Connections.php:97 -#: ../../Zotlabs/Module/Connections.php:111 -#: ../../Zotlabs/Module/Connedit.php:727 ../../Zotlabs/Widget/Affinity.php:34 -msgid "All" +#: ../../include/text.php:2577 +msgid "Import" msgstr "" -#: ../../Zotlabs/Module/Connections.php:157 -msgid "Active Connections" +#: ../../include/text.php:2578 +msgid "Import website..." msgstr "" -#: ../../Zotlabs/Module/Connections.php:160 -msgid "Show active connections" +#: ../../include/text.php:2579 +msgid "Select folder to import" msgstr "" -#: ../../Zotlabs/Module/Connections.php:164 -#: ../../Zotlabs/Widget/Notifications.php:84 -msgid "New Connections" +#: ../../include/text.php:2580 +msgid "Import from a zipped folder:" msgstr "" -#: ../../Zotlabs/Module/Connections.php:167 -msgid "Show pending (new) connections" +#: ../../include/text.php:2581 +msgid "Import from cloud files:" msgstr "" -#: ../../Zotlabs/Module/Connections.php:184 -msgid "Only show blocked connections" +#: ../../include/text.php:2582 +msgid "/cloud/channel/path/to/folder" msgstr "" -#: ../../Zotlabs/Module/Connections.php:191 -msgid "Only show ignored connections" +#: ../../include/text.php:2583 +msgid "Enter path to website files" msgstr "" -#: ../../Zotlabs/Module/Connections.php:198 -msgid "Only show archived/unreachable connections" +#: ../../include/text.php:2584 +msgid "Select folder" msgstr "" -#: ../../Zotlabs/Module/Connections.php:205 -msgid "Only show hidden connections" +#: ../../include/text.php:2585 +msgid "Export website..." msgstr "" -#: ../../Zotlabs/Module/Connections.php:220 -msgid "Show all connections" +#: ../../include/text.php:2586 +msgid "Export to a zip file" msgstr "" -#: ../../Zotlabs/Module/Connections.php:274 -msgid "Pending approval" +#: ../../include/text.php:2587 +msgid "website.zip" msgstr "" -#: ../../Zotlabs/Module/Connections.php:275 -msgid "Archived" +#: ../../include/text.php:2588 +msgid "Enter a name for the zip file." msgstr "" -#: ../../Zotlabs/Module/Connections.php:279 -msgid "Not connected at this location" +#: ../../include/text.php:2589 +msgid "Export to cloud files" msgstr "" -#: ../../Zotlabs/Module/Connections.php:296 -#, php-format -msgid "%1$s [%2$s]" +#: ../../include/text.php:2590 +msgid "/path/to/export/folder" msgstr "" -#: ../../Zotlabs/Module/Connections.php:297 -msgid "Edit connection" +#: ../../include/text.php:2591 +msgid "Enter a path to a cloud files destination." msgstr "" -#: ../../Zotlabs/Module/Connections.php:299 -msgid "Delete connection" +#: ../../include/text.php:2592 +msgid "Specify folder" msgstr "" -#: ../../Zotlabs/Module/Connections.php:308 -msgid "Channel address" +#: ../../include/text.php:2954 ../../Zotlabs/Storage/Browser.php:131 +msgid "Collection" msgstr "" -#: ../../Zotlabs/Module/Connections.php:310 ../../include/features.php:299 -msgid "Network" +#: ../../include/opengraph.php:58 +#, php-format +msgid "This is the home page of %s." msgstr "" -#: ../../Zotlabs/Module/Connections.php:313 -msgid "Call" +#: ../../include/event.php:32 ../../include/event.php:95 +msgid "l F d, Y \\@ g:i A" msgstr "" -#: ../../Zotlabs/Module/Connections.php:315 -msgid "Status" +#: ../../include/event.php:40 +msgid "Starts:" msgstr "" -#: ../../Zotlabs/Module/Connections.php:317 -msgid "Connected" +#: ../../include/event.php:50 +msgid "Finishes:" msgstr "" -#: ../../Zotlabs/Module/Connections.php:319 -msgid "Approve connection" +#: ../../include/event.php:62 ../../include/event.php:112 +#: ../../include/channel.php:1521 ../../Zotlabs/Module/Directory.php:339 +msgid "Location:" msgstr "" -#: ../../Zotlabs/Module/Connections.php:321 -msgid "Ignore connection" +#: ../../include/event.php:95 +msgid "l F d, Y" msgstr "" -#: ../../Zotlabs/Module/Connections.php:322 -#: ../../Zotlabs/Module/Connedit.php:644 -msgid "Ignore" +#: ../../include/event.php:99 +msgid "Start:" msgstr "" -#: ../../Zotlabs/Module/Connections.php:323 -msgid "Recent activity" +#: ../../include/event.php:103 +msgid "End:" msgstr "" -#: ../../Zotlabs/Module/Connections.php:348 ../../Zotlabs/Lib/Apps.php:332 -#: ../../include/text.php:1010 ../../include/features.php:133 -msgid "Connections" +#: ../../include/event.php:1064 +msgid "This event has been added to your calendar." msgstr "" -#: ../../Zotlabs/Module/Connections.php:353 -msgid "Search your connections" +#: ../../include/event.php:1290 +msgid "Not specified" msgstr "" -#: ../../Zotlabs/Module/Connections.php:354 -msgid "Connections search" +#: ../../include/event.php:1291 +msgid "Needs Action" msgstr "" -#: ../../Zotlabs/Module/Connections.php:355 -#: ../../Zotlabs/Module/Directory.php:416 -#: ../../Zotlabs/Module/Directory.php:421 ../../include/contact_widgets.php:23 -msgid "Find" +#: ../../include/event.php:1292 +msgid "Completed" msgstr "" -#: ../../Zotlabs/Module/Viewsrc.php:43 -msgid "item" +#: ../../include/event.php:1293 +msgid "In Process" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:62 -msgid "Bookmark added" +#: ../../include/event.php:1294 +msgid "Cancelled" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:78 -msgid "Bookmarks App" +#: ../../include/event.php:1375 ../../include/connections.php:728 +#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:792 +#: ../../Zotlabs/Module/Connedit.php:932 +msgid "Mobile" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:79 -msgid "Bookmark links from posts and manage them" +#: ../../include/event.php:1376 ../../include/connections.php:729 +#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Connedit.php:933 +msgid "Home" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:92 -msgid "My Bookmarks" +#: ../../include/event.php:1377 ../../include/connections.php:730 +msgid "Home, Voice" msgstr "" -#: ../../Zotlabs/Module/Bookmarks.php:103 -msgid "My Connections Bookmarks" +#: ../../include/event.php:1378 ../../include/connections.php:731 +msgid "Home, Fax" msgstr "" -#: ../../Zotlabs/Module/Removeaccount.php:35 -msgid "" -"Account removals are not allowed within 48 hours of changing the account " -"password." +#: ../../include/event.php:1379 ../../include/connections.php:732 +#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Connedit.php:934 +msgid "Work" msgstr "" -#: ../../Zotlabs/Module/Removeaccount.php:57 -msgid "Remove This Account" +#: ../../include/event.php:1380 ../../include/connections.php:733 +msgid "Work, Voice" msgstr "" -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "" -"This account and all its channels will be completely removed from the " -"network. " +#: ../../include/event.php:1381 ../../include/connections.php:734 +msgid "Work, Fax" msgstr "" -#: ../../Zotlabs/Module/Removeaccount.php:60 -msgid "" -"Remove this account, all its channels and all its channel clones from the " -"network" +#: ../../include/event.php:1382 ../../include/event.php:1389 +#: ../../include/selectors.php:60 ../../include/selectors.php:77 +#: ../../include/selectors.php:115 ../../include/selectors.php:151 +#: ../../include/connections.php:735 ../../include/connections.php:742 +#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Connedit.php:935 +#: ../../Zotlabs/Access/PermissionRoles.php:306 +msgid "Other" msgstr "" -#: ../../Zotlabs/Module/Removeaccount.php:60 -msgid "" -"By default only the instances of the channels located on this hub will be " -"removed from the network" +#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../Zotlabs/Module/Admin/Features.php:56 +#: ../../Zotlabs/Module/Settings/Features.php:36 +msgid "Off" msgstr "" -#: ../../Zotlabs/Module/Photos.php:78 -msgid "Page owner information could not be retrieved." +#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../Zotlabs/Module/Admin/Features.php:56 +#: ../../Zotlabs/Module/Settings/Features.php:36 +msgid "On" msgstr "" -#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 -msgid "Album not found." +#: ../../include/features.php:82 ../../include/nav.php:465 +#: ../../include/nav.php:468 ../../Zotlabs/Lib/Apps.php:345 +#: ../../Zotlabs/Storage/Browser.php:140 +msgid "Calendar" msgstr "" -#: ../../Zotlabs/Module/Photos.php:103 -msgid "Delete Album" +#: ../../include/features.php:86 +msgid "Start calendar week on Monday" msgstr "" -#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 -msgid "Delete Photo" +#: ../../include/features.php:87 +msgid "Default is Sunday" msgstr "" -#: ../../Zotlabs/Module/Photos.php:527 -msgid "No photos selected" +#: ../../include/features.php:94 +msgid "Event Timezone Selection" msgstr "" -#: ../../Zotlabs/Module/Photos.php:576 -msgid "Access to this item is restricted." +#: ../../include/features.php:95 +msgid "Allow event creation in timezones other than your own." msgstr "" -#: ../../Zotlabs/Module/Photos.php:619 -#, php-format -msgid "%1$.2f MB of %2$.2f MB photo storage used." +#: ../../include/features.php:104 ../../Zotlabs/Lib/Apps.php:342 +msgid "Channel Home" msgstr "" -#: ../../Zotlabs/Module/Photos.php:622 -#, php-format -msgid "%1$.2f MB photo storage used." +#: ../../include/features.php:108 +msgid "Search by Date" msgstr "" -#: ../../Zotlabs/Module/Photos.php:664 -msgid "Upload Photos" +#: ../../include/features.php:109 +msgid "Ability to select posts by date ranges" msgstr "" -#: ../../Zotlabs/Module/Photos.php:668 -msgid "Enter an album name" +#: ../../include/features.php:116 +msgid "Tag Cloud" msgstr "" -#: ../../Zotlabs/Module/Photos.php:669 -msgid "or select an existing album (doubleclick)" +#: ../../include/features.php:117 +msgid "Provide a personal tag cloud on your channel page" msgstr "" -#: ../../Zotlabs/Module/Photos.php:670 -msgid "Create a status post for this upload" +#: ../../include/features.php:124 ../../include/features.php:351 +msgid "Use blog/list mode" msgstr "" -#: ../../Zotlabs/Module/Photos.php:672 -msgid "Description (optional)" +#: ../../include/features.php:125 ../../include/features.php:352 +msgid "Comments will be displayed separately" msgstr "" -#: ../../Zotlabs/Module/Photos.php:758 -msgid "Show Newest First" +#: ../../include/features.php:137 +msgid "Connection Filtering" msgstr "" -#: ../../Zotlabs/Module/Photos.php:760 -msgid "Show Oldest First" +#: ../../include/features.php:138 +msgid "Filter incoming posts from connections based on keywords/content" msgstr "" -#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 -msgid "Add Photos" +#: ../../include/features.php:146 +msgid "Conversation" msgstr "" -#: ../../Zotlabs/Module/Photos.php:865 -msgid "Permission denied. Access to this item may be restricted." +#: ../../include/features.php:150 +msgid "Community Tagging" msgstr "" -#: ../../Zotlabs/Module/Photos.php:867 -msgid "Photo not available" +#: ../../include/features.php:151 +msgid "Ability to tag existing posts" msgstr "" -#: ../../Zotlabs/Module/Photos.php:925 -msgid "Use as profile photo" +#: ../../include/features.php:158 +msgid "Emoji Reactions" msgstr "" -#: ../../Zotlabs/Module/Photos.php:926 -msgid "Use as cover photo" +#: ../../include/features.php:159 +msgid "Add emoji reaction ability to posts" msgstr "" -#: ../../Zotlabs/Module/Photos.php:933 -msgid "Private Photo" +#: ../../include/features.php:166 +msgid "Dislike Posts" msgstr "" -#: ../../Zotlabs/Module/Photos.php:948 -msgid "View Full Size" +#: ../../include/features.php:167 +msgid "Ability to dislike posts/comments" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1030 -msgid "Edit photo" +#: ../../include/features.php:174 +msgid "Star Posts" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1032 -msgid "Rotate CW (right)" +#: ../../include/features.php:175 +msgid "Ability to mark special posts with a star indicator" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1033 -msgid "Rotate CCW (left)" +#: ../../include/features.php:182 +msgid "Reply on comment" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1036 -msgid "Move photo to album" +#: ../../include/features.php:183 +msgid "Ability to reply on selected comment" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1037 -msgid "Enter a new album name" +#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:346 +msgid "Directory" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1038 -msgid "or select an existing one (doubleclick)" +#: ../../include/features.php:196 +msgid "Advanced Directory Search" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1043 -msgid "Add a Tag" +#: ../../include/features.php:197 +msgid "Allows creation of complex directory search queries" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1051 -msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" +#: ../../include/features.php:206 +msgid "Editor" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1054 -msgid "Flag as adult in album view" +#: ../../include/features.php:210 +msgid "Post Categories" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 -msgid "I like this (toggle)" +#: ../../include/features.php:211 +msgid "Add categories to your posts" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 -msgid "I don't like this (toggle)" +#: ../../include/features.php:219 +msgid "Large Photos" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:469 -#: ../../include/conversation.php:787 -msgid "Please wait" +#: ../../include/features.php:220 +msgid "" +"Include large (1024px) photo thumbnails in posts. If not enabled, use small " +"(640px) photo thumbnails" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 -#: ../../Zotlabs/Lib/ThreadItem.php:793 -msgid "This is you" +#: ../../include/features.php:227 +msgid "Even More Encryption" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1214 -#: ../../Zotlabs/Lib/ThreadItem.php:795 ../../include/js_strings.php:6 -msgid "Comment" +#: ../../include/features.php:228 +msgid "" +"Allow optional encryption of content end-to-end with a shared secret key" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Likes" +#: ../../include/features.php:235 +msgid "Enable Voting Tools" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Dislikes" +#: ../../include/features.php:236 +msgid "Provide a class of post which others can vote on" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Agree" +#: ../../include/features.php:243 +msgid "Disable Comments" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Disagree" +#: ../../include/features.php:244 +msgid "Provide the option to disable comments for a post" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Abstain" +#: ../../include/features.php:251 +msgid "Delayed Posting" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Attending" +#: ../../include/features.php:252 +msgid "Allow posts to be published at a later date" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Not attending" +#: ../../include/features.php:259 +msgid "Content Expiration" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Might attend" +#: ../../include/features.php:260 +msgid "Remove posts/comments and/or private messages at a future time" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 -#: ../../Zotlabs/Lib/ThreadItem.php:232 ../../Zotlabs/Lib/ThreadItem.php:244 -msgid "View all" +#: ../../include/features.php:267 +msgid "Suppress Duplicate Posts/Comments" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:236 -#: ../../include/conversation.php:1702 ../../include/channel.php:1661 -#: ../../include/taxonomy.php:659 -msgctxt "noun" -msgid "Like" -msgid_plural "Likes" -msgstr[0] "" -msgstr[1] "" +#: ../../include/features.php:268 +msgid "" +"Prevent posts with identical content to be published with less than two " +"minutes in between submissions." +msgstr "" -#: ../../Zotlabs/Module/Photos.php:1140 ../../Zotlabs/Lib/ThreadItem.php:241 -#: ../../include/conversation.php:1705 -msgctxt "noun" -msgid "Dislike" -msgid_plural "Dislikes" -msgstr[0] "" -msgstr[1] "" +#: ../../include/features.php:275 +msgid "Auto-save drafts of posts and comments" +msgstr "" -#: ../../Zotlabs/Module/Photos.php:1246 -msgid "Photo Tools" +#: ../../include/features.php:276 +msgid "" +"Automatically saves post and comment drafts in local browser storage to help " +"prevent accidental loss of compositions" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1255 -msgid "In This Photo:" +#: ../../include/features.php:285 +msgid "Manage" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1260 -msgid "Map" +#: ../../include/features.php:289 +msgid "Navigation Channel Select" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 -msgctxt "noun" -msgid "Likes" +#: ../../include/features.php:290 +msgid "Change channels directly from within the navigation dropdown menu" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 -msgctxt "noun" -msgid "Dislikes" +#: ../../include/features.php:299 ../../Zotlabs/Module/Connections.php:310 +msgid "Network" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1274 ../../Zotlabs/Lib/ThreadItem.php:463 -#: ../../addon/channelreputation/channelreputation.php:230 -#: ../../include/acl_selectors.php:125 -msgid "Close" +#: ../../include/features.php:303 ../../Zotlabs/Widget/Savedsearch.php:83 +msgid "Saved Searches" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1347 ../../Zotlabs/Module/Photos.php:1360 -#: ../../Zotlabs/Module/Photos.php:1361 ../../include/photos.php:667 -msgid "Recent Photos" +#: ../../include/features.php:304 +msgid "Save search terms for re-use" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:35 -#: ../../addon/flashcards/Mod_Flashcards.php:35 ../../addon/cart/cart.php:1298 -msgid "Profile Unavailable." +#: ../../include/features.php:311 ../../include/contact_widgets.php:53 +#: ../../Zotlabs/Widget/Activity_filter.php:137 +#: ../../Zotlabs/Widget/Filer.php:28 +msgid "Saved Folders" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:52 -msgid "Wiki App" +#: ../../include/features.php:312 +msgid "Ability to file posts under folders" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:53 -msgid "Provide a wiki for your channel" +#: ../../include/features.php:319 +msgid "Alternate Stream Order" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:77 ../../addon/cart/myshop.php:37 -#: ../../addon/cart/cart.php:1444 -#: ../../addon/cart/submodules/paypalbutton.php:456 -#: ../../addon/cart/manual_payments.php:93 -msgid "Invalid channel" +#: ../../include/features.php:320 +msgid "" +"Ability to order the stream by last post date, last comment date or " +"unthreaded activities" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:133 -msgid "Error retrieving wiki" +#: ../../include/features.php:327 +msgid "Contact Filter" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:140 -msgid "Error creating zip file export folder" +#: ../../include/features.php:328 +msgid "Ability to display only posts of a selected contact" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:191 -msgid "Error downloading wiki: " +#: ../../include/features.php:335 +msgid "Forum Filter" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:15 -#: ../../include/nav.php:538 -msgid "Wikis" +#: ../../include/features.php:336 +msgid "Ability to display only posts of a specific forum" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:212 -msgid "Download" +#: ../../include/features.php:343 +msgid "Personal Posts Filter" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:214 ../../Zotlabs/Module/Chat.php:264 -#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Manage.php:145 -msgid "Create New" +#: ../../include/features.php:344 +msgid "Ability to display only posts that you've interacted on" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:216 -msgid "Wiki name" +#: ../../include/features.php:361 ../../include/nav.php:446 +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 +msgid "Photos" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:217 -msgid "Content type" +#: ../../include/features.php:365 +msgid "Photo Location" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371 -#: ../../Zotlabs/Widget/Wiki_pages.php:38 -#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../addon/mdpost/mdpost.php:41 -#: ../../include/text.php:1981 -msgid "Markdown" +#: ../../include/features.php:366 +msgid "If location data is available on uploaded photos, link this to a map." msgstr "" -#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371 -#: ../../Zotlabs/Widget/Wiki_pages.php:38 -#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1979 -msgid "BBcode" +#: ../../include/features.php:375 ../../Zotlabs/Lib/Apps.php:362 +msgid "Profiles" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Widget/Wiki_pages.php:38 -#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1982 -msgid "Text" +#: ../../include/features.php:379 +msgid "Advanced Profiles" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:292 -msgid "Type" +#: ../../include/features.php:380 +msgid "Additional profile sections and selections" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:220 -msgid "Any type" +#: ../../include/features.php:387 +msgid "Profile Import/Export" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:227 -msgid "Lock content type" +#: ../../include/features.php:388 +msgid "Save and load profile details across sites/channels" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:228 -msgid "Create a status post for this wiki" +#: ../../include/features.php:395 +msgid "Multiple Profiles" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:229 -msgid "Edit Wiki Name" +#: ../../include/features.php:396 +msgid "Ability to create multiple profiles" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:274 -msgid "Wiki not found" +#: ../../include/security.php:607 +msgid "" +"The form security token was not correct. This probably happened because the " +"form has been opened for too long (>3 hours) before submitting it." msgstr "" -#: ../../Zotlabs/Module/Wiki.php:300 -msgid "Rename page" +#: ../../include/js_strings.php:5 +msgid "Delete this item?" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:321 -msgid "Error retrieving page content" +#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1095 +#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:795 +msgid "Comment" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:329 ../../Zotlabs/Module/Wiki.php:331 -msgid "New page" +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:502 +#, php-format +msgid "%s show all" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:366 -msgid "Revision Comparison" +#: ../../include/js_strings.php:8 +#, php-format +msgid "%s show less" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 -#: ../../Zotlabs/Widget/Wiki_page_history.php:25 -msgid "Revert" +#: ../../include/js_strings.php:9 +#, php-format +msgid "%s expand" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:374 -msgid "Short description of your changes (optional)" +#: ../../include/js_strings.php:10 +#, php-format +msgid "%s collapse" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:384 -msgid "Source" +#: ../../include/js_strings.php:11 +msgid "Password too short" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:394 -msgid "New page name" +#: ../../include/js_strings.php:12 +msgid "Passwords do not match" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:399 -msgid "Embed image from photo albums" +#: ../../include/js_strings.php:13 +msgid "everybody" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:400 ../../addon/hsse/hsse.php:208 -#: ../../include/conversation.php:1414 -msgid "Embed an image from your albums" +#: ../../include/js_strings.php:14 +msgid "Secret Passphrase" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:402 ../../Zotlabs/Module/Profile_photo.php:506 -#: ../../Zotlabs/Module/Cover_photo.php:435 ../../addon/hsse/hsse.php:210 -#: ../../addon/hsse/hsse.php:257 ../../include/conversation.php:1416 -#: ../../include/conversation.php:1463 -msgid "OK" +#: ../../include/js_strings.php:15 +msgid "Passphrase hint" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:403 ../../Zotlabs/Module/Profile_photo.php:507 -#: ../../Zotlabs/Module/Cover_photo.php:436 ../../addon/hsse/hsse.php:139 -#: ../../include/conversation.php:1342 -msgid "Choose images to embed" +#: ../../include/js_strings.php:16 +msgid "Notice: Permissions have changed but have not yet been submitted." msgstr "" -#: ../../Zotlabs/Module/Wiki.php:404 ../../Zotlabs/Module/Profile_photo.php:508 -#: ../../Zotlabs/Module/Cover_photo.php:437 ../../addon/hsse/hsse.php:140 -#: ../../include/conversation.php:1343 -msgid "Choose an album" +#: ../../include/js_strings.php:17 +msgid "close all" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:405 ../../Zotlabs/Module/Profile_photo.php:509 -#: ../../Zotlabs/Module/Cover_photo.php:438 -msgid "Choose a different album" +#: ../../include/js_strings.php:18 +msgid "Nothing new here" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:406 ../../Zotlabs/Module/Profile_photo.php:510 -#: ../../Zotlabs/Module/Cover_photo.php:439 ../../addon/hsse/hsse.php:142 -#: ../../include/conversation.php:1345 -msgid "Error getting album list" +#: ../../include/js_strings.php:19 +msgid "Rate This Channel (this is public)" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:407 ../../Zotlabs/Module/Profile_photo.php:511 -#: ../../Zotlabs/Module/Cover_photo.php:440 ../../addon/hsse/hsse.php:143 -#: ../../include/conversation.php:1346 -msgid "Error getting photo link" +#: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155 +#: ../../Zotlabs/Module/Connedit.php:887 +msgid "Rating" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:408 ../../Zotlabs/Module/Profile_photo.php:512 -#: ../../Zotlabs/Module/Cover_photo.php:441 ../../addon/hsse/hsse.php:144 -#: ../../include/conversation.php:1347 -msgid "Error getting album" +#: ../../include/js_strings.php:21 +msgid "Describe (optional)" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:410 -msgid "History" +#: ../../include/js_strings.php:23 +msgid "Please enter a link URL" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:488 -msgid "Error creating wiki. Invalid name." +#: ../../include/js_strings.php:24 +msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:495 -msgid "A wiki with this name already exists." +#: ../../include/js_strings.php:25 ../../Zotlabs/Module/Pubsites.php:52 +#: ../../Zotlabs/Module/Cdav.php:1038 ../../Zotlabs/Module/Events.php:483 +#: ../../Zotlabs/Module/Profiles.php:509 ../../Zotlabs/Module/Profiles.php:734 +#: ../../Zotlabs/Module/Locs.php:117 +msgid "Location" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:508 -msgid "Wiki created, but error creating Home page." +#: ../../include/js_strings.php:26 +msgid "lovely" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:515 -msgid "Error creating wiki" +#: ../../include/js_strings.php:27 +msgid "wonderful" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:539 -msgid "Error updating wiki. Invalid name." +#: ../../include/js_strings.php:28 +msgid "fantastic" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:559 -msgid "Error updating wiki" +#: ../../include/js_strings.php:29 +msgid "great" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:574 -msgid "Wiki delete permission denied." +#: ../../include/js_strings.php:30 +msgid "" +"Your chosen nickname was either already taken or not valid. Please use our " +"suggestion (" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:584 -msgid "Error deleting wiki" +#: ../../include/js_strings.php:31 +msgid ") or enter a new one." msgstr "" -#: ../../Zotlabs/Module/Wiki.php:617 -msgid "New page created" +#: ../../include/js_strings.php:32 +msgid "Thank you, this nickname is valid." msgstr "" -#: ../../Zotlabs/Module/Wiki.php:739 -msgid "Cannot delete Home" +#: ../../include/js_strings.php:33 +msgid "A channel name is required." msgstr "" -#: ../../Zotlabs/Module/Wiki.php:803 -msgid "Current Revision" +#: ../../include/js_strings.php:34 +msgid "This is a " msgstr "" -#: ../../Zotlabs/Module/Wiki.php:803 -msgid "Selected Revision" +#: ../../include/js_strings.php:35 +msgid " channel name" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:853 -msgid "You must be authenticated." +#: ../../include/js_strings.php:36 +msgid "Back to reply" msgstr "" -#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1574 +#: ../../include/js_strings.php:42 +#, php-format +msgid "%d minutes" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/js_strings.php:43 +#, php-format +msgid "about %d hours" +msgid_plural "about %d hours" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/js_strings.php:44 +#, php-format +msgid "%d days" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/js_strings.php:45 #, php-format -msgid "🔁 Repeated %1$s's %2$s" -msgstr "" +msgid "%d months" +msgid_plural "%d months" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Share.php:119 -msgid "Post repeated" -msgstr "" +#: ../../include/js_strings.php:46 +#, php-format +msgid "%d years" +msgid_plural "%d years" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Chanview.php:139 -msgid "toggle full screen mode" +#: ../../include/js_strings.php:51 +msgid "timeago.prefixAgo" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:26 -msgid "Layout updated." +#: ../../include/js_strings.php:52 +msgid "timeago.prefixFromNow" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:42 -msgid "PDL Editor App" +#: ../../include/js_strings.php:53 +msgid "timeago.suffixAgo" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:43 -msgid "Provides the ability to edit system page layouts" +#: ../../include/js_strings.php:54 +msgid "timeago.suffixFromNow" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99 -msgid "Edit System Page Description" +#: ../../include/js_strings.php:57 +msgid "less than a minute" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:77 -msgid "(modified)" +#: ../../include/js_strings.php:58 +msgid "about a minute" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:77 ../../Zotlabs/Module/Lostpass.php:133 -msgid "Reset" +#: ../../include/js_strings.php:60 +msgid "about an hour" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:94 -msgid "Layout not found." +#: ../../include/js_strings.php:62 +msgid "a day" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:100 -msgid "Module Name:" +#: ../../include/js_strings.php:64 +msgid "about a month" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:101 -msgid "Layout Help" +#: ../../include/js_strings.php:66 +msgid "about a year" msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:102 -msgid "Edit another layout" +#: ../../include/js_strings.php:68 +msgid " " msgstr "" -#: ../../Zotlabs/Module/Pdledit.php:103 -msgid "System layout" +#: ../../include/js_strings.php:69 +msgid "timeago.numbers" msgstr "" -#: ../../Zotlabs/Module/Poke.php:165 -msgid "Poke App" +#: ../../include/js_strings.php:75 +msgctxt "long" +msgid "May" msgstr "" -#: ../../Zotlabs/Module/Poke.php:166 -msgid "Poke somebody in your addressbook" +#: ../../include/js_strings.php:83 +msgid "Jan" msgstr "" -#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:350 -#: ../../include/conversation.php:1098 -msgid "Poke" +#: ../../include/js_strings.php:84 +msgid "Feb" msgstr "" -#: ../../Zotlabs/Module/Poke.php:200 -msgid "Poke somebody" +#: ../../include/js_strings.php:85 +msgid "Mar" msgstr "" -#: ../../Zotlabs/Module/Poke.php:203 -msgid "Poke/Prod" +#: ../../include/js_strings.php:86 +msgid "Apr" msgstr "" -#: ../../Zotlabs/Module/Poke.php:204 -msgid "Poke, prod or do other things to somebody" +#: ../../include/js_strings.php:87 +msgctxt "short" +msgid "May" msgstr "" -#: ../../Zotlabs/Module/Poke.php:211 -msgid "Recipient" +#: ../../include/js_strings.php:88 +msgid "Jun" msgstr "" -#: ../../Zotlabs/Module/Poke.php:212 -msgid "Choose what you wish to do to recipient" +#: ../../include/js_strings.php:89 +msgid "Jul" msgstr "" -#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 -msgid "Make this post private" +#: ../../include/js_strings.php:90 +msgid "Aug" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:91 -#: ../../Zotlabs/Module/Cover_photo.php:83 -msgid "Image uploaded but image cropping failed." +#: ../../include/js_strings.php:91 +msgid "Sep" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:145 -#: ../../Zotlabs/Module/Profile_photo.php:282 -#: ../../include/photo/photo_driver.php:367 -msgid "Profile Photos" +#: ../../include/js_strings.php:92 +msgid "Oct" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:164 -#: ../../Zotlabs/Module/Cover_photo.php:210 -msgid "Image resize failed." +#: ../../include/js_strings.php:93 +msgid "Nov" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:252 -#: ../../addon/openclipatar/openclipatar.php:298 -msgid "" -"Shift-reload the page or clear browser cache if the new photo does not " -"display immediately." +#: ../../include/js_strings.php:94 +msgid "Dec" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:259 -#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/photos.php:196 -msgid "Unable to process image" +#: ../../include/js_strings.php:102 +msgid "Sun" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:294 -#: ../../Zotlabs/Module/Cover_photo.php:263 -msgid "Image upload failed." +#: ../../include/js_strings.php:103 +msgid "Mon" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:313 -#: ../../Zotlabs/Module/Cover_photo.php:280 -msgid "Unable to process image." +#: ../../include/js_strings.php:104 +msgid "Tue" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:377 -#: ../../Zotlabs/Module/Profile_photo.php:429 -#: ../../Zotlabs/Module/Cover_photo.php:373 -#: ../../Zotlabs/Module/Cover_photo.php:388 -msgid "Photo not available." +#: ../../include/js_strings.php:105 +msgid "Wed" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:493 -msgid "" -"Your default profile photo is visible to anybody on the internet. Profile " -"photos for alternate profiles will inherit the permissions of the profile" +#: ../../include/js_strings.php:106 +msgid "Thu" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:493 -msgid "" -"Your profile photo is visible to anybody on the internet and may be " -"distributed to other websites." +#: ../../include/js_strings.php:107 +msgid "Fri" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:495 -#: ../../Zotlabs/Module/Cover_photo.php:426 -msgid "Upload File:" +#: ../../include/js_strings.php:108 +msgid "Sat" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:496 -#: ../../Zotlabs/Module/Cover_photo.php:427 -msgid "Select a profile:" +#: ../../include/js_strings.php:109 +msgctxt "calendar" +msgid "today" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Use Photo for Profile" +#: ../../include/js_strings.php:110 +msgctxt "calendar" +msgid "month" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Change Profile Photo" +#: ../../include/js_strings.php:111 +msgctxt "calendar" +msgid "week" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:498 -msgid "Use" +#: ../../include/js_strings.php:112 +msgctxt "calendar" +msgid "day" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:503 -#: ../../Zotlabs/Module/Profile_photo.php:504 -#: ../../Zotlabs/Module/Cover_photo.php:432 -#: ../../Zotlabs/Module/Cover_photo.php:433 -msgid "Use a photo from your albums" +#: ../../include/js_strings.php:113 +msgctxt "calendar" +msgid "All day" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:514 -#: ../../Zotlabs/Module/Cover_photo.php:444 -msgid "Select existing photo" +#: ../../include/help.php:80 +msgid "Help:" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:533 -#: ../../Zotlabs/Module/Cover_photo.php:461 -msgid "Crop Image" +#: ../../include/help.php:117 ../../include/help.php:125 +#: ../../include/nav.php:172 ../../include/nav.php:322 +#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:347 +msgid "Help" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:534 -#: ../../Zotlabs/Module/Cover_photo.php:462 -msgid "Please adjust the image cropping for optimum viewing." +#: ../../include/help.php:129 +msgid "Not Found" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:536 -#: ../../Zotlabs/Module/Cover_photo.php:464 -msgid "Done Editing" +#: ../../include/photos.php:151 +#, php-format +msgid "Image exceeds website size limit of %lu bytes" msgstr "" -#: ../../Zotlabs/Module/Chatsvc.php:131 -msgid "Away" +#: ../../include/photos.php:162 +msgid "Image file is empty." msgstr "" -#: ../../Zotlabs/Module/Chatsvc.php:136 -msgid "Online" +#: ../../include/photos.php:196 ../../Zotlabs/Module/Profile_photo.php:259 +#: ../../Zotlabs/Module/Cover_photo.php:239 +msgid "Unable to process image" msgstr "" -#: ../../Zotlabs/Module/Item.php:382 -msgid "Unable to locate original post." +#: ../../include/photos.php:324 +msgid "Photo storage failed." msgstr "" -#: ../../Zotlabs/Module/Item.php:668 -msgid "Empty post discarded." +#: ../../include/photos.php:373 +msgid "a new photo" msgstr "" -#: ../../Zotlabs/Module/Item.php:1082 -msgid "Duplicate post suppressed." +#: ../../include/photos.php:377 +#, php-format +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" msgstr "" -#: ../../Zotlabs/Module/Item.php:1227 -msgid "System error. Post not saved." +#: ../../include/photos.php:666 ../../include/nav.php:449 +msgid "Photo Albums" msgstr "" -#: ../../Zotlabs/Module/Item.php:1263 -msgid "Your comment is awaiting approval." +#: ../../include/photos.php:667 ../../Zotlabs/Module/Photos.php:1347 +#: ../../Zotlabs/Module/Photos.php:1360 ../../Zotlabs/Module/Photos.php:1361 +msgid "Recent Photos" msgstr "" -#: ../../Zotlabs/Module/Item.php:1380 -msgid "Unable to obtain post information from database." +#: ../../include/photos.php:671 +msgid "Upload New Photos" msgstr "" -#: ../../Zotlabs/Module/Item.php:1387 -#, php-format -msgid "You have reached your limit of %1$.0f top level posts." +#: ../../include/network.php:1726 ../../include/network.php:1727 +msgid "Friendica" msgstr "" -#: ../../Zotlabs/Module/Item.php:1394 -#, php-format -msgid "You have reached your limit of %1$.0f webpages." +#: ../../include/network.php:1728 +msgid "OStatus" msgstr "" -#: ../../Zotlabs/Module/Ping.php:337 -msgid "sent you a private message" +#: ../../include/network.php:1729 +msgid "GNU-Social" msgstr "" -#: ../../Zotlabs/Module/Ping.php:393 -msgid "added your channel" +#: ../../include/network.php:1730 +msgid "RSS/Atom" msgstr "" -#: ../../Zotlabs/Module/Ping.php:418 -msgid "requires approval" +#: ../../include/network.php:1733 +msgid "Diaspora" msgstr "" -#: ../../Zotlabs/Module/Ping.php:428 -msgid "g A l F d" +#: ../../include/network.php:1734 +msgid "Facebook" msgstr "" -#: ../../Zotlabs/Module/Ping.php:446 -msgid "[today]" +#: ../../include/network.php:1735 +msgid "Zot" msgstr "" -#: ../../Zotlabs/Module/Ping.php:456 -msgid "posted an event" +#: ../../include/network.php:1736 +msgid "LinkedIn" msgstr "" -#: ../../Zotlabs/Module/Ping.php:490 -msgid "shared a file with you" +#: ../../include/network.php:1737 +msgid "XMPP/IM" msgstr "" -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Private forum" +#: ../../include/network.php:1738 +msgid "MySpace" msgstr "" -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Public forum" +#: ../../include/activities.php:42 +msgid " and " msgstr "" -#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 -msgid "Invalid item." +#: ../../include/activities.php:50 +msgid "public profile" msgstr "" -#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77 -#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157 -#: ../../Zotlabs/Module/Display.php:174 ../../Zotlabs/Module/Display.php:180 -#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185 -#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132 -msgid "Page not found." +#: ../../include/activities.php:59 +#, php-format +msgid "%1$s changed %2$s to “%3$s”" msgstr "" -#: ../../Zotlabs/Module/Page.php:173 -msgid "" -"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " -"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, " -"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " -"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse " -"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " -"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +#: ../../include/activities.php:60 +#, php-format +msgid "Visit %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:81 ../../Zotlabs/Module/Defperms.php:67 -msgid "Could not access contact record." +#: ../../include/activities.php:63 +#, php-format +msgid "%1$s has an updated %2$s, changing %3$s." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:112 -msgid "Could not locate selected profile." -msgstr "" +#: ../../include/contact_widgets.php:11 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Connedit.php:256 -msgid "Connection updated." +#: ../../include/contact_widgets.php:16 ../../Zotlabs/Module/Admin/Site.php:293 +msgid "Advanced" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:258 -msgid "Failed to update connection record." +#: ../../include/contact_widgets.php:19 +msgid "Find Channels" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:312 -msgid "is now connected to" +#: ../../include/contact_widgets.php:20 +msgid "Enter name or interest" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:437 -msgid "Could not access address book record." +#: ../../include/contact_widgets.php:21 +msgid "Connect/Follow" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489 -msgid "Refresh failed - channel is currently unavailable." +#: ../../include/contact_widgets.php:22 +msgid "Examples: Robert Morgenstein, Fishing" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513 -#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531 -#: ../../Zotlabs/Module/Connedit.php:544 -msgid "Unable to set address book parameters." +#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:416 +#: ../../Zotlabs/Module/Directory.php:421 +#: ../../Zotlabs/Module/Connections.php:358 +msgid "Find" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:568 -msgid "Connection has been removed." +#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Directory.php:420 +#: ../../Zotlabs/Module/Suggest.php:79 +msgid "Channel Suggestions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:343 -#: ../../addon/openclipatar/openclipatar.php:57 -#: ../../include/conversation.php:1038 ../../include/nav.php:110 -msgid "View Profile" +#: ../../include/contact_widgets.php:26 +msgid "Random Profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:611 -#, php-format -msgid "View %s's profile" +#: ../../include/contact_widgets.php:27 +msgid "Invite Friends" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:615 -msgid "Refresh Permissions" +#: ../../include/contact_widgets.php:29 +msgid "Advanced example: name=fred and country=iceland" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:618 -msgid "Fetch updated permissions" +#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:99 +#: ../../include/contact_widgets.php:142 ../../include/contact_widgets.php:187 +#: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31 +msgid "Everything" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:622 -msgid "Refresh Photo" +#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139 +#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409 +#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511 +#: ../../include/taxonomy.php:532 ../../Zotlabs/Widget/Appcategories.php:43 +#: ../../Zotlabs/Module/Cdav.php:1093 +msgid "Categories" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:625 -msgid "Fetch updated photo" +#: ../../include/contact_widgets.php:218 +msgid "Common Connections" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:629 ../../include/conversation.php:1048 -msgid "Recent Activity" +#: ../../include/contact_widgets.php:222 +#, php-format +msgid "View all %d common connections" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:632 -msgid "View recent posts and comments" +#: ../../include/language.php:436 +msgid "Select an alternate language" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:639 -msgid "Block (or Unblock) all communications with this connection" +#: ../../include/import.php:28 +msgid "Unable to import a removed channel." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:640 -msgid "This connection is blocked!" +#: ../../include/import.php:54 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:644 -msgid "Unignore" +#: ../../include/import.php:120 +msgid "Cloned channel not found. Import failed." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:647 -msgid "Ignore (or Unignore) all inbound communications from this connection" +#: ../../include/nav.php:90 +msgid "Remote authentication" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:648 -msgid "This connection is ignored!" +#: ../../include/nav.php:90 +msgid "Click to authenticate to your home hub" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:652 -msgid "Unarchive" +#: ../../include/nav.php:96 ../../Zotlabs/Module/Manage.php:170 +#: ../../Zotlabs/Lib/Apps.php:336 +msgid "Channel Manager" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:652 -msgid "Archive" +#: ../../include/nav.php:96 +msgid "Manage your channels" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:655 -msgid "" -"Archive (or Unarchive) this connection - mark channel dead but keep content" +#: ../../include/nav.php:99 ../../include/group.php:320 +#: ../../Zotlabs/Widget/Activity_filter.php:41 +#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153 +#: ../../Zotlabs/Lib/Group.php:324 ../../Zotlabs/Lib/Apps.php:363 +msgid "Privacy Groups" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:656 -msgid "This connection is archived!" +#: ../../include/nav.php:99 +msgid "Manage your privacy groups" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:660 -msgid "Unhide" +#: ../../include/nav.php:101 ../../Zotlabs/Widget/Settings_menu.php:61 +#: ../../Zotlabs/Widget/Newmember.php:53 +#: ../../Zotlabs/Module/Admin/Themes.php:125 +#: ../../Zotlabs/Module/Admin/Addons.php:345 ../../Zotlabs/Lib/Apps.php:338 +msgid "Settings" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:660 -msgid "Hide" +#: ../../include/nav.php:101 +msgid "Account/Channel Settings" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:663 -msgid "Hide or Unhide this connection from your other connections" +#: ../../include/nav.php:107 ../../include/nav.php:136 +#: ../../include/nav.php:155 ../../boot.php:1673 +msgid "Logout" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:664 -msgid "This connection is hidden!" +#: ../../include/nav.php:107 ../../include/nav.php:136 +msgid "End this session" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:671 -msgid "Delete this connection" +#: ../../include/nav.php:110 +msgid "Your profile page" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:679 -msgid "Fetch Vcard" +#: ../../include/nav.php:113 ../../include/channel.php:1426 +#: ../../Zotlabs/Module/Profiles.php:830 +msgid "Edit Profiles" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:682 -msgid "Fetch electronic calling card for this connection" +#: ../../include/nav.php:113 +msgid "Manage/Edit profiles" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:693 -msgid "Open Individual Permissions section by default" +#: ../../include/nav.php:115 ../../Zotlabs/Widget/Newmember.php:35 +msgid "Edit your profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:716 -msgid "Affinity" +#: ../../include/nav.php:122 ../../include/nav.php:126 +#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1674 +msgid "Login" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:719 -msgid "Open Set Affinity section by default" +#: ../../include/nav.php:122 ../../include/nav.php:126 +msgid "Sign in" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:30 -msgid "Me" +#: ../../include/nav.php:153 +msgid "Take me home" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:31 -msgid "Family" +#: ../../include/nav.php:155 +msgid "Log me out of this site" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:33 -msgid "Acquaintances" +#: ../../include/nav.php:160 ../../Zotlabs/Module/Register.php:293 +#: ../../boot.php:1654 +msgid "Register" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:756 -msgid "Filter" +#: ../../include/nav.php:160 +msgid "Create an account" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:759 -msgid "Open Custom Filter section by default" +#: ../../include/nav.php:172 +msgid "Help and documentation" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:796 -msgid "Approve this connection" +#: ../../include/nav.php:186 +msgid "Search site @name, !forum, #tag, ?docs, content" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:796 -msgid "Accept connection to allow communication" +#: ../../include/nav.php:192 ../../Zotlabs/Widget/Admin.php:55 +msgid "Admin" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:801 -msgid "Set Affinity" +#: ../../include/nav.php:192 +msgid "Site Setup and Configuration" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:804 -msgid "Set Profile" +#: ../../include/nav.php:326 ../../Zotlabs/Widget/Notifications.php:162 +#: ../../Zotlabs/Module/New_channel.php:157 +#: ../../Zotlabs/Module/New_channel.php:164 +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 +msgid "Loading" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:807 -msgid "Set Affinity & Profile" +#: ../../include/nav.php:332 +msgid "@name, !forum, #tag, ?doc, content" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:855 -msgid "This connection is unreachable from this location." +#: ../../include/nav.php:333 +msgid "Please wait..." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:856 -msgid "This connection may be unreachable from other channel locations." +#: ../../include/nav.php:339 +msgid "Add Apps" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:858 -msgid "Location independence is not supported by their network." +#: ../../include/nav.php:340 +msgid "Arrange Apps" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:864 -msgid "" -"This connection is unreachable from this location. Location independence is " -"not supported by their network." +#: ../../include/nav.php:341 +msgid "Toggle System Apps" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:254 -msgid "Connection Default Permissions" +#: ../../include/nav.php:423 ../../Zotlabs/Module/Admin/Channels.php:154 +msgid "Channel" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4323 -#, php-format -msgid "Connection: %s" +#: ../../include/nav.php:426 +msgid "Status Messages and Posts" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:255 -msgid "Apply these permissions automatically" +#: ../../include/nav.php:436 ../../Zotlabs/Module/Help.php:80 +msgid "About" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:868 -msgid "Connection requests will be approved without your interaction" +#: ../../include/nav.php:439 +msgid "Profile Details" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256 -msgid "Permission role" +#: ../../include/nav.php:454 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Storage/Browser.php:278 +msgid "Files" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:257 -msgid "Add permission role" +#: ../../include/nav.php:457 +msgid "Files and Storage" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:877 -msgid "This connection's primary address is" +#: ../../include/nav.php:479 ../../include/nav.php:482 +#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:329 +msgid "Chatrooms" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:878 -msgid "Available locations:" +#: ../../include/nav.php:492 ../../Zotlabs/Lib/Apps.php:328 +msgid "Bookmarks" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:261 -msgid "" -"The permissions indicated on this page will be applied to all new " -"connections." +#: ../../include/nav.php:495 +msgid "Saved Bookmarks" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:884 -msgid "Connection Tools" +#: ../../include/nav.php:503 ../../Zotlabs/Module/Cards.php:207 +#: ../../Zotlabs/Lib/Apps.php:325 +msgid "Cards" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:886 -msgid "Slide to adjust your degree of friendship" +#: ../../include/nav.php:506 +msgid "View Cards" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155 -#: ../../include/js_strings.php:20 -msgid "Rating" +#: ../../include/nav.php:514 ../../Zotlabs/Module/Articles.php:226 +#: ../../Zotlabs/Lib/Apps.php:324 +msgid "Articles" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:888 -msgid "Slide to adjust your rating" +#: ../../include/nav.php:517 +msgid "View Articles" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894 -msgid "Optionally explain your rating" +#: ../../include/nav.php:526 ../../Zotlabs/Module/Webpages.php:252 +#: ../../Zotlabs/Lib/Apps.php:340 +msgid "Webpages" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:891 -msgid "Custom Filter" +#: ../../include/nav.php:529 +msgid "View Webpages" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:892 -msgid "Only import posts with this text" +#: ../../include/nav.php:538 ../../Zotlabs/Widget/Wiki_list.php:15 +#: ../../Zotlabs/Module/Wiki.php:206 +msgid "Wikis" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:893 -msgid "Do not import posts with this text" +#: ../../include/nav.php:541 ../../Zotlabs/Lib/Apps.php:341 +msgid "Wiki" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:895 -msgid "This information is public!" +#: ../../include/auth.php:192 +msgid "Delegation session ended." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:900 -msgid "Connection Pending Approval" +#: ../../include/auth.php:196 +msgid "Logged out." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:905 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." +#: ../../include/auth.php:291 +msgid "Email validation is incomplete. Please check your email." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:912 -msgid "" -"Some permissions may be inherited from your channel's <a href=\"settings" -"\"><strong>privacy settings</strong></a>, which have higher priority than " -"individual settings. You can change those settings here but they wont have " -"any impact unless the inherited setting changes." +#: ../../include/auth.php:307 +msgid "Failed authentication" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:913 -msgid "Last update:" +#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:51 +#: ../../Zotlabs/Module/Profiles.php:736 +msgid "Miscellaneous" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:921 -msgid "Details" +#: ../../include/datetime.php:140 +msgid "Birthday" msgstr "" -#: ../../Zotlabs/Module/Chat.php:102 -msgid "Chatrooms App" +#: ../../include/datetime.php:140 +msgid "Age: " msgstr "" -#: ../../Zotlabs/Module/Chat.php:103 -msgid "Access Controlled Chatrooms" +#: ../../include/datetime.php:140 +msgid "YYYY-MM-DD or MM-DD" msgstr "" -#: ../../Zotlabs/Module/Chat.php:196 -msgid "Room not found" +#: ../../include/datetime.php:211 ../../Zotlabs/Module/Events.php:468 +#: ../../Zotlabs/Module/Events.php:473 ../../Zotlabs/Module/Appman.php:143 +#: ../../Zotlabs/Module/Appman.php:144 ../../Zotlabs/Module/Profiles.php:745 +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Required" msgstr "" -#: ../../Zotlabs/Module/Chat.php:212 -msgid "Leave Room" +#: ../../include/datetime.php:238 ../../boot.php:2605 +msgid "never" msgstr "" -#: ../../Zotlabs/Module/Chat.php:213 -msgid "Delete Room" +#: ../../include/datetime.php:244 +msgid "less than a second ago" msgstr "" -#: ../../Zotlabs/Module/Chat.php:214 -msgid "I am away right now" +#: ../../include/datetime.php:262 +#, php-format +msgctxt "e.g. 22 hours ago, 1 minute ago" +msgid "%1$d %2$s ago" msgstr "" -#: ../../Zotlabs/Module/Chat.php:215 -msgid "I am online" +#: ../../include/datetime.php:273 +msgctxt "relative_date" +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:276 +msgctxt "relative_date" +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:279 +msgctxt "relative_date" +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:282 +msgctxt "relative_date" +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:285 +msgctxt "relative_date" +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:288 +msgctxt "relative_date" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:291 +msgctxt "relative_date" +msgid "second" +msgid_plural "seconds" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/datetime.php:520 +#, php-format +msgid "%1$s's birthday" msgstr "" -#: ../../Zotlabs/Module/Chat.php:217 -msgid "Bookmark this room" +#: ../../include/datetime.php:521 +#, php-format +msgid "Happy Birthday %1$s" msgstr "" -#: ../../Zotlabs/Module/Chat.php:220 ../../Zotlabs/Module/Mail.php:245 -#: ../../Zotlabs/Module/Mail.php:366 ../../addon/hsse/hsse.php:134 -#: ../../include/conversation.php:1337 -msgid "Please enter a link URL:" +#: ../../include/follow.php:37 +msgid "Channel is blocked on this site." msgstr "" -#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:298 -#: ../../Zotlabs/Module/Mail.php:441 ../../Zotlabs/Lib/ThreadItem.php:810 -#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461 -msgid "Encrypt text" +#: ../../include/follow.php:42 +msgid "Channel location missing." msgstr "" -#: ../../Zotlabs/Module/Chat.php:240 -msgid "New Chatroom" +#: ../../include/follow.php:84 +msgid "Response from remote channel was incomplete." msgstr "" -#: ../../Zotlabs/Module/Chat.php:241 -msgid "Chatroom name" +#: ../../include/follow.php:96 +msgid "Premium channel - please visit:" msgstr "" -#: ../../Zotlabs/Module/Chat.php:242 -msgid "Expiration of chats (minutes)" +#: ../../include/follow.php:110 +msgid "Channel was deleted and no longer exists." msgstr "" -#: ../../Zotlabs/Module/Chat.php:258 -#, php-format -msgid "%1$s's Chatrooms" +#: ../../include/follow.php:166 +msgid "Remote channel or protocol unavailable." msgstr "" -#: ../../Zotlabs/Module/Chat.php:263 -msgid "No chatrooms available" +#: ../../include/follow.php:190 +msgid "Channel discovery failed." msgstr "" -#: ../../Zotlabs/Module/Chat.php:267 -msgid "Expiration" +#: ../../include/follow.php:202 +msgid "Protocol disabled." msgstr "" -#: ../../Zotlabs/Module/Chat.php:268 -msgid "min" +#: ../../include/follow.php:213 +msgid "Cannot connect to yourself." msgstr "" -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 -#: ../../include/features.php:361 ../../include/nav.php:446 -msgid "Photos" +#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:123 +msgid "channel" msgstr "" -#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:339 -#: ../../Zotlabs/Storage/Browser.php:278 ../../include/nav.php:454 -msgid "Files" +#: ../../include/conversation.php:169 +#, php-format +msgid "likes %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Module/Menu.php:67 -msgid "Unable to update menu." +#: ../../include/conversation.php:172 +#, php-format +msgid "doesn't like %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Module/Menu.php:78 -msgid "Unable to create menu." +#: ../../include/conversation.php:212 +#, php-format +msgid "%1$s is now connected with %2$s" msgstr "" -#: ../../Zotlabs/Module/Menu.php:160 ../../Zotlabs/Module/Menu.php:173 -msgid "Menu Name" +#: ../../include/conversation.php:247 +#, php-format +msgid "%1$s poked %2$s" msgstr "" -#: ../../Zotlabs/Module/Menu.php:160 -msgid "Unique name (not visible on webpage) - required" +#: ../../include/conversation.php:268 ../../Zotlabs/Module/Mood.php:76 +#, php-format +msgctxt "mood" +msgid "%1$s is %2$s" msgstr "" -#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 -msgid "Menu Title" +#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:468 +msgid "This is an unsaved preview" msgstr "" -#: ../../Zotlabs/Module/Menu.php:161 -msgid "Visible on webpage - leave empty for no title" +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Likes" msgstr "" -#: ../../Zotlabs/Module/Menu.php:162 -msgid "Allow Bookmarks" +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Dislikes" msgstr "" -#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221 -msgid "Menu may be used to store saved bookmarks" +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Agree" msgstr "" -#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:224 -msgid "Submit and proceed" +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Disagree" msgstr "" -#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2561 -msgid "Menus" +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Abstain" msgstr "" -#: ../../Zotlabs/Module/Menu.php:180 -msgid "Bookmarks allowed" +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Attending" msgstr "" -#: ../../Zotlabs/Module/Menu.php:182 -msgid "Delete this menu" +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Not attending" msgstr "" -#: ../../Zotlabs/Module/Menu.php:183 ../../Zotlabs/Module/Menu.php:218 -msgid "Edit menu contents" +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Might attend" msgstr "" -#: ../../Zotlabs/Module/Menu.php:184 -msgid "Edit this menu" +#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:178 +msgid "Select" msgstr "" -#: ../../Zotlabs/Module/Menu.php:200 -msgid "Menu could not be deleted." +#: ../../include/conversation.php:691 ../../include/conversation.php:736 +#: ../../Zotlabs/Module/Article_edit.php:128 +#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Module/Oauth.php:174 +#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Cdav.php:1079 +#: ../../Zotlabs/Module/Cdav.php:1390 ../../Zotlabs/Module/Webpages.php:257 +#: ../../Zotlabs/Module/Admin/Accounts.php:175 +#: ../../Zotlabs/Module/Admin/Channels.php:149 +#: ../../Zotlabs/Module/Admin/Profs.php:176 ../../Zotlabs/Module/Blocks.php:162 +#: ../../Zotlabs/Module/Editblock.php:139 +#: ../../Zotlabs/Module/Editlayout.php:138 +#: ../../Zotlabs/Module/Connections.php:306 +#: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Profiles.php:800 +#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Thing.php:267 +#: ../../Zotlabs/Module/Connedit.php:668 ../../Zotlabs/Module/Connedit.php:940 +#: ../../Zotlabs/Lib/Apps.php:558 ../../Zotlabs/Lib/ThreadItem.php:168 +#: ../../Zotlabs/Storage/Browser.php:297 +msgid "Delete" msgstr "" -#: ../../Zotlabs/Module/Menu.php:213 -msgid "Edit Menu" +#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:267 +msgid "Toggle Star Status" msgstr "" -#: ../../Zotlabs/Module/Menu.php:217 -msgid "Add or remove entries to this menu" +#: ../../include/conversation.php:700 ../../Zotlabs/Lib/ThreadItem.php:103 +msgid "Private Message" msgstr "" -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Menu name" +#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:278 +msgid "Message signature validated" msgstr "" -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Must be unique, only seen by you" +#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:279 +msgid "Message signature incorrect" msgstr "" -#: ../../Zotlabs/Module/Menu.php:220 -msgid "Menu title" +#: ../../include/conversation.php:735 +#: ../../Zotlabs/Module/Admin/Accounts.php:173 +#: ../../Zotlabs/Module/Connections.php:320 +msgid "Approve" msgstr "" -#: ../../Zotlabs/Module/Menu.php:220 -msgid "Menu title as seen by others" +#: ../../include/conversation.php:739 +#, php-format +msgid "View %s's profile @ %s" msgstr "" -#: ../../Zotlabs/Module/Menu.php:221 -msgid "Allow bookmarks" +#: ../../include/conversation.php:759 +msgid "Categories:" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2562 -msgid "Layouts" +#: ../../include/conversation.php:760 +msgid "Filed under:" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:347 -#: ../../include/nav.php:172 ../../include/nav.php:322 -#: ../../include/help.php:117 ../../include/help.php:125 -msgid "Help" +#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:401 +#, php-format +msgid "from %s" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:186 -msgid "Comanche page description language help" +#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:404 +#, php-format +msgid "last edited: %s" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:190 -msgid "Layout Description" +#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:405 +#, php-format +msgid "Expires: %s" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:195 -msgid "Download PDL file" +#: ../../include/conversation.php:785 +msgid "View in context" msgstr "" -#: ../../Zotlabs/Module/Notes.php:56 -msgid "Notes App" +#: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1076 +#: ../../Zotlabs/Lib/ThreadItem.php:469 +msgid "Please wait" msgstr "" -#: ../../Zotlabs/Module/Notes.php:57 -msgid "A simple notes app with a widget (note: notes are not encrypted)" +#: ../../include/conversation.php:886 +msgid "remove" msgstr "" -#: ../../Zotlabs/Module/Cloud.php:123 -msgid "Not found" +#: ../../include/conversation.php:890 +msgid "Loading..." msgstr "" -#: ../../Zotlabs/Module/Cloud.php:129 -msgid "Please refresh page" +#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:291 +msgid "Conversation Tools" msgstr "" -#: ../../Zotlabs/Module/Cloud.php:132 -msgid "Unknown error" +#: ../../include/conversation.php:892 +msgid "Delete Selected Items" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:24 -#: ../../Zotlabs/Module/Email_resend.php:12 -msgid "Token verification failed." +#: ../../include/conversation.php:935 +msgid "View Source" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:36 -msgid "Email Verification Required" +#: ../../include/conversation.php:945 +msgid "Follow Thread" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:37 -#, php-format -msgid "" -"A verification token was sent to your email address [%s]. Enter that token " -"here to complete the account verification step. Please allow a few minutes " -"for delivery, and check your spam folder if you do not see the message." +#: ../../include/conversation.php:954 +msgid "Unfollow Thread" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:38 -msgid "Resend Email" +#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:629 +msgid "Recent Activity" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:41 -msgid "Validation token" +#: ../../include/conversation.php:1058 ../../include/connections.php:110 +#: ../../include/channel.php:1506 ../../Zotlabs/Widget/Suggestions.php:46 +#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Module/Directory.php:353 +#: ../../Zotlabs/Module/Connections.php:326 ../../Zotlabs/Module/Suggest.php:71 +msgid "Connect" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:48 -msgid "Post not found." +#: ../../include/conversation.php:1068 +msgid "Edit Connection" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:204 -#: ../../include/bbcode.php:362 -msgid "post" +#: ../../include/conversation.php:1078 +msgid "Message" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146 -#: ../../include/text.php:2125 -msgid "comment" +#: ../../include/conversation.php:1088 ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Ratings.php:97 +msgid "Ratings" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:119 -#, php-format -msgid "%1$s tagged %2$s's %3$s with %4$s" +#: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199 +#: ../../Zotlabs/Lib/Apps.php:350 +msgid "Poke" msgstr "" -#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68 -msgid "This setting requires special processing and editing has been blocked." +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s likes this." msgstr "" -#: ../../Zotlabs/Module/Pconfig.php:57 -msgid "Configuration Editor" +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s doesn't like this." msgstr "" -#: ../../Zotlabs/Module/Pconfig.php:58 -msgid "" -"Warning: Changing some settings could render your channel inoperable. Please " -"leave this page unless you are comfortable with and knowledgeable about how " -"to correctly use this feature." -msgstr "" +#: ../../include/conversation.php:1216 +#, php-format +msgid "<span %1$s>%2$d people</span> like this." +msgid_plural "<span %1$s>%2$d people</span> like this." +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:35 -msgid "Affinity Tool settings updated." -msgstr "" +#: ../../include/conversation.php:1218 +#, php-format +msgid "<span %1$s>%2$d people</span> don't like this." +msgid_plural "<span %1$s>%2$d people</span> don't like this." +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:47 -msgid "" -"This app presents a slider control in your connection editor and also on " -"your network page. The slider represents your degree of friendship " -"(affinity) with each connection. It allows you to zoom in or out and display " -"conversations from only your closest friends or everybody in your stream." +#: ../../include/conversation.php:1224 +msgid "and" msgstr "" -#: ../../Zotlabs/Module/Affinity.php:52 -msgid "Affinity Tool App" -msgstr "" +#: ../../include/conversation.php:1227 +#, php-format +msgid ", and %d other people" +msgid_plural ", and %d other people" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:57 -msgid "" -"The numbers below represent the minimum and maximum slider default positions " -"for your network/stream page as a percentage." +#: ../../include/conversation.php:1228 +#, php-format +msgid "%s like this." msgstr "" -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "Default maximum affinity level" +#: ../../include/conversation.php:1228 +#, php-format +msgid "%s don't like this." msgstr "" -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "0-99 default 99" -msgstr "" +#: ../../include/conversation.php:1702 ../../include/taxonomy.php:659 +#: ../../include/channel.php:1669 ../../Zotlabs/Module/Photos.php:1135 +#: ../../Zotlabs/Lib/ThreadItem.php:236 +msgctxt "noun" +msgid "Like" +msgid_plural "Likes" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "Default minimum affinity level" -msgstr "" +#: ../../include/conversation.php:1705 ../../Zotlabs/Module/Photos.php:1140 +#: ../../Zotlabs/Lib/ThreadItem.php:241 +msgctxt "noun" +msgid "Dislike" +msgid_plural "Dislikes" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "0-99 - default 0" -msgstr "" +#: ../../include/conversation.php:1708 +msgctxt "noun" +msgid "Attending" +msgid_plural "Attending" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:76 -msgid "Persistent affinity levels" -msgstr "" +#: ../../include/conversation.php:1711 +msgctxt "noun" +msgid "Not Attending" +msgid_plural "Not Attending" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:76 -msgid "" -"If disabled the max and min levels will be reset to default after page reload" -msgstr "" +#: ../../include/conversation.php:1714 +msgctxt "noun" +msgid "Undecided" +msgid_plural "Undecided" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Affinity.php:84 -msgid "Affinity Tool Settings" -msgstr "" +#: ../../include/conversation.php:1717 +msgctxt "noun" +msgid "Agree" +msgid_plural "Agrees" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Defperms.php:189 -msgid "Default Permissions App" -msgstr "" +#: ../../include/conversation.php:1720 +msgctxt "noun" +msgid "Disagree" +msgid_plural "Disagrees" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Defperms.php:190 -msgid "Set custom default permissions for new connections" -msgstr "" +#: ../../include/conversation.php:1723 +msgctxt "noun" +msgid "Abstain" +msgid_plural "Abstains" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Defperms.php:262 -msgid "Automatic approval settings" +#: ../../include/selectors.php:18 +msgid "Profile to assign new connections" msgstr "" -#: ../../Zotlabs/Module/Defperms.php:270 -msgid "" -"Some individual permissions may have been preset or locked based on your " -"channel type and privacy settings." +#: ../../include/selectors.php:41 +msgid "Frequently" msgstr "" -#: ../../Zotlabs/Module/Authorize.php:17 -msgid "Unknown App" +#: ../../include/selectors.php:42 +msgid "Hourly" msgstr "" -#: ../../Zotlabs/Module/Authorize.php:29 -msgid "Authorize" +#: ../../include/selectors.php:43 +msgid "Twice daily" msgstr "" -#: ../../Zotlabs/Module/Authorize.php:30 -#, php-format -msgid "Do you authorize the app %s to access your channel data?" +#: ../../include/selectors.php:44 +msgid "Daily" msgstr "" -#: ../../Zotlabs/Module/Authorize.php:32 -msgid "Allow" +#: ../../include/selectors.php:45 +msgid "Weekly" msgstr "" -#: ../../Zotlabs/Module/Group.php:45 -msgid "Privacy group created." +#: ../../include/selectors.php:46 +msgid "Monthly" msgstr "" -#: ../../Zotlabs/Module/Group.php:48 -msgid "Could not create privacy group." +#: ../../include/selectors.php:60 +msgid "Currently Male" msgstr "" -#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:213 -#: ../../include/items.php:4290 -msgid "Privacy group not found." +#: ../../include/selectors.php:60 +msgid "Currently Female" msgstr "" -#: ../../Zotlabs/Module/Group.php:80 -msgid "Privacy group updated." +#: ../../include/selectors.php:60 +msgid "Mostly Male" msgstr "" -#: ../../Zotlabs/Module/Group.php:106 -msgid "Privacy Groups App" +#: ../../include/selectors.php:60 +msgid "Mostly Female" msgstr "" -#: ../../Zotlabs/Module/Group.php:107 -msgid "Management of privacy groups" +#: ../../include/selectors.php:60 +msgid "Transgender" msgstr "" -#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153 -#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Lib/Group.php:324 -#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../include/nav.php:99 -#: ../../include/group.php:320 -msgid "Privacy Groups" +#: ../../include/selectors.php:60 +msgid "Intersex" msgstr "" -#: ../../Zotlabs/Module/Group.php:142 -msgid "Add Group" +#: ../../include/selectors.php:60 +msgid "Transsexual" msgstr "" -#: ../../Zotlabs/Module/Group.php:146 -msgid "Privacy group name" +#: ../../include/selectors.php:60 +msgid "Hermaphrodite" msgstr "" -#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256 -msgid "Members are visible to other channels" +#: ../../include/selectors.php:60 ../../include/channel.php:1614 +msgid "Neuter" msgstr "" -#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 -msgid "Members" +#: ../../include/selectors.php:60 ../../include/channel.php:1616 +msgid "Non-specific" msgstr "" -#: ../../Zotlabs/Module/Group.php:182 -msgid "Privacy group removed." +#: ../../include/selectors.php:60 +msgid "Undecided" msgstr "" -#: ../../Zotlabs/Module/Group.php:185 -msgid "Unable to remove privacy group." +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Males" msgstr "" -#: ../../Zotlabs/Module/Group.php:251 -#, php-format -msgid "Privacy Group: %s" +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Females" msgstr "" -#: ../../Zotlabs/Module/Group.php:253 -msgid "Privacy group name: " +#: ../../include/selectors.php:96 +msgid "Gay" msgstr "" -#: ../../Zotlabs/Module/Group.php:258 -msgid "Delete Group" +#: ../../include/selectors.php:96 +msgid "Lesbian" msgstr "" -#: ../../Zotlabs/Module/Group.php:269 -msgid "Group members" +#: ../../include/selectors.php:96 +msgid "No Preference" msgstr "" -#: ../../Zotlabs/Module/Group.php:271 -msgid "Not in this group" +#: ../../include/selectors.php:96 +msgid "Bisexual" msgstr "" -#: ../../Zotlabs/Module/Group.php:303 -msgid "Click a channel to toggle membership" +#: ../../include/selectors.php:96 +msgid "Autosexual" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184 -#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659 -msgid "Profile not found." +#: ../../include/selectors.php:96 +msgid "Abstinent" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:44 -msgid "Profile deleted." +#: ../../include/selectors.php:96 +msgid "Virgin" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 -msgid "Profile-" +#: ../../include/selectors.php:96 +msgid "Deviant" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 -msgid "New profile created." +#: ../../include/selectors.php:96 +msgid "Fetish" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:111 -msgid "Profile unavailable to clone." +#: ../../include/selectors.php:96 +msgid "Oodles" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:146 -msgid "Profile unavailable to export." +#: ../../include/selectors.php:96 +msgid "Nonsexual" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:252 -msgid "Profile Name is required." +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Single" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:459 -msgid "Marital Status" +#: ../../include/selectors.php:134 +msgid "Lonely" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:463 -msgid "Romantic Partner" +#: ../../include/selectors.php:134 +msgid "Available" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 -msgid "Likes" +#: ../../include/selectors.php:134 +msgid "Unavailable" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 -msgid "Dislikes" +#: ../../include/selectors.php:134 +msgid "Has crush" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 -msgid "Work/Employment" +#: ../../include/selectors.php:134 +msgid "Infatuated" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:478 -msgid "Religion" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Dating" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:482 -msgid "Political Views" +#: ../../include/selectors.php:134 +msgid "Unfaithful" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:486 -#: ../../addon/openid/MysqlProvider.php:74 -msgid "Gender" +#: ../../include/selectors.php:134 +msgid "Sex Addict" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:490 -msgid "Sexual Preference" +#: ../../include/selectors.php:134 ../../include/channel.php:493 +#: ../../include/channel.php:494 ../../include/channel.php:501 +#: ../../Zotlabs/Widget/Affinity.php:32 +#: ../../Zotlabs/Module/Settings/Channel.php:70 +#: ../../Zotlabs/Module/Settings/Channel.php:74 +#: ../../Zotlabs/Module/Settings/Channel.php:75 +#: ../../Zotlabs/Module/Settings/Channel.php:78 +#: ../../Zotlabs/Module/Settings/Channel.php:89 +#: ../../Zotlabs/Module/Connedit.php:725 +msgid "Friends" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:494 -msgid "Homepage" +#: ../../include/selectors.php:134 +msgid "Friends/Benefits" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:498 -msgid "Interests" +#: ../../include/selectors.php:134 +msgid "Casual" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:594 -msgid "Profile updated." +#: ../../include/selectors.php:134 +msgid "Engaged" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:678 -msgid "Hide your connections list from viewers of this profile" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Married" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:722 -msgid "Edit Profile Details" +#: ../../include/selectors.php:134 +msgid "Imaginarily married" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:724 -msgid "View this profile" +#: ../../include/selectors.php:134 +msgid "Partners" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:725 ../../Zotlabs/Module/Profiles.php:824 -#: ../../include/channel.php:1441 -msgid "Edit visibility" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Cohabiting" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Profile Tools" +#: ../../include/selectors.php:134 +msgid "Common law" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:727 -msgid "Change cover photo" +#: ../../include/selectors.php:134 +msgid "Happy" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1411 -msgid "Change profile photo" +#: ../../include/selectors.php:134 +msgid "Not looking" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Create a new profile using these settings" +#: ../../include/selectors.php:134 +msgid "Swinger" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:730 -msgid "Clone this profile" +#: ../../include/selectors.php:134 +msgid "Betrayed" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:731 -msgid "Delete this profile" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Separated" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:732 -msgid "Add profile things" +#: ../../include/selectors.php:134 +msgid "Unstable" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:733 -msgid "Personal" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Divorced" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Relationship" +#: ../../include/selectors.php:134 +msgid "Imaginarily divorced" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:736 ../../Zotlabs/Widget/Newmember.php:51 -#: ../../include/datetime.php:58 -msgid "Miscellaneous" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Widowed" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:738 -msgid "Import profile from file" +#: ../../include/selectors.php:134 +msgid "Uncertain" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:739 -msgid "Export profile to file" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "It's complicated" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:740 -msgid "Your gender" +#: ../../include/selectors.php:134 +msgid "Don't care" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:741 -msgid "Marital status" +#: ../../include/selectors.php:134 +msgid "Ask me" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:742 -msgid "Sexual preference" +#: ../../include/connections.php:133 +msgid "New window" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:745 -msgid "Profile name" +#: ../../include/connections.php:134 +msgid "Open the selected location in a different window or browser tab" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:747 -msgid "This is your default profile." +#: ../../include/group.php:22 ../../Zotlabs/Lib/Group.php:28 +msgid "" +"A deleted group with this name was revived. Existing item permissions " +"<strong>may</strong> apply to this group and any future members. If this is " +"not what you intended, please create another group with a different name." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:749 -msgid "Your full name" +#: ../../include/group.php:264 ../../Zotlabs/Lib/Group.php:270 +msgid "Add new connections to this privacy group" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:750 -msgid "Title/Description" +#: ../../include/group.php:298 ../../Zotlabs/Lib/Group.php:302 +msgid "edit" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:753 -msgid "Street address" +#: ../../include/group.php:321 ../../Zotlabs/Lib/Group.php:325 +msgid "Edit group" +msgstr "" + +#: ../../include/group.php:322 ../../Zotlabs/Lib/Group.php:326 +msgid "Add privacy group" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:754 -msgid "Locality/City" +#: ../../include/group.php:323 ../../Zotlabs/Lib/Group.php:327 +msgid "Channels not in any privacy group" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:755 -msgid "Region/State" +#: ../../include/group.php:325 ../../Zotlabs/Widget/Savedsearch.php:84 +#: ../../Zotlabs/Lib/Group.php:329 +msgid "add" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:756 -msgid "Postal/Zip code" +#: ../../include/taxonomy.php:320 +msgid "Trending" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Who (if applicable)" +#: ../../include/taxonomy.php:320 ../../include/taxonomy.php:449 +#: ../../include/taxonomy.php:470 ../../Zotlabs/Widget/Tagcloud.php:22 +msgid "Tags" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +#: ../../include/taxonomy.php:550 +msgid "Keywords" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:763 -msgid "Since (date)" +#: ../../include/taxonomy.php:571 +msgid "have" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:766 -msgid "Tell us about yourself" +#: ../../include/taxonomy.php:571 +msgid "has" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:767 -#: ../../addon/openid/MysqlProvider.php:68 -msgid "Homepage URL" +#: ../../include/taxonomy.php:572 +msgid "want" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:768 -msgid "Hometown" +#: ../../include/taxonomy.php:572 +msgid "wants" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:769 -msgid "Political views" +#: ../../include/taxonomy.php:573 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "like" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:770 -msgid "Religious views" +#: ../../include/taxonomy.php:573 +msgid "likes" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Keywords used in directory listings" +#: ../../include/taxonomy.php:574 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "dislike" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Example: fishing photography software" +#: ../../include/taxonomy.php:574 +msgid "dislikes" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:774 -msgid "Musical interests" +#: ../../include/items.php:984 ../../include/items.php:1044 +msgid "(Unknown)" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:775 -msgid "Books, literature" +#: ../../include/items.php:1232 +msgid "Visible to anybody on the internet." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:776 -msgid "Television" +#: ../../include/items.php:1234 +msgid "Visible to you only." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:777 -msgid "Film/Dance/Culture/Entertainment" +#: ../../include/items.php:1236 +msgid "Visible to anybody in this network." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:778 -msgid "Hobbies/Interests" +#: ../../include/items.php:1238 +msgid "Visible to anybody authenticated." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:779 -msgid "Love/Romance" +#: ../../include/items.php:1240 +#, php-format +msgid "Visible to anybody on %s." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:781 -msgid "School/Education" +#: ../../include/items.php:1242 +msgid "Visible to all connections." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:782 -msgid "Contact information and social networks" +#: ../../include/items.php:1244 +msgid "Visible to approved connections." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:783 -msgid "My other channels" +#: ../../include/items.php:1246 +msgid "Visible to specific connections." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:785 -msgid "Communications" +#: ../../include/items.php:4296 ../../Zotlabs/Module/Group.php:61 +#: ../../Zotlabs/Module/Group.php:213 +msgid "Privacy group not found." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1437 -msgid "Profile Image" +#: ../../include/items.php:4312 +msgid "Privacy group is empty." msgstr "" -#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1418 -#: ../../include/nav.php:113 -msgid "Edit Profiles" +#: ../../include/items.php:4319 +#, php-format +msgid "Privacy group: %s" msgstr "" -#: ../../Zotlabs/Module/Go.php:21 -msgid "This page is available only to site members" +#: ../../include/items.php:4329 ../../Zotlabs/Module/Connedit.php:867 +#, php-format +msgid "Connection: %s" msgstr "" -#: ../../Zotlabs/Module/Go.php:27 -msgid "Welcome" +#: ../../include/items.php:4331 +msgid "Connection not found." msgstr "" -#: ../../Zotlabs/Module/Go.php:29 -msgid "What would you like to do?" +#: ../../include/items.php:4673 ../../Zotlabs/Module/Cover_photo.php:303 +msgid "female" msgstr "" -#: ../../Zotlabs/Module/Go.php:31 -msgid "" -"Please bookmark this page if you would like to return to it in the future" +#: ../../include/items.php:4674 ../../Zotlabs/Module/Cover_photo.php:304 +#, php-format +msgid "%1$s updated her %2$s" msgstr "" -#: ../../Zotlabs/Module/Go.php:35 -msgid "Upload a profile photo" +#: ../../include/items.php:4675 ../../Zotlabs/Module/Cover_photo.php:305 +msgid "male" msgstr "" -#: ../../Zotlabs/Module/Go.php:36 -msgid "Upload a cover photo" +#: ../../include/items.php:4676 ../../Zotlabs/Module/Cover_photo.php:306 +#, php-format +msgid "%1$s updated his %2$s" msgstr "" -#: ../../Zotlabs/Module/Go.php:37 -msgid "Edit your default profile" +#: ../../include/items.php:4678 ../../Zotlabs/Module/Cover_photo.php:308 +#, php-format +msgid "%1$s updated their %2$s" msgstr "" -#: ../../Zotlabs/Module/Go.php:38 ../../Zotlabs/Widget/Newmember.php:41 -msgid "View friend suggestions" +#: ../../include/items.php:4680 +msgid "profile photo" msgstr "" -#: ../../Zotlabs/Module/Go.php:39 -msgid "View the channel directory" +#: ../../include/items.php:4872 +#, php-format +msgid "[Edited %s]" msgstr "" -#: ../../Zotlabs/Module/Go.php:40 -msgid "View/edit your channel settings" +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Post" msgstr "" -#: ../../Zotlabs/Module/Go.php:41 -msgid "View the site or project documentation" +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Comment" msgstr "" -#: ../../Zotlabs/Module/Go.php:42 -msgid "Visit your channel homepage" +#: ../../include/account.php:36 +msgid "Not a valid email address" msgstr "" -#: ../../Zotlabs/Module/Go.php:43 -msgid "" -"View your connections and/or add somebody whose address you already know" +#: ../../include/account.php:38 +msgid "Your email domain is not among those allowed on this site" msgstr "" -#: ../../Zotlabs/Module/Go.php:44 -msgid "" -"View your personal stream (this may be empty until you add some connections)" +#: ../../include/account.php:44 +msgid "Your email address is already registered at this site." msgstr "" -#: ../../Zotlabs/Module/Go.php:52 -msgid "View the public stream. Warning: this content is not moderated" +#: ../../include/account.php:76 +msgid "An invitation is required." msgstr "" -#: ../../Zotlabs/Module/Editwebpage.php:139 -msgid "Page link" +#: ../../include/account.php:80 +msgid "Invitation could not be verified." msgstr "" -#: ../../Zotlabs/Module/Editwebpage.php:166 -msgid "Edit Webpage" +#: ../../include/account.php:156 +msgid "Please enter the required information." msgstr "" -#: ../../Zotlabs/Module/Manage.php:145 -msgid "Create a new channel" +#: ../../include/account.php:223 +msgid "Failed to store account information." msgstr "" -#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:336 -#: ../../include/nav.php:96 -msgid "Channel Manager" +#: ../../include/account.php:311 +#, php-format +msgid "Registration confirmation for %s" msgstr "" -#: ../../Zotlabs/Module/Manage.php:171 -msgid "Current Channel" +#: ../../include/account.php:380 +#, php-format +msgid "Registration request at %s" msgstr "" -#: ../../Zotlabs/Module/Manage.php:173 -msgid "Switch to one of your channels by selecting it." +#: ../../include/account.php:402 +msgid "your registration password" msgstr "" -#: ../../Zotlabs/Module/Manage.php:174 -msgid "Default Channel" +#: ../../include/account.php:408 ../../include/account.php:471 +#, php-format +msgid "Registration details for %s" msgstr "" -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Make Default" +#: ../../include/account.php:482 +msgid "Account approved." msgstr "" -#: ../../Zotlabs/Module/Manage.php:178 +#: ../../include/account.php:522 #, php-format -msgid "%d new messages" +msgid "Registration revoked for %s" msgstr "" -#: ../../Zotlabs/Module/Manage.php:179 -#, php-format -msgid "%d new introductions" +#: ../../include/account.php:805 ../../include/account.php:807 +msgid "Click here to upgrade." msgstr "" -#: ../../Zotlabs/Module/Manage.php:181 -msgid "Delegated Channel" +#: ../../include/account.php:813 +msgid "This action exceeds the limits set by your subscription plan." msgstr "" -#: ../../Zotlabs/Module/Cards.php:51 -msgid "Cards App" +#: ../../include/account.php:818 +msgid "This action is not available under your subscription plan." msgstr "" -#: ../../Zotlabs/Module/Cards.php:52 -msgid "Create personal planning cards" +#: ../../include/photo/photo_driver.php:367 +#: ../../Zotlabs/Module/Profile_photo.php:145 +#: ../../Zotlabs/Module/Profile_photo.php:282 +msgid "Profile Photos" msgstr "" -#: ../../Zotlabs/Module/Cards.php:112 -msgid "Add Card" +#: ../../include/attach.php:267 ../../include/attach.php:375 +msgid "Item was not found." msgstr "" -#: ../../Zotlabs/Module/Cards.php:207 ../../Zotlabs/Lib/Apps.php:325 -#: ../../include/nav.php:503 -msgid "Cards" +#: ../../include/attach.php:284 +msgid "Unknown error." msgstr "" -#: ../../Zotlabs/Module/Dirsearch.php:33 -msgid "This directory server requires an access token" +#: ../../include/attach.php:568 +msgid "No source file." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:21 -msgid "About this site" +#: ../../include/attach.php:590 +msgid "Cannot locate file to replace" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:22 -msgid "Site Name" +#: ../../include/attach.php:609 +msgid "Cannot locate file to revise/update" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:26 -msgid "Administrator" +#: ../../include/attach.php:751 +#, php-format +msgid "File exceeds size limit of %d" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:28 ../../Zotlabs/Module/Register.php:239 -msgid "Terms of Service" +#: ../../include/attach.php:772 +#, php-format +msgid "You have reached your limit of %1$.0f Mbytes attachment storage." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:29 -msgid "Software and Project information" +#: ../../include/attach.php:954 +msgid "File upload failed. Possible system limit or action terminated." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:30 -msgid "This site is powered by $Projectname" +#: ../../include/attach.php:983 +msgid "Stored file could not be verified. Upload failed." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:31 -msgid "" -"Federated and decentralised networking and identity services provided by Zot" +#: ../../include/attach.php:1057 ../../include/attach.php:1073 +msgid "Path not available." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Additional federated transport protocols:" +#: ../../include/attach.php:1122 ../../include/attach.php:1285 +msgid "Empty pathname" msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:36 -#, php-format -msgid "Version %s" +#: ../../include/attach.php:1148 +msgid "duplicate filename or path" +msgstr "" + +#: ../../include/attach.php:1173 +msgid "Path not found." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:37 -msgid "Project homepage" +#: ../../include/attach.php:1241 +msgid "mkdir failed." msgstr "" -#: ../../Zotlabs/Module/Siteinfo.php:38 -msgid "Developer homepage" +#: ../../include/attach.php:1245 +msgid "database storage failed." msgstr "" -#: ../../Zotlabs/Module/Ratings.php:70 -msgid "No ratings" +#: ../../include/attach.php:1291 +msgid "Empty path" msgstr "" -#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35 -#: ../../include/conversation.php:1088 -msgid "Ratings" +#: ../../include/bookmarks.php:34 +#, php-format +msgid "%1$s's bookmarks" msgstr "" -#: ../../Zotlabs/Module/Ratings.php:98 -msgid "Rating: " +#: ../../include/menu.php:118 ../../include/channel.php:1426 +#: ../../include/channel.php:1430 ../../Zotlabs/Widget/Cdav.php:138 +#: ../../Zotlabs/Widget/Cdav.php:175 ../../Zotlabs/Module/Article_edit.php:98 +#: ../../Zotlabs/Module/Group.php:252 ../../Zotlabs/Module/Card_edit.php:99 +#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Module/Editwebpage.php:142 +#: ../../Zotlabs/Module/Webpages.php:255 +#: ../../Zotlabs/Module/Admin/Profs.php:175 ../../Zotlabs/Module/Blocks.php:160 +#: ../../Zotlabs/Module/Editblock.php:114 +#: ../../Zotlabs/Module/Editlayout.php:114 +#: ../../Zotlabs/Module/Connections.php:298 +#: ../../Zotlabs/Module/Connections.php:339 +#: ../../Zotlabs/Module/Connections.php:359 ../../Zotlabs/Module/Menu.php:176 +#: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Thing.php:266 +#: ../../Zotlabs/Module/Wiki.php:211 ../../Zotlabs/Module/Wiki.php:384 +#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Lib/Apps.php:557 +#: ../../Zotlabs/Lib/ThreadItem.php:148 ../../Zotlabs/Storage/Browser.php:296 +msgid "Edit" msgstr "" -#: ../../Zotlabs/Module/Ratings.php:99 -msgid "Website: " +#: ../../include/bbcode.php:221 ../../include/bbcode.php:1232 +#: ../../include/bbcode.php:1235 ../../include/bbcode.php:1240 +#: ../../include/bbcode.php:1243 ../../include/bbcode.php:1246 +#: ../../include/bbcode.php:1249 ../../include/bbcode.php:1254 +#: ../../include/bbcode.php:1257 ../../include/bbcode.php:1262 +#: ../../include/bbcode.php:1265 ../../include/bbcode.php:1268 +#: ../../include/bbcode.php:1271 +msgid "Image/photo" msgstr "" -#: ../../Zotlabs/Module/Ratings.php:101 -msgid "Description: " +#: ../../include/bbcode.php:260 ../../include/bbcode.php:1282 +msgid "Encrypted content" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:48 -msgid "Webpages App" +#: ../../include/bbcode.php:292 +#, php-format +msgid "Install %1$s element %2$s" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:49 -msgid "Provide managed web pages on your channel" +#: ../../include/bbcode.php:296 +#, php-format +msgid "" +"This post contains an installable %s element, however you lack permissions " +"to install it on this site." msgstr "" -#: ../../Zotlabs/Module/Webpages.php:69 -msgid "Import Webpage Elements" +#: ../../include/bbcode.php:306 ../../Zotlabs/Module/Impel.php:43 +msgid "webpage" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:70 -msgid "Import selected" +#: ../../include/bbcode.php:309 ../../Zotlabs/Module/Impel.php:53 +msgid "layout" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:93 -msgid "Export Webpage Elements" +#: ../../include/bbcode.php:312 ../../Zotlabs/Module/Impel.php:48 +msgid "block" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:94 -msgid "Export selected" +#: ../../include/bbcode.php:315 ../../Zotlabs/Module/Impel.php:60 +msgid "menu" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:340 -#: ../../include/nav.php:526 -msgid "Webpages" +#: ../../include/bbcode.php:376 +msgid "card" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:263 -msgid "Actions" +#: ../../include/bbcode.php:378 +msgid "article" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:264 -msgid "Page Link" +#: ../../include/bbcode.php:380 ../../include/markdown.php:204 +#: ../../Zotlabs/Module/Tagger.php:77 +msgid "post" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:265 -msgid "Page Title" +#: ../../include/bbcode.php:384 ../../include/markdown.php:202 +#, php-format +msgid "%1$s wrote the following %2$s %3$s" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:295 -msgid "Invalid file type." +#: ../../include/bbcode.php:461 ../../include/bbcode.php:469 +msgid "Click to open/close" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:307 -msgid "Error opening zip file" +#: ../../include/bbcode.php:469 ../../include/markdown.php:251 +msgid "spoiler" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:318 -msgid "Invalid folder path." +#: ../../include/bbcode.php:482 +msgid "View article" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:345 -msgid "No webpage elements detected." +#: ../../include/bbcode.php:482 +msgid "View summary" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:420 -msgid "Import complete." +#: ../../include/bbcode.php:772 ../../include/bbcode.php:942 +#: ../../Zotlabs/Lib/NativeWikiPage.php:603 +msgid "Different viewers will see this text differently" msgstr "" -#: ../../Zotlabs/Module/Changeaddr.php:35 -msgid "" -"Channel name changes are not allowed within 48 hours of changing the account " -"password." +#: ../../include/bbcode.php:1220 +msgid "$1 wrote:" msgstr "" -#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:222 -#: ../../include/channel.php:655 -msgid "Reserved nickname. Please choose another." +#: ../../include/channel.php:43 +msgid "Unable to obtain identity information from database" msgstr "" -#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:227 -#: ../../include/channel.php:660 -msgid "" -"Nickname has unsupported characters or is already being used on this site." +#: ../../include/channel.php:76 +msgid "Empty name" msgstr "" -#: ../../Zotlabs/Module/Changeaddr.php:77 -msgid "Change channel nickname/address" +#: ../../include/channel.php:79 +msgid "Name too long" msgstr "" -#: ../../Zotlabs/Module/Changeaddr.php:78 -msgid "Any/all connections on other networks will be lost!" +#: ../../include/channel.php:196 +msgid "No account identifier" msgstr "" -#: ../../Zotlabs/Module/Changeaddr.php:80 -msgid "New channel address" +#: ../../include/channel.php:208 +msgid "Nickname is required." msgstr "" -#: ../../Zotlabs/Module/Changeaddr.php:81 -msgid "Rename Channel" +#: ../../include/channel.php:222 ../../include/channel.php:655 +#: ../../Zotlabs/Module/Changeaddr.php:46 +msgid "Reserved nickname. Please choose another." msgstr "" -#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 -msgid "Item is not editable" +#: ../../include/channel.php:227 ../../include/channel.php:660 +#: ../../Zotlabs/Module/Changeaddr.php:51 +msgid "" +"Nickname has unsupported characters or is already being used on this site." msgstr "" -#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 -msgid "Edit post" +#: ../../include/channel.php:287 +msgid "Unable to retrieve created identity" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:59 -msgid "Invalid message" +#: ../../include/channel.php:429 +msgid "Default Profile" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:93 -msgid "no results" +#: ../../include/channel.php:588 ../../include/channel.php:677 +msgid "Unable to retrieve modified identity" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:107 -msgid "channel sync processed" +#: ../../include/channel.php:1419 ../../Zotlabs/Module/Profiles.php:728 +msgid "Change profile photo" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:111 -msgid "queued" +#: ../../include/channel.php:1427 +msgid "Create New Profile" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:115 -msgid "posted" +#: ../../include/channel.php:1445 ../../Zotlabs/Module/Profiles.php:820 +msgid "Profile Image" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:119 -msgid "accepted for delivery" +#: ../../include/channel.php:1448 +msgid "Visible to everybody" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:123 -msgid "updated" +#: ../../include/channel.php:1449 ../../Zotlabs/Module/Profiles.php:725 +#: ../../Zotlabs/Module/Profiles.php:824 +msgid "Edit visibility" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:126 -msgid "update ignored" +#: ../../include/channel.php:1525 ../../include/channel.php:1653 +msgid "Gender:" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:129 -msgid "permission denied" +#: ../../include/channel.php:1527 ../../include/channel.php:1721 +msgid "Homepage:" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:133 -msgid "recipient not found" +#: ../../include/channel.php:1528 +msgid "Online Now" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:136 -msgid "mail recalled" +#: ../../include/channel.php:1581 +msgid "Change your profile photo" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:139 -msgid "duplicate mail received" +#: ../../include/channel.php:1612 +msgid "Trans" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:142 -msgid "mail delivered" +#: ../../include/channel.php:1651 ../../Zotlabs/Module/Settings/Channel.php:499 +msgid "Full Name:" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:162 -#, php-format -msgid "Delivery report for %1$s" +#: ../../include/channel.php:1658 +msgid "Like this channel" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:166 ../../Zotlabs/Widget/Wiki_pages.php:41 -#: ../../Zotlabs/Widget/Wiki_pages.php:98 -msgid "Options" +#: ../../include/channel.php:1682 +msgid "j F, Y" msgstr "" -#: ../../Zotlabs/Module/Dreport.php:167 -msgid "Redeliver" +#: ../../include/channel.php:1683 +msgid "j F" msgstr "" -#: ../../Zotlabs/Module/Sources.php:41 -msgid "Failed to create source. No channel selected." +#: ../../include/channel.php:1690 +msgid "Birthday:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:57 -msgid "Source created." +#: ../../include/channel.php:1694 ../../Zotlabs/Module/Directory.php:334 +msgid "Age:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:70 -msgid "Source updated." +#: ../../include/channel.php:1703 +#, php-format +msgid "for %1$d %2$s" msgstr "" -#: ../../Zotlabs/Module/Sources.php:88 -msgid "Sources App" +#: ../../include/channel.php:1715 +msgid "Tags:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:89 -msgid "Automatically import channel content from other channels or feeds" +#: ../../include/channel.php:1719 +msgid "Sexual Preference:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:101 -msgid "*" +#: ../../include/channel.php:1723 ../../Zotlabs/Module/Directory.php:350 +msgid "Hometown:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:367 -msgid "Channel Sources" +#: ../../include/channel.php:1725 +msgid "Political Views:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:108 -msgid "Manage remote sources of content for your channel." +#: ../../include/channel.php:1727 +msgid "Religion:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:119 -msgid "New Source" +#: ../../include/channel.php:1729 ../../Zotlabs/Module/Directory.php:352 +msgid "About:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:120 ../../Zotlabs/Module/Sources.php:154 -msgid "" -"Import all or selected content from the following channel into this channel " -"and distribute it according to your channel settings." +#: ../../include/channel.php:1731 +msgid "Hobbies/Interests:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 -msgid "Only import content with these words (one per line)" +#: ../../include/channel.php:1733 +msgid "Likes:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 -msgid "Leave blank to import all public content" +#: ../../include/channel.php:1735 +msgid "Dislikes:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:161 -msgid "Channel Name" +#: ../../include/channel.php:1737 +msgid "Contact information and Social Networks:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 -msgid "" -"Add the following categories to posts imported from this source (comma " -"separated)" +#: ../../include/channel.php:1739 +msgid "My other channels:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 -#: ../../Zotlabs/Module/Oauth.php:117 -msgid "Optional" +#: ../../include/channel.php:1741 +msgid "Musical interests:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 -msgid "Resend posts with this channel as author" +#: ../../include/channel.php:1743 +msgid "Books, literature:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 -msgid "Copyrights may apply" +#: ../../include/channel.php:1745 +msgid "Television:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:144 ../../Zotlabs/Module/Sources.php:174 -msgid "Source not found." +#: ../../include/channel.php:1747 +msgid "Film/dance/culture/entertainment:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:151 -msgid "Edit Source" +#: ../../include/channel.php:1749 +msgid "Love/Romance:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:152 -msgid "Delete Source" +#: ../../include/channel.php:1751 +msgid "Work/employment:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:182 -msgid "Source removed" +#: ../../include/channel.php:1753 +msgid "School/education:" msgstr "" -#: ../../Zotlabs/Module/Sources.php:184 -msgid "Unable to remove source." +#: ../../include/channel.php:1774 ../../Zotlabs/Module/Profperm.php:113 +#: ../../Zotlabs/Lib/Apps.php:361 +msgid "Profile" msgstr "" -#: ../../Zotlabs/Module/Like.php:56 -msgid "Like/Dislike" +#: ../../include/channel.php:1776 +msgid "Like this thing" msgstr "" -#: ../../Zotlabs/Module/Like.php:61 -msgid "This action is restricted to members." +#: ../../include/channel.php:1777 ../../Zotlabs/Module/Events.php:699 +msgid "Export" msgstr "" -#: ../../Zotlabs/Module/Like.php:62 -msgid "" -"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href=" -"\"register\">register as a new $Projectname member</a> to continue." +#: ../../include/channel.php:2215 ../../Zotlabs/Module/Cover_photo.php:310 +msgid "cover photo" +msgstr "" + +#: ../../include/channel.php:2483 ../../Zotlabs/Module/Rmagic.php:93 +#: ../../boot.php:1675 +msgid "Remote Authentication" msgstr "" -#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 -#: ../../Zotlabs/Module/Like.php:175 -msgid "Invalid request." +#: ../../include/channel.php:2484 ../../Zotlabs/Module/Rmagic.php:94 +msgid "Enter your channel address (e.g. channel@example.com)" msgstr "" -#: ../../Zotlabs/Module/Like.php:123 ../../include/conversation.php:122 -msgid "channel" +#: ../../include/channel.php:2485 ../../Zotlabs/Module/Rmagic.php:95 +msgid "Authenticate" msgstr "" -#: ../../Zotlabs/Module/Like.php:152 -msgid "thing" +#: ../../include/channel.php:2640 ../../Zotlabs/Module/Admin/Accounts.php:91 +#, php-format +msgid "Account '%s' deleted" msgstr "" -#: ../../Zotlabs/Module/Like.php:198 -msgid "Channel unavailable." +#: ../../include/acl_selectors.php:33 +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +msgid "Visible to your default audience" msgstr "" -#: ../../Zotlabs/Module/Like.php:246 -msgid "Previous action reversed." +#: ../../include/acl_selectors.php:88 ../../Zotlabs/Module/Lockview.php:117 +#: ../../Zotlabs/Module/Lockview.php:153 ../../Zotlabs/Module/Acl.php:121 +msgctxt "acl" +msgid "Profile" msgstr "" -#: ../../Zotlabs/Module/Like.php:447 ../../Zotlabs/Lib/Activity.php:2355 -#: ../../addon/diaspora/Receiver.php:1532 ../../addon/pubcrawl/as.php:1727 -#: ../../include/conversation.php:160 -#, php-format -msgid "%1$s likes %2$s's %3$s" +#: ../../include/acl_selectors.php:106 +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +msgid "Only me" msgstr "" -#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:2357 -#: ../../addon/pubcrawl/as.php:1729 ../../include/conversation.php:163 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" +#: ../../include/acl_selectors.php:113 +msgid "Who can see this?" msgstr "" -#: ../../Zotlabs/Module/Like.php:451 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" +#: ../../include/acl_selectors.php:114 +msgid "Custom selection" msgstr "" -#: ../../Zotlabs/Module/Like.php:453 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" +#: ../../include/acl_selectors.php:115 +msgid "" +"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit " +"the scope of \"Show\"." msgstr "" -#: ../../Zotlabs/Module/Like.php:455 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" +#: ../../include/acl_selectors.php:116 +msgid "Show" msgstr "" -#: ../../Zotlabs/Module/Like.php:457 ../../addon/diaspora/Receiver.php:2178 -#, php-format -msgid "%1$s is attending %2$s's %3$s" +#: ../../include/acl_selectors.php:117 +msgid "Don't show" msgstr "" -#: ../../Zotlabs/Module/Like.php:459 ../../addon/diaspora/Receiver.php:2180 +#: ../../include/acl_selectors.php:150 #, php-format -msgid "%1$s is not attending %2$s's %3$s" +msgid "" +"Post permissions %s cannot be changed %s after a post is shared.</br />These " +"permissions set who is allowed to view the post." msgstr "" -#: ../../Zotlabs/Module/Like.php:461 ../../addon/diaspora/Receiver.php:2182 -#, php-format -msgid "%1$s may attend %2$s's %3$s" +#: ../../include/oembed.php:153 +msgid "View PDF" msgstr "" -#: ../../Zotlabs/Module/Like.php:572 -msgid "Action completed." +#: ../../include/oembed.php:357 +msgid " by " msgstr "" -#: ../../Zotlabs/Module/Like.php:573 -msgid "Thank you." +#: ../../include/oembed.php:358 +msgid " on " msgstr "" -#: ../../Zotlabs/Module/Directory.php:116 -msgid "No default suggestions were found." +#: ../../include/oembed.php:387 +msgid "Embedded content" msgstr "" -#: ../../Zotlabs/Module/Directory.php:270 -#, php-format -msgid "%d rating" -msgid_plural "%d ratings" -msgstr[0] "" -msgstr[1] "" +#: ../../include/oembed.php:396 +msgid "Embedding disabled" +msgstr "" -#: ../../Zotlabs/Module/Directory.php:281 -msgid "Gender: " +#: ../../include/dir_fns.php:141 ../../Zotlabs/Lib/Libzotdir.php:160 +msgid "Directory Options" msgstr "" -#: ../../Zotlabs/Module/Directory.php:283 -msgid "Status: " +#: ../../include/dir_fns.php:143 ../../Zotlabs/Lib/Libzotdir.php:162 +msgid "Safe Mode" msgstr "" -#: ../../Zotlabs/Module/Directory.php:285 -msgid "Homepage: " +#: ../../include/dir_fns.php:144 ../../Zotlabs/Lib/Libzotdir.php:163 +msgid "Public Forums Only" msgstr "" -#: ../../Zotlabs/Module/Directory.php:334 ../../include/channel.php:1686 -msgid "Age:" +#: ../../include/dir_fns.php:145 ../../Zotlabs/Lib/Libzotdir.php:165 +msgid "This Website Only" msgstr "" -#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1513 -#: ../../include/event.php:62 ../../include/event.php:112 -msgid "Location:" +#: ../../include/zid.php:368 +#, php-format +msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" -#: ../../Zotlabs/Module/Directory.php:345 -msgid "Description:" +#: ../../include/message.php:41 +msgid "Unable to determine sender." msgstr "" -#: ../../Zotlabs/Module/Directory.php:350 ../../include/channel.php:1715 -msgid "Hometown:" +#: ../../include/message.php:80 +msgid "No recipient provided." msgstr "" -#: ../../Zotlabs/Module/Directory.php:352 ../../include/channel.php:1721 -msgid "About:" +#: ../../include/message.php:85 +msgid "[no subject]" msgstr "" -#: ../../Zotlabs/Module/Directory.php:353 ../../Zotlabs/Module/Suggest.php:71 -#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:46 -#: ../../include/conversation.php:1058 ../../include/channel.php:1498 -#: ../../include/connections.php:110 -msgid "Connect" +#: ../../include/message.php:214 +msgid "Stored post could not be verified." msgstr "" -#: ../../Zotlabs/Module/Directory.php:354 -msgid "Public Forum:" +#: ../../Zotlabs/Widget/Activity_order.php:90 +msgid "Commented Date" msgstr "" -#: ../../Zotlabs/Module/Directory.php:357 -msgid "Keywords: " +#: ../../Zotlabs/Widget/Activity_order.php:94 +msgid "Order by last commented date" msgstr "" -#: ../../Zotlabs/Module/Directory.php:360 -msgid "Don't suggest" +#: ../../Zotlabs/Widget/Activity_order.php:97 +msgid "Posted Date" msgstr "" -#: ../../Zotlabs/Module/Directory.php:362 -msgid "Common connections (estimated):" +#: ../../Zotlabs/Widget/Activity_order.php:101 +msgid "Order by last posted date" msgstr "" -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Global Directory" +#: ../../Zotlabs/Widget/Activity_order.php:104 +msgid "Date Unthreaded" msgstr "" -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Local Directory" +#: ../../Zotlabs/Widget/Activity_order.php:108 +msgid "Order unthreaded by date" msgstr "" -#: ../../Zotlabs/Module/Directory.php:417 -msgid "Finding:" +#: ../../Zotlabs/Widget/Activity_order.php:123 +msgid "Stream Order" msgstr "" -#: ../../Zotlabs/Module/Directory.php:420 ../../Zotlabs/Module/Suggest.php:79 -#: ../../include/contact_widgets.php:24 -msgid "Channel Suggestions" +#: ../../Zotlabs/Widget/Archive.php:43 +msgid "Archives" msgstr "" -#: ../../Zotlabs/Module/Directory.php:422 -msgid "next page" +#: ../../Zotlabs/Widget/Wiki_pages.php:34 +#: ../../Zotlabs/Widget/Wiki_pages.php:91 +msgid "Add new page" msgstr "" -#: ../../Zotlabs/Module/Directory.php:422 -msgid "previous page" +#: ../../Zotlabs/Widget/Wiki_pages.php:41 +#: ../../Zotlabs/Widget/Wiki_pages.php:98 ../../Zotlabs/Module/Dreport.php:166 +msgid "Options" msgstr "" -#: ../../Zotlabs/Module/Directory.php:423 -msgid "Sort options" +#: ../../Zotlabs/Widget/Wiki_pages.php:85 +msgid "Wiki Pages" msgstr "" -#: ../../Zotlabs/Module/Directory.php:424 -msgid "Alphabetic" +#: ../../Zotlabs/Widget/Wiki_pages.php:96 +msgid "Page name" msgstr "" -#: ../../Zotlabs/Module/Directory.php:425 -msgid "Reverse Alphabetic" +#: ../../Zotlabs/Widget/Album.php:78 ../../Zotlabs/Widget/Portfolio.php:87 +#: ../../Zotlabs/Module/Embedphotos.php:168 ../../Zotlabs/Module/Photos.php:784 +#: ../../Zotlabs/Module/Photos.php:1332 +msgid "View Photo" msgstr "" -#: ../../Zotlabs/Module/Directory.php:426 -msgid "Newest to Oldest" +#: ../../Zotlabs/Widget/Album.php:95 ../../Zotlabs/Widget/Portfolio.php:108 +#: ../../Zotlabs/Module/Embedphotos.php:184 ../../Zotlabs/Module/Photos.php:815 +msgid "Edit Album" msgstr "" -#: ../../Zotlabs/Module/Directory.php:427 -msgid "Oldest to Newest" +#: ../../Zotlabs/Widget/Album.php:97 ../../Zotlabs/Widget/Cdav.php:146 +#: ../../Zotlabs/Widget/Cdav.php:182 ../../Zotlabs/Widget/Portfolio.php:110 +#: ../../Zotlabs/Module/Embedphotos.php:186 +#: ../../Zotlabs/Module/Profile_photo.php:498 +#: ../../Zotlabs/Module/Cover_photo.php:429 ../../Zotlabs/Module/Photos.php:685 +#: ../../Zotlabs/Storage/Browser.php:398 +msgid "Upload" msgstr "" -#: ../../Zotlabs/Module/Directory.php:444 -msgid "No entries (some entries may be hidden)." +#: ../../Zotlabs/Widget/Tasklist.php:23 +msgid "Tasks" msgstr "" -#: ../../Zotlabs/Module/Xchan.php:10 -msgid "Xchan Lookup" +#: ../../Zotlabs/Widget/Pubsites.php:12 ../../Zotlabs/Module/Pubsites.php:24 +msgid "Public Hubs" msgstr "" -#: ../../Zotlabs/Module/Xchan.php:13 -msgid "Lookup xchan beginning with (or webbie): " +#: ../../Zotlabs/Widget/Conversations.php:17 +msgid "Received Messages" msgstr "" -#: ../../Zotlabs/Module/Suggest.php:40 -msgid "Suggest Channels App" +#: ../../Zotlabs/Widget/Conversations.php:21 +msgid "Sent Messages" msgstr "" -#: ../../Zotlabs/Module/Suggest.php:41 -msgid "" -"Suggestions for channels in the $Projectname network you might be interested " -"in" +#: ../../Zotlabs/Widget/Conversations.php:25 +msgid "Conversations" msgstr "" -#: ../../Zotlabs/Module/Suggest.php:54 -msgid "" -"No suggestions available. If this is a new site, please try again in 24 " -"hours." +#: ../../Zotlabs/Widget/Conversations.php:37 +msgid "No messages." msgstr "" -#: ../../Zotlabs/Module/Suggest.php:73 ../../Zotlabs/Widget/Suggestions.php:48 -msgid "Ignore/Hide" +#: ../../Zotlabs/Widget/Conversations.php:57 +msgid "Delete conversation" msgstr "" -#: ../../Zotlabs/Module/Oexchange.php:27 -msgid "Unable to find your hub." +#: ../../Zotlabs/Widget/Chatroom_members.php:11 +msgid "Chat Members" msgstr "" -#: ../../Zotlabs/Module/Oexchange.php:41 -msgid "Post successful." +#: ../../Zotlabs/Widget/Activity.php:50 +msgctxt "widget" +msgid "Activity" msgstr "" -#: ../../Zotlabs/Module/Mail.php:77 -msgid "Unable to lookup recipient." +#: ../../Zotlabs/Widget/Cdav.php:37 +msgid "Select Channel" msgstr "" -#: ../../Zotlabs/Module/Mail.php:84 -msgid "Unable to communicate with requested channel." +#: ../../Zotlabs/Widget/Cdav.php:42 +msgid "Read-write" msgstr "" -#: ../../Zotlabs/Module/Mail.php:91 -msgid "Cannot verify requested channel." +#: ../../Zotlabs/Widget/Cdav.php:43 +msgid "Read-only" msgstr "" -#: ../../Zotlabs/Module/Mail.php:109 -msgid "Selected channel has private message restrictions. Send failed." +#: ../../Zotlabs/Widget/Cdav.php:127 +msgid "Channel Calendar" msgstr "" -#: ../../Zotlabs/Module/Mail.php:164 -msgid "Messages" +#: ../../Zotlabs/Widget/Cdav.php:129 ../../Zotlabs/Widget/Cdav.php:143 +#: ../../Zotlabs/Module/Cdav.php:1078 +msgid "CalDAV Calendars" msgstr "" -#: ../../Zotlabs/Module/Mail.php:177 -msgid "message" +#: ../../Zotlabs/Widget/Cdav.php:131 +msgid "Shared CalDAV Calendars" msgstr "" -#: ../../Zotlabs/Module/Mail.php:218 -msgid "Message recalled." +#: ../../Zotlabs/Widget/Cdav.php:135 +msgid "Share this calendar" msgstr "" -#: ../../Zotlabs/Module/Mail.php:231 -msgid "Conversation removed." +#: ../../Zotlabs/Widget/Cdav.php:137 +msgid "Calendar name and color" msgstr "" -#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:367 -msgid "Expires YYYY-MM-DD HH:MM" +#: ../../Zotlabs/Widget/Cdav.php:139 +msgid "Create new CalDAV calendar" msgstr "" -#: ../../Zotlabs/Module/Mail.php:274 -msgid "Requested channel is not in this network" +#: ../../Zotlabs/Widget/Cdav.php:140 ../../Zotlabs/Widget/Cdav.php:178 +#: ../../Zotlabs/Module/Cdav.php:1082 ../../Zotlabs/Module/Cdav.php:1388 +#: ../../Zotlabs/Module/Webpages.php:254 +#: ../../Zotlabs/Module/New_channel.php:189 ../../Zotlabs/Module/Cards.php:113 +#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Profiles.php:798 +#: ../../Zotlabs/Module/Articles.php:117 ../../Zotlabs/Module/Menu.php:182 +#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Layouts.php:185 +#: ../../Zotlabs/Storage/Browser.php:282 ../../Zotlabs/Storage/Browser.php:396 +msgid "Create" msgstr "" -#: ../../Zotlabs/Module/Mail.php:282 -msgid "Send Private Message" +#: ../../Zotlabs/Widget/Cdav.php:141 +msgid "Calendar Name" msgstr "" -#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 -msgid "To:" +#: ../../Zotlabs/Widget/Cdav.php:142 +msgid "Calendar Tools" msgstr "" -#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 -msgid "Subject:" +#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1078 +msgid "Channel Calendars" msgstr "" -#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:434 -msgid "Attach file" +#: ../../Zotlabs/Widget/Cdav.php:144 +msgid "Import calendar" msgstr "" -#: ../../Zotlabs/Module/Mail.php:293 -msgid "Send" +#: ../../Zotlabs/Widget/Cdav.php:145 +msgid "Select a calendar to import to" msgstr "" -#: ../../Zotlabs/Module/Mail.php:296 ../../Zotlabs/Module/Mail.php:439 -#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456 -msgid "Set expiration date" +#: ../../Zotlabs/Widget/Cdav.php:172 +msgid "Addressbooks" msgstr "" -#: ../../Zotlabs/Module/Mail.php:397 -msgid "Delete message" +#: ../../Zotlabs/Widget/Cdav.php:174 +msgid "Addressbook name" msgstr "" -#: ../../Zotlabs/Module/Mail.php:398 -msgid "Delivery report" +#: ../../Zotlabs/Widget/Cdav.php:176 +msgid "Create new addressbook" msgstr "" -#: ../../Zotlabs/Module/Mail.php:399 -msgid "Recall message" +#: ../../Zotlabs/Widget/Cdav.php:177 +msgid "Addressbook Name" msgstr "" -#: ../../Zotlabs/Module/Mail.php:401 -msgid "Message has been recalled." +#: ../../Zotlabs/Widget/Cdav.php:179 +msgid "Addressbook Tools" msgstr "" -#: ../../Zotlabs/Module/Mail.php:419 -msgid "Delete Conversation" +#: ../../Zotlabs/Widget/Cdav.php:180 +msgid "Import addressbook" msgstr "" -#: ../../Zotlabs/Module/Mail.php:421 -msgid "" -"No secure communications available. You <strong>may</strong> be able to " -"respond from the sender's profile page." +#: ../../Zotlabs/Widget/Cdav.php:181 +msgid "Select an addressbook to import to" msgstr "" -#: ../../Zotlabs/Module/Mail.php:425 -msgid "Send Reply" +#: ../../Zotlabs/Widget/Savedsearch.php:75 +msgid "Remove term" msgstr "" -#: ../../Zotlabs/Module/Mail.php:430 -#, php-format -msgid "Your message for %s (%s):" +#: ../../Zotlabs/Widget/Suggestedchats.php:32 +msgid "Suggested Chatrooms" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12 -msgid "Public Hubs" +#: ../../Zotlabs/Widget/Settings_menu.php:32 +msgid "Account settings" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:27 -msgid "" -"The listed hubs allow public registration for the $Projectname network. All " -"hubs in the network are interlinked so membership on any of them conveys " -"membership in the network as a whole. Some hubs may require subscription or " -"provide tiered service plans. The hub itself <strong>may</strong> provide " -"additional details." +#: ../../Zotlabs/Widget/Settings_menu.php:38 +msgid "Channel settings" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Hub URL" +#: ../../Zotlabs/Widget/Settings_menu.php:46 +msgid "Display settings" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Access Type" +#: ../../Zotlabs/Widget/Settings_menu.php:53 +msgid "Manage locations" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Registration Policy" +#: ../../Zotlabs/Widget/Chatroom_list.php:20 +msgid "Overview" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Stats" +#: ../../Zotlabs/Widget/Suggestions.php:48 ../../Zotlabs/Module/Suggest.php:73 +msgid "Ignore/Hide" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Software" +#: ../../Zotlabs/Widget/Suggestions.php:53 +msgid "Suggestions" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:49 -msgid "Rate" +#: ../../Zotlabs/Widget/Suggestions.php:54 +msgid "See more..." msgstr "" -#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:288 -msgid "webpage" +#: ../../Zotlabs/Widget/Forums.php:100 +#: ../../Zotlabs/Widget/Activity_filter.php:73 +#: ../../Zotlabs/Widget/Notifications.php:119 +#: ../../Zotlabs/Widget/Notifications.php:120 +msgid "Forums" msgstr "" -#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:294 -msgid "block" +#: ../../Zotlabs/Widget/Bookmarkedchats.php:24 +msgid "Bookmarked Chatrooms" msgstr "" -#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:291 -msgid "layout" +#: ../../Zotlabs/Widget/Wiki_page_history.php:23 +#: ../../Zotlabs/Lib/NativeWikiPage.php:562 +msgctxt "wiki_history" +msgid "Message" msgstr "" -#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:297 -msgid "menu" +#: ../../Zotlabs/Widget/Wiki_page_history.php:24 +#: ../../Zotlabs/Lib/NativeWikiPage.php:563 +msgid "Date" msgstr "" -#: ../../Zotlabs/Module/Impel.php:185 -#, php-format -msgid "%s element installed" +#: ../../Zotlabs/Widget/Wiki_page_history.php:25 +#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 +msgid "Revert" msgstr "" -#: ../../Zotlabs/Module/Impel.php:188 -#, php-format -msgid "%s element installation failed" +#: ../../Zotlabs/Widget/Wiki_page_history.php:26 +#: ../../Zotlabs/Lib/NativeWikiPage.php:565 +msgid "Compare" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:94 -msgid "Select a bookmark folder" +#: ../../Zotlabs/Widget/Hq_controls.php:14 +msgid "HQ Control Panel" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:99 -msgid "Save Bookmark" +#: ../../Zotlabs/Widget/Hq_controls.php:17 +msgid "Create a new post" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:100 -msgid "URL of bookmark" +#: ../../Zotlabs/Widget/Mailmenu.php:13 +msgid "Private Mail Menu" msgstr "" -#: ../../Zotlabs/Module/Rbmark.php:105 -msgid "Or enter new bookmark folder name" +#: ../../Zotlabs/Widget/Mailmenu.php:15 +msgid "Combined View" msgstr "" -#: ../../Zotlabs/Module/Filer.php:52 -msgid "Enter a folder name" +#: ../../Zotlabs/Widget/Mailmenu.php:20 +msgid "Inbox" msgstr "" -#: ../../Zotlabs/Module/Filer.php:52 -msgid "or select an existing folder (doubleclick)" +#: ../../Zotlabs/Widget/Mailmenu.php:25 +msgid "Outbox" msgstr "" -#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 -msgid "Save to Folder" +#: ../../Zotlabs/Widget/Mailmenu.php:30 +msgid "New Message" msgstr "" -#: ../../Zotlabs/Module/Probe.php:18 -msgid "Remote Diagnostics App" +#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 +msgid "photo/image" msgstr "" -#: ../../Zotlabs/Module/Probe.php:19 -msgid "Perform diagnostics on remote channels" +#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:288 +msgid "Site" msgstr "" -#: ../../Zotlabs/Module/Register.php:52 -msgid "Maximum daily site registrations exceeded. Please try again tomorrow." +#: ../../Zotlabs/Widget/Admin.php:23 +#: ../../Zotlabs/Module/Admin/Accounts.php:167 +#: ../../Zotlabs/Module/Admin/Accounts.php:180 +#: ../../Zotlabs/Module/Admin.php:96 +msgid "Accounts" msgstr "" -#: ../../Zotlabs/Module/Register.php:58 -msgid "" -"Please indicate acceptance of the Terms of Service. Registration failed." +#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60 +msgid "Member registrations waiting for confirmation" msgstr "" -#: ../../Zotlabs/Module/Register.php:92 -msgid "Passwords do not match." +#: ../../Zotlabs/Widget/Admin.php:24 +#: ../../Zotlabs/Module/Admin/Channels.php:146 +#: ../../Zotlabs/Module/Admin.php:114 +msgid "Channels" msgstr "" -#: ../../Zotlabs/Module/Register.php:135 -msgid "Registration successful. Continue to create your first channel..." +#: ../../Zotlabs/Widget/Admin.php:25 ../../Zotlabs/Module/Admin/Security.php:93 +msgid "Security" msgstr "" -#: ../../Zotlabs/Module/Register.php:138 -msgid "" -"Registration successful. Please check your email for validation instructions." +#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:357 +msgid "Features" msgstr "" -#: ../../Zotlabs/Module/Register.php:145 -msgid "Your registration is pending approval by the site owner." +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Addons.php:343 +#: ../../Zotlabs/Module/Admin/Addons.php:441 +msgid "Addons" msgstr "" -#: ../../Zotlabs/Module/Register.php:148 -msgid "Your registration can not be processed." +#: ../../Zotlabs/Widget/Admin.php:28 ../../Zotlabs/Module/Admin/Themes.php:123 +#: ../../Zotlabs/Module/Admin/Themes.php:157 +msgid "Themes" msgstr "" -#: ../../Zotlabs/Module/Register.php:195 -msgid "Registration on this hub is disabled." +#: ../../Zotlabs/Widget/Admin.php:29 +msgid "Inspect queue" msgstr "" -#: ../../Zotlabs/Module/Register.php:204 -msgid "Registration on this hub is by approval only." +#: ../../Zotlabs/Widget/Admin.php:30 ../../Zotlabs/Module/Admin/Profs.php:168 +msgid "Profile Fields" msgstr "" -#: ../../Zotlabs/Module/Register.php:205 ../../Zotlabs/Module/Register.php:214 -msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" +#: ../../Zotlabs/Widget/Admin.php:31 +msgid "DB updates" msgstr "" -#: ../../Zotlabs/Module/Register.php:213 -msgid "Registration on this hub is by invitation only." +#: ../../Zotlabs/Widget/Admin.php:48 ../../Zotlabs/Widget/Admin.php:58 +#: ../../Zotlabs/Module/Admin/Logs.php:83 +msgid "Logs" msgstr "" -#: ../../Zotlabs/Module/Register.php:224 -msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." +#: ../../Zotlabs/Widget/Admin.php:56 +msgid "Addon Features" msgstr "" -#: ../../Zotlabs/Module/Register.php:245 +#: ../../Zotlabs/Widget/Activity_filter.php:36 #, php-format -msgid "I accept the %s for this website" +msgid "Show posts related to the %s privacy group" msgstr "" -#: ../../Zotlabs/Module/Register.php:252 -#, php-format -msgid "I am over %s years of age and accept the %s for this website" +#: ../../Zotlabs/Widget/Activity_filter.php:45 +msgid "Show my privacy groups" msgstr "" -#: ../../Zotlabs/Module/Register.php:257 -msgid "Your email address" +#: ../../Zotlabs/Widget/Activity_filter.php:66 +msgid "Show posts to this forum" msgstr "" -#: ../../Zotlabs/Module/Register.php:258 -msgid "Choose a password" +#: ../../Zotlabs/Widget/Activity_filter.php:77 +msgid "Show forums" msgstr "" -#: ../../Zotlabs/Module/Register.php:259 -msgid "Please re-enter your password" +#: ../../Zotlabs/Widget/Activity_filter.php:91 +msgid "Starred Posts" msgstr "" -#: ../../Zotlabs/Module/Register.php:260 -msgid "Please enter your invitation code" +#: ../../Zotlabs/Widget/Activity_filter.php:95 +msgid "Show posts that I have starred" msgstr "" -#: ../../Zotlabs/Module/Register.php:261 -msgid "Your Name" +#: ../../Zotlabs/Widget/Activity_filter.php:106 +msgid "Personal Posts" msgstr "" -#: ../../Zotlabs/Module/Register.php:261 -msgid "Real names are preferred." +#: ../../Zotlabs/Widget/Activity_filter.php:110 +msgid "Show posts that mention or involve me" msgstr "" -#: ../../Zotlabs/Module/Register.php:263 +#: ../../Zotlabs/Widget/Activity_filter.php:131 #, php-format -msgid "" -"Your nickname will be used to create an easy to remember channel address e." -"g. nickname%s" +msgid "Show posts that I have filed to %s" msgstr "" -#: ../../Zotlabs/Module/Register.php:264 -msgid "" -"Select a channel permission role for your usage needs and privacy " -"requirements." +#: ../../Zotlabs/Widget/Activity_filter.php:141 +msgid "Show filed post categories" msgstr "" -#: ../../Zotlabs/Module/Register.php:265 -msgid "no" +#: ../../Zotlabs/Widget/Activity_filter.php:155 +msgid "Panel search" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:165 +msgid "Filter by name" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:180 +msgid "Remove active filter" msgstr "" -#: ../../Zotlabs/Module/Register.php:265 -msgid "yes" +#: ../../Zotlabs/Widget/Activity_filter.php:196 +msgid "Stream Filters" msgstr "" -#: ../../Zotlabs/Module/Register.php:293 ../../boot.php:1656 -#: ../../include/nav.php:160 -msgid "Register" +#: ../../Zotlabs/Widget/Appstore.php:11 +msgid "App Collections" msgstr "" -#: ../../Zotlabs/Module/Register.php:294 -msgid "" -"This site requires email verification. After completing this form, please " -"check your email for further instructions." +#: ../../Zotlabs/Widget/Appstore.php:13 +msgid "Installed apps" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:194 -#: ../../Zotlabs/Module/Cover_photo.php:252 -msgid "Cover Photos" +#: ../../Zotlabs/Widget/Appstore.php:14 ../../Zotlabs/Module/Apps.php:50 +msgid "Available Apps" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:303 ../../include/items.php:4667 -msgid "female" +#: ../../Zotlabs/Widget/Eventstools.php:13 +msgid "Events Tools" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:304 ../../include/items.php:4668 -#, php-format -msgid "%1$s updated her %2$s" +#: ../../Zotlabs/Widget/Eventstools.php:14 +msgid "Export Calendar" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:305 ../../include/items.php:4669 -msgid "male" +#: ../../Zotlabs/Widget/Eventstools.php:15 +msgid "Import Calendar" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:306 ../../include/items.php:4670 -#, php-format -msgid "%1$s updated his %2$s" +#: ../../Zotlabs/Widget/Rating.php:51 +msgid "Rating Tools" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:308 ../../include/items.php:4672 -#, php-format -msgid "%1$s updated their %2$s" +#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 +msgid "Rate Me" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:310 ../../include/channel.php:2207 -msgid "cover photo" +#: ../../Zotlabs/Widget/Rating.php:60 +msgid "View Ratings" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:424 -msgid "Your cover photo may be visible to anybody on the internet" +#: ../../Zotlabs/Widget/Cover_photo.php:65 +msgid "Click to show more" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:428 -msgid "Change Cover Photo" +#: ../../Zotlabs/Widget/Follow.php:22 +#, php-format +msgid "You have %1$.0f of %2$.0f allowed connections." msgstr "" -#: ../../Zotlabs/Module/Help.php:23 -msgid "Documentation Search" +#: ../../Zotlabs/Widget/Follow.php:29 +msgid "Add New Connection" msgstr "" -#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:436 -msgid "About" +#: ../../Zotlabs/Widget/Follow.php:30 +msgid "Enter channel address" msgstr "" -#: ../../Zotlabs/Module/Help.php:82 -msgid "Administrators" +#: ../../Zotlabs/Widget/Follow.php:31 +msgid "Examples: bob@example.com, https://example.com/barbara" msgstr "" -#: ../../Zotlabs/Module/Help.php:83 -msgid "Developers" +#: ../../Zotlabs/Widget/Newmember.php:31 +msgid "Profile Creation" msgstr "" -#: ../../Zotlabs/Module/Help.php:84 -msgid "Tutorials" +#: ../../Zotlabs/Widget/Newmember.php:33 +msgid "Upload profile photo" msgstr "" -#: ../../Zotlabs/Module/Help.php:95 -msgid "$Projectname Documentation" +#: ../../Zotlabs/Widget/Newmember.php:34 +msgid "Upload cover photo" msgstr "" -#: ../../Zotlabs/Module/Help.php:96 -msgid "Contents" +#: ../../Zotlabs/Widget/Newmember.php:38 +msgid "Find and Connect with others" msgstr "" -#: ../../Zotlabs/Module/Display.php:396 -msgid "Article" +#: ../../Zotlabs/Widget/Newmember.php:40 +msgid "View the directory" msgstr "" -#: ../../Zotlabs/Module/Display.php:448 -msgid "Item has been removed." +#: ../../Zotlabs/Widget/Newmember.php:41 ../../Zotlabs/Module/Go.php:38 +msgid "View friend suggestions" msgstr "" -#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 -msgid "Tag removed" +#: ../../Zotlabs/Widget/Newmember.php:42 +msgid "Manage your connections" msgstr "" -#: ../../Zotlabs/Module/Tagrm.php:123 -msgid "Remove Item Tag" +#: ../../Zotlabs/Widget/Newmember.php:45 +msgid "Communicate" msgstr "" -#: ../../Zotlabs/Module/Tagrm.php:125 -msgid "Select a tag to remove: " +#: ../../Zotlabs/Widget/Newmember.php:47 +msgid "View your channel homepage" msgstr "" -#: ../../Zotlabs/Module/Network.php:109 -msgid "No such group" +#: ../../Zotlabs/Widget/Newmember.php:48 +msgid "View your network stream" msgstr "" -#: ../../Zotlabs/Module/Network.php:158 -msgid "No such channel" +#: ../../Zotlabs/Widget/Newmember.php:54 +msgid "Documentation" msgstr "" -#: ../../Zotlabs/Module/Network.php:242 -msgid "Privacy group is empty" +#: ../../Zotlabs/Widget/Newmember.php:57 +msgid "Missing Features?" msgstr "" -#: ../../Zotlabs/Module/Network.php:252 -msgid "Privacy group: " +#: ../../Zotlabs/Widget/Newmember.php:59 +msgid "Pin apps to navigation bar" msgstr "" -#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29 -msgid "Invalid channel." +#: ../../Zotlabs/Widget/Newmember.php:60 +msgid "Install more apps" msgstr "" -#: ../../Zotlabs/Module/Acl.php:360 -msgid "network" +#: ../../Zotlabs/Widget/Newmember.php:71 +msgid "View public stream" msgstr "" -#: ../../Zotlabs/Module/Home.php:72 ../../Zotlabs/Module/Home.php:80 -#: ../../Zotlabs/Lib/Enotify.php:66 ../../addon/opensearch/opensearch.php:42 -msgid "$Projectname" +#: ../../Zotlabs/Widget/Newmember.php:75 +#: ../../Zotlabs/Module/Settings/Display.php:205 +msgid "New Member Links" msgstr "" -#: ../../Zotlabs/Module/Home.php:90 -#, php-format -msgid "Welcome to %s" +#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:723 +msgid "Me" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:103 -msgid "File not found." +#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:724 +msgid "Family" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:152 -msgid "Permission Denied." +#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:726 +msgid "Acquaintances" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:185 -msgid "Edit file permissions" +#: ../../Zotlabs/Widget/Affinity.php:34 ../../Zotlabs/Module/Connections.php:97 +#: ../../Zotlabs/Module/Connections.php:111 +#: ../../Zotlabs/Module/Connedit.php:727 +msgid "All" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:197 -#: ../../addon/flashcards/Mod_Flashcards.php:217 -msgid "Set/edit permissions" +#: ../../Zotlabs/Widget/Affinity.php:54 +msgid "Refresh" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:198 -msgid "Include all files and sub folders" +#: ../../Zotlabs/Widget/Notifications.php:16 +msgid "New Network Activity" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:199 -msgid "Return to file list" +#: ../../Zotlabs/Widget/Notifications.php:17 +msgid "New Network Activity Notifications" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:201 -msgid "Copy/paste this code to attach file to a post" +#: ../../Zotlabs/Widget/Notifications.php:20 +msgid "View your network activity" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:202 -msgid "Copy/paste this URL to link file from a web page" +#: ../../Zotlabs/Widget/Notifications.php:23 +msgid "Mark all notifications read" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:204 -msgid "Share this file" +#: ../../Zotlabs/Widget/Notifications.php:26 +#: ../../Zotlabs/Widget/Notifications.php:45 +#: ../../Zotlabs/Widget/Notifications.php:152 +msgid "Show new posts only" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:205 -msgid "Show URL to this file" +#: ../../Zotlabs/Widget/Notifications.php:27 +#: ../../Zotlabs/Widget/Notifications.php:46 +#: ../../Zotlabs/Widget/Notifications.php:122 +#: ../../Zotlabs/Widget/Notifications.php:153 +msgid "Filter by name or address" msgstr "" -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Storage/Browser.php:411 -msgid "Show in your contacts shared folder" +#: ../../Zotlabs/Widget/Notifications.php:35 +msgid "New Home Activity" msgstr "" -#: ../../Zotlabs/Module/Common.php:14 -msgid "No channel." +#: ../../Zotlabs/Widget/Notifications.php:36 +msgid "New Home Activity Notifications" msgstr "" -#: ../../Zotlabs/Module/Common.php:45 -msgid "No connections in common." +#: ../../Zotlabs/Widget/Notifications.php:39 +msgid "View your home activity" msgstr "" -#: ../../Zotlabs/Module/Common.php:65 -msgid "View Common Connections" +#: ../../Zotlabs/Widget/Notifications.php:42 +#: ../../Zotlabs/Widget/Notifications.php:149 +msgid "Mark all notifications seen" msgstr "" -#: ../../Zotlabs/Module/Email_resend.php:30 -msgid "Email verification resent" +#: ../../Zotlabs/Widget/Notifications.php:54 +msgid "New Mails" msgstr "" -#: ../../Zotlabs/Module/Email_resend.php:33 -msgid "Unable to resend email verification message." +#: ../../Zotlabs/Widget/Notifications.php:55 +msgid "New Mails Notifications" msgstr "" -#: ../../Zotlabs/Module/Viewconnections.php:65 -msgid "No connections." +#: ../../Zotlabs/Widget/Notifications.php:58 +msgid "View your private mails" msgstr "" -#: ../../Zotlabs/Module/Viewconnections.php:83 -#, php-format -msgid "Visit %s's profile [%s]" +#: ../../Zotlabs/Widget/Notifications.php:61 +msgid "Mark all messages seen" msgstr "" -#: ../../Zotlabs/Module/Viewconnections.php:113 -msgid "View Connections" +#: ../../Zotlabs/Widget/Notifications.php:69 +msgid "New Events" msgstr "" -#: ../../Zotlabs/Module/Admin.php:97 -msgid "Blocked accounts" +#: ../../Zotlabs/Widget/Notifications.php:70 +msgid "New Events Notifications" msgstr "" -#: ../../Zotlabs/Module/Admin.php:98 -msgid "Expired accounts" +#: ../../Zotlabs/Widget/Notifications.php:73 +msgid "View events" msgstr "" -#: ../../Zotlabs/Module/Admin.php:99 -msgid "Expiring accounts" +#: ../../Zotlabs/Widget/Notifications.php:76 +msgid "Mark all events seen" msgstr "" -#: ../../Zotlabs/Module/Admin.php:120 -msgid "Message queues" +#: ../../Zotlabs/Widget/Notifications.php:84 +#: ../../Zotlabs/Module/Connections.php:164 +msgid "New Connections" msgstr "" -#: ../../Zotlabs/Module/Admin.php:134 -msgid "Your software should be updated" +#: ../../Zotlabs/Widget/Notifications.php:85 +msgid "New Connections Notifications" msgstr "" -#: ../../Zotlabs/Module/Admin.php:139 -msgid "Summary" +#: ../../Zotlabs/Widget/Notifications.php:88 +msgid "View all connections" msgstr "" -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Registered accounts" +#: ../../Zotlabs/Widget/Notifications.php:96 +msgid "New Files" msgstr "" -#: ../../Zotlabs/Module/Admin.php:143 -msgid "Pending registrations" +#: ../../Zotlabs/Widget/Notifications.php:97 +msgid "New Files Notifications" msgstr "" -#: ../../Zotlabs/Module/Admin.php:144 -msgid "Registered channels" +#: ../../Zotlabs/Widget/Notifications.php:104 +#: ../../Zotlabs/Widget/Notifications.php:105 +msgid "Notices" msgstr "" -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Active addons" +#: ../../Zotlabs/Widget/Notifications.php:108 +msgid "View all notices" msgstr "" -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Version" +#: ../../Zotlabs/Widget/Notifications.php:111 +msgid "Mark all notices seen" msgstr "" -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Repository version (master)" +#: ../../Zotlabs/Widget/Notifications.php:132 +msgid "New Registrations" msgstr "" -#: ../../Zotlabs/Module/Admin.php:148 -msgid "Repository version (dev)" +#: ../../Zotlabs/Widget/Notifications.php:133 +msgid "New Registrations Notifications" msgstr "" -#: ../../Zotlabs/Module/Service_limits.php:23 -msgid "No service class restrictions found." +#: ../../Zotlabs/Widget/Notifications.php:142 +#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 +msgid "Public Stream" msgstr "" -#: ../../Zotlabs/Module/Rate.php:156 -msgid "Website:" +#: ../../Zotlabs/Widget/Notifications.php:143 +msgid "Public Stream Notifications" msgstr "" -#: ../../Zotlabs/Module/Rate.php:159 -#, php-format -msgid "Remote Channel [%s] (not yet known on this site)" +#: ../../Zotlabs/Widget/Notifications.php:146 +msgid "View the public stream" msgstr "" -#: ../../Zotlabs/Module/Rate.php:160 -msgid "Rating (this information is public)" +#: ../../Zotlabs/Widget/Notifications.php:161 +msgid "Sorry, you have got no notifications at the moment" msgstr "" -#: ../../Zotlabs/Module/Rate.php:161 -msgid "Optionally explain your rating (this information is public)" +#: ../../Zotlabs/Module/Tokens.php:39 +#, php-format +msgid "This channel is limited to %d tokens" msgstr "" -#: ../../Zotlabs/Module/Card_edit.php:128 -msgid "Edit Card" +#: ../../Zotlabs/Module/Tokens.php:45 +msgid "Name and Password are required." msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:19 -msgid "No valid account found." +#: ../../Zotlabs/Module/Tokens.php:85 +msgid "Token saved." msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:33 -msgid "Password reset request issued. Check your email." +#: ../../Zotlabs/Module/Tokens.php:99 +msgid "Guest Access App" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 -#, php-format -msgid "Site Member (%s)" +#: ../../Zotlabs/Module/Tokens.php:100 +msgid "Create access tokens so that non-members can access private content" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 -#, php-format -msgid "Password reset requested at %s" +#: ../../Zotlabs/Module/Tokens.php:133 +msgid "" +"Use this form to create temporary access identifiers to share things with " +"non-members. These identities may be used in Access Control Lists and " +"visitors may login using these credentials to access private content." msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:68 +#: ../../Zotlabs/Module/Tokens.php:135 msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." +"You may also provide <em>dropbox</em> style access links to friends and " +"associates by adding the Login Password to any specific site URL as shown. " +"Examples:" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1685 -msgid "Password Reset" +#: ../../Zotlabs/Module/Tokens.php:170 +msgid "Guest Access Tokens" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:92 -msgid "Your password has been reset as requested." +#: ../../Zotlabs/Module/Tokens.php:177 +msgid "Login Name" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:93 -msgid "Your new password is" +#: ../../Zotlabs/Module/Tokens.php:178 +msgid "Login Password" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:94 -msgid "Save or copy your new password - and then" +#: ../../Zotlabs/Module/Tokens.php:179 +msgid "Expires (yyyy-mm-dd)" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:95 -msgid "click here to login" +#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 +msgid "Their Settings" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:96 -msgid "" -"Your password may be changed from the <em>Settings</em> page after " -"successful login." +#: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Permcats.php:121 +#: ../../Zotlabs/Module/Defperms.php:266 ../../Zotlabs/Module/Connedit.php:908 +msgid "My Settings" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:117 -#, php-format -msgid "Your password has changed at %s" +#: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Permcats.php:123 +#: ../../Zotlabs/Module/Defperms.php:264 ../../Zotlabs/Module/Connedit.php:903 +msgid "inherited" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:130 -msgid "Forgot your Password?" +#: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Permcats.php:126 +#: ../../Zotlabs/Module/Defperms.php:269 ../../Zotlabs/Module/Connedit.php:910 +msgid "Individual Permissions" msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:131 +#: ../../Zotlabs/Module/Tokens.php:187 ../../Zotlabs/Module/Permcats.php:127 +#: ../../Zotlabs/Module/Connedit.php:911 msgid "" -"Enter your email address and submit to have your password reset. Then check " -"your email for further instructions." -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:132 -msgid "Email Address" +"Some permissions may be inherited from your channel's <a href=\"settings" +"\"><strong>privacy settings</strong></a>, which have higher priority than " +"individual settings. You can <strong>not</strong> change those settings here." msgstr "" -#: ../../Zotlabs/Module/Oauth.php:45 -msgid "Name is required" +#: ../../Zotlabs/Module/Article_edit.php:17 +#: ../../Zotlabs/Module/Article_edit.php:33 +#: ../../Zotlabs/Module/Card_edit.php:17 ../../Zotlabs/Module/Card_edit.php:33 +#: ../../Zotlabs/Module/Editwebpage.php:80 ../../Zotlabs/Module/Editpost.php:24 +#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 +#: ../../Zotlabs/Module/Editlayout.php:79 +msgid "Item not found" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:49 -msgid "Key and Secret are required" +#: ../../Zotlabs/Module/Article_edit.php:44 +#: ../../Zotlabs/Module/Wall_upload.php:31 +#: ../../Zotlabs/Module/Card_edit.php:44 ../../Zotlabs/Module/Chanview.php:96 +#: ../../Zotlabs/Module/Cal.php:31 ../../Zotlabs/Module/Page.php:75 +#: ../../Zotlabs/Module/Block.php:41 +msgid "Channel not found." msgstr "" -#: ../../Zotlabs/Module/Oauth.php:100 -msgid "OAuth Apps Manager App" +#: ../../Zotlabs/Module/Article_edit.php:127 +msgid "Edit Article" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:101 -msgid "OAuth authentication tokens for mobile and remote apps" +#: ../../Zotlabs/Module/Network.php:109 +msgid "No such group" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140 -#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:614 -msgid "Consumer Key" +#: ../../Zotlabs/Module/Network.php:158 +msgid "No such channel" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 -msgid "Icon url" +#: ../../Zotlabs/Module/Network.php:173 ../../Zotlabs/Module/Channel.php:183 +msgid "Search Results For:" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:128 -msgid "Application not found." +#: ../../Zotlabs/Module/Network.php:203 ../../Zotlabs/Module/Channel.php:218 +#: ../../Zotlabs/Module/Hq.php:134 ../../Zotlabs/Module/Pubstream.php:94 +#: ../../Zotlabs/Module/Display.php:80 +msgid "Reset form" msgstr "" -#: ../../Zotlabs/Module/Oauth.php:171 -msgid "Connected OAuth Apps" +#: ../../Zotlabs/Module/Network.php:242 +msgid "Privacy group is empty" msgstr "" -#: ../../Zotlabs/Module/Notifications.php:60 -#: ../../Zotlabs/Lib/ThreadItem.php:450 -msgid "Mark all seen" +#: ../../Zotlabs/Module/Network.php:252 +msgid "Privacy group: " msgstr "" -#: ../../Zotlabs/Lib/Activity.php:1559 -#, php-format -msgid "Likes %1$s's %2$s" +#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:68 +msgid "Nothing to import." msgstr "" -#: ../../Zotlabs/Lib/Activity.php:1562 -#, php-format -msgid "Doesn't like %1$s's %2$s" +#: ../../Zotlabs/Module/Import_items.php:72 ../../Zotlabs/Module/Import.php:83 +#: ../../Zotlabs/Module/Import.php:99 +msgid "Unable to download data from old server" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:1565 -#, php-format -msgid "Will attend %1$s's %2$s" +#: ../../Zotlabs/Module/Import_items.php:77 ../../Zotlabs/Module/Import.php:106 +msgid "Imported file is empty." msgstr "" -#: ../../Zotlabs/Lib/Activity.php:1568 +#: ../../Zotlabs/Module/Import_items.php:93 #, php-format -msgid "Will not attend %1$s's %2$s" +msgid "Warning: Database versions differ by %1$d updates." msgstr "" -#: ../../Zotlabs/Lib/Activity.php:1571 -#, php-format -msgid "May attend %1$s's %2$s" +#: ../../Zotlabs/Module/Import_items.php:108 +msgid "Import completed" msgstr "" -#: ../../Zotlabs/Lib/Activity.php:2170 ../../Zotlabs/Lib/Activity.php:2364 -#: ../../widget/Netselect/Netselect.php:42 ../../addon/pubcrawl/as.php:1341 -#: ../../addon/pubcrawl/as.php:1542 ../../addon/pubcrawl/as.php:1736 -#: ../../include/network.php:1731 -msgid "ActivityPub" +#: ../../Zotlabs/Module/Import_items.php:125 +msgid "Import Items" msgstr "" -#: ../../Zotlabs/Lib/Techlevels.php:10 -msgid "0. Beginner/Basic" +#: ../../Zotlabs/Module/Import_items.php:126 +msgid "Use this form to import existing posts and content from an export file." msgstr "" -#: ../../Zotlabs/Lib/Techlevels.php:11 -msgid "1. Novice - not skilled but willing to learn" +#: ../../Zotlabs/Module/Import_items.php:127 +#: ../../Zotlabs/Module/Import.php:629 +msgid "File to Upload" msgstr "" -#: ../../Zotlabs/Lib/Techlevels.php:12 -msgid "2. Intermediate - somewhat comfortable" +#: ../../Zotlabs/Module/Import.php:157 +#, php-format +msgid "Your service plan only allows %d channels." msgstr "" -#: ../../Zotlabs/Lib/Techlevels.php:13 -msgid "3. Advanced - very comfortable" +#: ../../Zotlabs/Module/Import.php:184 +msgid "No channel. Import failed." msgstr "" -#: ../../Zotlabs/Lib/Techlevels.php:14 -msgid "4. Expert - I can write computer code" +#: ../../Zotlabs/Module/Import.php:622 +msgid "You must be logged in to use this feature." msgstr "" -#: ../../Zotlabs/Lib/Techlevels.php:15 -msgid "5. Wizard - I probably know more than you do" +#: ../../Zotlabs/Module/Import.php:627 +msgid "Import Channel" msgstr "" -#: ../../Zotlabs/Lib/Libzot.php:652 ../../include/zot.php:801 -msgid "Unable to verify channel signature" +#: ../../Zotlabs/Module/Import.php:628 +msgid "" +"Use this form to import an existing channel from a different server/hub. You " +"may retrieve the channel identity from the old server/hub via the network or " +"provide an export file." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:322 -msgid "Apps" +#: ../../Zotlabs/Module/Import.php:630 +msgid "Or provide the old server/hub details" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:323 -msgid "Affinity Tool" +#: ../../Zotlabs/Module/Import.php:632 +msgid "Your old identity address (xyz@example.com)" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:326 -msgid "Site Admin" +#: ../../Zotlabs/Module/Import.php:633 +msgid "Your old login email address" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:327 ../../addon/buglink/buglink.php:16 -msgid "Report Bug" +#: ../../Zotlabs/Module/Import.php:634 +msgid "Your old login password" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:328 ../../include/nav.php:492 -msgid "Bookmarks" +#: ../../Zotlabs/Module/Import.php:635 +msgid "Import a few months of posts if possible (limited by available memory" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:329 ../../Zotlabs/Widget/Chatroom_list.php:16 -#: ../../include/nav.php:479 ../../include/nav.php:482 -msgid "Chatrooms" +#: ../../Zotlabs/Module/Import.php:637 +msgid "" +"For either option, please choose whether to make this hub your new primary " +"address, or whether your old location should continue this role. You will be " +"able to post from either location, but only one can be marked as the primary " +"location for files, photos, and media." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:330 -msgid "Content Filter" +#: ../../Zotlabs/Module/Import.php:639 +msgid "Make this hub my primary location" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:331 -#: ../../addon/content_import/Mod_content_import.php:135 -msgid "Content Import" +#: ../../Zotlabs/Module/Import.php:640 +msgid "Move this channel (disable all previous locations)" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:333 -msgid "Remote Diagnostics" +#: ../../Zotlabs/Module/Import.php:641 +msgid "Use this channel nickname instead of the one provided" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:334 -msgid "Suggest Channels" +#: ../../Zotlabs/Module/Import.php:641 +msgid "" +"Leave blank to keep your existing channel nickname. You will be randomly " +"assigned a similar nickname if either name is already allocated on this site." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1676 ../../include/nav.php:122 -#: ../../include/nav.php:126 -msgid "Login" +#: ../../Zotlabs/Module/Import.php:643 +msgid "" +"This process may take several minutes to complete. Please submit the form " +"only once and leave this page open until finished." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:337 -msgid "Stream" +#: ../../Zotlabs/Module/Register.php:52 +msgid "Maximum daily site registrations exceeded. Please try again tomorrow." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:341 ../../include/nav.php:541 -msgid "Wiki" +#: ../../Zotlabs/Module/Register.php:58 +msgid "" +"Please indicate acceptance of the Terms of Service. Registration failed." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:342 ../../include/features.php:104 -msgid "Channel Home" +#: ../../Zotlabs/Module/Register.php:92 +msgid "Passwords do not match." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:345 ../../Zotlabs/Storage/Browser.php:140 -#: ../../include/features.php:82 ../../include/nav.php:465 -#: ../../include/nav.php:468 -msgid "Calendar" +#: ../../Zotlabs/Module/Register.php:135 +msgid "Registration successful. Continue to create your first channel..." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:346 ../../include/features.php:192 -msgid "Directory" +#: ../../Zotlabs/Module/Register.php:138 +msgid "" +"Registration successful. Please check your email for validation instructions." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:348 -msgid "Mail" +#: ../../Zotlabs/Module/Register.php:145 +msgid "Your registration is pending approval by the site owner." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:351 -msgid "Chat" +#: ../../Zotlabs/Module/Register.php:148 +msgid "Your registration can not be processed." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:353 -msgid "Probe" +#: ../../Zotlabs/Module/Register.php:195 +msgid "Registration on this hub is disabled." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:354 -msgid "Suggest" +#: ../../Zotlabs/Module/Register.php:204 +msgid "Registration on this hub is by approval only." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:355 -msgid "Random Channel" +#: ../../Zotlabs/Module/Register.php:205 ../../Zotlabs/Module/Register.php:214 +msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:356 -msgid "Invite" +#: ../../Zotlabs/Module/Register.php:213 +msgid "Registration on this hub is by invitation only." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:357 ../../Zotlabs/Widget/Admin.php:26 -msgid "Features" +#: ../../Zotlabs/Module/Register.php:224 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:358 ../../addon/openid/MysqlProvider.php:69 -msgid "Language" +#: ../../Zotlabs/Module/Register.php:239 ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Terms of Service" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:359 -msgid "Post" +#: ../../Zotlabs/Module/Register.php:245 +#, php-format +msgid "I accept the %s for this website" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:360 ../../addon/openid/MysqlProvider.php:58 -#: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 -msgid "Profile Photo" +#: ../../Zotlabs/Module/Register.php:252 +#, php-format +msgid "I am over %s years of age and accept the %s for this website" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:362 ../../include/features.php:375 -msgid "Profiles" +#: ../../Zotlabs/Module/Register.php:257 +msgid "Your email address" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:364 -msgid "Notifications" +#: ../../Zotlabs/Module/Register.php:258 +msgid "Choose a password" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:365 -msgid "Order Apps" +#: ../../Zotlabs/Module/Register.php:259 +msgid "Please re-enter your password" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:366 -msgid "CardDAV" +#: ../../Zotlabs/Module/Register.php:260 +msgid "Please enter your invitation code" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:368 -msgid "Guest Access" +#: ../../Zotlabs/Module/Register.php:261 +msgid "Your Name" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:369 ../../Zotlabs/Widget/Notes.php:21 -msgid "Notes" +#: ../../Zotlabs/Module/Register.php:261 +msgid "Real names are preferred." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:370 -msgid "OAuth Apps Manager" +#: ../../Zotlabs/Module/Register.php:263 +#: ../../Zotlabs/Module/New_channel.php:177 +msgid "Choose a short nickname" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:371 -msgid "OAuth2 Apps Manager" +#: ../../Zotlabs/Module/Register.php:263 +#, php-format +msgid "" +"Your nickname will be used to create an easy to remember channel address e." +"g. nickname%s" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:372 -msgid "PDL Editor" +#: ../../Zotlabs/Module/Register.php:264 +#: ../../Zotlabs/Module/New_channel.php:178 +#: ../../Zotlabs/Module/Settings/Channel.php:535 +msgid "Channel role and privacy" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:374 -msgid "Premium Channel" +#: ../../Zotlabs/Module/Register.php:264 +msgid "" +"Select a channel permission role for your usage needs and privacy " +"requirements." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:376 -msgid "My Chatrooms" +#: ../../Zotlabs/Module/Register.php:264 +#: ../../Zotlabs/Module/New_channel.php:178 +msgid "Read more about channel permission roles" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:377 -msgid "Channel Export" +#: ../../Zotlabs/Module/Register.php:265 +msgid "no" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:554 -msgid "Purchase" +#: ../../Zotlabs/Module/Register.php:265 +msgid "yes" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:559 -msgid "Undelete" +#: ../../Zotlabs/Module/Register.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:290 +msgid "Registration" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:568 -msgid "Add to app-tray" +#: ../../Zotlabs/Module/Register.php:294 +msgid "" +"This site requires email verification. After completing this form, please " +"check your email for further instructions." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:569 -msgid "Remove from app-tray" +#: ../../Zotlabs/Module/Search.php:17 +#: ../../Zotlabs/Module/Viewconnections.php:23 +#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Display.php:29 +#: ../../Zotlabs/Module/Directory.php:67 ../../Zotlabs/Module/Directory.php:72 +#: ../../Zotlabs/Module/Photos.php:516 +msgid "Public access denied." msgstr "" -#: ../../Zotlabs/Lib/Apps.php:570 -msgid "Pin to navbar" +#: ../../Zotlabs/Module/Search.php:230 +#, php-format +msgid "Items tagged with: %s" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:571 -msgid "Unpin from navbar" +#: ../../Zotlabs/Module/Search.php:232 +#, php-format +msgid "Search results for: %s" msgstr "" -#: ../../Zotlabs/Lib/Permcat.php:82 -msgctxt "permcat" -msgid "default" +#: ../../Zotlabs/Module/Setup.php:167 +msgid "$Projectname Server - Setup" msgstr "" -#: ../../Zotlabs/Lib/Permcat.php:133 -msgctxt "permcat" -msgid "follower" +#: ../../Zotlabs/Module/Setup.php:171 +msgid "Could not connect to database." msgstr "" -#: ../../Zotlabs/Lib/Permcat.php:137 -msgctxt "permcat" -msgid "contributor" +#: ../../Zotlabs/Module/Setup.php:175 +msgid "" +"Could not connect to specified site URL. Possible SSL certificate or DNS " +"issue." msgstr "" -#: ../../Zotlabs/Lib/Permcat.php:141 -msgctxt "permcat" -msgid "publisher" +#: ../../Zotlabs/Module/Setup.php:182 +msgid "Could not create table." msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:42 -#: ../../Zotlabs/Lib/NativeWikiPage.php:94 -msgid "(No Title)" +#: ../../Zotlabs/Module/Setup.php:188 +msgid "Your site database has been installed." msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:109 -msgid "Wiki page create failed." +#: ../../Zotlabs/Module/Setup.php:194 +msgid "" +"You may need to import the file \"install/schema_xxx.sql\" manually using a " +"database client." msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:122 -msgid "Wiki not found." +#: ../../Zotlabs/Module/Setup.php:195 ../../Zotlabs/Module/Setup.php:259 +#: ../../Zotlabs/Module/Setup.php:766 +msgid "Please see the file \"install/INSTALL.txt\"." msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:133 -msgid "Destination name already exists" +#: ../../Zotlabs/Module/Setup.php:256 +msgid "System check" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:166 -#: ../../Zotlabs/Lib/NativeWikiPage.php:362 -msgid "Page not found" +#: ../../Zotlabs/Module/Setup.php:260 ../../Zotlabs/Module/Cdav.php:1059 +#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Events.php:707 +#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:953 +msgid "Next" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:197 -msgid "Error reading page content" +#: ../../Zotlabs/Module/Setup.php:261 +msgid "Check again" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:353 -#: ../../Zotlabs/Lib/NativeWikiPage.php:402 -#: ../../Zotlabs/Lib/NativeWikiPage.php:469 -#: ../../Zotlabs/Lib/NativeWikiPage.php:510 -msgid "Error reading wiki" +#: ../../Zotlabs/Module/Setup.php:282 +msgid "Database connection" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:390 -msgid "Page update failed." +#: ../../Zotlabs/Module/Setup.php:283 +msgid "" +"In order to install $Projectname we need to know how to connect to your " +"database." msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:424 -msgid "Nothing deleted" +#: ../../Zotlabs/Module/Setup.php:284 +msgid "" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:490 -msgid "Compare: object not found." +#: ../../Zotlabs/Module/Setup.php:285 +msgid "" +"The database you specify below should already exist. If it does not, please " +"create it before continuing." msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:496 -msgid "Page updated" +#: ../../Zotlabs/Module/Setup.php:289 +msgid "Database Server Name" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:499 -msgid "Untitled" +#: ../../Zotlabs/Module/Setup.php:289 +msgid "Default is 127.0.0.1" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:505 -msgid "Wiki resource_id required for git commit" +#: ../../Zotlabs/Module/Setup.php:290 +msgid "Database Port" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:562 -#: ../../Zotlabs/Widget/Wiki_page_history.php:23 -msgctxt "wiki_history" -msgid "Message" +#: ../../Zotlabs/Module/Setup.php:290 +msgid "Communication port number - use 0 for default" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:563 -#: ../../Zotlabs/Widget/Wiki_page_history.php:24 -msgid "Date" +#: ../../Zotlabs/Module/Setup.php:291 +msgid "Database Login Name" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:565 -#: ../../Zotlabs/Widget/Wiki_page_history.php:26 -msgid "Compare" +#: ../../Zotlabs/Module/Setup.php:292 +msgid "Database Login Password" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:754 -#: ../../include/bbcode.php:924 -msgid "Different viewers will see this text differently" +#: ../../Zotlabs/Module/Setup.php:293 +msgid "Database Name" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:34 -#: ../../include/acl_selectors.php:33 -msgid "Visible to your default audience" +#: ../../Zotlabs/Module/Setup.php:294 +msgid "Database Type" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../include/acl_selectors.php:106 -msgid "Only me" +#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 +msgid "Site administrator email address" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Public" +#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -msgid "Anybody in the $Projectname network" +#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 +msgid "Website URL" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:110 -#, php-format -msgid "Any account on %s" +#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 +msgid "Please use SSL (https) URL if available." msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Any of my connections" +#: ../../Zotlabs/Module/Setup.php:298 ../../Zotlabs/Module/Setup.php:340 +msgid "Please select a default timezone for your website" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Only connections I specifically allow" +#: ../../Zotlabs/Module/Setup.php:325 +msgid "Site settings" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:113 -msgid "Anybody authenticated (could include visitors from other networks)" +#: ../../Zotlabs/Module/Setup.php:379 +msgid "PHP version 7.1 or greater is required." msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:114 -msgid "Any connections including those who haven't yet been approved" +#: ../../Zotlabs/Module/Setup.php:380 +msgid "PHP version" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:150 -msgid "" -"This is your default setting for the audience of your normal stream, and " -"posts." +#: ../../Zotlabs/Module/Setup.php:396 +msgid "Could not find a command line version of PHP in the web server PATH." msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:151 +#: ../../Zotlabs/Module/Setup.php:397 msgid "" -"This is your default setting for who can view your default channel profile" +"If you don't have a command line version of PHP installed on server, you " +"will not be able to run background polling via cron." msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:152 -msgid "This is your default setting for who can view your connections" +#: ../../Zotlabs/Module/Setup.php:401 +msgid "PHP executable path" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:153 +#: ../../Zotlabs/Module/Setup.php:401 msgid "" -"This is your default setting for who can view your file storage and photos" +"Enter full path to php executable. You can leave this blank to continue the " +"installation." msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:154 -msgid "This is your default setting for the audience of your webpages" +#: ../../Zotlabs/Module/Setup.php:406 +msgid "Command line PHP" msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:160 ../../include/dir_fns.php:141 -msgid "Directory Options" +#: ../../Zotlabs/Module/Setup.php:416 +msgid "" +"Unable to check command line PHP, as shell_exec() is disabled. This is " +"required." msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../include/dir_fns.php:143 -msgid "Safe Mode" +#: ../../Zotlabs/Module/Setup.php:420 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../include/dir_fns.php:144 -msgid "Public Forums Only" +#: ../../Zotlabs/Module/Setup.php:421 +msgid "This is required for message delivery to work." msgstr "" -#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../include/dir_fns.php:145 -msgid "This Website Only" +#: ../../Zotlabs/Module/Setup.php:424 +msgid "PHP register_argc_argv" msgstr "" -#: ../../Zotlabs/Lib/Group.php:28 ../../include/group.php:22 +#: ../../Zotlabs/Module/Setup.php:444 msgid "" -"A deleted group with this name was revived. Existing item permissions " -"<strong>may</strong> apply to this group and any future members. If this is " -"not what you intended, please create another group with a different name." +"This is not sufficient to upload larger images or files. You should be able " +"to upload at least 4 MB at once." msgstr "" -#: ../../Zotlabs/Lib/Group.php:270 ../../include/group.php:264 -msgid "Add new connections to this privacy group" +#: ../../Zotlabs/Module/Setup.php:446 +#, php-format +msgid "" +"Your max allowed total upload size is set to %s. Maximum size of one file to " +"upload is set to %s. You are allowed to upload up to %d files at once." msgstr "" -#: ../../Zotlabs/Lib/Group.php:302 ../../include/group.php:298 -msgid "edit" +#: ../../Zotlabs/Module/Setup.php:452 +msgid "You can adjust these settings in the server php.ini file." msgstr "" -#: ../../Zotlabs/Lib/Group.php:325 ../../include/group.php:321 -msgid "Edit group" +#: ../../Zotlabs/Module/Setup.php:454 +msgid "PHP upload limits" msgstr "" -#: ../../Zotlabs/Lib/Group.php:326 ../../include/group.php:322 -msgid "Add privacy group" +#: ../../Zotlabs/Module/Setup.php:477 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" msgstr "" -#: ../../Zotlabs/Lib/Group.php:327 ../../include/group.php:323 -msgid "Channels not in any privacy group" +#: ../../Zotlabs/Module/Setup.php:478 +msgid "" +"If running under Windows, please see \"http://www.php.net/manual/en/openssl." +"installation.php\"." msgstr "" -#: ../../Zotlabs/Lib/Group.php:329 ../../Zotlabs/Widget/Savedsearch.php:84 -#: ../../include/group.php:325 -msgid "add" +#: ../../Zotlabs/Module/Setup.php:481 +msgid "Generate encryption keys" msgstr "" -#: ../../Zotlabs/Lib/Chatroom.php:23 -msgid "Missing room name" +#: ../../Zotlabs/Module/Setup.php:498 +msgid "libCurl PHP module" msgstr "" -#: ../../Zotlabs/Lib/Chatroom.php:32 -msgid "Duplicate room name" +#: ../../Zotlabs/Module/Setup.php:499 +msgid "GD graphics PHP module" msgstr "" -#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 -msgid "Invalid room specifier." +#: ../../Zotlabs/Module/Setup.php:500 +msgid "OpenSSL PHP module" msgstr "" -#: ../../Zotlabs/Lib/Chatroom.php:122 -msgid "Room not found." +#: ../../Zotlabs/Module/Setup.php:501 +msgid "PDO database PHP module" msgstr "" -#: ../../Zotlabs/Lib/Chatroom.php:143 -msgid "Room is full" +#: ../../Zotlabs/Module/Setup.php:502 +msgid "mb_string PHP module" msgstr "" -#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2632 -#, php-format -msgid "Unable to verify site signature for %s" +#: ../../Zotlabs/Module/Setup.php:503 +msgid "xml PHP module" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:60 -msgid "$Projectname Notification" +#: ../../Zotlabs/Module/Setup.php:504 +msgid "zip PHP module" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:336 -#: ../../addon/diaspora/util.php:349 ../../addon/diaspora/p.php:48 -msgid "$projectname" +#: ../../Zotlabs/Module/Setup.php:508 ../../Zotlabs/Module/Setup.php:510 +msgid "Apache mod_rewrite module" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:63 -msgid "Thank You," +#: ../../Zotlabs/Module/Setup.php:508 +msgid "" +"Error: Apache webserver mod-rewrite module is required but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:65 ../../addon/hubwall/hubwall.php:33 -#, php-format -msgid "%s Administrator" +#: ../../Zotlabs/Module/Setup.php:514 ../../Zotlabs/Module/Setup.php:517 +msgid "exec" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:66 -#, php-format -msgid "This email was sent by %1$s at %2$s." +#: ../../Zotlabs/Module/Setup.php:514 +msgid "" +"Error: exec is required but is either not installed or has been disabled in " +"php.ini" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:67 -#, php-format +#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:523 +msgid "shell_exec" +msgstr "" + +#: ../../Zotlabs/Module/Setup.php:520 msgid "" -"To stop receiving these messages, please adjust your Notification Settings " -"at %s" +"Error: shell_exec is required but is either not installed or has been " +"disabled in php.ini" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:68 -#, php-format -msgid "To stop receiving these messages, please adjust your %s." +#: ../../Zotlabs/Module/Setup.php:528 +msgid "Error: libCURL PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:123 -#, php-format -msgid "%s <!item_type!>" +#: ../../Zotlabs/Module/Setup.php:532 +msgid "" +"Error: GD PHP module with JPEG support or ImageMagick graphics library " +"required but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:127 -#, php-format -msgid "[$Projectname:Notify] New mail received at %s" +#: ../../Zotlabs/Module/Setup.php:536 +msgid "Error: openssl PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:129 -#, php-format -msgid "%1$s sent you a new private message at %2$s." +#: ../../Zotlabs/Module/Setup.php:542 +msgid "" +"Error: PDO database PHP module missing a driver for either mysql or pgsql." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:130 -#, php-format -msgid "%1$s sent you %2$s." +#: ../../Zotlabs/Module/Setup.php:547 +msgid "Error: PDO database PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:130 -msgid "a private message" +#: ../../Zotlabs/Module/Setup.php:551 +msgid "Error: mb_string PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:131 -#, php-format -msgid "Please visit %s to view and/or reply to your private messages." +#: ../../Zotlabs/Module/Setup.php:555 +msgid "Error: xml PHP module required for DAV but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:144 -msgid "commented on" +#: ../../Zotlabs/Module/Setup.php:559 +msgid "Error: zip PHP module required but not installed." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:155 -msgid "liked" +#: ../../Zotlabs/Module/Setup.php:578 ../../Zotlabs/Module/Setup.php:587 +msgid ".htconfig.php is writable" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:158 -msgid "disliked" +#: ../../Zotlabs/Module/Setup.php:583 +msgid "" +"The web installer needs to be able to create a file called \".htconfig.php\" " +"in the top folder of your web server and it is unable to do so." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:201 -#, php-format -msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" +#: ../../Zotlabs/Module/Setup.php:584 +msgid "" +"This is most often a permission setting, as the web server may not be able " +"to write files in your folder - even if you can." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:209 -#, php-format -msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" +#: ../../Zotlabs/Module/Setup.php:585 +msgid "Please see install/INSTALL.txt for additional information." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:218 -#, php-format -msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" +#: ../../Zotlabs/Module/Setup.php:601 +msgid "" +"This software uses the Smarty3 template engine to render its web views. " +"Smarty3 compiles templates to PHP to speed up rendering." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:230 +#: ../../Zotlabs/Module/Setup.php:602 #, php-format -msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" +msgid "" +"In order to store these compiled templates, the web server needs to have " +"write access to the directory %s under the top level web folder." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:232 -#, php-format -msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" +#: ../../Zotlabs/Module/Setup.php:603 ../../Zotlabs/Module/Setup.php:624 +msgid "" +"Please ensure that the user that your web server runs as (e.g. www-data) has " +"write access to this folder." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:233 +#: ../../Zotlabs/Module/Setup.php:604 #, php-format -msgid "%1$s commented on an item/conversation you have been following." +msgid "" +"Note: as a security measure, you should give the web server write access to " +"%s only--not the template files (.tpl) that it contains." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:317 -#: ../../Zotlabs/Lib/Enotify.php:333 ../../Zotlabs/Lib/Enotify.php:358 -#: ../../Zotlabs/Lib/Enotify.php:375 ../../Zotlabs/Lib/Enotify.php:388 +#: ../../Zotlabs/Module/Setup.php:607 #, php-format -msgid "Please visit %s to view and/or reply to the conversation." +msgid "%s is writable" +msgstr "" + +#: ../../Zotlabs/Module/Setup.php:623 +msgid "" +"This software uses the store directory to save uploaded files. The web " +"server needs to have write access to the store directory under the top level " +"web folder" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241 -#, php-format -msgid "Please visit %s to approve or reject this comment." +#: ../../Zotlabs/Module/Setup.php:627 +msgid "store is writable" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:299 -#, php-format -msgid "%1$s liked [zrl=%2$s]your %3$s[/zrl]" +#: ../../Zotlabs/Module/Setup.php:659 +msgid "" +"SSL certificate cannot be validated. Fix certificate or disable https access " +"to this site." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:313 -#, php-format -msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" +#: ../../Zotlabs/Module/Setup.php:660 +msgid "" +"If you have https access to your website or allow connections to TCP port " +"443 (the https: port), you MUST use a browser-valid certificate. You MUST " +"NOT use self-signed certificates!" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:314 -#, php-format -msgid "%1$s liked an item/conversation you created." +#: ../../Zotlabs/Module/Setup.php:661 +msgid "" +"This restriction is incorporated because public posts from you may for " +"example contain references to images on your own hub." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:325 -#, php-format -msgid "[$Projectname:Notify] %s posted to your profile wall" +#: ../../Zotlabs/Module/Setup.php:662 +msgid "" +"If your certificate is not recognized, members of other sites (who may " +"themselves have valid certificates) will get a warning message on their own " +"site complaining about security issues." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:327 -#, php-format -msgid "%1$s posted to your profile wall at %2$s" +#: ../../Zotlabs/Module/Setup.php:663 +msgid "" +"This can cause usability issues elsewhere (not just on your own site) so we " +"must insist on this requirement." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:329 -#, php-format -msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" +#: ../../Zotlabs/Module/Setup.php:664 +msgid "" +"Providers are available that issue free certificates which are browser-valid." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:352 -#, php-format -msgid "[$Projectname:Notify] %s tagged you" +#: ../../Zotlabs/Module/Setup.php:665 +msgid "" +"If you are confident that the certificate is valid and signed by a trusted " +"authority, check to see if you have failed to install an intermediate cert. " +"These are not normally required by browsers, but are required for server-to-" +"server communications." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:353 -#, php-format -msgid "%1$s tagged you at %2$s" +#: ../../Zotlabs/Module/Setup.php:667 +msgid "SSL certificate validation" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:354 -#, php-format -msgid "%1$s [zrl=%2$s]tagged you[/zrl]." +#: ../../Zotlabs/Module/Setup.php:673 +msgid "" +"Url rewrite in .htaccess is not working. Check your server configuration." +"Test: " msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:365 -#, php-format -msgid "[$Projectname:Notify] %1$s poked you" +#: ../../Zotlabs/Module/Setup.php:676 +msgid "Url rewrite is working" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:366 -#, php-format -msgid "%1$s poked you at %2$s" +#: ../../Zotlabs/Module/Setup.php:689 +msgid "" +"The database configuration file \".htconfig.php\" could not be written. " +"Please use the enclosed text to create a configuration file in your web " +"server root." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:367 -#, php-format -msgid "%1$s [zrl=%2$s]poked you[/zrl]." +#: ../../Zotlabs/Module/Setup.php:764 +msgid "<h1>What next?</h1>" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:382 -#, php-format -msgid "[$Projectname:Notify] %s tagged your post" +#: ../../Zotlabs/Module/Setup.php:765 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the poller." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:383 -#, php-format -msgid "%1$s tagged your post at %2$s" +#: ../../Zotlabs/Module/Viewconnections.php:65 +msgid "No connections." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:384 +#: ../../Zotlabs/Module/Viewconnections.php:83 #, php-format -msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" +msgid "Visit %s's profile [%s]" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:395 -msgid "[$Projectname:Notify] Introduction received" +#: ../../Zotlabs/Module/Viewconnections.php:113 +msgid "View Connections" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:396 -#, php-format -msgid "You've received an new connection request from '%1$s' at %2$s" +#: ../../Zotlabs/Module/Pubsites.php:27 +msgid "" +"The listed hubs allow public registration for the $Projectname network. All " +"hubs in the network are interlinked so membership on any of them conveys " +"membership in the network as a whole. Some hubs may require subscription or " +"provide tiered service plans. The hub itself <strong>may</strong> provide " +"additional details." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:397 -#, php-format -msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Hub URL" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:400 ../../Zotlabs/Lib/Enotify.php:418 -#, php-format -msgid "You may visit their profile at %s" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:402 -#, php-format -msgid "Please visit %s to approve or reject the connection request." +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:409 -msgid "[$Projectname:Notify] Friend suggestion received" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:410 -#, php-format -msgid "You've received a friend suggestion from '%1$s' at %2$s" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:411 -#, php-format -msgid "You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." +#: ../../Zotlabs/Module/Pubsites.php:49 +msgid "Rate" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:416 -msgid "Name:" +#: ../../Zotlabs/Module/Pubsites.php:60 ../../Zotlabs/Module/Webpages.php:261 +#: ../../Zotlabs/Module/Events.php:702 ../../Zotlabs/Module/Blocks.php:166 +#: ../../Zotlabs/Module/Wiki.php:213 ../../Zotlabs/Module/Wiki.php:409 +#: ../../Zotlabs/Module/Layouts.php:198 +msgid "View" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:417 -msgid "Photo:" +#: ../../Zotlabs/Module/Channel.php:99 ../../Zotlabs/Module/Hcard.php:37 +#: ../../Zotlabs/Module/Profile.php:45 +msgid "Posts and comments" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:420 -#, php-format -msgid "Please visit %s to approve or reject the suggestion." +#: ../../Zotlabs/Module/Channel.php:106 ../../Zotlabs/Module/Hcard.php:44 +#: ../../Zotlabs/Module/Profile.php:52 +msgid "Only posts" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:640 -msgid "[$Projectname:Notify]" +#: ../../Zotlabs/Module/Channel.php:166 +msgid "Insufficient permissions. Request redirected to profile page." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:808 -msgid "created a new post" +#: ../../Zotlabs/Module/Channel.php:476 ../../Zotlabs/Module/Display.php:378 +msgid "" +"You must enable javascript for your browser to be able to view this content." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:809 -#, php-format -msgid "commented on %s's post" +#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:812 -#, php-format -msgid "repeated %s's post" +#: ../../Zotlabs/Module/Profperm.php:111 +msgid "Profile Visibility Editor" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:821 -#, php-format -msgid "edited a post dated %s" +#: ../../Zotlabs/Module/Profperm.php:115 +msgid "Click on a contact to add or remove." msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:825 -#, php-format -msgid "edited a comment dated %s" +#: ../../Zotlabs/Module/Profperm.php:124 +msgid "Visible To" msgstr "" -#: ../../Zotlabs/Lib/NativeWiki.php:143 -msgid "Wiki updated successfully" +#: ../../Zotlabs/Module/Profperm.php:140 +#: ../../Zotlabs/Module/Connections.php:217 +msgid "All Connections" msgstr "" -#: ../../Zotlabs/Lib/NativeWiki.php:197 -msgid "Wiki files deleted successfully" +#: ../../Zotlabs/Module/Group.php:45 +msgid "Privacy group created." msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:67 -msgid "Source code of failed update: " +#: ../../Zotlabs/Module/Group.php:48 +msgid "Could not create privacy group." msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:88 -#, php-format -msgid "Update Error at %s" +#: ../../Zotlabs/Module/Group.php:80 +msgid "Privacy group updated." msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:94 -#, php-format -msgid "Update %s failed. See error logs." +#: ../../Zotlabs/Module/Group.php:106 +msgid "Privacy Groups App" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:103 ../../include/conversation.php:700 -msgid "Private Message" +#: ../../Zotlabs/Module/Group.php:107 +msgid "Management of privacy groups" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:130 -msgid "Privacy conflict. Discretion advised." +#: ../../Zotlabs/Module/Group.php:142 +msgid "Add Group" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:172 ../../Zotlabs/Storage/Browser.php:286 -msgid "Admin Delete" +#: ../../Zotlabs/Module/Group.php:146 +msgid "Privacy group name" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:178 ../../include/conversation.php:690 -msgid "Select" +#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256 +msgid "Members are visible to other channels" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:203 -msgid "I will attend" +#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 +msgid "Members" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:203 -msgid "I will not attend" +#: ../../Zotlabs/Module/Group.php:182 +msgid "Privacy group removed." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:203 -msgid "I might attend" +#: ../../Zotlabs/Module/Group.php:185 +msgid "Unable to remove privacy group." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:213 -msgid "I agree" +#: ../../Zotlabs/Module/Group.php:251 +#, php-format +msgid "Privacy Group: %s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:213 -msgid "I disagree" +#: ../../Zotlabs/Module/Group.php:253 +msgid "Privacy group name: " msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:213 -msgid "I abstain" +#: ../../Zotlabs/Module/Group.php:258 +msgid "Delete Group" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:267 ../../include/conversation.php:695 -msgid "Toggle Star Status" +#: ../../Zotlabs/Module/Group.php:269 +msgid "Group members" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:278 ../../include/conversation.php:707 -msgid "Message signature validated" +#: ../../Zotlabs/Module/Group.php:271 +msgid "Not in this group" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:279 ../../include/conversation.php:708 -msgid "Message signature incorrect" +#: ../../Zotlabs/Module/Group.php:303 +msgid "Click a channel to toggle membership" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:287 -msgid "Add Tag" +#: ../../Zotlabs/Module/Card_edit.php:128 +msgid "Edit Card" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:291 ../../include/conversation.php:891 -msgid "Conversation Tools" +#: ../../Zotlabs/Module/Go.php:21 +msgid "This page is available only to site members" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:307 ../../include/taxonomy.php:573 -msgid "like" +#: ../../Zotlabs/Module/Go.php:27 +msgid "Welcome" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:308 ../../include/taxonomy.php:574 -msgid "dislike" +#: ../../Zotlabs/Module/Go.php:29 +msgid "What would you like to do?" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:309 -msgid "Reply on this comment" +#: ../../Zotlabs/Module/Go.php:31 +msgid "" +"Please bookmark this page if you would like to return to it in the future" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:309 -msgid "reply" +#: ../../Zotlabs/Module/Go.php:35 +msgid "Upload a profile photo" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:309 -msgid "Reply to" +#: ../../Zotlabs/Module/Go.php:36 +msgid "Upload a cover photo" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:319 -msgid "Share This" +#: ../../Zotlabs/Module/Go.php:37 +msgid "Edit your default profile" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:319 -msgid "share" +#: ../../Zotlabs/Module/Go.php:39 +msgid "View the channel directory" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:329 -msgid "Delivery Report" +#: ../../Zotlabs/Module/Go.php:40 +msgid "View/edit your channel settings" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:348 -#, php-format -msgid "%d comment" -msgid_plural "%d comments" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Go.php:41 +msgid "View the site or project documentation" +msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:380 ../../Zotlabs/Lib/ThreadItem.php:381 -#, php-format -msgid "View %s's profile - %s" +#: ../../Zotlabs/Module/Go.php:42 +msgid "Visit your channel homepage" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:384 -msgid "to" +#: ../../Zotlabs/Module/Go.php:43 +msgid "" +"View your connections and/or add somebody whose address you already know" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:385 -msgid "via" +#: ../../Zotlabs/Module/Go.php:44 +msgid "" +"View your personal stream (this may be empty until you add some connections)" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:386 -msgid "Wall-to-Wall" +#: ../../Zotlabs/Module/Go.php:52 +msgid "View the public stream. Warning: this content is not moderated" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:387 -msgid "via Wall-To-Wall:" +#: ../../Zotlabs/Module/Oauth.php:45 +msgid "Name is required" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:401 ../../include/conversation.php:766 -#, php-format -msgid "from %s" +#: ../../Zotlabs/Module/Oauth.php:49 +msgid "Key and Secret are required" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:404 ../../include/conversation.php:769 -#, php-format -msgid "last edited: %s" +#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137 +#: ../../Zotlabs/Module/Cdav.php:1076 ../../Zotlabs/Module/Cdav.php:1389 +#: ../../Zotlabs/Module/Admin/Addons.php:457 +#: ../../Zotlabs/Module/Profiles.php:799 ../../Zotlabs/Module/Oauth2.php:58 +#: ../../Zotlabs/Module/Oauth2.php:144 ../../Zotlabs/Module/Connedit.php:939 +#: ../../Zotlabs/Lib/Apps.php:536 +msgid "Update" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:405 ../../include/conversation.php:770 -#, php-format -msgid "Expires: %s" +#: ../../Zotlabs/Module/Oauth.php:100 +msgid "OAuth Apps Manager App" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:413 -msgid "Attend" +#: ../../Zotlabs/Module/Oauth.php:101 +msgid "OAuth authentication tokens for mobile and remote apps" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:414 -msgid "Attendance Options" +#: ../../Zotlabs/Module/Oauth.php:110 ../../Zotlabs/Module/Oauth.php:136 +#: ../../Zotlabs/Module/Oauth.php:172 ../../Zotlabs/Module/Oauth2.php:143 +#: ../../Zotlabs/Module/Oauth2.php:193 +msgid "Add application" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:415 -msgid "Vote" +#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth2.php:118 +#: ../../Zotlabs/Module/Oauth2.php:146 +msgid "Name of application" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:416 -msgid "Voting Options" +#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:115 +#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 +msgid "Automatically generated - change if desired. Max length 20" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:431 -msgid "Go to previous comment" +#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 +#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 +msgid "Redirect" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:440 -#: ../../addon/bookmarker/bookmarker.php:38 -msgid "Save Bookmarks" +#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth2.php:120 +#: ../../Zotlabs/Module/Oauth2.php:148 +msgid "" +"Redirect URI - leave blank unless your application specifically requires this" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:441 -msgid "Add to Calendar" +#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 +msgid "Icon url" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../include/conversation.php:483 -msgid "This is an unsaved preview" +#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Sources.php:123 +#: ../../Zotlabs/Module/Sources.php:158 +msgid "Optional" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:502 ../../include/js_strings.php:7 -#, php-format -msgid "%s show all" +#: ../../Zotlabs/Module/Oauth.php:128 +msgid "Application not found." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:797 ../../addon/hsse/hsse.php:200 -#: ../../include/conversation.php:1406 -msgid "Bold" +#: ../../Zotlabs/Module/Oauth.php:171 +msgid "Connected OAuth Apps" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:798 ../../addon/hsse/hsse.php:201 -#: ../../include/conversation.php:1407 -msgid "Italic" +#: ../../Zotlabs/Module/Oauth.php:175 ../../Zotlabs/Module/Oauth2.php:196 +msgid "Client key starts with" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:799 ../../addon/hsse/hsse.php:202 -#: ../../include/conversation.php:1408 -msgid "Underline" +#: ../../Zotlabs/Module/Oauth.php:176 ../../Zotlabs/Module/Oauth2.php:197 +msgid "No name" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:800 ../../addon/hsse/hsse.php:203 -#: ../../include/conversation.php:1409 -msgid "Quote" +#: ../../Zotlabs/Module/Oauth.php:177 ../../Zotlabs/Module/Oauth2.php:198 +msgid "Remove authorization" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:801 ../../addon/hsse/hsse.php:204 -#: ../../include/conversation.php:1410 -msgid "Code" +#: ../../Zotlabs/Module/Editwebpage.php:139 +msgid "Page link" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:802 -msgid "Image" +#: ../../Zotlabs/Module/Editwebpage.php:166 +msgid "Edit Webpage" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:803 ../../addon/hsse/hsse.php:205 -#: ../../include/conversation.php:1411 -msgid "Attach/Upload file" +#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 +msgid "This site is not a directory server" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:804 -msgid "Insert Link" +#: ../../Zotlabs/Module/Dirsearch.php:33 +msgid "This directory server requires an access token" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:805 -msgid "Video" +#: ../../Zotlabs/Module/Hq.php:140 +msgid "Welcome to Hubzilla!" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:815 -msgid "Your full name (required)" +#: ../../Zotlabs/Module/Hq.php:140 +msgid "You have got no unseen posts..." msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:816 -msgid "Your email address (required)" +#: ../../Zotlabs/Module/Chat.php:102 +msgid "Chatrooms App" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:817 -msgid "Your website URL (optional)" +#: ../../Zotlabs/Module/Chat.php:103 +msgid "Access Controlled Chatrooms" msgstr "" -#: ../../Zotlabs/Zot/Auth.php:152 -msgid "" -"Remote authentication blocked. You are logged into this site locally. Please " -"logout and retry." +#: ../../Zotlabs/Module/Chat.php:196 +msgid "Room not found" msgstr "" -#: ../../Zotlabs/Zot/Auth.php:264 ../../addon/openid/Mod_Openid.php:76 -#: ../../addon/openid/Mod_Openid.php:178 -#, php-format -msgid "Welcome %s. Remote authentication successful." +#: ../../Zotlabs/Module/Chat.php:212 +msgid "Leave Room" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:295 -msgid "parent" +#: ../../Zotlabs/Module/Chat.php:213 +msgid "Delete Room" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2952 -msgid "Collection" +#: ../../Zotlabs/Module/Chat.php:214 +msgid "I am away right now" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:134 -msgid "Principal" +#: ../../Zotlabs/Module/Chat.php:215 +msgid "I am online" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:137 -msgid "Addressbook" +#: ../../Zotlabs/Module/Chat.php:217 +msgid "Bookmark this room" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:143 -msgid "Schedule Inbox" +#: ../../Zotlabs/Module/Chat.php:240 +msgid "New Chatroom" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:146 -msgid "Schedule Outbox" +#: ../../Zotlabs/Module/Chat.php:241 +msgid "Chatroom name" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:279 -msgid "Total" +#: ../../Zotlabs/Module/Chat.php:242 +msgid "Expiration of chats (minutes)" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:281 -msgid "Shared" +#: ../../Zotlabs/Module/Chat.php:258 +#, php-format +msgid "%1$s's Chatrooms" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:283 -msgid "Add Files" +#: ../../Zotlabs/Module/Chat.php:263 +msgid "No chatrooms available" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:367 -#, php-format -msgid "You are using %1$s of your available file storage." +#: ../../Zotlabs/Module/Chat.php:264 ../../Zotlabs/Module/Manage.php:145 +#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Wiki.php:214 +msgid "Create New" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:372 -#, php-format -msgid "You are using %1$s of %2$s available file storage. (%3$s%)" +#: ../../Zotlabs/Module/Chat.php:267 +msgid "Expiration" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:383 -msgid "WARNING:" +#: ../../Zotlabs/Module/Chat.php:268 +msgid "min" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:395 -msgid "Create new folder" +#: ../../Zotlabs/Module/Channel_calendar.php:51 +#: ../../Zotlabs/Module/Events.php:113 +msgid "Event can not end before it has started." msgstr "" -#: ../../Zotlabs/Storage/Browser.php:397 -msgid "Upload file" +#: ../../Zotlabs/Module/Channel_calendar.php:53 +#: ../../Zotlabs/Module/Channel_calendar.php:61 +#: ../../Zotlabs/Module/Channel_calendar.php:78 +#: ../../Zotlabs/Module/Events.php:115 ../../Zotlabs/Module/Events.php:124 +#: ../../Zotlabs/Module/Events.php:146 +msgid "Unable to generate preview." msgstr "" -#: ../../Zotlabs/Storage/Browser.php:410 -msgid "Drop files here to immediately upload" +#: ../../Zotlabs/Module/Channel_calendar.php:59 +#: ../../Zotlabs/Module/Events.php:122 +msgid "Event title and start time are required." msgstr "" -#: ../../Zotlabs/Widget/Forums.php:100 -#: ../../Zotlabs/Widget/Activity_filter.php:73 -#: ../../Zotlabs/Widget/Notifications.php:119 -#: ../../Zotlabs/Widget/Notifications.php:120 -msgid "Forums" +#: ../../Zotlabs/Module/Channel_calendar.php:76 +#: ../../Zotlabs/Module/Channel_calendar.php:218 +#: ../../Zotlabs/Module/Events.php:144 ../../Zotlabs/Module/Events.php:271 +msgid "Event not found." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:37 -msgid "Select Channel" +#: ../../Zotlabs/Module/Channel_calendar.php:370 +#: ../../Zotlabs/Module/Events.php:641 +msgid "Edit event" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:42 -msgid "Read-write" +#: ../../Zotlabs/Module/Channel_calendar.php:372 +#: ../../Zotlabs/Module/Events.php:643 +msgid "Delete event" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:43 -msgid "Read-only" +#: ../../Zotlabs/Module/Channel_calendar.php:387 +#: ../../Zotlabs/Module/Cdav.php:966 ../../Zotlabs/Module/Cal.php:167 +msgid "Link to source" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:127 -msgid "Channel Calendar" +#: ../../Zotlabs/Module/Channel_calendar.php:401 +#: ../../Zotlabs/Module/Events.php:677 +msgid "calendar" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:131 -msgid "Shared CalDAV Calendars" +#: ../../Zotlabs/Module/Channel_calendar.php:488 +#: ../../Zotlabs/Module/Events.php:742 +msgid "Failed to remove event" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:135 -msgid "Share this calendar" +#: ../../Zotlabs/Module/Like.php:56 +msgid "Like/Dislike" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:137 -msgid "Calendar name and color" +#: ../../Zotlabs/Module/Like.php:61 +msgid "This action is restricted to members." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:139 -msgid "Create new CalDAV calendar" +#: ../../Zotlabs/Module/Like.php:62 +msgid "" +"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href=" +"\"register\">register as a new $Projectname member</a> to continue." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:141 -msgid "Calendar Name" +#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 +#: ../../Zotlabs/Module/Like.php:175 +msgid "Invalid request." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:142 -msgid "Calendar Tools" +#: ../../Zotlabs/Module/Like.php:152 +msgid "thing" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:144 -msgid "Import calendar" +#: ../../Zotlabs/Module/Like.php:198 +msgid "Channel unavailable." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:145 -msgid "Select a calendar to import to" +#: ../../Zotlabs/Module/Like.php:246 +msgid "Previous action reversed." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:172 -msgid "Addressbooks" +#: ../../Zotlabs/Module/Like.php:451 +#, php-format +msgid "%1$s agrees with %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:174 -msgid "Addressbook name" +#: ../../Zotlabs/Module/Like.php:453 +#, php-format +msgid "%1$s doesn't agree with %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:176 -msgid "Create new addressbook" +#: ../../Zotlabs/Module/Like.php:455 +#, php-format +msgid "%1$s abstains from a decision on %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:177 -msgid "Addressbook Name" +#: ../../Zotlabs/Module/Like.php:572 +msgid "Action completed." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:179 -msgid "Addressbook Tools" +#: ../../Zotlabs/Module/Like.php:573 +msgid "Thank you." msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:180 -msgid "Import addressbook" +#: ../../Zotlabs/Module/Poke.php:165 +msgid "Poke App" msgstr "" -#: ../../Zotlabs/Widget/Cdav.php:181 -msgid "Select an addressbook to import to" +#: ../../Zotlabs/Module/Poke.php:166 +msgid "Poke somebody in your addressbook" msgstr "" -#: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31 -#: ../../widget/Netselect/Netselect.php:26 ../../include/contact_widgets.php:56 -#: ../../include/contact_widgets.php:99 ../../include/contact_widgets.php:142 -#: ../../include/contact_widgets.php:187 -msgid "Everything" +#: ../../Zotlabs/Module/Poke.php:200 +msgid "Poke somebody" msgstr "" -#: ../../Zotlabs/Widget/Eventstools.php:13 -msgid "Events Tools" +#: ../../Zotlabs/Module/Poke.php:203 +msgid "Poke/Prod" msgstr "" -#: ../../Zotlabs/Widget/Eventstools.php:14 -msgid "Export Calendar" +#: ../../Zotlabs/Module/Poke.php:204 +msgid "Poke, prod or do other things to somebody" msgstr "" -#: ../../Zotlabs/Widget/Eventstools.php:15 -msgid "Import Calendar" +#: ../../Zotlabs/Module/Poke.php:211 +msgid "Recipient" msgstr "" -#: ../../Zotlabs/Widget/Suggestedchats.php:32 -msgid "Suggested Chatrooms" +#: ../../Zotlabs/Module/Poke.php:212 +msgid "Choose what you wish to do to recipient" msgstr "" -#: ../../Zotlabs/Widget/Hq_controls.php:14 -msgid "HQ Control Panel" +#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 +msgid "Make this post private" msgstr "" -#: ../../Zotlabs/Widget/Hq_controls.php:17 -msgid "Create a new post" +#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 +msgid "Calendar entries imported." msgstr "" -#: ../../Zotlabs/Widget/Mailmenu.php:13 -msgid "Private Mail Menu" +#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 +msgid "No calendar entries found." msgstr "" -#: ../../Zotlabs/Widget/Mailmenu.php:15 -msgid "Combined View" +#: ../../Zotlabs/Module/Cdav.php:870 +msgid "INVALID EVENT DISMISSED!" msgstr "" -#: ../../Zotlabs/Widget/Mailmenu.php:20 -msgid "Inbox" +#: ../../Zotlabs/Module/Cdav.php:871 +msgid "Summary: " msgstr "" -#: ../../Zotlabs/Widget/Mailmenu.php:25 -msgid "Outbox" +#: ../../Zotlabs/Module/Cdav.php:872 +msgid "Date: " msgstr "" -#: ../../Zotlabs/Widget/Mailmenu.php:30 -msgid "New Message" +#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 +msgid "Reason: " msgstr "" -#: ../../Zotlabs/Widget/Chatroom_list.php:20 -msgid "Overview" +#: ../../Zotlabs/Module/Cdav.php:878 +msgid "INVALID CARD DISMISSED!" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:51 -msgid "Rating Tools" +#: ../../Zotlabs/Module/Cdav.php:879 +msgid "Name: " msgstr "" -#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 -msgid "Rate Me" +#: ../../Zotlabs/Module/Cdav.php:899 +msgid "CardDAV App" msgstr "" -#: ../../Zotlabs/Widget/Rating.php:60 -msgid "View Ratings" +#: ../../Zotlabs/Module/Cdav.php:900 +msgid "CalDAV capable addressbook" msgstr "" -#: ../../Zotlabs/Widget/Activity.php:50 -msgctxt "widget" -msgid "Activity" +#: ../../Zotlabs/Module/Cdav.php:1032 ../../Zotlabs/Module/Events.php:468 +msgid "Event title" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:36 -#, php-format -msgid "Show posts related to the %s privacy group" +#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:474 +msgid "Start date and time" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:45 -msgid "Show my privacy groups" +#: ../../Zotlabs/Module/Cdav.php:1034 +msgid "End date and time" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:66 -msgid "Show posts to this forum" +#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:497 +msgid "Timezone:" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:77 -msgid "Show forums" +#: ../../Zotlabs/Module/Cdav.php:1058 ../../Zotlabs/Module/Events.php:697 +#: ../../Zotlabs/Module/Events.php:706 ../../Zotlabs/Module/Cal.php:205 +#: ../../Zotlabs/Module/Photos.php:944 +msgid "Previous" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:91 -msgid "Starred Posts" +#: ../../Zotlabs/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:708 +#: ../../Zotlabs/Module/Cal.php:207 +msgid "Today" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:95 -msgid "Show posts that I have starred" +#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:703 +msgid "Month" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:106 -msgid "Personal Posts" +#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:704 +msgid "Week" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:110 -msgid "Show posts that mention or involve me" +#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:705 +msgid "Day" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:131 -#, php-format -msgid "Show posts that I have filed to %s" +#: ../../Zotlabs/Module/Cdav.php:1064 +msgid "List month" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:137 -#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53 -#: ../../include/features.php:311 -msgid "Saved Folders" +#: ../../Zotlabs/Module/Cdav.php:1065 +msgid "List week" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:141 -msgid "Show filed post categories" +#: ../../Zotlabs/Module/Cdav.php:1066 +msgid "List day" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:155 -msgid "Panel search" +#: ../../Zotlabs/Module/Cdav.php:1074 +msgid "More" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:165 -msgid "Filter by name" +#: ../../Zotlabs/Module/Cdav.php:1075 +msgid "Less" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:180 -msgid "Remove active filter" +#: ../../Zotlabs/Module/Cdav.php:1077 +msgid "Select calendar" msgstr "" -#: ../../Zotlabs/Widget/Activity_filter.php:196 -msgid "Stream Filters" +#: ../../Zotlabs/Module/Cdav.php:1080 +msgid "Delete all" msgstr "" -#: ../../Zotlabs/Widget/Follow.php:22 -#, php-format -msgid "You have %1$.0f of %2$.0f allowed connections." +#: ../../Zotlabs/Module/Cdav.php:1083 +msgid "Sorry! Editing of recurrent events is not yet implemented." msgstr "" -#: ../../Zotlabs/Widget/Follow.php:29 -msgid "Add New Connection" +#: ../../Zotlabs/Module/Cdav.php:1374 ../../Zotlabs/Module/Connedit.php:924 +msgid "Organisation" msgstr "" -#: ../../Zotlabs/Widget/Follow.php:30 -msgid "Enter channel address" +#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Connedit.php:926 +msgid "Phone" msgstr "" -#: ../../Zotlabs/Widget/Follow.php:31 -msgid "Examples: bob@example.com, https://example.com/barbara" +#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Connedit.php:928 +msgid "Instant messenger" msgstr "" -#: ../../Zotlabs/Widget/Archive.php:43 -msgid "Archives" +#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Connedit.php:929 +msgid "Website" msgstr "" -#: ../../Zotlabs/Widget/Conversations.php:17 -msgid "Received Messages" +#: ../../Zotlabs/Module/Cdav.php:1380 +#: ../../Zotlabs/Module/Admin/Channels.php:160 +#: ../../Zotlabs/Module/Profiles.php:502 ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Locs.php:118 +msgid "Address" msgstr "" -#: ../../Zotlabs/Widget/Conversations.php:21 -msgid "Sent Messages" +#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Connedit.php:931 +msgid "Note" msgstr "" -#: ../../Zotlabs/Widget/Conversations.php:25 -msgid "Conversations" +#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Connedit.php:937 +msgid "Add Field" msgstr "" -#: ../../Zotlabs/Widget/Conversations.php:37 -msgid "No messages." +#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:942 +msgid "P.O. Box" msgstr "" -#: ../../Zotlabs/Widget/Conversations.php:57 -msgid "Delete conversation" +#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Connedit.php:943 +msgid "Additional" msgstr "" -#: ../../Zotlabs/Widget/Chatroom_members.php:11 -msgid "Chat Members" +#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:944 +msgid "Street" msgstr "" -#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 -msgid "photo/image" +#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:945 +msgid "Locality" msgstr "" -#: ../../Zotlabs/Widget/Savedsearch.php:75 -msgid "Remove term" +#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:946 +msgid "Region" msgstr "" -#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:303 -msgid "Saved Searches" +#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:947 +msgid "ZIP Code" msgstr "" -#: ../../Zotlabs/Widget/Wiki_pages.php:34 -#: ../../Zotlabs/Widget/Wiki_pages.php:91 -msgid "Add new page" +#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Connedit.php:948 +msgid "Country" msgstr "" -#: ../../Zotlabs/Widget/Wiki_pages.php:85 -msgid "Wiki Pages" +#: ../../Zotlabs/Module/Cdav.php:1445 +msgid "Default Calendar" msgstr "" -#: ../../Zotlabs/Widget/Wiki_pages.php:96 -msgid "Page name" +#: ../../Zotlabs/Module/Cdav.php:1456 +msgid "Default Addressbook" msgstr "" -#: ../../Zotlabs/Widget/Affinity.php:54 -msgid "Refresh" +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." msgstr "" -#: ../../Zotlabs/Widget/Tasklist.php:23 -msgid "Tasks" +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" msgstr "" -#: ../../Zotlabs/Widget/Suggestions.php:53 -msgid "Suggestions" +#: ../../Zotlabs/Module/Item.php:382 +msgid "Unable to locate original post." msgstr "" -#: ../../Zotlabs/Widget/Suggestions.php:54 -msgid "See more..." +#: ../../Zotlabs/Module/Item.php:668 +msgid "Empty post discarded." msgstr "" -#: ../../Zotlabs/Widget/Activity_order.php:90 -msgid "Commented Date" +#: ../../Zotlabs/Module/Item.php:1077 +msgid "Duplicate post suppressed." msgstr "" -#: ../../Zotlabs/Widget/Activity_order.php:94 -msgid "Order by last commented date" +#: ../../Zotlabs/Module/Item.php:1222 +msgid "System error. Post not saved." msgstr "" -#: ../../Zotlabs/Widget/Activity_order.php:97 -msgid "Posted Date" +#: ../../Zotlabs/Module/Item.php:1252 +msgid "Your comment is awaiting approval." msgstr "" -#: ../../Zotlabs/Widget/Activity_order.php:101 -msgid "Order by last posted date" +#: ../../Zotlabs/Module/Item.php:1369 +msgid "Unable to obtain post information from database." msgstr "" -#: ../../Zotlabs/Widget/Activity_order.php:104 -msgid "Date Unthreaded" +#: ../../Zotlabs/Module/Item.php:1376 +#, php-format +msgid "You have reached your limit of %1$.0f top level posts." msgstr "" -#: ../../Zotlabs/Widget/Activity_order.php:108 -msgid "Order unthreaded by date" +#: ../../Zotlabs/Module/Item.php:1383 +#, php-format +msgid "You have reached your limit of %1$.0f webpages." msgstr "" -#: ../../Zotlabs/Widget/Activity_order.php:123 -msgid "Stream Order" +#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:209 +msgid "Menu not found." msgstr "" -#: ../../Zotlabs/Widget/Cover_photo.php:65 -msgid "Click to show more" +#: ../../Zotlabs/Module/Mitem.php:63 +msgid "Unable to create element." msgstr "" -#: ../../Zotlabs/Widget/Tagcloud.php:22 ../../include/taxonomy.php:320 -#: ../../include/taxonomy.php:449 ../../include/taxonomy.php:470 -msgid "Tags" +#: ../../Zotlabs/Module/Mitem.php:87 +msgid "Unable to update menu element." msgstr "" -#: ../../Zotlabs/Widget/Appstore.php:11 -msgid "App Collections" +#: ../../Zotlabs/Module/Mitem.php:103 +msgid "Unable to add menu element." msgstr "" -#: ../../Zotlabs/Widget/Appstore.php:13 -msgid "Installed apps" +#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Xchan.php:41 +#: ../../Zotlabs/Module/Menu.php:232 +msgid "Not found." msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:31 -msgid "Profile Creation" +#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 +msgid "Menu Item Permissions" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:33 -msgid "Upload profile photo" +#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247 +#: ../../Zotlabs/Module/Settings/Channel.php:526 +msgid "(click to open/close)" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:34 -msgid "Upload cover photo" +#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 +msgid "Link Name" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:35 ../../include/nav.php:115 -msgid "Edit your profile" +#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 +msgid "Link or Submenu Target" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:38 -msgid "Find and Connect with others" +#: ../../Zotlabs/Module/Mitem.php:175 +msgid "Enter URL of the link or select a menu name to create a submenu" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:40 -msgid "View the directory" +#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256 +msgid "Use magic-auth if available" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:42 -msgid "Manage your connections" +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257 +msgid "Open link in new window" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:45 -msgid "Communicate" +#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 +msgid "Order in list" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:47 -msgid "View your channel homepage" +#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 +msgid "Higher numbers will sink to bottom of listing" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:48 -msgid "View your network stream" +#: ../../Zotlabs/Module/Mitem.php:179 +msgid "Submit and finish" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:54 -msgid "Documentation" +#: ../../Zotlabs/Module/Mitem.php:180 +msgid "Submit and continue" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:57 -msgid "Missing Features?" +#: ../../Zotlabs/Module/Mitem.php:189 +msgid "Menu:" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:59 -msgid "Pin apps to navigation bar" +#: ../../Zotlabs/Module/Mitem.php:192 +msgid "Link Target" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:60 -msgid "Install more apps" +#: ../../Zotlabs/Module/Mitem.php:195 +msgid "Edit menu" msgstr "" -#: ../../Zotlabs/Widget/Newmember.php:71 -msgid "View public stream" +#: ../../Zotlabs/Module/Mitem.php:198 +msgid "Edit element" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60 -msgid "Member registrations waiting for confirmation" +#: ../../Zotlabs/Module/Mitem.php:199 +msgid "Drop element" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:29 -msgid "Inspect queue" +#: ../../Zotlabs/Module/Mitem.php:200 +msgid "New element" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:31 -msgid "DB updates" +#: ../../Zotlabs/Module/Mitem.php:201 +msgid "Edit this menu container" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:192 -msgid "Admin" +#: ../../Zotlabs/Module/Mitem.php:202 +msgid "Add menu element" msgstr "" -#: ../../Zotlabs/Widget/Admin.php:56 -msgid "Addon Features" +#: ../../Zotlabs/Module/Mitem.php:203 +msgid "Delete this menu item" msgstr "" -#: ../../Zotlabs/Widget/Settings_menu.php:32 -msgid "Account settings" +#: ../../Zotlabs/Module/Mitem.php:204 +msgid "Edit this menu item" msgstr "" -#: ../../Zotlabs/Widget/Settings_menu.php:38 -msgid "Channel settings" +#: ../../Zotlabs/Module/Mitem.php:222 +msgid "Menu item not found." msgstr "" -#: ../../Zotlabs/Widget/Settings_menu.php:46 -msgid "Display settings" +#: ../../Zotlabs/Module/Mitem.php:235 +msgid "Menu item deleted." msgstr "" -#: ../../Zotlabs/Widget/Settings_menu.php:53 -msgid "Manage locations" +#: ../../Zotlabs/Module/Mitem.php:237 +msgid "Menu item could not be deleted." msgstr "" -#: ../../Zotlabs/Widget/Bookmarkedchats.php:24 -msgid "Bookmarked Chatrooms" +#: ../../Zotlabs/Module/Mitem.php:244 +msgid "Edit Menu Element" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:16 -msgid "New Network Activity" +#: ../../Zotlabs/Module/Mitem.php:254 +msgid "Link text" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:17 -msgid "New Network Activity Notifications" +#: ../../Zotlabs/Module/Profile.php:93 +msgid "vcard" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:20 -msgid "View your network activity" +#: ../../Zotlabs/Module/Sharedwithme.php:103 +msgid "Files: shared with me" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:23 -msgid "Mark all notifications read" +#: ../../Zotlabs/Module/Sharedwithme.php:105 +msgid "NEW" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:26 -#: ../../Zotlabs/Widget/Notifications.php:45 -#: ../../Zotlabs/Widget/Notifications.php:152 -msgid "Show new posts only" +#: ../../Zotlabs/Module/Sharedwithme.php:107 +#: ../../Zotlabs/Storage/Browser.php:294 +msgid "Last Modified" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:27 -#: ../../Zotlabs/Widget/Notifications.php:46 -#: ../../Zotlabs/Widget/Notifications.php:122 -#: ../../Zotlabs/Widget/Notifications.php:153 -msgid "Filter by name or address" +#: ../../Zotlabs/Module/Sharedwithme.php:108 +msgid "Remove all files" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:35 -msgid "New Home Activity" +#: ../../Zotlabs/Module/Sharedwithme.php:109 +msgid "Remove this file" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:36 -msgid "New Home Activity Notifications" +#: ../../Zotlabs/Module/Help.php:23 +msgid "Documentation Search" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:39 -msgid "View your home activity" +#: ../../Zotlabs/Module/Help.php:82 +msgid "Administrators" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:42 -#: ../../Zotlabs/Widget/Notifications.php:149 -msgid "Mark all notifications seen" +#: ../../Zotlabs/Module/Help.php:83 +msgid "Developers" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:54 -msgid "New Mails" +#: ../../Zotlabs/Module/Help.php:84 +msgid "Tutorials" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:55 -msgid "New Mails Notifications" +#: ../../Zotlabs/Module/Help.php:95 +msgid "$Projectname Documentation" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:58 -msgid "View your private mails" +#: ../../Zotlabs/Module/Help.php:96 +msgid "Contents" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:61 -msgid "Mark all messages seen" +#: ../../Zotlabs/Module/Webpages.php:48 +msgid "Webpages App" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:69 -msgid "New Events" +#: ../../Zotlabs/Module/Webpages.php:49 +msgid "Provide managed web pages on your channel" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:70 -msgid "New Events Notifications" +#: ../../Zotlabs/Module/Webpages.php:69 +msgid "Import Webpage Elements" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:73 -msgid "View events" +#: ../../Zotlabs/Module/Webpages.php:70 +msgid "Import selected" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:76 -msgid "Mark all events seen" +#: ../../Zotlabs/Module/Webpages.php:93 +msgid "Export Webpage Elements" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:85 -msgid "New Connections Notifications" +#: ../../Zotlabs/Module/Webpages.php:94 +msgid "Export selected" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:88 -msgid "View all connections" +#: ../../Zotlabs/Module/Webpages.php:263 +msgid "Actions" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:96 -msgid "New Files" +#: ../../Zotlabs/Module/Webpages.php:264 +msgid "Page Link" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:97 -msgid "New Files Notifications" +#: ../../Zotlabs/Module/Webpages.php:265 +msgid "Page Title" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:104 -#: ../../Zotlabs/Widget/Notifications.php:105 -msgid "Notices" +#: ../../Zotlabs/Module/Webpages.php:266 ../../Zotlabs/Module/Blocks.php:157 +#: ../../Zotlabs/Module/Menu.php:178 ../../Zotlabs/Module/Layouts.php:191 +msgid "Created" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:108 -msgid "View all notices" +#: ../../Zotlabs/Module/Webpages.php:267 ../../Zotlabs/Module/Blocks.php:158 +#: ../../Zotlabs/Module/Menu.php:179 ../../Zotlabs/Module/Layouts.php:192 +msgid "Edited" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:111 -msgid "Mark all notices seen" +#: ../../Zotlabs/Module/Webpages.php:295 +msgid "Invalid file type." msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:132 -msgid "New Registrations" +#: ../../Zotlabs/Module/Webpages.php:307 +msgid "Error opening zip file" msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:133 -msgid "New Registrations Notifications" +#: ../../Zotlabs/Module/Webpages.php:318 +msgid "Invalid folder path." msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:143 -msgid "Public Stream Notifications" +#: ../../Zotlabs/Module/Webpages.php:345 +msgid "No webpage elements detected." msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:146 -msgid "View the public stream" +#: ../../Zotlabs/Module/Webpages.php:420 +msgid "Import complete." msgstr "" -#: ../../Zotlabs/Widget/Notifications.php:161 -msgid "Sorry, you have got no notifications at the moment" +#: ../../Zotlabs/Module/Filestorage.php:103 +msgid "File not found." msgstr "" -#: ../../util/nconfig.php:34 -msgid "Source channel not found." +#: ../../Zotlabs/Module/Filestorage.php:152 +msgid "Permission Denied." msgstr "" -#: ../../widget/Netselect/Netselect.php:24 -msgid "Network/Protocol" +#: ../../Zotlabs/Module/Filestorage.php:185 +msgid "Edit file permissions" msgstr "" -#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1735 -msgid "Zot" +#: ../../Zotlabs/Module/Filestorage.php:198 +msgid "Include all files and sub folders" msgstr "" -#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1733 -msgid "Diaspora" +#: ../../Zotlabs/Module/Filestorage.php:199 +msgid "Return to file list" msgstr "" -#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1726 -#: ../../include/network.php:1727 -msgid "Friendica" +#: ../../Zotlabs/Module/Filestorage.php:201 +msgid "Copy/paste this code to attach file to a post" msgstr "" -#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1728 -msgid "OStatus" +#: ../../Zotlabs/Module/Filestorage.php:202 +msgid "Copy/paste this URL to link file from a web page" msgstr "" -#: ../../boot.php:1655 -msgid "Create an account to access services and applications" +#: ../../Zotlabs/Module/Filestorage.php:204 +msgid "Share this file" msgstr "" -#: ../../boot.php:1675 ../../include/nav.php:107 ../../include/nav.php:136 -#: ../../include/nav.php:155 -msgid "Logout" +#: ../../Zotlabs/Module/Filestorage.php:205 +msgid "Show URL to this file" msgstr "" -#: ../../boot.php:1679 -msgid "Login/Email" +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Storage/Browser.php:411 +msgid "Show in your contacts shared folder" msgstr "" -#: ../../boot.php:1680 -msgid "Password" +#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 +msgid "Tag removed" msgstr "" -#: ../../boot.php:1681 -msgid "Remember me" +#: ../../Zotlabs/Module/Tagrm.php:123 +msgid "Remove Item Tag" msgstr "" -#: ../../boot.php:1684 -msgid "Forgot your password?" +#: ../../Zotlabs/Module/Tagrm.php:125 +msgid "Select a tag to remove: " msgstr "" -#: ../../boot.php:2480 -#, php-format -msgid "[$Projectname] Website SSL error for %s" +#: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135 +msgid "Continue" msgstr "" -#: ../../boot.php:2485 -msgid "Website SSL certificate is not valid. Please correct." +#: ../../Zotlabs/Module/Connect.php:104 +msgid "Premium Channel App" msgstr "" -#: ../../boot.php:2601 -#, php-format -msgid "[$Projectname] Cron tasks not running on %s" +#: ../../Zotlabs/Module/Connect.php:105 +msgid "" +"Allows you to set restrictions and terms on those that connect with your " +"channel" msgstr "" -#: ../../boot.php:2606 -msgid "Cron/Scheduled tasks not running." +#: ../../Zotlabs/Module/Connect.php:116 +msgid "Premium Channel Setup" msgstr "" -#: ../../boot.php:2607 ../../include/datetime.php:238 -msgid "never" +#: ../../Zotlabs/Module/Connect.php:118 +msgid "Enable premium channel connection restrictions" msgstr "" -#: ../../store/[data]/smarty3/compiled/a0a1289f91f53b2c12e4e0b45ffe8291540ba895_0.file.cover_photo.tpl.php:127 -msgid "Cover Photo" +#: ../../Zotlabs/Module/Connect.php:119 +msgid "" +"Please enter your restrictions or conditions, such as paypal receipt, usage " +"guidelines, etc." msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:16 -#: ../../view/theme/redbasic_c/php/config.php:19 -#: ../../view/theme/redbasic/php/config.php:16 -#: ../../view/theme/redbasic/php/config.php:19 -msgid "Focus (Hubzilla default)" +#: ../../Zotlabs/Module/Connect.php:121 ../../Zotlabs/Module/Connect.php:141 +msgid "" +"This channel may require additional steps or acknowledgement of the " +"following conditions prior to connecting:" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:98 -msgid "Theme settings" +#: ../../Zotlabs/Module/Connect.php:122 +msgid "" +"Potential connections will then see the following text before proceeding:" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:100 -#: ../../view/theme/redbasic/php/config.php:99 -msgid "Narrow navbar" +#: ../../Zotlabs/Module/Connect.php:123 ../../Zotlabs/Module/Connect.php:144 +msgid "" +"By continuing, I certify that I have complied with any instructions provided " +"on this page." msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:101 -#: ../../view/theme/redbasic/php/config.php:100 -msgid "Navigation bar background color" +#: ../../Zotlabs/Module/Connect.php:132 +msgid "(No specific instructions have been provided by the channel owner.)" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:102 -#: ../../view/theme/redbasic/php/config.php:101 -msgid "Navigation bar icon color " +#: ../../Zotlabs/Module/Connect.php:140 +msgid "Restricted or Premium Channel" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:103 -#: ../../view/theme/redbasic/php/config.php:102 -msgid "Navigation bar active icon color " +#: ../../Zotlabs/Module/Cloud.php:116 +msgid "Not found" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:104 -#: ../../view/theme/redbasic/php/config.php:103 -msgid "Link color" +#: ../../Zotlabs/Module/Cloud.php:122 +msgid "Please refresh page" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:105 -#: ../../view/theme/redbasic/php/config.php:104 -msgid "Set font-color for banner" +#: ../../Zotlabs/Module/Cloud.php:125 +msgid "Unknown error" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:106 -#: ../../view/theme/redbasic/php/config.php:105 -msgid "Set the background color" +#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1671 +#, php-format +msgid "🔁 Repeated %1$s's %2$s" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:107 -#: ../../view/theme/redbasic/php/config.php:106 -msgid "Set the background image" +#: ../../Zotlabs/Module/Share.php:119 +msgid "Post repeated" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:108 -#: ../../view/theme/redbasic/php/config.php:107 -msgid "Set the background color of items" +#: ../../Zotlabs/Module/Acl.php:360 +msgid "network" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:109 -#: ../../view/theme/redbasic/php/config.php:108 -msgid "Set the background color of comments" +#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 +msgid "Item is not editable" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:110 -#: ../../view/theme/redbasic/php/config.php:109 -msgid "Set font-size for the entire application" +#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 +msgid "Edit post" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:110 -#: ../../view/theme/redbasic/php/config.php:109 -msgid "Examples: 1rem, 100%, 16px" +#: ../../Zotlabs/Module/Tagger.php:48 +msgid "Post not found." msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:110 -msgid "Set font-color for posts and comments" +#: ../../Zotlabs/Module/Tagger.php:119 +#, php-format +msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:112 -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Set radius of corners" +#: ../../Zotlabs/Module/Authorize.php:17 +msgid "Unknown App" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:112 -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Example: 4px" +#: ../../Zotlabs/Module/Authorize.php:29 +msgid "Authorize" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:113 -#: ../../view/theme/redbasic/php/config.php:112 -msgid "Set shadow depth of photos" +#: ../../Zotlabs/Module/Authorize.php:30 +#, php-format +msgid "Do you authorize the app %s to access your channel data?" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:114 -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Set maximum width of content region in pixel" +#: ../../Zotlabs/Module/Authorize.php:32 +msgid "Allow" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:114 -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Leave empty for default width" +#: ../../Zotlabs/Module/Authorize.php:33 +#: ../../Zotlabs/Module/Admin/Accounts.php:174 +msgid "Deny" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:115 -msgid "Left align page content" +#: ../../Zotlabs/Module/Admin/Queue.php:35 +msgid "Queue Statistics" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:116 -#: ../../view/theme/redbasic/php/config.php:114 -msgid "Set size of conversation author photo" +#: ../../Zotlabs/Module/Admin/Queue.php:36 +msgid "Total Entries" msgstr "" -#: ../../view/theme/redbasic_c/php/config.php:117 -#: ../../view/theme/redbasic/php/config.php:115 -msgid "Set size of followup author photos" +#: ../../Zotlabs/Module/Admin/Queue.php:37 +msgid "Priority" msgstr "" -#: ../../view/theme/redbasic/php/config.php:116 -msgid "Show advanced settings" +#: ../../Zotlabs/Module/Admin/Queue.php:38 +msgid "Destination URL" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:57 -msgid "Errors encountered deleting database table " +#: ../../Zotlabs/Module/Admin/Queue.php:39 +msgid "Mark hub permanently offline" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:612 -msgid "Submit Settings" +#: ../../Zotlabs/Module/Admin/Queue.php:40 +msgid "Empty queue for this hub" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:96 -msgid "Drop tables when uninstalling?" +#: ../../Zotlabs/Module/Admin/Queue.php:41 +msgid "Last known contact" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:96 -msgid "" -"If checked, the Rendezvous database tables will be deleted when the plugin " -"is uninstalled." +#: ../../Zotlabs/Module/Admin/Themes.php:26 +msgid "Theme settings updated." msgstr "" -#: ../../addon/rendezvous/rendezvous.php:97 -msgid "Mapbox Access Token" +#: ../../Zotlabs/Module/Admin/Themes.php:61 +msgid "No themes found." msgstr "" -#: ../../addon/rendezvous/rendezvous.php:97 -msgid "" -"If you enter a Mapbox access token, it will be used to retrieve map tiles " -"from Mapbox instead of the default OpenStreetMap tile server." +#: ../../Zotlabs/Module/Admin/Themes.php:95 +#: ../../Zotlabs/Module/Admin/Addons.php:311 +msgid "Disable" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:162 -msgid "Rendezvous" +#: ../../Zotlabs/Module/Admin/Themes.php:97 +#: ../../Zotlabs/Module/Admin/Addons.php:314 +msgid "Enable" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:167 -msgid "" -"This identity has been deleted by another member due to inactivity. Please " -"press the \"New identity\" button or refresh the page to register a new " -"identity. You may use the same name." +#: ../../Zotlabs/Module/Admin/Themes.php:116 +msgid "Screenshot" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:168 -msgid "Welcome to Rendezvous!" +#: ../../Zotlabs/Module/Admin/Themes.php:122 +#: ../../Zotlabs/Module/Admin/Themes.php:156 +#: ../../Zotlabs/Module/Admin/Security.php:92 +#: ../../Zotlabs/Module/Admin/Accounts.php:166 +#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Logs.php:82 +#: ../../Zotlabs/Module/Admin/Channels.php:145 +#: ../../Zotlabs/Module/Admin/Addons.php:342 +#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Module/Admin.php:138 +msgid "Administration" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:169 -msgid "" -"Enter your name to join this rendezvous. To begin sharing your location with " -"the other members, tap the GPS control. When your location is discovered, a " -"red dot will appear and others will be able to see you on the map." +#: ../../Zotlabs/Module/Admin/Themes.php:124 +#: ../../Zotlabs/Module/Admin/Addons.php:344 +msgid "Toggle" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:171 -msgid "Let's meet here" +#: ../../Zotlabs/Module/Admin/Themes.php:134 +#: ../../Zotlabs/Module/Admin/Addons.php:352 +msgid "Author: " msgstr "" -#: ../../addon/rendezvous/rendezvous.php:174 -msgid "New marker" +#: ../../Zotlabs/Module/Admin/Themes.php:135 +#: ../../Zotlabs/Module/Admin/Addons.php:353 +msgid "Maintainer: " msgstr "" -#: ../../addon/rendezvous/rendezvous.php:175 -msgid "Edit marker" +#: ../../Zotlabs/Module/Admin/Themes.php:162 +msgid "[Experimental]" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:176 -msgid "New identity" +#: ../../Zotlabs/Module/Admin/Themes.php:163 +msgid "[Unsupported]" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:177 -msgid "Delete marker" +#: ../../Zotlabs/Module/Admin/Features.php:56 +#, php-format +msgid "Lock feature %s" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:178 -msgid "Delete member" +#: ../../Zotlabs/Module/Admin/Features.php:64 +msgid "Manage Additional Features" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:179 -msgid "Edit proximity alert" +#: ../../Zotlabs/Module/Admin/Security.php:83 +msgid "" +"By default, unfiltered HTML is allowed in embedded media. This is inherently " +"insecure." msgstr "" -#: ../../addon/rendezvous/rendezvous.php:180 +#: ../../Zotlabs/Module/Admin/Security.php:86 msgid "" -"A proximity alert will be issued when this member is within a certain radius " -"of you.<br><br>Enter a radius in meters (0 to disable):" +"The recommended setting is to only allow unfiltered HTML from the following " +"sites:" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:180 -#: ../../addon/rendezvous/rendezvous.php:185 -msgid "distance" +#: ../../Zotlabs/Module/Admin/Security.php:87 +msgid "" +"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/" +"<br />https://vimeo.com/<br />https://soundcloud.com/<br />" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:181 -msgid "Proximity alert distance (meters)" +#: ../../Zotlabs/Module/Admin/Security.php:88 +msgid "" +"All other embedded content will be filtered, <strong>unless</strong> " +"embedded content from that site is explicitly blocked." msgstr "" -#: ../../addon/rendezvous/rendezvous.php:182 -#: ../../addon/rendezvous/rendezvous.php:184 -msgid "" -"A proximity alert will be issued when you are within a certain radius of the " -"marker location.<br><br>Enter a radius in meters (0 to disable):" +#: ../../Zotlabs/Module/Admin/Security.php:95 +msgid "Block public" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:183 -msgid "Marker proximity alert" +#: ../../Zotlabs/Module/Admin/Security.php:95 +msgid "" +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently authenticated." msgstr "" -#: ../../addon/rendezvous/rendezvous.php:186 -msgid "Reminder note" +#: ../../Zotlabs/Module/Admin/Security.php:96 +msgid "Provide a cloud root directory" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:187 +#: ../../Zotlabs/Module/Admin/Security.php:96 msgid "" -"Enter a note to be displayed when you are within the specified proximity..." +"The cloud root directory lists all channel names which provide public files" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:199 -msgid "Add new rendezvous" +#: ../../Zotlabs/Module/Admin/Security.php:97 +msgid "Show total disk space available to cloud uploads" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:200 -msgid "" -"Create a new rendezvous and share the access link with those you wish to " -"invite to the group. Those who open the link become members of the " -"rendezvous. They can view other member locations, add markers to the map, or " -"share their own locations with the group." +#: ../../Zotlabs/Module/Admin/Security.php:98 +msgid "Set \"Transport Security\" HTTP header" msgstr "" -#: ../../addon/rendezvous/rendezvous.php:232 -msgid "You have no rendezvous. Press the button above to create a rendezvous!" +#: ../../Zotlabs/Module/Admin/Security.php:99 +msgid "Set \"Content Security Policy\" HTTP header" msgstr "" -#: ../../addon/skeleton/Mod_Skeleton.php:32 -msgid "Skeleton App" +#: ../../Zotlabs/Module/Admin/Security.php:100 +msgid "Allowed email domains" msgstr "" -#: ../../addon/skeleton/Mod_Skeleton.php:33 -msgid "A skeleton for addons, you can copy/paste" +#: ../../Zotlabs/Module/Admin/Security.php:100 +msgid "" +"Comma separated list of domains which are allowed in email addresses for " +"registrations to this site. Wildcards are accepted. Empty to allow any " +"domains" msgstr "" -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "Some setting" +#: ../../Zotlabs/Module/Admin/Security.php:101 +msgid "Not allowed email domains" msgstr "" -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "A setting" +#: ../../Zotlabs/Module/Admin/Security.php:101 +msgid "" +"Comma separated list of domains which are not allowed in email addresses for " +"registrations to this site. Wildcards are accepted. Empty to allow any " +"domains, unless allowed domains have been defined." msgstr "" -#: ../../addon/skeleton/Mod_Skeleton.php:48 -msgid "Skeleton Settings" +#: ../../Zotlabs/Module/Admin/Security.php:102 +msgid "Allow communications only from these sites" msgstr "" -#: ../../addon/gnusoc/Mod_Gnusoc.php:16 +#: ../../Zotlabs/Module/Admin/Security.php:102 msgid "" -"The GNU-Social protocol does not support location independence. Connections " -"you make within that network may be unreachable from alternate channel " -"locations." +"One site per line. Leave empty to allow communication from anywhere by " +"default" msgstr "" -#: ../../addon/gnusoc/Mod_Gnusoc.php:22 -msgid "GNU-Social Protocol App" +#: ../../Zotlabs/Module/Admin/Security.php:103 +msgid "Block communications from these sites" msgstr "" -#: ../../addon/gnusoc/Mod_Gnusoc.php:34 -msgid "GNU-Social Protocol" +#: ../../Zotlabs/Module/Admin/Security.php:104 +msgid "Allow communications only from these channels" msgstr "" -#: ../../addon/gnusoc/gnusoc.php:451 -msgid "Follow" +#: ../../Zotlabs/Module/Admin/Security.php:104 +msgid "" +"One channel (hash) per line. Leave empty to allow from any channel by default" msgstr "" -#: ../../addon/gnusoc/gnusoc.php:454 -#, php-format -msgid "%1$s is now following %2$s" +#: ../../Zotlabs/Module/Admin/Security.php:105 +msgid "Block communications from these channels" msgstr "" -#: ../../addon/planets/Mod_Planets.php:20 -#: ../../addon/planets/Mod_Planets.php:23 -msgid "Random Planet App" +#: ../../Zotlabs/Module/Admin/Security.php:106 +msgid "Only allow embeds from secure (SSL) websites and links." msgstr "" -#: ../../addon/planets/Mod_Planets.php:23 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 -#: ../../addon/nsabait/Mod_Nsabait.php:24 ../../addon/hsse/Mod_Hsse.php:26 -#: ../../addon/authchoose/Mod_Authchoose.php:33 -msgid "Installed" +#: ../../Zotlabs/Module/Admin/Security.php:107 +msgid "Allow unfiltered embedded HTML content only from these domains" msgstr "" -#: ../../addon/planets/Mod_Planets.php:25 -msgid "" -"Set a random planet from the Star Wars Empire as your location when posting" +#: ../../Zotlabs/Module/Admin/Security.php:107 +msgid "One site per line. By default embedded content is filtered." msgstr "" -#: ../../addon/openclipatar/openclipatar.php:50 -#: ../../addon/openclipatar/openclipatar.php:128 -msgid "System defaults:" +#: ../../Zotlabs/Module/Admin/Security.php:108 +msgid "Block embedded HTML from these domains" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:54 -msgid "Preferred Clipart IDs" +#: ../../Zotlabs/Module/Admin/Accounts.php:37 +#, php-format +msgid "%s account blocked/unblocked" +msgid_plural "%s account blocked/unblocked" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Module/Admin/Accounts.php:44 +#, php-format +msgid "%s account deleted" +msgid_plural "%s accounts deleted" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Module/Admin/Accounts.php:80 +msgid "Account not found" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:54 -msgid "List of preferred clipart ids. These will be shown first." +#: ../../Zotlabs/Module/Admin/Accounts.php:99 +#, php-format +msgid "Account '%s' blocked" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:55 -msgid "Default Search Term" +#: ../../Zotlabs/Module/Admin/Accounts.php:107 +#, php-format +msgid "Account '%s' unblocked" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:55 -msgid "The default search term. These will be shown second." +#: ../../Zotlabs/Module/Admin/Accounts.php:169 +#: ../../Zotlabs/Module/Admin/Channels.php:148 +msgid "select all" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:56 -msgid "Return After" +#: ../../Zotlabs/Module/Admin/Accounts.php:170 +msgid "Registrations waiting for confirm" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:56 -msgid "Page to load after image selection." +#: ../../Zotlabs/Module/Admin/Accounts.php:171 +msgid "Request date" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1422 -#: ../../include/nav.php:115 -msgid "Edit Profile" +#: ../../Zotlabs/Module/Admin/Accounts.php:172 +msgid "No registrations." msgstr "" -#: ../../addon/openclipatar/openclipatar.php:59 -msgid "Profile List" +#: ../../Zotlabs/Module/Admin/Accounts.php:176 +#: ../../Zotlabs/Module/Connedit.php:636 +msgid "Block" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:61 -msgid "Order of Preferred" +#: ../../Zotlabs/Module/Admin/Accounts.php:177 +#: ../../Zotlabs/Module/Connedit.php:636 +msgid "Unblock" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:61 -msgid "Sort order of preferred clipart ids." +#: ../../Zotlabs/Module/Admin/Accounts.php:182 +msgid "ID" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:62 -#: ../../addon/openclipatar/openclipatar.php:68 -msgid "Newest first" +#: ../../Zotlabs/Module/Admin/Accounts.php:184 +msgid "All Channels" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:65 -msgid "As entered" +#: ../../Zotlabs/Module/Admin/Accounts.php:185 +msgid "Register date" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Order of other" +#: ../../Zotlabs/Module/Admin/Accounts.php:186 +msgid "Last login" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Sort order of other clipart ids." +#: ../../Zotlabs/Module/Admin/Accounts.php:187 +msgid "Expires" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:69 -msgid "Most downloaded first" +#: ../../Zotlabs/Module/Admin/Accounts.php:188 +msgid "Service Class" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:70 -msgid "Most liked first" +#: ../../Zotlabs/Module/Admin/Accounts.php:190 +msgid "" +"Selected accounts will be deleted!\\n\\nEverything these accounts had posted " +"on this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Preferred IDs Message" +#: ../../Zotlabs/Module/Admin/Accounts.php:191 +msgid "" +"The account {0} will be deleted!\\n\\nEverything this account has posted on " +"this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Message to display above preferred results." +#: ../../Zotlabs/Module/Admin/Site.php:161 +msgid "Site settings updated." msgstr "" -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Uploaded by: " +#: ../../Zotlabs/Module/Admin/Site.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:119 +#, php-format +msgid "%s - (Incompatible)" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Drawn by: " +#: ../../Zotlabs/Module/Admin/Site.php:205 +msgid "mobile" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:182 -#: ../../addon/openclipatar/openclipatar.php:194 -msgid "Use this image" +#: ../../Zotlabs/Module/Admin/Site.php:207 +msgid "experimental" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:192 -msgid "Or select from a free OpenClipart.org image:" +#: ../../Zotlabs/Module/Admin/Site.php:209 +msgid "unsupported" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:195 -msgid "Search Term" +#: ../../Zotlabs/Module/Admin/Site.php:256 +msgid "Yes - with approval" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:232 -msgid "Unknown error. Please try again later." +#: ../../Zotlabs/Module/Admin/Site.php:262 +msgid "My site is not a public server" msgstr "" -#: ../../addon/openclipatar/openclipatar.php:308 -msgid "Profile photo updated successfully." +#: ../../Zotlabs/Module/Admin/Site.php:263 +msgid "My site has paid access only" msgstr "" -#: ../../addon/adultphotoflag/adultphotoflag.php:24 -msgid "Flag Adult Photos" +#: ../../Zotlabs/Module/Admin/Site.php:264 +msgid "My site has free access only" msgstr "" -#: ../../addon/adultphotoflag/adultphotoflag.php:25 -msgid "" -"Provide photo edit option to hide inappropriate photos from default album " -"view" +#: ../../Zotlabs/Module/Admin/Site.php:265 +msgid "My site offers free accounts with optional paid upgrades" msgstr "" -#: ../../addon/totp/Settings/Totp.php:90 -msgid "" -"You haven't set a TOTP secret yet.\n" -"Please click the button below to generate one and register this site\n" -"with your preferred authenticator app." +#: ../../Zotlabs/Module/Admin/Site.php:279 +msgid "Default permission role for new accounts" msgstr "" -#: ../../addon/totp/Settings/Totp.php:93 -msgid "Your TOTP secret is" +#: ../../Zotlabs/Module/Admin/Site.php:279 +msgid "" +"This role will be used for the first channel created after registration." msgstr "" -#: ../../addon/totp/Settings/Totp.php:94 -msgid "" -"Be sure to save it somewhere in case you lose or replace your mobile " -"device.\n" -"Use your mobile device to scan the QR code below to register this site\n" -"with your preferred authenticator app." +#: ../../Zotlabs/Module/Admin/Site.php:291 +msgid "File upload" msgstr "" -#: ../../addon/totp/Settings/Totp.php:99 -msgid "Test" +#: ../../Zotlabs/Module/Admin/Site.php:292 +msgid "Policies" msgstr "" -#: ../../addon/totp/Settings/Totp.php:100 -msgid "Generate New Secret" +#: ../../Zotlabs/Module/Admin/Site.php:299 +msgid "Banner/Logo" msgstr "" -#: ../../addon/totp/Settings/Totp.php:101 -msgid "Go" +#: ../../Zotlabs/Module/Admin/Site.php:299 +msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "" -#: ../../addon/totp/Settings/Totp.php:102 -msgid "Enter your password" +#: ../../Zotlabs/Module/Admin/Site.php:300 +msgid "Administrator Information" msgstr "" -#: ../../addon/totp/Settings/Totp.php:103 -msgid "enter TOTP code from your device" +#: ../../Zotlabs/Module/Admin/Site.php:300 +msgid "" +"Contact information for site administrators. Displayed on siteinfo page. " +"BBCode can be used here" msgstr "" -#: ../../addon/totp/Settings/Totp.php:104 -msgid "Pass!" +#: ../../Zotlabs/Module/Admin/Site.php:301 ../../Zotlabs/Module/Siteinfo.php:24 +msgid "Site Information" msgstr "" -#: ../../addon/totp/Settings/Totp.php:105 -msgid "Fail" +#: ../../Zotlabs/Module/Admin/Site.php:301 +msgid "" +"Publicly visible description of this site. Displayed on siteinfo page. " +"BBCode can be used here" msgstr "" -#: ../../addon/totp/Settings/Totp.php:106 -msgid "Incorrect password, try again." +#: ../../Zotlabs/Module/Admin/Site.php:302 +msgid "System language" msgstr "" -#: ../../addon/totp/Settings/Totp.php:107 -msgid "Record your new TOTP secret and rescan the QR code above." +#: ../../Zotlabs/Module/Admin/Site.php:303 +msgid "System theme" msgstr "" -#: ../../addon/totp/Settings/Totp.php:115 -msgid "TOTP Settings" +#: ../../Zotlabs/Module/Admin/Site.php:303 +msgid "" +"Default system theme - may be over-ridden by user profiles - <a href='#' " +"id='cnftheme'>change theme settings</a>" msgstr "" -#: ../../addon/totp/Mod_Totp.php:23 -msgid "TOTP Two-Step Verification" +#: ../../Zotlabs/Module/Admin/Site.php:306 +msgid "Allow Feeds as Connections" msgstr "" -#: ../../addon/totp/Mod_Totp.php:24 -msgid "Enter the 2-step verification generated by your authenticator app:" +#: ../../Zotlabs/Module/Admin/Site.php:306 +msgid "(Heavy system resource usage)" msgstr "" -#: ../../addon/totp/Mod_Totp.php:25 -msgid "Success!" +#: ../../Zotlabs/Module/Admin/Site.php:307 +msgid "Maximum image size" msgstr "" -#: ../../addon/totp/Mod_Totp.php:26 -msgid "Invalid code, please try again." +#: ../../Zotlabs/Module/Admin/Site.php:307 +msgid "" +"Maximum size in bytes of uploaded images. Default is 0, which means no " +"limits." msgstr "" -#: ../../addon/totp/Mod_Totp.php:27 -msgid "Too many invalid codes..." +#: ../../Zotlabs/Module/Admin/Site.php:308 +msgid "Does this site allow new member registration?" msgstr "" -#: ../../addon/totp/Mod_Totp.php:28 -msgid "Verify" +#: ../../Zotlabs/Module/Admin/Site.php:309 +msgid "Invitation only" msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:28 -msgid "Wordpress Settings saved." +#: ../../Zotlabs/Module/Admin/Site.php:309 +msgid "" +"Only allow new member registrations with an invitation code. Above register " +"policy must be set to Yes." msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:41 -msgid "Wordpress Post App" +#: ../../Zotlabs/Module/Admin/Site.php:310 +msgid "Minimum age" msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:42 -msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API" +#: ../../Zotlabs/Module/Admin/Site.php:310 +msgid "Minimum age (in years) for who may register on this site." msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:65 -msgid "WordPress username" +#: ../../Zotlabs/Module/Admin/Site.php:311 +msgid "Which best describes the types of account offered by this hub?" msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:69 -msgid "WordPress password" +#: ../../Zotlabs/Module/Admin/Site.php:311 +msgid "This is displayed on the public server site list." msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:73 -msgid "WordPress API URL" +#: ../../Zotlabs/Module/Admin/Site.php:312 +msgid "Register text" msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:74 -msgid "Typically https://your-blog.tld/xmlrpc.php" +#: ../../Zotlabs/Module/Admin/Site.php:312 +msgid "Will be displayed prominently on the registration page." msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:77 -msgid "WordPress blogid" +#: ../../Zotlabs/Module/Admin/Site.php:314 +msgid "Site homepage to show visitors (default: login box)" msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:78 -msgid "For multi-user sites such as wordpress.com, otherwise leave blank" +#: ../../Zotlabs/Module/Admin/Site.php:314 +msgid "" +"example: 'pubstream' to show public stream, 'page/sys/home' to show a system " +"webpage called 'home' or 'include:home.html' to include a file." msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:82 -msgid "Post to WordPress by default" +#: ../../Zotlabs/Module/Admin/Site.php:315 +msgid "Preserve site homepage URL" msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:86 -msgid "Forward comments (requires hubzilla_wp plugin)" +#: ../../Zotlabs/Module/Admin/Site.php:315 +msgid "" +"Present the site homepage in a frame at the original location instead of " +"redirecting" msgstr "" -#: ../../addon/wppost/Mod_Wppost.php:94 -msgid "Wordpress Post" +#: ../../Zotlabs/Module/Admin/Site.php:316 +msgid "Accounts abandoned after x days" msgstr "" -#: ../../addon/wppost/wppost.php:46 -msgid "Post to WordPress" +#: ../../Zotlabs/Module/Admin/Site.php:316 +msgid "" +"Will not waste system resources polling external sites for abandonded " +"accounts. Enter 0 for no time limit." msgstr "" -#: ../../addon/nsfw/nsfw.php:152 -msgid "Possible adult content" +#: ../../Zotlabs/Module/Admin/Site.php:317 +msgid "Allowed friend domains" msgstr "" -#: ../../addon/nsfw/nsfw.php:167 -#, php-format -msgid "%s - view" +#: ../../Zotlabs/Module/Admin/Site.php:317 +msgid "" +"Comma separated list of domains which are allowed to establish friendships " +"with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: ../../addon/nsfw/Mod_Nsfw.php:22 -msgid "NSFW Settings saved." +#: ../../Zotlabs/Module/Admin/Site.php:318 +msgid "Verify Email Addresses" msgstr "" -#: ../../addon/nsfw/Mod_Nsfw.php:33 -msgid "NSFW App" +#: ../../Zotlabs/Module/Admin/Site.php:318 +msgid "" +"Check to verify email addresses used in account registration (recommended)." msgstr "" -#: ../../addon/nsfw/Mod_Nsfw.php:34 -msgid "Collapse content that contains predefined words" +#: ../../Zotlabs/Module/Admin/Site.php:319 +msgid "Force publish" msgstr "" -#: ../../addon/nsfw/Mod_Nsfw.php:44 +#: ../../Zotlabs/Module/Admin/Site.php:319 msgid "" -"This app looks in posts for the words/text you specify below, and collapses " -"any content containing those keywords so it is not displayed at " -"inappropriate times, such as sexual innuendo that may be improper in a work " -"setting. It is polite and recommended to tag any content containing nudity " -"with #NSFW. This filter can also match any other word/text you specify, and " -"can thereby be used as a general purpose content filter." +"Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Comma separated list of keywords to hide" +#: ../../Zotlabs/Module/Admin/Site.php:320 +msgid "Import Public Streams" msgstr "" -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Word, /regular-expression/, lang=xx, lang!=xx" +#: ../../Zotlabs/Module/Admin/Site.php:320 +msgid "" +"Import and allow access to public content pulled from other sites. Warning: " +"this content is unmoderated." msgstr "" -#: ../../addon/nsfw/Mod_Nsfw.php:58 -msgid "NSFW" +#: ../../Zotlabs/Module/Admin/Site.php:321 +msgid "Site only Public Streams" msgstr "" -#: ../../addon/flashcards/Mod_Flashcards.php:174 -msgid "Not allowed." +#: ../../Zotlabs/Module/Admin/Site.php:321 +msgid "" +"Allow access to public content originating only from this site if Imported " +"Public Streams are disabled." msgstr "" -#: ../../addon/queueworker/Mod_Queueworker.php:77 -msgid "Max queueworker threads" +#: ../../Zotlabs/Module/Admin/Site.php:322 +msgid "Allow anybody on the internet to access the Public streams" msgstr "" -#: ../../addon/queueworker/Mod_Queueworker.php:91 -msgid "Assume workers dead after ___ seconds" +#: ../../Zotlabs/Module/Admin/Site.php:322 +msgid "" +"Disable to require authentication before viewing. Warning: this content is " +"unmoderated." msgstr "" -#: ../../addon/queueworker/Mod_Queueworker.php:105 -msgid "" -"Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)" +#: ../../Zotlabs/Module/Admin/Site.php:323 +msgid "Only import Public stream posts with this text" msgstr "" -#: ../../addon/queueworker/Mod_Queueworker.php:116 -msgid "Queueworker Settings" +#: ../../Zotlabs/Module/Admin/Site.php:323 +#: ../../Zotlabs/Module/Admin/Site.php:324 +#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893 +msgid "" +"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " +"all posts" msgstr "" -#: ../../addon/ijpost/Mod_Ijpost.php:23 -msgid "Insane Journal Crosspost Connector Settings saved." +#: ../../Zotlabs/Module/Admin/Site.php:324 +msgid "Do not import Public stream posts with this text" msgstr "" -#: ../../addon/ijpost/Mod_Ijpost.php:35 -msgid "Insane Journal Crosspost Connector App" +#: ../../Zotlabs/Module/Admin/Site.php:327 +msgid "Login on Homepage" msgstr "" -#: ../../addon/ijpost/Mod_Ijpost.php:36 -msgid "Relay public postings to Insane Journal" +#: ../../Zotlabs/Module/Admin/Site.php:327 +msgid "" +"Present a login box to visitors on the home page if no other content has " +"been configured." msgstr "" -#: ../../addon/ijpost/Mod_Ijpost.php:53 -msgid "InsaneJournal username" +#: ../../Zotlabs/Module/Admin/Site.php:328 +msgid "Enable context help" msgstr "" -#: ../../addon/ijpost/Mod_Ijpost.php:57 -msgid "InsaneJournal password" +#: ../../Zotlabs/Module/Admin/Site.php:328 +msgid "" +"Display contextual help for the current page when the help button is pressed." msgstr "" -#: ../../addon/ijpost/Mod_Ijpost.php:61 -msgid "Post to InsaneJournal by default" +#: ../../Zotlabs/Module/Admin/Site.php:330 +msgid "Reply-to email address for system generated email." msgstr "" -#: ../../addon/ijpost/Mod_Ijpost.php:69 -msgid "Insane Journal Crosspost Connector" +#: ../../Zotlabs/Module/Admin/Site.php:331 +msgid "Sender (From) email address for system generated email." msgstr "" -#: ../../addon/ijpost/ijpost.php:45 -msgid "Post to Insane Journal" +#: ../../Zotlabs/Module/Admin/Site.php:332 +msgid "Name of email sender for system generated email." msgstr "" -#: ../../addon/dwpost/dwpost.php:48 -msgid "Post to Dreamwidth" +#: ../../Zotlabs/Module/Admin/Site.php:334 +msgid "Directory Server URL" msgstr "" -#: ../../addon/dwpost/Mod_Dwpost.php:24 -msgid "Dreamwidth Crosspost Connector Settings saved." +#: ../../Zotlabs/Module/Admin/Site.php:334 +msgid "Default directory server" msgstr "" -#: ../../addon/dwpost/Mod_Dwpost.php:36 -msgid "Dreamwidth Crosspost Connector App" +#: ../../Zotlabs/Module/Admin/Site.php:336 +msgid "Proxy user" msgstr "" -#: ../../addon/dwpost/Mod_Dwpost.php:37 -msgid "Relay public postings to Dreamwidth" +#: ../../Zotlabs/Module/Admin/Site.php:337 +msgid "Proxy URL" msgstr "" -#: ../../addon/dwpost/Mod_Dwpost.php:52 -msgid "Dreamwidth username" +#: ../../Zotlabs/Module/Admin/Site.php:338 +msgid "Network timeout" msgstr "" -#: ../../addon/dwpost/Mod_Dwpost.php:56 -msgid "Dreamwidth password" +#: ../../Zotlabs/Module/Admin/Site.php:338 +msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: ../../addon/dwpost/Mod_Dwpost.php:60 -msgid "Post to Dreamwidth by default" +#: ../../Zotlabs/Module/Admin/Site.php:339 +msgid "Delivery interval" msgstr "" -#: ../../addon/dwpost/Mod_Dwpost.php:68 -msgid "Dreamwidth Crosspost Connector" +#: ../../Zotlabs/Module/Admin/Site.php:339 +msgid "" +"Delay background delivery processes by this many seconds to reduce system " +"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " +"for large dedicated servers." msgstr "" -#: ../../addon/notifyadmin/notifyadmin.php:34 -msgid "New registration" +#: ../../Zotlabs/Module/Admin/Site.php:340 +msgid "Deliveries per process" msgstr "" -#: ../../addon/notifyadmin/notifyadmin.php:42 -#, php-format -msgid "Message sent to %s. New account registration: %s" +#: ../../Zotlabs/Module/Admin/Site.php:340 +msgid "" +"Number of deliveries to attempt in a single operating system process. Adjust " +"if necessary to tune system performance. Recommend: 1-5." msgstr "" -#: ../../addon/dirstats/dirstats.php:94 -msgid "Hubzilla Directory Stats" +#: ../../Zotlabs/Module/Admin/Site.php:341 +msgid "Queue Threshold" msgstr "" -#: ../../addon/dirstats/dirstats.php:95 -msgid "Total Hubs" +#: ../../Zotlabs/Module/Admin/Site.php:341 +msgid "" +"Always defer immediate delivery if queue contains more than this number of " +"entries." msgstr "" -#: ../../addon/dirstats/dirstats.php:97 -msgid "Hubzilla Hubs" +#: ../../Zotlabs/Module/Admin/Site.php:342 +msgid "Poll interval" msgstr "" -#: ../../addon/dirstats/dirstats.php:99 -msgid "Friendica Hubs" +#: ../../Zotlabs/Module/Admin/Site.php:342 +msgid "" +"Delay background polling processes by this many seconds to reduce system " +"load. If 0, use delivery interval." msgstr "" -#: ../../addon/dirstats/dirstats.php:101 -msgid "Diaspora Pods" +#: ../../Zotlabs/Module/Admin/Site.php:343 +msgid "Path to ImageMagick convert program" msgstr "" -#: ../../addon/dirstats/dirstats.php:103 -msgid "Hubzilla Channels" +#: ../../Zotlabs/Module/Admin/Site.php:343 +msgid "" +"If set, use this program to generate photo thumbnails for huge images ( > " +"4000 pixels in either dimension), otherwise memory exhaustion may occur. " +"Example: /usr/bin/convert" msgstr "" -#: ../../addon/dirstats/dirstats.php:105 -msgid "Friendica Channels" +#: ../../Zotlabs/Module/Admin/Site.php:344 +msgid "Allow SVG thumbnails in file browser" msgstr "" -#: ../../addon/dirstats/dirstats.php:107 -msgid "Diaspora Channels" +#: ../../Zotlabs/Module/Admin/Site.php:344 +msgid "WARNING: SVG images may contain malicious code." msgstr "" -#: ../../addon/dirstats/dirstats.php:109 -msgid "Aged 35 and above" +#: ../../Zotlabs/Module/Admin/Site.php:345 +msgid "Maximum Load Average" msgstr "" -#: ../../addon/dirstats/dirstats.php:111 -msgid "Aged 34 and under" +#: ../../Zotlabs/Module/Admin/Site.php:345 +msgid "" +"Maximum system load before delivery and poll processes are deferred - " +"default 50." msgstr "" -#: ../../addon/dirstats/dirstats.php:113 -msgid "Average Age" +#: ../../Zotlabs/Module/Admin/Site.php:346 +msgid "Expiration period in days for imported (grid/network) content" msgstr "" -#: ../../addon/dirstats/dirstats.php:115 -msgid "Known Chatrooms" +#: ../../Zotlabs/Module/Admin/Site.php:346 +msgid "0 for no expiration of imported content" msgstr "" -#: ../../addon/dirstats/dirstats.php:117 -msgid "Known Tags" +#: ../../Zotlabs/Module/Admin/Site.php:347 +msgid "" +"Do not expire any posts which have comments less than this many days ago" msgstr "" -#: ../../addon/dirstats/dirstats.php:119 +#: ../../Zotlabs/Module/Admin/Site.php:349 msgid "" -"Please note Diaspora and Friendica statistics are merely those **this " -"directory** is aware of, and not all those known in the network. This also " -"applies to chatrooms," +"Public servers: Optional landing (marketing) webpage for new registrants" msgstr "" -#: ../../addon/likebanner/likebanner.php:51 -msgid "Your Webbie:" +#: ../../Zotlabs/Module/Admin/Site.php:349 +#, php-format +msgid "Create this page first. Default is %s/register" msgstr "" -#: ../../addon/likebanner/likebanner.php:54 -msgid "Fontsize (px):" +#: ../../Zotlabs/Module/Admin/Site.php:350 +msgid "Page to display after creating a new channel" msgstr "" -#: ../../addon/likebanner/likebanner.php:68 -msgid "Link:" +#: ../../Zotlabs/Module/Admin/Site.php:350 +msgid "Default: profiles" msgstr "" -#: ../../addon/likebanner/likebanner.php:70 -msgid "Like us on Hubzilla" +#: ../../Zotlabs/Module/Admin/Site.php:352 +msgid "Optional: site location" msgstr "" -#: ../../addon/likebanner/likebanner.php:72 -msgid "Embed:" +#: ../../Zotlabs/Module/Admin/Site.php:352 +msgid "Region or country" msgstr "" -#: ../../addon/redphotos/redphotos.php:106 -msgid "Photos imported" +#: ../../Zotlabs/Module/Admin/Logs.php:28 +msgid "Log settings updated." msgstr "" -#: ../../addon/redphotos/redphotos.php:129 -msgid "Redmatrix Photo Album Import" +#: ../../Zotlabs/Module/Admin/Logs.php:85 +msgid "Clear" msgstr "" -#: ../../addon/redphotos/redphotos.php:130 -msgid "This will import all your Redmatrix photo albums to this channel." +#: ../../Zotlabs/Module/Admin/Logs.php:91 +msgid "Debugging" msgstr "" -#: ../../addon/redphotos/redphotos.php:131 -#: ../../addon/redfiles/redfiles.php:121 -msgid "Redmatrix Server base URL" +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "Log file" msgstr "" -#: ../../addon/redphotos/redphotos.php:132 -#: ../../addon/redfiles/redfiles.php:122 -msgid "Redmatrix Login Username" +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "" +"Must be writable by web server. Relative to your top-level webserver " +"directory." msgstr "" -#: ../../addon/redphotos/redphotos.php:133 -#: ../../addon/redfiles/redfiles.php:123 -msgid "Redmatrix Login Password" +#: ../../Zotlabs/Module/Admin/Logs.php:93 +msgid "Log level" msgstr "" -#: ../../addon/redphotos/redphotos.php:134 -msgid "Import just this album" -msgstr "" +#: ../../Zotlabs/Module/Admin/Channels.php:31 +#, php-format +msgid "%s channel censored/uncensored" +msgid_plural "%s channels censored/uncensored" +msgstr[0] "" +msgstr[1] "" -#: ../../addon/redphotos/redphotos.php:134 -msgid "Leave blank to import all albums" -msgstr "" +#: ../../Zotlabs/Module/Admin/Channels.php:40 +#, php-format +msgid "%s channel code allowed/disallowed" +msgid_plural "%s channels code allowed/disallowed" +msgstr[0] "" +msgstr[1] "" -#: ../../addon/redphotos/redphotos.php:135 -msgid "Maximum count to import" -msgstr "" +#: ../../Zotlabs/Module/Admin/Channels.php:46 +#, php-format +msgid "%s channel deleted" +msgid_plural "%s channels deleted" +msgstr[0] "" +msgstr[1] "" -#: ../../addon/redphotos/redphotos.php:135 -msgid "0 or blank to import all available" +#: ../../Zotlabs/Module/Admin/Channels.php:65 +msgid "Channel not found" msgstr "" -#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 -msgid "Popular Channels" +#: ../../Zotlabs/Module/Admin/Channels.php:75 +#, php-format +msgid "Channel '%s' deleted" msgstr "" -#: ../../addon/irc/irc.php:37 -msgid "Channels to auto connect" +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' censored" msgstr "" -#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 -msgid "Comma separated list" +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' uncensored" msgstr "" -#: ../../addon/irc/irc.php:45 -msgid "IRC Settings" +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code allowed" msgstr "" -#: ../../addon/irc/irc.php:54 -msgid "IRC settings saved." +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code disallowed" msgstr "" -#: ../../addon/irc/irc.php:58 -msgid "IRC Chatroom" +#: ../../Zotlabs/Module/Admin/Channels.php:150 +msgid "Censor" msgstr "" -#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 -msgid "Gallery" +#: ../../Zotlabs/Module/Admin/Channels.php:151 +msgid "Uncensor" msgstr "" -#: ../../addon/gallery/gallery.php:41 -msgid "Photo Gallery" +#: ../../Zotlabs/Module/Admin/Channels.php:152 +msgid "Allow Code" msgstr "" -#: ../../addon/gallery/Mod_Gallery.php:58 -msgid "Gallery App" +#: ../../Zotlabs/Module/Admin/Channels.php:153 +msgid "Disallow Code" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Channels.php:158 +msgid "UID" msgstr "" -#: ../../addon/gallery/Mod_Gallery.php:59 -msgid "A simple gallery for your photo albums" +#: ../../Zotlabs/Module/Admin/Channels.php:162 +msgid "" +"Selected channels will be deleted!\\n\\nEverything that was posted in these " +"channels on this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../addon/ljpost/Mod_Ljpost.php:36 -msgid "Livejournal Crosspost Connector App" +#: ../../Zotlabs/Module/Admin/Channels.php:163 +msgid "" +"The channel {0} will be deleted!\\n\\nEverything that was posted in this " +"channel on this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../addon/ljpost/Mod_Ljpost.php:37 -msgid "Relay public posts to Livejournal" +#: ../../Zotlabs/Module/Admin/Account_edit.php:29 +#, php-format +msgid "Password changed for account %d." msgstr "" -#: ../../addon/ljpost/Mod_Ljpost.php:54 -msgid "Livejournal username" +#: ../../Zotlabs/Module/Admin/Account_edit.php:46 +msgid "Account settings updated." msgstr "" -#: ../../addon/ljpost/Mod_Ljpost.php:58 -msgid "Livejournal password" +#: ../../Zotlabs/Module/Admin/Account_edit.php:61 +msgid "Account not found." msgstr "" -#: ../../addon/ljpost/Mod_Ljpost.php:62 -msgid "Post to Livejournal by default" +#: ../../Zotlabs/Module/Admin/Account_edit.php:68 +msgid "Account Edit" msgstr "" -#: ../../addon/ljpost/Mod_Ljpost.php:70 -msgid "Livejournal Crosspost Connector" +#: ../../Zotlabs/Module/Admin/Account_edit.php:69 +msgid "New Password" msgstr "" -#: ../../addon/ljpost/ljpost.php:45 -msgid "Post to Livejournal" +#: ../../Zotlabs/Module/Admin/Account_edit.php:70 +msgid "New Password again" msgstr "" -#: ../../addon/openid/openid.php:49 -msgid "" -"We encountered a problem while logging in with the OpenID you provided. " -"Please check the correct spelling of the ID." +#: ../../Zotlabs/Module/Admin/Account_edit.php:71 +msgid "Account language (for emails)" msgstr "" -#: ../../addon/openid/openid.php:49 -msgid "The error message was:" +#: ../../Zotlabs/Module/Admin/Account_edit.php:72 +msgid "Service class" msgstr "" -#: ../../addon/openid/MysqlProvider.php:52 -msgid "First Name" +#: ../../Zotlabs/Module/Admin/Profs.php:89 +msgid "New Profile Field" msgstr "" -#: ../../addon/openid/MysqlProvider.php:53 -msgid "Last Name" +#: ../../Zotlabs/Module/Admin/Profs.php:90 +#: ../../Zotlabs/Module/Admin/Profs.php:110 +msgid "Field nickname" msgstr "" -#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:75 -msgid "Nickname" +#: ../../Zotlabs/Module/Admin/Profs.php:90 +#: ../../Zotlabs/Module/Admin/Profs.php:110 +msgid "System name of field" msgstr "" -#: ../../addon/openid/MysqlProvider.php:55 -msgid "Full Name" +#: ../../Zotlabs/Module/Admin/Profs.php:91 +#: ../../Zotlabs/Module/Admin/Profs.php:111 +msgid "Input type" msgstr "" -#: ../../addon/openid/MysqlProvider.php:61 -msgid "Profile Photo 16px" +#: ../../Zotlabs/Module/Admin/Profs.php:92 +#: ../../Zotlabs/Module/Admin/Profs.php:112 +msgid "Field Name" msgstr "" -#: ../../addon/openid/MysqlProvider.php:62 -msgid "Profile Photo 32px" +#: ../../Zotlabs/Module/Admin/Profs.php:92 +#: ../../Zotlabs/Module/Admin/Profs.php:112 +msgid "Label on profile pages" msgstr "" -#: ../../addon/openid/MysqlProvider.php:63 -msgid "Profile Photo 48px" +#: ../../Zotlabs/Module/Admin/Profs.php:93 +#: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Help text" msgstr "" -#: ../../addon/openid/MysqlProvider.php:64 -msgid "Profile Photo 64px" +#: ../../Zotlabs/Module/Admin/Profs.php:93 +#: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Additional info (optional)" msgstr "" -#: ../../addon/openid/MysqlProvider.php:65 -msgid "Profile Photo 80px" +#: ../../Zotlabs/Module/Admin/Profs.php:103 +msgid "Field definition not found" msgstr "" -#: ../../addon/openid/MysqlProvider.php:66 -msgid "Profile Photo 128px" +#: ../../Zotlabs/Module/Admin/Profs.php:109 +msgid "Edit Profile Field" msgstr "" -#: ../../addon/openid/MysqlProvider.php:67 -msgid "Timezone" +#: ../../Zotlabs/Module/Admin/Profs.php:169 +msgid "Basic Profile Fields" msgstr "" -#: ../../addon/openid/MysqlProvider.php:70 -msgid "Birth Year" +#: ../../Zotlabs/Module/Admin/Profs.php:170 +msgid "Advanced Profile Fields" msgstr "" -#: ../../addon/openid/MysqlProvider.php:71 -msgid "Birth Month" +#: ../../Zotlabs/Module/Admin/Profs.php:170 +msgid "(In addition to basic fields)" msgstr "" -#: ../../addon/openid/MysqlProvider.php:72 -msgid "Birth Day" +#: ../../Zotlabs/Module/Admin/Profs.php:172 +msgid "All available fields" msgstr "" -#: ../../addon/openid/MysqlProvider.php:73 -msgid "Birthdate" +#: ../../Zotlabs/Module/Admin/Profs.php:173 +msgid "Custom Fields" msgstr "" -#: ../../addon/openid/Mod_Openid.php:30 -msgid "OpenID protocol error. No ID returned." +#: ../../Zotlabs/Module/Admin/Profs.php:177 +msgid "Create Custom Field" msgstr "" -#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 -msgid "Login failed." +#: ../../Zotlabs/Module/Admin/Dbsync.php:19 +#: ../../Zotlabs/Module/Admin/Dbsync.php:59 +msgid "Update has been marked successful" msgstr "" -#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1602 -msgid "Male" +#: ../../Zotlabs/Module/Admin/Dbsync.php:32 +#, php-format +msgid "Verification of update %s failed. Check system logs." msgstr "" -#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1600 -msgid "Female" +#: ../../Zotlabs/Module/Admin/Dbsync.php:35 +#: ../../Zotlabs/Module/Admin/Dbsync.php:74 +#, php-format +msgid "Update %s was successfully applied." msgstr "" -#: ../../addon/randpost/randpost.php:97 -msgid "You're welcome." +#: ../../Zotlabs/Module/Admin/Dbsync.php:39 +#, php-format +msgid "Verifying update %s did not return a status. Unknown if it succeeded." msgstr "" -#: ../../addon/randpost/randpost.php:98 -msgid "Ah shucks..." +#: ../../Zotlabs/Module/Admin/Dbsync.php:42 +#, php-format +msgid "Update %s does not contain a verification function." msgstr "" -#: ../../addon/randpost/randpost.php:99 -msgid "Don't mention it." +#: ../../Zotlabs/Module/Admin/Dbsync.php:46 +#: ../../Zotlabs/Module/Admin/Dbsync.php:81 +#, php-format +msgid "Update function %s could not be found." msgstr "" -#: ../../addon/randpost/randpost.php:100 -msgid "<blush>" +#: ../../Zotlabs/Module/Admin/Dbsync.php:71 +#, php-format +msgid "Executing update procedure %s failed. Check system logs." msgstr "" -#: ../../addon/startpage/Mod_Startpage.php:50 -msgid "Startpage App" +#: ../../Zotlabs/Module/Admin/Dbsync.php:78 +#, php-format +msgid "" +"Update %s did not return a status. It cannot be determined if it was " +"successful." msgstr "" -#: ../../addon/startpage/Mod_Startpage.php:51 -msgid "Set a preferred page to load on login from home page" +#: ../../Zotlabs/Module/Admin/Dbsync.php:99 +msgid "Failed Updates" msgstr "" -#: ../../addon/startpage/Mod_Startpage.php:62 -msgid "Page to load after login" +#: ../../Zotlabs/Module/Admin/Dbsync.php:101 +msgid "Mark success (if update was manually applied)" msgstr "" -#: ../../addon/startpage/Mod_Startpage.php:62 -msgid "" -"Examples: "apps", "network?f=&gid=37" (privacy " -"collection), "channel" or "notifications/system" (leave " -"blank for default network page (grid)." +#: ../../Zotlabs/Module/Admin/Dbsync.php:102 +msgid "Attempt to verify this update if a verification procedure exists" msgstr "" -#: ../../addon/startpage/Mod_Startpage.php:70 -msgid "Startpage" +#: ../../Zotlabs/Module/Admin/Dbsync.php:103 +msgid "Attempt to execute this update step automatically" msgstr "" -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslap" +#: ../../Zotlabs/Module/Admin/Dbsync.php:108 +msgid "No failed updates." msgstr "" -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslapped" +#: ../../Zotlabs/Module/Admin/Addons.php:290 +#, php-format +msgid "Plugin %s disabled." msgstr "" -#: ../../addon/morepokes/morepokes.php:20 -msgid "shag" +#: ../../Zotlabs/Module/Admin/Addons.php:295 +#, php-format +msgid "Plugin %s enabled." msgstr "" -#: ../../addon/morepokes/morepokes.php:20 -msgid "shagged" +#: ../../Zotlabs/Module/Admin/Addons.php:354 +msgid "Minimum project version: " msgstr "" -#: ../../addon/morepokes/morepokes.php:21 -msgid "patent" +#: ../../Zotlabs/Module/Admin/Addons.php:355 +msgid "Maximum project version: " msgstr "" -#: ../../addon/morepokes/morepokes.php:21 -msgid "patented" +#: ../../Zotlabs/Module/Admin/Addons.php:356 +msgid "Minimum PHP version: " msgstr "" -#: ../../addon/morepokes/morepokes.php:22 -msgid "hug" +#: ../../Zotlabs/Module/Admin/Addons.php:357 +msgid "Compatible Server Roles: " msgstr "" -#: ../../addon/morepokes/morepokes.php:22 -msgid "hugged" +#: ../../Zotlabs/Module/Admin/Addons.php:358 +msgid "Requires: " msgstr "" -#: ../../addon/morepokes/morepokes.php:23 -msgid "murder" +#: ../../Zotlabs/Module/Admin/Addons.php:359 +#: ../../Zotlabs/Module/Admin/Addons.php:446 +msgid "Disabled - version incompatibility" msgstr "" -#: ../../addon/morepokes/morepokes.php:23 -msgid "murdered" +#: ../../Zotlabs/Module/Admin/Addons.php:415 +msgid "Enter the public git repository URL of the addon repo." msgstr "" -#: ../../addon/morepokes/morepokes.php:24 -msgid "worship" +#: ../../Zotlabs/Module/Admin/Addons.php:416 +msgid "Addon repo git URL" msgstr "" -#: ../../addon/morepokes/morepokes.php:24 -msgid "worshipped" +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "Custom repo name" msgstr "" -#: ../../addon/morepokes/morepokes.php:25 -msgid "kiss" +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "(optional)" msgstr "" -#: ../../addon/morepokes/morepokes.php:25 -msgid "kissed" +#: ../../Zotlabs/Module/Admin/Addons.php:418 +msgid "Download Addon Repo" msgstr "" -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempt" +#: ../../Zotlabs/Module/Admin/Addons.php:425 +msgid "Install new repo" msgstr "" -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempted" +#: ../../Zotlabs/Module/Admin/Addons.php:426 ../../Zotlabs/Lib/Apps.php:536 +msgid "Install" msgstr "" -#: ../../addon/morepokes/morepokes.php:27 -msgid "raise eyebrows at" +#: ../../Zotlabs/Module/Admin/Addons.php:449 +msgid "Manage Repos" msgstr "" -#: ../../addon/morepokes/morepokes.php:27 -msgid "raised their eyebrows at" +#: ../../Zotlabs/Module/Admin/Addons.php:450 +msgid "Installed Addon Repositories" msgstr "" -#: ../../addon/morepokes/morepokes.php:28 -msgid "insult" +#: ../../Zotlabs/Module/Admin/Addons.php:451 +msgid "Install a New Addon Repository" msgstr "" -#: ../../addon/morepokes/morepokes.php:28 -msgid "insulted" +#: ../../Zotlabs/Module/Admin/Addons.php:458 +msgid "Switch branch" msgstr "" -#: ../../addon/morepokes/morepokes.php:29 -msgid "praise" +#: ../../Zotlabs/Module/Apps.php:50 +msgid "Installed Apps" msgstr "" -#: ../../addon/morepokes/morepokes.php:29 -msgid "praised" +#: ../../Zotlabs/Module/Apps.php:53 +msgid "Manage Apps" msgstr "" -#: ../../addon/morepokes/morepokes.php:30 -msgid "be dubious of" +#: ../../Zotlabs/Module/Apps.php:54 +msgid "Create Custom App" msgstr "" -#: ../../addon/morepokes/morepokes.php:30 -msgid "was dubious of" +#: ../../Zotlabs/Module/Achievements.php:38 +msgid "Some blurb about what to do when you're new here" msgstr "" -#: ../../addon/morepokes/morepokes.php:31 -msgid "eat" +#: ../../Zotlabs/Module/Removeme.php:35 +msgid "" +"Channel removals are not allowed within 48 hours of changing the account " +"password." msgstr "" -#: ../../addon/morepokes/morepokes.php:31 -msgid "ate" +#: ../../Zotlabs/Module/Removeme.php:60 +msgid "Remove This Channel" msgstr "" -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggle and fawn at" +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +#: ../../Zotlabs/Module/Changeaddr.php:78 +msgid "WARNING: " msgstr "" -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggled and fawned at" +#: ../../Zotlabs/Module/Removeme.php:61 +msgid "This channel will be completely removed from the network. " msgstr "" -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubt" +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "This action is permanent and can not be undone!" msgstr "" -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubted" +#: ../../Zotlabs/Module/Removeme.php:62 +#: ../../Zotlabs/Module/Removeaccount.php:59 +#: ../../Zotlabs/Module/Changeaddr.php:79 +msgid "Please enter your password for verification:" msgstr "" -#: ../../addon/morepokes/morepokes.php:34 -msgid "glare" +#: ../../Zotlabs/Module/Removeme.php:63 +msgid "Remove this channel and all its clones from the network" msgstr "" -#: ../../addon/morepokes/morepokes.php:34 -msgid "glared at" +#: ../../Zotlabs/Module/Removeme.php:63 +msgid "" +"By default only the instance of the channel located on this hub will be " +"removed from the network" msgstr "" -#: ../../addon/morepokes/morepokes.php:35 -msgid "fuck" +#: ../../Zotlabs/Module/Removeme.php:64 +#: ../../Zotlabs/Module/Settings/Channel.php:594 +msgid "Remove Channel" msgstr "" -#: ../../addon/morepokes/morepokes.php:35 -msgid "fucked" +#: ../../Zotlabs/Module/Events.php:468 +msgid "Edit event title" msgstr "" -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonk" +#: ../../Zotlabs/Module/Events.php:470 +msgid "Categories (comma-separated list)" msgstr "" -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonked" +#: ../../Zotlabs/Module/Events.php:471 +msgid "Edit Category" msgstr "" -#: ../../addon/morepokes/morepokes.php:37 -msgid "declare undying love for" +#: ../../Zotlabs/Module/Events.php:471 +msgid "Category" msgstr "" -#: ../../addon/morepokes/morepokes.php:37 -msgid "declared undying love for" +#: ../../Zotlabs/Module/Events.php:474 +msgid "Edit start date and time" msgstr "" -#: ../../addon/diaspora/Receiver.php:1536 -#, php-format -msgid "%1$s dislikes %2$s's %3$s" +#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Events.php:478 +msgid "Finish date and time are not known or not relevant" msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:43 -msgid "Diaspora Protocol Settings updated." +#: ../../Zotlabs/Module/Events.php:477 +msgid "Edit finish date and time" msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:52 -msgid "" -"The diaspora protocol does not support location independence. Connections " -"you make within that network may be unreachable from alternate channel " -"locations." +#: ../../Zotlabs/Module/Events.php:477 +msgid "Finish date and time" msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:58 -msgid "Diaspora Protocol App" +#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Events.php:480 +msgid "Adjust for viewer timezone" msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:77 -msgid "Allow any Diaspora member to comment on your public posts" +#: ../../Zotlabs/Module/Events.php:479 +msgid "" +"Important for events that happen in a particular place. Not practical for " +"global holidays." msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:81 -msgid "Prevent your hashtags from being redirected to other sites" +#: ../../Zotlabs/Module/Events.php:481 +msgid "Edit Description" msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:85 -msgid "Sign and forward posts and comments with no existing Diaspora signature" +#: ../../Zotlabs/Module/Events.php:483 +msgid "Edit Location" msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:90 -msgid "Followed hashtags (comma separated, do not include the #)" +#: ../../Zotlabs/Module/Events.php:502 +msgid "Advanced Options" msgstr "" -#: ../../addon/diaspora/Mod_Diaspora.php:99 -msgid "Diaspora Protocol" +#: ../../Zotlabs/Module/Events.php:613 +msgid "l, F j" msgstr "" -#: ../../addon/diaspora/import_diaspora.php:18 -msgid "No username found in import file." +#: ../../Zotlabs/Module/Events.php:696 +msgid "Edit Event" msgstr "" -#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:75 -msgid "Unable to create a unique channel address. Import failed." +#: ../../Zotlabs/Module/Events.php:696 +msgid "Create Event" msgstr "" -#: ../../addon/photocache/Mod_Photocache.php:27 -msgid "Photo Cache settings saved." +#: ../../Zotlabs/Module/Events.php:739 +msgid "Event removed" msgstr "" -#: ../../addon/photocache/Mod_Photocache.php:36 -msgid "" -"Photo Cache addon saves a copy of images from external sites locally to " -"increase your anonymity in the web." +#: ../../Zotlabs/Module/Manage.php:138 ../../Zotlabs/Module/New_channel.php:147 +#, php-format +msgid "You have created %1$.0f of %2$.0f allowed channels." msgstr "" -#: ../../addon/photocache/Mod_Photocache.php:42 -msgid "Photo Cache App" +#: ../../Zotlabs/Module/Manage.php:145 +msgid "Create a new channel" msgstr "" -#: ../../addon/photocache/Mod_Photocache.php:53 -msgid "Minimal photo size for caching" +#: ../../Zotlabs/Module/Manage.php:171 +msgid "Current Channel" msgstr "" -#: ../../addon/photocache/Mod_Photocache.php:55 -msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default." +#: ../../Zotlabs/Module/Manage.php:173 +msgid "Switch to one of your channels by selecting it." msgstr "" -#: ../../addon/photocache/Mod_Photocache.php:64 -msgid "Photo Cache" +#: ../../Zotlabs/Module/Manage.php:174 +msgid "Default Channel" msgstr "" -#: ../../addon/testdrive/testdrive.php:104 -#, php-format -msgid "Your account on %s will expire in a few days." +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Make Default" msgstr "" -#: ../../addon/testdrive/testdrive.php:105 -msgid "Your $Productname test account is about to expire." +#: ../../Zotlabs/Module/Manage.php:178 +#, php-format +msgid "%d new messages" msgstr "" -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 -msgid "Add some colour to tag clouds" +#: ../../Zotlabs/Module/Manage.php:179 +#, php-format +msgid "%d new introductions" msgstr "" -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 -msgid "Rainbow Tag App" +#: ../../Zotlabs/Module/Manage.php:181 +msgid "Delegated Channel" msgstr "" -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 -msgid "Rainbow Tag" +#: ../../Zotlabs/Module/Chanview.php:139 +msgid "toggle full screen mode" msgstr "" -#: ../../addon/upload_limits/upload_limits.php:25 -msgid "Show Upload Limits" +#: ../../Zotlabs/Module/Pubstream.php:20 +msgid "Public Stream App" msgstr "" -#: ../../addon/upload_limits/upload_limits.php:27 -msgid "Hubzilla configured maximum size: " +#: ../../Zotlabs/Module/Pubstream.php:21 +msgid "The unmoderated public stream of this hub" msgstr "" -#: ../../addon/upload_limits/upload_limits.php:28 -msgid "PHP upload_max_filesize: " +#: ../../Zotlabs/Module/Chatsvc.php:131 +msgid "Away" msgstr "" -#: ../../addon/upload_limits/upload_limits.php:29 -msgid "PHP post_max_size (must be larger than upload_max_filesize): " +#: ../../Zotlabs/Module/Chatsvc.php:136 +msgid "Online" msgstr "" -#: ../../addon/gravatar/gravatar.php:123 -msgid "generic profile image" +#: ../../Zotlabs/Module/Permcats.php:28 +msgid "Permission category name is required." msgstr "" -#: ../../addon/gravatar/gravatar.php:124 -msgid "random geometric pattern" +#: ../../Zotlabs/Module/Permcats.php:47 +msgid "Permission category saved." msgstr "" -#: ../../addon/gravatar/gravatar.php:125 -msgid "monster face" +#: ../../Zotlabs/Module/Permcats.php:62 +msgid "Permission Categories App" msgstr "" -#: ../../addon/gravatar/gravatar.php:126 -msgid "computer generated face" +#: ../../Zotlabs/Module/Permcats.php:63 +msgid "Create custom connection permission limits" msgstr "" -#: ../../addon/gravatar/gravatar.php:127 -msgid "retro arcade style face" +#: ../../Zotlabs/Module/Permcats.php:79 +msgid "" +"Use this form to create permission rules for various classes of people or " +"connections." msgstr "" -#: ../../addon/gravatar/gravatar.php:128 -msgid "Hub default profile photo" +#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 +msgid "Permission Categories" msgstr "" -#: ../../addon/gravatar/gravatar.php:143 -msgid "Information" +#: ../../Zotlabs/Module/Permcats.php:120 +msgid "Permission category name" msgstr "" -#: ../../addon/gravatar/gravatar.php:143 -msgid "" -"Libravatar addon is installed, too. Please disable Libravatar addon or this " -"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if " -"nothing was found at Libravatar." +#: ../../Zotlabs/Module/Email_resend.php:12 +#: ../../Zotlabs/Module/Email_validation.php:24 +msgid "Token verification failed." msgstr "" -#: ../../addon/gravatar/gravatar.php:150 ../../addon/msgfooter/msgfooter.php:46 -#: ../../addon/xmpp/xmpp.php:43 -msgid "Save Settings" +#: ../../Zotlabs/Module/Email_resend.php:30 +msgid "Email verification resent" msgstr "" -#: ../../addon/gravatar/gravatar.php:151 -msgid "Default avatar image" +#: ../../Zotlabs/Module/Email_resend.php:33 +msgid "Unable to resend email verification message." msgstr "" -#: ../../addon/gravatar/gravatar.php:151 -msgid "Select default avatar image if none was found at Gravatar. See README" +#: ../../Zotlabs/Module/Ratings.php:70 +msgid "No ratings" msgstr "" -#: ../../addon/gravatar/gravatar.php:152 -msgid "Rating of images" +#: ../../Zotlabs/Module/Ratings.php:98 +msgid "Rating: " msgstr "" - -#: ../../addon/gravatar/gravatar.php:152 -msgid "Select the appropriate avatar rating for your site. See README" + +#: ../../Zotlabs/Module/Ratings.php:99 +msgid "Website: " msgstr "" -#: ../../addon/gravatar/gravatar.php:165 -msgid "Gravatar settings updated." +#: ../../Zotlabs/Module/Ratings.php:101 +msgid "Description: " msgstr "" -#: ../../addon/hzfiles/hzfiles.php:81 -msgid "Hubzilla File Storage Import" +#: ../../Zotlabs/Module/Cal.php:64 +msgid "Permissions denied." msgstr "" -#: ../../addon/hzfiles/hzfiles.php:82 -msgid "This will import all your cloud files from another server." +#: ../../Zotlabs/Module/Viewsrc.php:43 +msgid "item" msgstr "" -#: ../../addon/hzfiles/hzfiles.php:83 -msgid "Hubzilla Server base URL" +#: ../../Zotlabs/Module/Apporder.php:47 +msgid "Change Order of Pinned Navbar Apps" msgstr "" -#: ../../addon/hzfiles/hzfiles.php:84 -#: ../../addon/content_import/Mod_content_import.php:140 -msgid "Since modified date yyyy-mm-dd" +#: ../../Zotlabs/Module/Apporder.php:47 +msgid "Change Order of App Tray Apps" msgstr "" -#: ../../addon/hzfiles/hzfiles.php:85 -#: ../../addon/content_import/Mod_content_import.php:141 -msgid "Until modified date yyyy-mm-dd" +#: ../../Zotlabs/Module/Apporder.php:48 +msgid "" +"Use arrows to move the corresponding app left (top) or right (bottom) in the " +"navbar" msgstr "" -#: ../../addon/visage/Mod_Visage.php:21 -msgid "Who viewed my channel/profile" +#: ../../Zotlabs/Module/Apporder.php:48 +msgid "Use arrows to move the corresponding app up or down in the app tray" msgstr "" -#: ../../addon/visage/Mod_Visage.php:25 -msgid "Recent Channel/Profile Viewers" +#: ../../Zotlabs/Module/Oexchange.php:27 +msgid "Unable to find your hub." msgstr "" -#: ../../addon/visage/Mod_Visage.php:36 -msgid "No entries." +#: ../../Zotlabs/Module/Oexchange.php:41 +msgid "Post successful." msgstr "" -#: ../../addon/nsabait/Mod_Nsabait.php:20 -#: ../../addon/nsabait/Mod_Nsabait.php:24 -msgid "NSA Bait App" +#: ../../Zotlabs/Module/Moderate.php:65 +msgid "Comment approved" msgstr "" -#: ../../addon/nsabait/Mod_Nsabait.php:26 -msgid "Make yourself a political target" +#: ../../Zotlabs/Module/Moderate.php:69 +msgid "Comment deleted" msgstr "" -#: ../../addon/mailtest/mailtest.php:19 -msgid "Send test email" +#: ../../Zotlabs/Module/Removeaccount.php:35 +msgid "" +"Account removals are not allowed within 48 hours of changing the account " +"password." msgstr "" -#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50 -msgid "No recipients found." +#: ../../Zotlabs/Module/Removeaccount.php:57 +msgid "Remove This Account" msgstr "" -#: ../../addon/mailtest/mailtest.php:66 -msgid "Mail sent." +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "" +"This account and all its channels will be completely removed from the " +"network. " msgstr "" -#: ../../addon/mailtest/mailtest.php:68 -msgid "Sending of mail failed." +#: ../../Zotlabs/Module/Removeaccount.php:60 +msgid "" +"Remove this account, all its channels and all its channel clones from the " +"network" msgstr "" -#: ../../addon/mailtest/mailtest.php:77 -msgid "Mail Test" +#: ../../Zotlabs/Module/Removeaccount.php:60 +msgid "" +"By default only the instances of the channels located on this hub will be " +"removed from the network" msgstr "" -#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92 -msgid "Message subject" +#: ../../Zotlabs/Module/Removeaccount.php:61 +#: ../../Zotlabs/Module/Settings/Account.php:105 +msgid "Remove Account" msgstr "" -#: ../../addon/mdpost/mdpost.php:42 -msgid "Use markdown for editing posts" +#: ../../Zotlabs/Module/Lang.php:17 +msgid "Language App" msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:119 -msgid "View Larger" +#: ../../Zotlabs/Module/Lang.php:18 +msgid "Change UI language" msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:135 -msgid "Tile Server URL" +#: ../../Zotlabs/Module/Uexport.php:61 +msgid "Channel Export App" msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:135 -msgid "" -"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank" -"\">public tile servers</a>" +#: ../../Zotlabs/Module/Uexport.php:62 +msgid "Export your channel" msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:136 -msgid "Nominatim (reverse geocoding) Server URL" +#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 +msgid "Export Channel" msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:136 +#: ../../Zotlabs/Module/Uexport.php:74 msgid "" -"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=" -"\"_blank\">Nominatim servers</a>" +"Export your basic channel information to a file. This acts as a backup of " +"your connections, permissions, profile and basic data, which can be used to " +"import your data to a new server hub, but does not contain your content." msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:137 -msgid "Default zoom" +#: ../../Zotlabs/Module/Uexport.php:75 +msgid "Export Content" msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:137 +#: ../../Zotlabs/Module/Uexport.php:76 msgid "" -"The default zoom level. (1:world, 18:highest, also depends on tile server)" +"Export your channel information and recent content to a JSON backup that can " +"be restored or imported to another server hub. This backs up all of your " +"connections, permissions, profile data and several months of posts. This " +"file may be VERY large. Please be patient - it may take several minutes for " +"this download to begin." msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include marker on map" +#: ../../Zotlabs/Module/Uexport.php:78 +msgid "Export your posts from a given year." msgstr "" -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include a marker on the map." +#: ../../Zotlabs/Module/Uexport.php:80 +msgid "" +"You may also export your posts and conversations for a particular year or " +"month. Adjust the date in your browser location bar to select other dates. " +"If the export fails (possibly due to memory exhaustion on your server hub), " +"please try again selecting a more limited date range." msgstr "" -#: ../../addon/msgfooter/msgfooter.php:47 -msgid "text to include in all outgoing posts from this site" +#: ../../Zotlabs/Module/Uexport.php:81 +#, php-format +msgid "" +"To select all posts for a given year, such as this year, visit <a href=\"%1$s" +"\">%2$s</a>" msgstr "" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 -msgid "Fuzzloc Settings updated." +#: ../../Zotlabs/Module/Uexport.php:82 +#, php-format +msgid "" +"To select all posts for a given month, such as January of this year, visit " +"<a href=\"%1$s\">%2$s</a>" msgstr "" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 -msgid "Fuzzy Location App" +#: ../../Zotlabs/Module/Uexport.php:83 +#, php-format +msgid "" +"These content files may be imported or restored by visiting <a href=\"%1$s\">" +"%2$s</a> on any site containing your channel. For best results please import " +"or restore these in date order (oldest first)." msgstr "" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35 -msgid "" -"Blur your precise location if your channel uses browser location mapping" +#: ../../Zotlabs/Module/Display.php:396 +msgid "Article" msgstr "" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40 -msgid "Minimum offset in meters" +#: ../../Zotlabs/Module/Display.php:448 +msgid "Item has been removed." msgstr "" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44 -msgid "Maximum offset in meters" +#: ../../Zotlabs/Module/Common.php:14 +msgid "No channel." msgstr "" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 -msgid "Fuzzy Location" +#: ../../Zotlabs/Module/Common.php:45 +msgid "No connections in common." msgstr "" -#: ../../addon/rtof/rtof.php:51 -msgid "Post to Friendica" +#: ../../Zotlabs/Module/Common.php:65 +msgid "View Common Connections" msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:24 -msgid "Friendica Crosspost Connector Settings saved." +#: ../../Zotlabs/Module/Impel.php:185 +#, php-format +msgid "%s element installed" msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:36 -msgid "Friendica Crosspost Connector App" +#: ../../Zotlabs/Module/Impel.php:188 +#, php-format +msgid "%s element installation failed" msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:37 -msgid "Relay public postings to a connected Friendica account" +#: ../../Zotlabs/Module/New_channel.php:159 +msgid "Your real name is recommended." msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:49 -msgid "Send public postings to Friendica by default" +#: ../../Zotlabs/Module/New_channel.php:160 +msgid "" +"Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation " +"Group\"" msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:53 -msgid "Friendica API Path" +#: ../../Zotlabs/Module/New_channel.php:165 +msgid "" +"This will be used to create a unique network address (like an email address)." msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:53 ../../addon/redred/Mod_Redred.php:67 -msgid "https://{sitename}/api" +#: ../../Zotlabs/Module/New_channel.php:167 +msgid "Allowed characters are a-z 0-9, - and _" msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:57 -msgid "Friendica login name" +#: ../../Zotlabs/Module/New_channel.php:175 +msgid "Channel name" msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:61 -msgid "Friendica password" +#: ../../Zotlabs/Module/New_channel.php:178 +msgid "" +"Select a channel permission role compatible with your usage needs and " +"privacy requirements." msgstr "" -#: ../../addon/rtof/Mod_Rtof.php:69 -msgid "Friendica Crosspost Connector" +#: ../../Zotlabs/Module/New_channel.php:181 +msgid "Create a Channel" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:96 -msgid "Jappixmini App" +#: ../../Zotlabs/Module/New_channel.php:182 +msgid "" +"A channel is a unique network identity. It can represent a person (social " +"network profile), a forum (group), a business or celebrity page, a newsfeed, " +"and many other things." msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:97 -msgid "Provides a Facebook-like chat using Jappix Mini" +#: ../../Zotlabs/Module/New_channel.php:183 +msgid "" +"or <a href=\"import\">import an existing channel</a> from another location." msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:157 ../../include/channel.php:1518 -#: ../../include/channel.php:1689 -msgid "Status:" +#: ../../Zotlabs/Module/New_channel.php:188 +msgid "Validate" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:161 -msgid "Hide Jappixmini Chat-Widget from the webinterface" +#: ../../Zotlabs/Module/Magic.php:78 +msgid "Hub not found." msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:166 -msgid "Jabber username" +#: ../../Zotlabs/Module/Ping.php:337 +msgid "sent you a private message" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:172 -msgid "Jabber server" +#: ../../Zotlabs/Module/Ping.php:393 +msgid "added your channel" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:178 -msgid "Jabber BOSH host URL" +#: ../../Zotlabs/Module/Ping.php:418 +msgid "requires approval" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:185 -msgid "Jabber password" +#: ../../Zotlabs/Module/Ping.php:428 +msgid "g A l F d" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -msgid "Encrypt Jabber password with Hubzilla password" +#: ../../Zotlabs/Module/Ping.php:446 +msgid "[today]" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:195 -#: ../../addon/redred/Mod_Redred.php:79 -msgid "Hubzilla password" +#: ../../Zotlabs/Module/Ping.php:456 +msgid "posted an event" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:199 -#: ../../addon/jappixmini/Mod_Jappixmini.php:203 -msgid "Approve subscription requests from Hubzilla contacts automatically" +#: ../../Zotlabs/Module/Ping.php:490 +msgid "shared a file with you" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:207 -msgid "Purge internal list of jabber addresses of contacts" +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Private forum" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:212 -msgid "Configuration Help" +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Public forum" msgstr "" -#: ../../addon/jappixmini/Mod_Jappixmini.php:258 -msgid "Jappixmini Settings" +#: ../../Zotlabs/Module/Service_limits.php:23 +msgid "No service class restrictions found." msgstr "" -#: ../../addon/upgrade_info/upgrade_info.php:48 -msgid "Your channel has been upgraded to $Projectname version" +#: ../../Zotlabs/Module/Mood.php:134 +msgid "Mood App" msgstr "" -#: ../../addon/upgrade_info/upgrade_info.php:50 -msgid "Please have a look at the" +#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155 +msgid "Set your current mood and tell your friends" msgstr "" -#: ../../addon/upgrade_info/upgrade_info.php:52 -msgid "git history" +#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 +msgid "Mood" msgstr "" -#: ../../addon/upgrade_info/upgrade_info.php:54 -msgid "change log" +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "About this site" msgstr "" -#: ../../addon/upgrade_info/upgrade_info.php:55 -msgid "for further info." +#: ../../Zotlabs/Module/Siteinfo.php:22 +msgid "Site Name" msgstr "" -#: ../../addon/upgrade_info/upgrade_info.php:60 -msgid "Upgrade Info" +#: ../../Zotlabs/Module/Siteinfo.php:26 +msgid "Administrator" msgstr "" -#: ../../addon/upgrade_info/upgrade_info.php:64 -msgid "Do not show this again" +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "Software and Project information" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:100 -#: ../../addon/channelreputation/channelreputation.php:101 -#: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177 -#: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259 -#: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317 -msgid "Access Denied" +#: ../../Zotlabs/Module/Siteinfo.php:30 +msgid "This site is powered by $Projectname" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:108 -msgid "Enable Community Moderation" +#: ../../Zotlabs/Module/Siteinfo.php:31 +msgid "" +"Federated and decentralised networking and identity services provided by Zot" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:116 -msgid "Reputation automatically given to new members" +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Additional federated transport protocols:" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:117 -msgid "Reputation will never fall below this value" +#: ../../Zotlabs/Module/Siteinfo.php:36 +#, php-format +msgid "Version %s" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:118 -msgid "Minimum reputation before posting is allowed" +#: ../../Zotlabs/Module/Siteinfo.php:37 +msgid "Project homepage" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:119 -msgid "Minimum reputation before commenting is allowed" +#: ../../Zotlabs/Module/Siteinfo.php:38 +msgid "Developer homepage" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:120 -msgid "Minimum reputation before a member is able to moderate other posts" +#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 +msgid "App installed." msgstr "" -#: ../../addon/channelreputation/channelreputation.php:121 -msgid "" -"Max ratio of moderator's reputation that can be added to/deducted from " -"reputation of person being moderated" +#: ../../Zotlabs/Module/Appman.php:49 +msgid "Malformed app." msgstr "" -#: ../../addon/channelreputation/channelreputation.php:122 -msgid "Reputation \"cost\" to post" +#: ../../Zotlabs/Module/Appman.php:132 +msgid "Embed code" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:123 -msgid "Reputation \"cost\" to comment" +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Edit App" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:124 -msgid "" -"Reputation automatically recovers at this rate per hour until it reaches " -"minimum_to_post" +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Create App" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:125 -msgid "" -"When minimum_to_moderate > reputation > minimum_to_post reputation recovers " -"at this rate per hour" +#: ../../Zotlabs/Module/Appman.php:143 +msgid "Name of app" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:139 -msgid "Community Moderation Settings" +#: ../../Zotlabs/Module/Appman.php:144 +msgid "Location (URL) of app" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:229 -msgid "Channel Reputation" +#: ../../Zotlabs/Module/Appman.php:146 +msgid "Photo icon URL" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:233 -msgid "An Error has occurred." +#: ../../Zotlabs/Module/Appman.php:146 +msgid "80 x 80 pixels - optional" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:251 -msgid "Upvote" +#: ../../Zotlabs/Module/Appman.php:147 +msgid "Categories (optional, comma separated list)" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:252 -msgid "Downvote" +#: ../../Zotlabs/Module/Appman.php:148 +msgid "Version ID" msgstr "" -#: ../../addon/channelreputation/channelreputation.php:374 -msgid "Can moderate reputation on my channel." +#: ../../Zotlabs/Module/Appman.php:149 +msgid "Price of app" msgstr "" -#: ../../addon/superblock/superblock.php:337 -msgid "Block Completely" +#: ../../Zotlabs/Module/Appman.php:150 +msgid "Location (URL) to purchase app" msgstr "" -#: ../../addon/superblock/Mod_Superblock.php:20 -msgid "Superblock App" +#: ../../Zotlabs/Module/Admin.php:97 +msgid "Blocked accounts" msgstr "" -#: ../../addon/superblock/Mod_Superblock.php:21 -msgid "Block channels" +#: ../../Zotlabs/Module/Admin.php:98 +msgid "Expired accounts" msgstr "" -#: ../../addon/superblock/Mod_Superblock.php:63 -msgid "superblock settings updated" +#: ../../Zotlabs/Module/Admin.php:99 +msgid "Expiring accounts" msgstr "" -#: ../../addon/superblock/Mod_Superblock.php:87 -msgid "Currently blocked" +#: ../../Zotlabs/Module/Admin.php:120 +msgid "Message queues" msgstr "" -#: ../../addon/superblock/Mod_Superblock.php:89 -msgid "No channels currently blocked" +#: ../../Zotlabs/Module/Admin.php:134 +msgid "Your software should be updated" msgstr "" -#: ../../addon/nofed/Mod_Nofed.php:21 -msgid "nofed Settings saved." +#: ../../Zotlabs/Module/Admin.php:139 +msgid "Summary" msgstr "" -#: ../../addon/nofed/Mod_Nofed.php:33 -msgid "No Federation App" +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Registered accounts" msgstr "" -#: ../../addon/nofed/Mod_Nofed.php:34 -msgid "" -"Prevent posting from being federated to anybody. It will exist only on your " -"channel page." +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Pending registrations" msgstr "" -#: ../../addon/nofed/Mod_Nofed.php:42 -msgid "Federate posts by default" +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Registered channels" msgstr "" -#: ../../addon/nofed/Mod_Nofed.php:50 -msgid "No Federation" +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Active addons" msgstr "" -#: ../../addon/nofed/nofed.php:47 -msgid "Federate" +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Version" msgstr "" -#: ../../addon/redred/Mod_Redred.php:24 -msgid "Channel is required." +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (master)" msgstr "" -#: ../../addon/redred/Mod_Redred.php:38 -msgid "Hubzilla Crosspost Connector Settings saved." +#: ../../Zotlabs/Module/Admin.php:148 +msgid "Repository version (dev)" msgstr "" -#: ../../addon/redred/Mod_Redred.php:50 -#: ../../addon/statusnet/Mod_Statusnet.php:146 -msgid "Hubzilla Crosspost Connector App" +#: ../../Zotlabs/Module/Cards.php:51 +msgid "Cards App" msgstr "" -#: ../../addon/redred/Mod_Redred.php:51 -msgid "Relay public postings to another Hubzilla channel" +#: ../../Zotlabs/Module/Cards.php:52 +msgid "Create personal planning cards" msgstr "" -#: ../../addon/redred/Mod_Redred.php:63 -msgid "Send public postings to Hubzilla channel by default" +#: ../../Zotlabs/Module/Cards.php:112 +msgid "Add Card" msgstr "" -#: ../../addon/redred/Mod_Redred.php:67 -msgid "Hubzilla API Path" +#: ../../Zotlabs/Module/Directory.php:116 +msgid "No default suggestions were found." msgstr "" -#: ../../addon/redred/Mod_Redred.php:71 -msgid "Hubzilla login name" +#: ../../Zotlabs/Module/Directory.php:270 +#, php-format +msgid "%d rating" +msgid_plural "%d ratings" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Module/Directory.php:281 +msgid "Gender: " msgstr "" -#: ../../addon/redred/Mod_Redred.php:75 -msgid "Hubzilla channel name" +#: ../../Zotlabs/Module/Directory.php:283 +msgid "Status: " msgstr "" -#: ../../addon/redred/Mod_Redred.php:87 -msgid "Hubzilla Crosspost Connector" +#: ../../Zotlabs/Module/Directory.php:285 +msgid "Homepage: " msgstr "" -#: ../../addon/redred/redred.php:50 -msgid "Post to Hubzilla" +#: ../../Zotlabs/Module/Directory.php:345 +msgid "Description:" msgstr "" -#: ../../addon/logrot/logrot.php:36 -msgid "Logfile archive directory" +#: ../../Zotlabs/Module/Directory.php:354 +msgid "Public Forum:" msgstr "" -#: ../../addon/logrot/logrot.php:36 -msgid "Directory to store rotated logs" +#: ../../Zotlabs/Module/Directory.php:357 +msgid "Keywords: " msgstr "" -#: ../../addon/logrot/logrot.php:37 -msgid "Logfile size in bytes before rotating" +#: ../../Zotlabs/Module/Directory.php:360 +msgid "Don't suggest" msgstr "" -#: ../../addon/logrot/logrot.php:38 -msgid "Number of logfiles to retain" +#: ../../Zotlabs/Module/Directory.php:362 +msgid "Common connections (estimated):" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:27 -msgid "No server specified" +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Global Directory" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:73 -msgid "Posts imported" +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Local Directory" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:113 -msgid "Files imported" +#: ../../Zotlabs/Module/Directory.php:417 +msgid "Finding:" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:422 +msgid "next page" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:122 -msgid "" -"This addon app copies existing content and file storage to a cloned/copied " -"channel. Once the app is installed, visit the newly installed app. This will " -"allow you to set the location of your original channel and an optional date " -"range of files/conversations to copy." +#: ../../Zotlabs/Module/Directory.php:422 +msgid "previous page" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:136 -msgid "" -"This will import all your conversations and cloud files from a cloned " -"channel on another server. This may take a while if you have lots of posts " -"and or files." +#: ../../Zotlabs/Module/Directory.php:423 +msgid "Sort options" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:137 -msgid "Include posts" +#: ../../Zotlabs/Module/Directory.php:424 +msgid "Alphabetic" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:137 -msgid "Conversations, Articles, Cards, and other posted content" +#: ../../Zotlabs/Module/Directory.php:425 +msgid "Reverse Alphabetic" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:138 -msgid "Include files" +#: ../../Zotlabs/Module/Directory.php:426 +msgid "Newest to Oldest" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:138 -msgid "Files, Photos and other cloud storage" +#: ../../Zotlabs/Module/Directory.php:427 +msgid "Oldest to Newest" msgstr "" -#: ../../addon/content_import/Mod_content_import.php:139 -msgid "Original Server base URL" +#: ../../Zotlabs/Module/Directory.php:444 +msgid "No entries (some entries may be hidden)." msgstr "" -#: ../../addon/frphotos/frphotos.php:92 -msgid "Friendica Photo Album Import" +#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 +msgid "Authorize application connection" msgstr "" -#: ../../addon/frphotos/frphotos.php:93 -msgid "This will import all your Friendica photo albums to this Red channel." +#: ../../Zotlabs/Module/Api.php:75 +msgid "Return to your app and insert this Security Code:" msgstr "" -#: ../../addon/frphotos/frphotos.php:94 -msgid "Friendica Server base URL" +#: ../../Zotlabs/Module/Api.php:85 +msgid "Please login to continue." msgstr "" -#: ../../addon/frphotos/frphotos.php:95 -msgid "Friendica Login Username" +#: ../../Zotlabs/Module/Api.php:97 +msgid "" +"Do you want to authorize this application to access your posts and contacts, " +"and/or create new posts for you?" msgstr "" -#: ../../addon/frphotos/frphotos.php:96 -msgid "Friendica Login Password" +#: ../../Zotlabs/Module/Regmod.php:15 +msgid "Please login." msgstr "" -#: ../../addon/hsse/Mod_Hsse.php:15 -msgid "WYSIWYG status editor" +#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 +#: ../../Zotlabs/Module/Editblock.php:113 +msgid "Block Name" msgstr "" -#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 -msgid "WYSIWYG Status App" +#: ../../Zotlabs/Module/Blocks.php:156 +msgid "Block Title" msgstr "" -#: ../../addon/hsse/Mod_Hsse.php:34 -msgid "WYSIWYG Status" +#: ../../Zotlabs/Module/Email_validation.php:36 +msgid "Email Verification Required" msgstr "" -#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 -msgid "Set your location" +#: ../../Zotlabs/Module/Email_validation.php:37 +#, php-format +msgid "" +"A verification token was sent to your email address [%s]. Enter that token " +"here to complete the account verification step. Please allow a few minutes " +"for delivery, and check your spam folder if you do not see the message." msgstr "" -#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 -msgid "Clear browser location" +#: ../../Zotlabs/Module/Email_validation.php:38 +msgid "Resend Email" msgstr "" -#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 -msgid "Embed (existing) photo from your photo albums" +#: ../../Zotlabs/Module/Email_validation.php:41 +msgid "Validation token" msgstr "" -#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 -msgid "Tag term:" +#: ../../Zotlabs/Module/Attach.php:13 +msgid "Item not available." msgstr "" -#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 -msgid "Where are you right now?" +#: ../../Zotlabs/Module/Profile_photo.php:91 +#: ../../Zotlabs/Module/Cover_photo.php:83 +msgid "Image uploaded but image cropping failed." msgstr "" -#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 -msgid "Choose a different album..." +#: ../../Zotlabs/Module/Profile_photo.php:164 +#: ../../Zotlabs/Module/Cover_photo.php:210 +msgid "Image resize failed." msgstr "" -#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 -msgid "Comments enabled" +#: ../../Zotlabs/Module/Profile_photo.php:294 +#: ../../Zotlabs/Module/Cover_photo.php:263 +msgid "Image upload failed." msgstr "" -#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 -msgid "Comments disabled" +#: ../../Zotlabs/Module/Profile_photo.php:313 +#: ../../Zotlabs/Module/Cover_photo.php:280 +msgid "Unable to process image." msgstr "" -#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 -msgid "Page link name" +#: ../../Zotlabs/Module/Profile_photo.php:377 +#: ../../Zotlabs/Module/Profile_photo.php:429 +#: ../../Zotlabs/Module/Cover_photo.php:373 +#: ../../Zotlabs/Module/Cover_photo.php:388 +msgid "Photo not available." msgstr "" -#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 -msgid "Post as" +#: ../../Zotlabs/Module/Profile_photo.php:493 +msgid "" +"Your default profile photo is visible to anybody on the internet. Profile " +"photos for alternate profiles will inherit the permissions of the profile" msgstr "" -#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 -msgid "Toggle voting" +#: ../../Zotlabs/Module/Profile_photo.php:493 +msgid "" +"Your profile photo is visible to anybody on the internet and may be " +"distributed to other websites." msgstr "" -#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 -msgid "Disable comments" +#: ../../Zotlabs/Module/Profile_photo.php:495 +#: ../../Zotlabs/Module/Cover_photo.php:426 +msgid "Upload File:" msgstr "" -#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 -msgid "Toggle comments" +#: ../../Zotlabs/Module/Profile_photo.php:496 +#: ../../Zotlabs/Module/Cover_photo.php:427 +msgid "Select a profile:" msgstr "" -#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 -msgid "Categories (optional, comma-separated list)" +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Use Photo for Profile" msgstr "" -#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 -msgid "Other networks and post services" +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Change Profile Photo" msgstr "" -#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 -msgid "Set publish date" +#: ../../Zotlabs/Module/Profile_photo.php:498 +msgid "Use" msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 -msgid "ActivityPub Protocol Settings updated." +#: ../../Zotlabs/Module/Profile_photo.php:503 +#: ../../Zotlabs/Module/Profile_photo.php:504 +#: ../../Zotlabs/Module/Cover_photo.php:432 +#: ../../Zotlabs/Module/Cover_photo.php:433 +msgid "Use a photo from your albums" msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:34 -msgid "" -"The activitypub protocol does not support location independence. Connections " -"you make within that network may be unreachable from alternate channel " -"locations." +#: ../../Zotlabs/Module/Profile_photo.php:509 +#: ../../Zotlabs/Module/Cover_photo.php:438 ../../Zotlabs/Module/Wiki.php:405 +msgid "Choose a different album" msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 -msgid "Activitypub Protocol App" +#: ../../Zotlabs/Module/Profile_photo.php:514 +#: ../../Zotlabs/Module/Cover_photo.php:444 +msgid "Select existing photo" msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 -msgid "Deliver to ActivityPub recipients in privacy groups" +#: ../../Zotlabs/Module/Profile_photo.php:533 +#: ../../Zotlabs/Module/Cover_photo.php:461 +msgid "Crop Image" msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 -msgid "" -"May result in a large number of mentions and expose all the members of your " -"privacy group" +#: ../../Zotlabs/Module/Profile_photo.php:534 +#: ../../Zotlabs/Module/Cover_photo.php:462 +msgid "Please adjust the image cropping for optimum viewing." msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 -msgid "Send multi-media HTML articles" +#: ../../Zotlabs/Module/Profile_photo.php:536 +#: ../../Zotlabs/Module/Cover_photo.php:464 +msgid "Done Editing" msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 -msgid "Not supported by some microblog services such as Mastodon" +#: ../../Zotlabs/Module/Editblock.php:138 +msgid "Edit Block" msgstr "" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 -msgid "Activitypub Protocol" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "Enter a folder name" msgstr "" -#: ../../addon/donate/donate.php:21 -msgid "Project Servers and Resources" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "or select an existing folder (doubleclick)" msgstr "" -#: ../../addon/donate/donate.php:22 -msgid "Project Creator and Tech Lead" +#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 +msgid "Save to Folder" msgstr "" -#: ../../addon/donate/donate.php:49 -msgid "" -"And the hundreds of other people and organisations who helped make the " -"Hubzilla possible." +#: ../../Zotlabs/Module/Editlayout.php:128 ../../Zotlabs/Module/Layouts.php:129 +#: ../../Zotlabs/Module/Layouts.php:189 +msgid "Layout Name" msgstr "" -#: ../../addon/donate/donate.php:52 -msgid "" -"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving " -"their time and expertise - and often paying out of pocket for services they " -"share with others." +#: ../../Zotlabs/Module/Editlayout.php:129 ../../Zotlabs/Module/Layouts.php:132 +msgid "Layout Description (Optional)" msgstr "" -#: ../../addon/donate/donate.php:53 -msgid "" -"There is no corporate funding and no ads, and we do not collect and sell " -"your personal information. (We don't control your personal information - " -"<strong>you do</strong>.)" +#: ../../Zotlabs/Module/Editlayout.php:137 +msgid "Edit Layout" msgstr "" -#: ../../addon/donate/donate.php:54 -msgid "" -"Help support our ground-breaking work in decentralisation, web identity, and " -"privacy." +#: ../../Zotlabs/Module/Connections.php:58 +#: ../../Zotlabs/Module/Connections.php:115 +#: ../../Zotlabs/Module/Connections.php:273 +msgid "Active" msgstr "" -#: ../../addon/donate/donate.php:56 -msgid "" -"Your donations keep servers and services running and also helps us to " -"provide innovative new features and continued development." +#: ../../Zotlabs/Module/Connections.php:63 +#: ../../Zotlabs/Module/Connections.php:181 +#: ../../Zotlabs/Module/Connections.php:278 +msgid "Blocked" msgstr "" -#: ../../addon/donate/donate.php:59 -msgid "Donate" +#: ../../Zotlabs/Module/Connections.php:68 +#: ../../Zotlabs/Module/Connections.php:188 +#: ../../Zotlabs/Module/Connections.php:277 +msgid "Ignored" msgstr "" -#: ../../addon/donate/donate.php:61 -msgid "" -"Choose a project, developer, or public hub to support with a one-time " -"donation" +#: ../../Zotlabs/Module/Connections.php:73 +#: ../../Zotlabs/Module/Connections.php:202 +#: ../../Zotlabs/Module/Connections.php:276 +msgid "Hidden" msgstr "" -#: ../../addon/donate/donate.php:62 -msgid "Donate Now" +#: ../../Zotlabs/Module/Connections.php:78 +#: ../../Zotlabs/Module/Connections.php:195 +msgid "Archived/Unreachable" msgstr "" -#: ../../addon/donate/donate.php:63 -msgid "" -"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)" +#: ../../Zotlabs/Module/Connections.php:83 +#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:180 +#: ../../Zotlabs/Module/Notifications.php:50 +msgid "New" msgstr "" -#: ../../addon/donate/donate.php:64 -msgid "" -"Please indicate if you would like your first name or full name (or nothing) " -"to appear in our sponsor listing" +#: ../../Zotlabs/Module/Connections.php:157 +msgid "Active Connections" msgstr "" -#: ../../addon/donate/donate.php:65 -msgid "Sponsor" +#: ../../Zotlabs/Module/Connections.php:160 +msgid "Show active connections" msgstr "" -#: ../../addon/donate/donate.php:68 -msgid "Special thanks to: " +#: ../../Zotlabs/Module/Connections.php:167 +msgid "Show pending (new) connections" msgstr "" -#: ../../addon/chords/Mod_Chords.php:44 -msgid "" -"This is a fairly comprehensive and complete guitar chord dictionary which " -"will list most of the available ways to play a certain chord, starting from " -"the base of the fingerboard up to a few frets beyond the twelfth fret " -"(beyond which everything repeats). A couple of non-standard tunings are " -"provided for the benefit of slide players, etc." +#: ../../Zotlabs/Module/Connections.php:184 +msgid "Only show blocked connections" msgstr "" -#: ../../addon/chords/Mod_Chords.php:46 -msgid "" -"Chord names start with a root note (A-G) and may include sharps (#) and " -"flats (b). This software will parse most of the standard naming conventions " -"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements." +#: ../../Zotlabs/Module/Connections.php:191 +msgid "Only show ignored connections" msgstr "" -#: ../../addon/chords/Mod_Chords.php:48 -msgid "" -"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " -"E7b13b11 ..." +#: ../../Zotlabs/Module/Connections.php:198 +msgid "Only show archived/unreachable connections" msgstr "" -#: ../../addon/chords/Mod_Chords.php:51 -msgid "Guitar Chords" +#: ../../Zotlabs/Module/Connections.php:205 +msgid "Only show hidden connections" msgstr "" -#: ../../addon/chords/Mod_Chords.php:52 -msgid "The complete online chord dictionary" +#: ../../Zotlabs/Module/Connections.php:220 +msgid "Show all connections" msgstr "" -#: ../../addon/chords/Mod_Chords.php:57 -msgid "Tuning" +#: ../../Zotlabs/Module/Connections.php:274 +msgid "Pending approval" msgstr "" -#: ../../addon/chords/Mod_Chords.php:58 -msgid "Chord name: example: Em7" +#: ../../Zotlabs/Module/Connections.php:275 +msgid "Archived" msgstr "" -#: ../../addon/chords/Mod_Chords.php:59 -msgid "Show for left handed stringing" +#: ../../Zotlabs/Module/Connections.php:279 +msgid "Not connected at this location" msgstr "" -#: ../../addon/chords/chords.php:33 -msgid "Quick Reference" +#: ../../Zotlabs/Module/Connections.php:296 +#, php-format +msgid "%1$s [%2$s]" msgstr "" -#: ../../addon/libertree/libertree.php:43 -msgid "Post to Libertree" +#: ../../Zotlabs/Module/Connections.php:297 +msgid "Edit connection" msgstr "" -#: ../../addon/libertree/Mod_Libertree.php:25 -msgid "Libertree Crosspost Connector Settings saved." +#: ../../Zotlabs/Module/Connections.php:299 +msgid "Delete connection" msgstr "" -#: ../../addon/libertree/Mod_Libertree.php:35 -msgid "Libertree Crosspost Connector App" +#: ../../Zotlabs/Module/Connections.php:308 +msgid "Channel address" msgstr "" -#: ../../addon/libertree/Mod_Libertree.php:36 -msgid "Relay public posts to Libertree" +#: ../../Zotlabs/Module/Connections.php:313 +msgid "Call" msgstr "" -#: ../../addon/libertree/Mod_Libertree.php:51 -msgid "Libertree API token" +#: ../../Zotlabs/Module/Connections.php:315 +msgid "Status" msgstr "" -#: ../../addon/libertree/Mod_Libertree.php:55 -msgid "Libertree site URL" +#: ../../Zotlabs/Module/Connections.php:317 +msgid "Connected" msgstr "" -#: ../../addon/libertree/Mod_Libertree.php:59 -msgid "Post to Libertree by default" +#: ../../Zotlabs/Module/Connections.php:319 +msgid "Approve connection" msgstr "" -#: ../../addon/libertree/Mod_Libertree.php:67 -msgid "Libertree Crosspost Connector" +#: ../../Zotlabs/Module/Connections.php:321 +msgid "Ignore connection" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 -msgid "Flattr widget settings updated." +#: ../../Zotlabs/Module/Connections.php:322 +#: ../../Zotlabs/Module/Connedit.php:644 +msgid "Ignore" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 -msgid "Flattr Widget App" +#: ../../Zotlabs/Module/Connections.php:323 +msgid "Recent activity" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54 -msgid "Add a Flattr button to your channel page" +#: ../../Zotlabs/Module/Connections.php:328 +msgid "Connect at this location" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 -msgid "Flattr user" +#: ../../Zotlabs/Module/Connections.php:356 +msgid "Search your connections" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "URL of the Thing to flattr" +#: ../../Zotlabs/Module/Connections.php:357 +msgid "Connections search" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "If empty channel URL is used" +#: ../../Zotlabs/Module/Cover_photo.php:194 +#: ../../Zotlabs/Module/Cover_photo.php:252 +msgid "Cover Photos" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 -msgid "Title of the Thing to flattr" +#: ../../Zotlabs/Module/Cover_photo.php:424 +msgid "Your cover photo may be visible to anybody on the internet" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 -msgid "If empty \"channel name on The Hubzilla\" will be used" +#: ../../Zotlabs/Module/Cover_photo.php:428 +msgid "Change Cover Photo" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "Static or dynamic flattr button" +#: ../../Zotlabs/Module/Photos.php:78 +msgid "Page owner information could not be retrieved." msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "static" +#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 +msgid "Album not found." msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "dynamic" +#: ../../Zotlabs/Module/Photos.php:103 +msgid "Delete Album" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "Alignment of the widget" +#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 +msgid "Delete Photo" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "left" +#: ../../Zotlabs/Module/Photos.php:527 +msgid "No photos selected" msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "right" +#: ../../Zotlabs/Module/Photos.php:576 +msgid "Access to this item is restricted." msgstr "" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 -msgid "Flattr Widget" +#: ../../Zotlabs/Module/Photos.php:619 +#, php-format +msgid "%1$.2f MB of %2$.2f MB photo storage used." msgstr "" -#: ../../addon/flattrwidget/flattrwidget.php:50 -msgid "Flattr this!" +#: ../../Zotlabs/Module/Photos.php:622 +#, php-format +msgid "%1$.2f MB photo storage used." msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:61 -msgid "" -"Please contact your site administrator.<br />The provided API URL is not " -"valid." +#: ../../Zotlabs/Module/Photos.php:664 +msgid "Upload Photos" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:98 -msgid "We could not contact the GNU social API with the Path you entered." +#: ../../Zotlabs/Module/Photos.php:668 +msgid "Enter an album name" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:130 -msgid "GNU social settings updated." +#: ../../Zotlabs/Module/Photos.php:669 +msgid "or select an existing album (doubleclick)" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:147 -msgid "" -"Relay public postings to a connected GNU social account (formerly StatusNet)" +#: ../../Zotlabs/Module/Photos.php:670 +msgid "Create a status post for this upload" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:181 -msgid "Globally Available GNU social OAuthKeys" +#: ../../Zotlabs/Module/Photos.php:672 +msgid "Description (optional)" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:183 -msgid "" -"There are preconfigured OAuth key pairs for some GNU social servers " -"available. If you are using one of them, please use these credentials.<br /" -">If not feel free to connect to any other GNU social instance (see below)." +#: ../../Zotlabs/Module/Photos.php:758 +msgid "Show Newest First" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:198 -msgid "Provide your own OAuth Credentials" +#: ../../Zotlabs/Module/Photos.php:760 +msgid "Show Oldest First" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:200 -msgid "" -"No consumer key pair for GNU social found. Register your Hubzilla Account as " -"an desktop client on your GNU social account, copy the consumer key pair " -"here and enter the API base root.<br />Before you register your own OAuth " -"key pair ask the administrator if there is already a key pair for this " -"Hubzilla installation at your favourite GNU social installation." +#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 +msgid "Add Photos" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:204 -msgid "OAuth Consumer Key" +#: ../../Zotlabs/Module/Photos.php:865 +msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:208 -msgid "OAuth Consumer Secret" +#: ../../Zotlabs/Module/Photos.php:867 +msgid "Photo not available" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Base API Path" +#: ../../Zotlabs/Module/Photos.php:925 +msgid "Use as profile photo" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Remember the trailing /" +#: ../../Zotlabs/Module/Photos.php:926 +msgid "Use as cover photo" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:216 -msgid "GNU social application name" +#: ../../Zotlabs/Module/Photos.php:933 +msgid "Private Photo" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:239 -msgid "" -"To connect to your GNU social account click the button below to get a " -"security code from GNU social which you have to copy into the input box " -"below and submit the form. Only your <strong>public</strong> posts will be " -"posted to GNU social." +#: ../../Zotlabs/Module/Photos.php:948 +msgid "View Full Size" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:241 -msgid "Log in with GNU social" +#: ../../Zotlabs/Module/Photos.php:1030 +msgid "Edit photo" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:244 -msgid "Copy the security code from GNU social here" +#: ../../Zotlabs/Module/Photos.php:1032 +msgid "Rotate CW (right)" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:254 -msgid "Cancel Connection Process" +#: ../../Zotlabs/Module/Photos.php:1033 +msgid "Rotate CCW (left)" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:256 -msgid "Current GNU social API is" +#: ../../Zotlabs/Module/Photos.php:1036 +msgid "Move photo to album" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1037 +msgid "Enter a new album name" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:260 -msgid "Cancel GNU social Connection" +#: ../../Zotlabs/Module/Photos.php:1038 +msgid "or select an existing one (doubleclick)" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:272 -#: ../../addon/twitter/Mod_Twitter.php:147 -msgid "Currently connected to: " +#: ../../Zotlabs/Module/Photos.php:1043 +msgid "Add a Tag" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:277 -msgid "" -"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile " -"details from unknown viewers?</em>) the link potentially included in public " -"postings relayed to GNU social will lead the visitor to a blank page " -"informing the visitor that the access to your profile has been restricted." +#: ../../Zotlabs/Module/Photos.php:1051 +msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:282 -msgid "Post to GNU social by default" +#: ../../Zotlabs/Module/Photos.php:1054 +msgid "Flag as adult in album view" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:282 -msgid "" -"If enabled your public postings will be posted to the associated GNU-social " -"account by default" +#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "I like this (toggle)" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:171 -msgid "Clear OAuth configuration" +#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "I don't like this (toggle)" msgstr "" -#: ../../addon/statusnet/Mod_Statusnet.php:303 -msgid "GNU-Social Crosspost Connector" +#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 +#: ../../Zotlabs/Lib/ThreadItem.php:793 +msgid "This is you" msgstr "" -#: ../../addon/statusnet/statusnet.php:145 -msgid "Post to GNU social" +#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 +#: ../../Zotlabs/Lib/ThreadItem.php:232 ../../Zotlabs/Lib/ThreadItem.php:244 +msgid "View all" msgstr "" -#: ../../addon/statusnet/statusnet.php:594 -msgid "API URL" +#: ../../Zotlabs/Module/Photos.php:1246 +msgid "Photo Tools" msgstr "" -#: ../../addon/statusnet/statusnet.php:597 -msgid "Application name" +#: ../../Zotlabs/Module/Photos.php:1255 +msgid "In This Photo:" msgstr "" -#: ../../addon/qrator/qrator.php:48 -msgid "QR code" +#: ../../Zotlabs/Module/Photos.php:1260 +msgid "Map" msgstr "" -#: ../../addon/qrator/qrator.php:63 -msgid "QR Generator" +#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 +msgctxt "noun" +msgid "Likes" msgstr "" -#: ../../addon/qrator/qrator.php:64 -msgid "Enter some text" +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 +msgctxt "noun" +msgid "Dislikes" msgstr "" -#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 -msgid "Invalid game." +#: ../../Zotlabs/Module/Lostpass.php:19 +msgid "No valid account found." msgstr "" -#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417 -msgid "You are not a player in this game." +#: ../../Zotlabs/Module/Lostpass.php:33 +msgid "Password reset request issued. Check your email." msgstr "" -#: ../../addon/chess/Mod_Chess.php:242 -msgid "You must be a local channel to create a game." +#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 +#, php-format +msgid "Site Member (%s)" msgstr "" -#: ../../addon/chess/Mod_Chess.php:260 -msgid "You must select one opponent that is not yourself." +#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 +#, php-format +msgid "Password reset requested at %s" msgstr "" -#: ../../addon/chess/Mod_Chess.php:271 -msgid "Random color chosen." +#: ../../Zotlabs/Module/Lostpass.php:68 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." msgstr "" -#: ../../addon/chess/Mod_Chess.php:279 -msgid "Error creating new game." +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1683 +msgid "Password Reset" msgstr "" -#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 -msgid "Requested channel is not available." +#: ../../Zotlabs/Module/Lostpass.php:92 +msgid "Your password has been reset as requested." msgstr "" -#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 -msgid "Chess not installed." +#: ../../Zotlabs/Module/Lostpass.php:93 +msgid "Your new password is" msgstr "" -#: ../../addon/chess/Mod_Chess.php:326 -msgid "You must select a local channel /chess/channelname" +#: ../../Zotlabs/Module/Lostpass.php:94 +msgid "Save or copy your new password - and then" msgstr "" -#: ../../addon/chess/chess.php:645 -msgid "Enable notifications" +#: ../../Zotlabs/Module/Lostpass.php:95 +msgid "click here to login" msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:65 -msgid "Twitter settings updated." +#: ../../Zotlabs/Module/Lostpass.php:96 +msgid "" +"Your password may be changed from the <em>Settings</em> page after " +"successful login." msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:78 -msgid "Twitter Crosspost Connector App" +#: ../../Zotlabs/Module/Lostpass.php:117 +#, php-format +msgid "Your password has changed at %s" msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:79 -msgid "Relay public posts to Twitter" +#: ../../Zotlabs/Module/Lostpass.php:130 +msgid "Forgot your Password?" msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:103 +#: ../../Zotlabs/Module/Lostpass.php:131 msgid "" -"No consumer key pair for Twitter found. Please contact your site " -"administrator." +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:125 -msgid "" -"At this Hubzilla instance the Twitter plugin was enabled but you have not " -"yet connected your account to your Twitter account. To do so click the " -"button below to get a PIN from Twitter which you have to copy into the input " -"box below and submit the form. Only your <strong>public</strong> posts will " -"be posted to Twitter." +#: ../../Zotlabs/Module/Lostpass.php:132 +msgid "Email Address" msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:127 -msgid "Log in with Twitter" +#: ../../Zotlabs/Module/Lostpass.php:133 ../../Zotlabs/Module/Pdledit.php:77 +msgid "Reset" msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:130 -msgid "Copy the PIN from Twitter here" +#: ../../Zotlabs/Module/Follow.php:36 +msgid "Connection added." msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:152 -msgid "" -"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile " -"details from unknown viewers?</em>) the link potentially included in public " -"postings relayed to Twitter will lead the visitor to a blank page informing " -"the visitor that the access to your profile has been restricted." +#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 +msgid "Invalid item." msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Twitter post length" +#: ../../Zotlabs/Module/Page.php:173 +msgid "" +"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " +"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, " +"quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " +"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse " +"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " +"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Maximum tweet length" +#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184 +#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659 +msgid "Profile not found." msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:162 -msgid "Send public postings to Twitter by default" +#: ../../Zotlabs/Module/Profiles.php:44 +msgid "Profile deleted." msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:162 -msgid "" -"If enabled your public postings will be posted to the associated Twitter " -"account by default" +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 +msgid "Profile-" msgstr "" -#: ../../addon/twitter/Mod_Twitter.php:181 -msgid "Twitter Crosspost Connector" +#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 +msgid "New profile created." msgstr "" -#: ../../addon/twitter/twitter.php:107 -msgid "Post to Twitter" +#: ../../Zotlabs/Module/Profiles.php:111 +msgid "Profile unavailable to clone." msgstr "" -#: ../../addon/smileybutton/Mod_Smileybutton.php:35 -msgid "Smileybutton App" +#: ../../Zotlabs/Module/Profiles.php:146 +msgid "Profile unavailable to export." msgstr "" -#: ../../addon/smileybutton/Mod_Smileybutton.php:36 -msgid "Adds a smileybutton to the jot editor" +#: ../../Zotlabs/Module/Profiles.php:252 +msgid "Profile Name is required." msgstr "" -#: ../../addon/smileybutton/Mod_Smileybutton.php:44 -msgid "Hide the button and show the smilies directly." +#: ../../Zotlabs/Module/Profiles.php:459 +msgid "Marital Status" msgstr "" -#: ../../addon/smileybutton/Mod_Smileybutton.php:52 -msgid "Smileybutton Settings" +#: ../../Zotlabs/Module/Profiles.php:463 +msgid "Romantic Partner" msgstr "" -#: ../../addon/cart/Settings/Cart.php:56 -msgid "Enable Test Catalog" +#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 +msgid "Likes" msgstr "" -#: ../../addon/cart/Settings/Cart.php:68 -msgid "Enable Manual Payments" +#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 +msgid "Dislikes" msgstr "" -#: ../../addon/cart/Settings/Cart.php:88 -msgid "Base Merchant Currency" +#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 +msgid "Work/Employment" msgstr "" -#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1263 -msgid "Cart Settings" +#: ../../Zotlabs/Module/Profiles.php:478 +msgid "Religion" msgstr "" -#: ../../addon/cart/myshop.php:30 -msgid "Access Denied." +#: ../../Zotlabs/Module/Profiles.php:482 +msgid "Political Views" msgstr "" -#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1334 -msgid "Order Not Found" +#: ../../Zotlabs/Module/Profiles.php:490 +msgid "Sexual Preference" msgstr "" -#: ../../addon/cart/myshop.php:186 ../../addon/cart/myshop.php:220 -#: ../../addon/cart/myshop.php:269 ../../addon/cart/myshop.php:327 -msgid "Invalid Item" +#: ../../Zotlabs/Module/Profiles.php:494 +msgid "Homepage" msgstr "" -#: ../../addon/cart/cart.php:159 -msgid "DB Cleanup Failure" +#: ../../Zotlabs/Module/Profiles.php:498 +msgid "Interests" msgstr "" -#: ../../addon/cart/cart.php:565 -msgid "[cart] Item Added" +#: ../../Zotlabs/Module/Profiles.php:594 +msgid "Profile updated." msgstr "" -#: ../../addon/cart/cart.php:953 -msgid "Order already checked out." +#: ../../Zotlabs/Module/Profiles.php:678 +msgid "Hide your connections list from viewers of this profile" msgstr "" -#: ../../addon/cart/cart.php:1256 -msgid "Drop database tables when uninstalling." +#: ../../Zotlabs/Module/Profiles.php:722 +msgid "Edit Profile Details" msgstr "" -#: ../../addon/cart/cart.php:1275 ../../addon/cart/cart.php:1278 -msgid "Shop" +#: ../../Zotlabs/Module/Profiles.php:724 +msgid "View this profile" msgstr "" -#: ../../addon/cart/cart.php:1395 -msgid "Cart utilities for orders and payments" +#: ../../Zotlabs/Module/Profiles.php:726 +msgid "Profile Tools" msgstr "" -#: ../../addon/cart/cart.php:1433 -msgid "You must be logged into the Grid to shop." +#: ../../Zotlabs/Module/Profiles.php:727 +msgid "Change cover photo" msgstr "" -#: ../../addon/cart/cart.php:1466 -#: ../../addon/cart/submodules/paypalbutton.php:392 -#: ../../addon/cart/manual_payments.php:68 -msgid "Order not found." +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Create a new profile using these settings" msgstr "" -#: ../../addon/cart/cart.php:1474 -msgid "Access denied." +#: ../../Zotlabs/Module/Profiles.php:730 +msgid "Clone this profile" msgstr "" -#: ../../addon/cart/cart.php:1526 ../../addon/cart/cart.php:1669 -msgid "No Order Found" +#: ../../Zotlabs/Module/Profiles.php:731 +msgid "Delete this profile" msgstr "" -#: ../../addon/cart/cart.php:1535 -msgid "An unknown error has occurred Please start again." +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Add profile things" msgstr "" -#: ../../addon/cart/cart.php:1702 -msgid "Invalid Payment Type. Please start again." +#: ../../Zotlabs/Module/Profiles.php:733 +msgid "Personal" msgstr "" -#: ../../addon/cart/cart.php:1709 -msgid "Order not found" +#: ../../Zotlabs/Module/Profiles.php:735 +msgid "Relationship" msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:85 -msgid "Enable Paypal Button Module" +#: ../../Zotlabs/Module/Profiles.php:738 +msgid "Import profile from file" msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:93 -msgid "Use Production Key" +#: ../../Zotlabs/Module/Profiles.php:739 +msgid "Export profile to file" msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:100 -msgid "Paypal Sandbox Client Key" +#: ../../Zotlabs/Module/Profiles.php:740 +msgid "Your gender" msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:107 -msgid "Paypal Sandbox Secret Key" +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "Marital status" msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:113 -msgid "Paypal Production Client Key" +#: ../../Zotlabs/Module/Profiles.php:742 +msgid "Sexual preference" msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:120 -msgid "Paypal Production Secret Key" +#: ../../Zotlabs/Module/Profiles.php:745 +msgid "Profile name" msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:252 -msgid "Paypal button payments are not enabled." +#: ../../Zotlabs/Module/Profiles.php:747 +msgid "This is your default profile." msgstr "" -#: ../../addon/cart/submodules/paypalbutton.php:270 -msgid "" -"Paypal button payments are not properly configured. Please choose another " -"payment option." +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Your full name" msgstr "" -#: ../../addon/cart/submodules/manualcat.php:61 -msgid "Enable Manual Cart Module" +#: ../../Zotlabs/Module/Profiles.php:750 +msgid "Title/Description" msgstr "" -#: ../../addon/cart/submodules/manualcat.php:173 -#: ../../addon/cart/submodules/hzservices.php:160 -msgid "New Sku" +#: ../../Zotlabs/Module/Profiles.php:753 +msgid "Street address" msgstr "" -#: ../../addon/cart/submodules/manualcat.php:209 -#: ../../addon/cart/submodules/hzservices.php:195 -msgid "Cannot save edits to locked item." +#: ../../Zotlabs/Module/Profiles.php:754 +msgid "Locality/City" msgstr "" -#: ../../addon/cart/submodules/manualcat.php:252 -#: ../../addon/cart/submodules/hzservices.php:644 -msgid "Changes Locked" +#: ../../Zotlabs/Module/Profiles.php:755 +msgid "Region/State" msgstr "" -#: ../../addon/cart/submodules/manualcat.php:256 -#: ../../addon/cart/submodules/hzservices.php:648 -msgid "Item available for purchase." +#: ../../Zotlabs/Module/Profiles.php:756 +msgid "Postal/Zip code" msgstr "" -#: ../../addon/cart/submodules/manualcat.php:263 -#: ../../addon/cart/submodules/hzservices.php:655 -msgid "Price" +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Who (if applicable)" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:62 -msgid "Enable Hubzilla Services Module" +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:243 -#: ../../addon/cart/submodules/hzservices.php:330 -msgid "SKU not found." +#: ../../Zotlabs/Module/Profiles.php:763 +msgid "Since (date)" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:296 -#: ../../addon/cart/submodules/hzservices.php:300 -msgid "Invalid Activation Directive." +#: ../../Zotlabs/Module/Profiles.php:766 +msgid "Tell us about yourself" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:371 -#: ../../addon/cart/submodules/hzservices.php:375 -msgid "Invalid Deactivation Directive." +#: ../../Zotlabs/Module/Profiles.php:768 +msgid "Hometown" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:561 -msgid "Add to this privacy group" +#: ../../Zotlabs/Module/Profiles.php:769 +msgid "Political views" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:577 -msgid "Set user service class" +#: ../../Zotlabs/Module/Profiles.php:770 +msgid "Religious views" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:604 -msgid "You must be using a local account to purchase this service." +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Keywords used in directory listings" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:659 -msgid "Add buyer to privacy group" +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Example: fishing photography software" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:664 -msgid "Add buyer as connection" +#: ../../Zotlabs/Module/Profiles.php:774 +msgid "Musical interests" msgstr "" -#: ../../addon/cart/submodules/hzservices.php:672 -#: ../../addon/cart/submodules/hzservices.php:714 -msgid "Set Service Class" +#: ../../Zotlabs/Module/Profiles.php:775 +msgid "Books, literature" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:151 -msgid "Enable Subscription Management Module" +#: ../../Zotlabs/Module/Profiles.php:776 +msgid "Television" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:223 -msgid "" -"Cannot include subscription items with different terms in the same order." +#: ../../Zotlabs/Module/Profiles.php:777 +msgid "Film/Dance/Culture/Entertainment" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:372 -msgid "Select Subscription to Edit" +#: ../../Zotlabs/Module/Profiles.php:778 +msgid "Hobbies/Interests" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:380 -msgid "Edit Subscriptions" +#: ../../Zotlabs/Module/Profiles.php:779 +msgid "Love/Romance" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:414 -msgid "Subscription SKU" +#: ../../Zotlabs/Module/Profiles.php:781 +msgid "School/Education" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:419 -msgid "Catalog Description" +#: ../../Zotlabs/Module/Profiles.php:782 +msgid "Contact information and social networks" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:423 -msgid "Subscription available for purchase." +#: ../../Zotlabs/Module/Profiles.php:783 +msgid "My other channels" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:428 -msgid "Maximum active subscriptions to this item per account." +#: ../../Zotlabs/Module/Profiles.php:785 +msgid "Communications" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:431 -msgid "Subscription price." +#: ../../Zotlabs/Module/Subthread.php:143 +#, php-format +msgid "%1$s is following %2$s's %3$s" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:435 -msgid "Quantity" +#: ../../Zotlabs/Module/Subthread.php:145 +#, php-format +msgid "%1$s stopped following %2$s's %3$s" msgstr "" -#: ../../addon/cart/submodules/subscriptions.php:439 -msgid "Term" +#: ../../Zotlabs/Module/Articles.php:52 +msgid "Articles App" msgstr "" -#: ../../addon/cart/manual_payments.php:7 -msgid "Error: order mismatch. Please try again." +#: ../../Zotlabs/Module/Articles.php:53 +msgid "Create interactive articles" msgstr "" -#: ../../addon/cart/manual_payments.php:61 -msgid "Manual payments are not enabled." +#: ../../Zotlabs/Module/Articles.php:116 +msgid "Add Article" msgstr "" -#: ../../addon/cart/manual_payments.php:77 -msgid "Finished" +#: ../../Zotlabs/Module/Bookmarks.php:62 +msgid "Bookmark added" msgstr "" -#: ../../addon/piwik/piwik.php:85 -msgid "" -"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " -"analytics tool." +#: ../../Zotlabs/Module/Bookmarks.php:78 +msgid "Bookmarks App" msgstr "" -#: ../../addon/piwik/piwik.php:88 -#, php-format -msgid "" -"If you do not want that your visits are logged this way you <a href='%s'>can " -"set a cookie to prevent Piwik from tracking further visits of the site</a> " -"(opt-out)." +#: ../../Zotlabs/Module/Bookmarks.php:79 +msgid "Bookmark links from posts and manage them" msgstr "" -#: ../../addon/piwik/piwik.php:96 -msgid "Piwik Base URL" +#: ../../Zotlabs/Module/Bookmarks.php:92 +msgid "My Bookmarks" msgstr "" -#: ../../addon/piwik/piwik.php:96 -msgid "" -"Absolute path to your Piwik installation. (without protocol (http/s), with " -"trailing slash)" +#: ../../Zotlabs/Module/Bookmarks.php:103 +msgid "My Connections Bookmarks" msgstr "" -#: ../../addon/piwik/piwik.php:97 -msgid "Site ID" +#: ../../Zotlabs/Module/Probe.php:18 +msgid "Remote Diagnostics App" msgstr "" -#: ../../addon/piwik/piwik.php:98 -msgid "Show opt-out cookie link?" +#: ../../Zotlabs/Module/Probe.php:19 +msgid "Perform diagnostics on remote channels" msgstr "" -#: ../../addon/piwik/piwik.php:99 -msgid "Asynchronous tracking" +#: ../../Zotlabs/Module/Changeaddr.php:35 +msgid "" +"Channel name changes are not allowed within 48 hours of changing the account " +"password." msgstr "" -#: ../../addon/piwik/piwik.php:100 -msgid "Enable frontend JavaScript error tracking" +#: ../../Zotlabs/Module/Changeaddr.php:77 +msgid "Change channel nickname/address" msgstr "" -#: ../../addon/piwik/piwik.php:100 -msgid "This feature requires Piwik >= 2.2.0" +#: ../../Zotlabs/Module/Changeaddr.php:78 +msgid "Any/all connections on other networks will be lost!" msgstr "" -#: ../../addon/tour/tour.php:76 -msgid "Edit your profile and change settings." +#: ../../Zotlabs/Module/Changeaddr.php:80 +msgid "New channel address" msgstr "" -#: ../../addon/tour/tour.php:77 -msgid "Click here to see activity from your connections." +#: ../../Zotlabs/Module/Changeaddr.php:81 +msgid "Rename Channel" msgstr "" -#: ../../addon/tour/tour.php:78 -msgid "Click here to see your channel home." +#: ../../Zotlabs/Module/Invite.php:37 +msgid "Total invitation limit exceeded." msgstr "" -#: ../../addon/tour/tour.php:79 -msgid "You can access your private messages from here." +#: ../../Zotlabs/Module/Invite.php:61 +#, php-format +msgid "%s : Not a valid email address." msgstr "" -#: ../../addon/tour/tour.php:80 -msgid "Create new events here." +#: ../../Zotlabs/Module/Invite.php:75 +msgid "Please join us on $Projectname" msgstr "" -#: ../../addon/tour/tour.php:81 -msgid "" -"You can accept new connections and change permissions for existing ones " -"here. You can also e.g. create groups of contacts." +#: ../../Zotlabs/Module/Invite.php:85 +msgid "Invitation limit exceeded. Please contact your site administrator." msgstr "" -#: ../../addon/tour/tour.php:82 -msgid "System notifications will arrive here" -msgstr "" +#: ../../Zotlabs/Module/Invite.php:94 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "" +msgstr[1] "" -#: ../../addon/tour/tour.php:83 -msgid "Search for content and users" +#: ../../Zotlabs/Module/Invite.php:110 +msgid "Invite App" msgstr "" -#: ../../addon/tour/tour.php:84 -msgid "Browse for new contacts" +#: ../../Zotlabs/Module/Invite.php:111 +msgid "Send email invitations to join this network" msgstr "" -#: ../../addon/tour/tour.php:85 -msgid "Launch installed apps" +#: ../../Zotlabs/Module/Invite.php:124 +msgid "You have no more invitations available" msgstr "" - -#: ../../addon/tour/tour.php:86 -msgid "Looking for help? Click here." + +#: ../../Zotlabs/Module/Invite.php:155 +msgid "Send invitations" msgstr "" -#: ../../addon/tour/tour.php:87 -msgid "" -"New events have occurred in your network. Click here to see what has " -"happened!" +#: ../../Zotlabs/Module/Invite.php:156 +msgid "Enter email addresses, one per line:" msgstr "" -#: ../../addon/tour/tour.php:88 -msgid "You have received a new private message. Click here to see from who!" +#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:289 +msgid "Your message:" msgstr "" -#: ../../addon/tour/tour.php:89 -msgid "There are events this week. Click here too see which!" +#: ../../Zotlabs/Module/Invite.php:158 +msgid "Please join my community on $Projectname." msgstr "" -#: ../../addon/tour/tour.php:90 -msgid "You have received a new introduction. Click here to see who!" +#: ../../Zotlabs/Module/Invite.php:160 +msgid "You will need to supply this invitation code:" msgstr "" -#: ../../addon/tour/tour.php:91 -msgid "" -"There is a new system notification. Click here to see what has happened!" +#: ../../Zotlabs/Module/Invite.php:161 +msgid "1. Register at any $Projectname location (they are all inter-connected)" msgstr "" -#: ../../addon/tour/tour.php:94 -msgid "Click here to share text, images, videos and sound." +#: ../../Zotlabs/Module/Invite.php:163 +msgid "2. Enter my $Projectname network address into the site searchbar." msgstr "" -#: ../../addon/tour/tour.php:95 -msgid "You can write an optional title for your update (good for long posts)." +#: ../../Zotlabs/Module/Invite.php:164 +msgid "or visit" msgstr "" -#: ../../addon/tour/tour.php:96 -msgid "Entering some categories here makes it easier to find your post later." +#: ../../Zotlabs/Module/Invite.php:166 +msgid "3. Click [Connect]" msgstr "" -#: ../../addon/tour/tour.php:97 -msgid "Share photos, links, location, etc." +#: ../../Zotlabs/Module/Notes.php:56 +msgid "Notes App" msgstr "" -#: ../../addon/tour/tour.php:98 -msgid "" -"Only want to share content for a while? Make it expire at a certain date." +#: ../../Zotlabs/Module/Notes.php:57 +msgid "A simple notes app with a widget (note: notes are not encrypted)" msgstr "" -#: ../../addon/tour/tour.php:99 -msgid "You can password protect content." +#: ../../Zotlabs/Module/Xchan.php:10 +msgid "Xchan Lookup" msgstr "" -#: ../../addon/tour/tour.php:100 -msgid "Choose who you share with." +#: ../../Zotlabs/Module/Xchan.php:13 +msgid "Lookup xchan beginning with (or webbie): " msgstr "" -#: ../../addon/tour/tour.php:102 -msgid "Click here when you are done." +#: ../../Zotlabs/Module/Mail.php:77 +msgid "Unable to lookup recipient." msgstr "" -#: ../../addon/tour/tour.php:105 -msgid "Adjust from which channels posts should be displayed." +#: ../../Zotlabs/Module/Mail.php:84 +msgid "Unable to communicate with requested channel." msgstr "" -#: ../../addon/tour/tour.php:106 -msgid "Only show posts from channels in the specified privacy group." +#: ../../Zotlabs/Module/Mail.php:91 +msgid "Cannot verify requested channel." msgstr "" -#: ../../addon/tour/tour.php:110 -msgid "" -"Easily find posts containing tags (keywords preceded by the \"#\" symbol)." +#: ../../Zotlabs/Module/Mail.php:109 +msgid "Selected channel has private message restrictions. Send failed." msgstr "" -#: ../../addon/tour/tour.php:111 -msgid "Easily find posts in given category." +#: ../../Zotlabs/Module/Mail.php:164 +msgid "Messages" msgstr "" -#: ../../addon/tour/tour.php:112 -msgid "Easily find posts by date." +#: ../../Zotlabs/Module/Mail.php:177 +msgid "message" msgstr "" -#: ../../addon/tour/tour.php:113 -msgid "" -"Suggested users who have volounteered to be shown as suggestions, and who we " -"think you might find interesting." +#: ../../Zotlabs/Module/Mail.php:218 +msgid "Message recalled." msgstr "" -#: ../../addon/tour/tour.php:114 -msgid "Here you see channels you have connected to." +#: ../../Zotlabs/Module/Mail.php:231 +msgid "Conversation removed." msgstr "" -#: ../../addon/tour/tour.php:115 -msgid "Save your search so you can repeat it at a later date." +#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:367 +msgid "Expires YYYY-MM-DD HH:MM" msgstr "" -#: ../../addon/tour/tour.php:118 -msgid "" -"If you see this icon you can be sure that the sender is who it say it is. It " -"is normal that it is not always possible to verify the sender, so the icon " -"will be missing sometimes. There is usually no need to worry about that." +#: ../../Zotlabs/Module/Mail.php:274 +msgid "Requested channel is not in this network" msgstr "" -#: ../../addon/tour/tour.php:119 -msgid "" -"Danger! It seems someone tried to forge a message! This message is not " -"necessarily from who it says it is from!" +#: ../../Zotlabs/Module/Mail.php:282 +msgid "Send Private Message" msgstr "" -#: ../../addon/tour/tour.php:126 -msgid "" -"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can " -"pause it at any time and continue where you left off by reloading the page, " -"or navigting to another page.</p><p>You can also advance by pressing the " -"return key" +#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 +msgid "To:" msgstr "" -#: ../../addon/sendzid/Mod_Sendzid.php:14 -msgid "Send your identity to all websites" +#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 +msgid "Subject:" msgstr "" -#: ../../addon/sendzid/Mod_Sendzid.php:20 -msgid "Sendzid App" +#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:434 +msgid "Attach file" msgstr "" -#: ../../addon/sendzid/Mod_Sendzid.php:32 -msgid "Send ZID" +#: ../../Zotlabs/Module/Mail.php:293 +msgid "Send" msgstr "" -#: ../../addon/tictac/tictac.php:21 -msgid "Three Dimensional Tic-Tac-Toe" +#: ../../Zotlabs/Module/Mail.php:397 +msgid "Delete message" msgstr "" -#: ../../addon/tictac/tictac.php:54 -msgid "3D Tic-Tac-Toe" +#: ../../Zotlabs/Module/Mail.php:398 +msgid "Delivery report" msgstr "" -#: ../../addon/tictac/tictac.php:59 -msgid "New game" +#: ../../Zotlabs/Module/Mail.php:399 +msgid "Recall message" msgstr "" -#: ../../addon/tictac/tictac.php:60 -msgid "New game with handicap" +#: ../../Zotlabs/Module/Mail.php:401 +msgid "Message has been recalled." msgstr "" -#: ../../addon/tictac/tictac.php:61 -msgid "" -"Three dimensional tic-tac-toe is just like the traditional game except that " -"it is played on multiple levels simultaneously. " +#: ../../Zotlabs/Module/Mail.php:419 +msgid "Delete Conversation" msgstr "" -#: ../../addon/tictac/tictac.php:62 +#: ../../Zotlabs/Module/Mail.php:421 msgid "" -"In this case there are three levels. You win by getting three in a row on " -"any level, as well as up, down, and diagonally across the different levels." +"No secure communications available. You <strong>may</strong> be able to " +"respond from the sender's profile page." msgstr "" -#: ../../addon/tictac/tictac.php:64 -msgid "" -"The handicap game disables the center position on the middle level because " -"the player claiming this square often has an unfair advantage." +#: ../../Zotlabs/Module/Mail.php:425 +msgid "Send Reply" msgstr "" -#: ../../addon/tictac/tictac.php:183 -msgid "You go first..." +#: ../../Zotlabs/Module/Mail.php:430 +#, php-format +msgid "Your message for %s (%s):" msgstr "" -#: ../../addon/tictac/tictac.php:188 -msgid "I'm going first this time..." +#: ../../Zotlabs/Module/Affinity.php:35 +msgid "Affinity Tool settings updated." msgstr "" -#: ../../addon/tictac/tictac.php:194 -msgid "You won!" +#: ../../Zotlabs/Module/Affinity.php:47 +msgid "" +"This app presents a slider control in your connection editor and also on " +"your network page. The slider represents your degree of friendship " +"(affinity) with each connection. It allows you to zoom in or out and display " +"conversations from only your closest friends or everybody in your stream." msgstr "" -#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 -msgid "\"Cat\" game!" +#: ../../Zotlabs/Module/Affinity.php:52 +msgid "Affinity Tool App" msgstr "" -#: ../../addon/tictac/tictac.php:223 -msgid "I won!" +#: ../../Zotlabs/Module/Affinity.php:57 +msgid "" +"The numbers below represent the minimum and maximum slider default positions " +"for your network/stream page as a percentage." msgstr "" -#: ../../addon/pageheader/Mod_Pageheader.php:22 -msgid "pageheader Settings saved." +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "Default maximum affinity level" msgstr "" -#: ../../addon/pageheader/Mod_Pageheader.php:34 -msgid "Page Header App" +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "0-99 default 99" msgstr "" -#: ../../addon/pageheader/Mod_Pageheader.php:35 -msgid "Inserts a page header" +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "Default minimum affinity level" msgstr "" -#: ../../addon/pageheader/Mod_Pageheader.php:43 -msgid "Message to display on every page on this server" +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "0-99 - default 0" msgstr "" -#: ../../addon/pageheader/Mod_Pageheader.php:51 -msgid "Page Header" +#: ../../Zotlabs/Module/Affinity.php:76 +msgid "Persistent affinity levels" msgstr "" -#: ../../addon/authchoose/Mod_Authchoose.php:22 +#: ../../Zotlabs/Module/Affinity.php:76 msgid "" -"Allow magic authentication only to websites of your immediate connections" +"If disabled the max and min levels will be reset to default after page reload" msgstr "" -#: ../../addon/authchoose/Mod_Authchoose.php:28 -#: ../../addon/authchoose/Mod_Authchoose.php:33 -msgid "Authchoose App" +#: ../../Zotlabs/Module/Affinity.php:84 +msgid "Affinity Tool Settings" msgstr "" -#: ../../addon/authchoose/Mod_Authchoose.php:39 -msgid "Authchoose" +#: ../../Zotlabs/Module/Rate.php:156 +msgid "Website:" msgstr "" -#: ../../addon/moremoods/moremoods.php:19 -msgid "lonely" +#: ../../Zotlabs/Module/Rate.php:159 +#, php-format +msgid "Remote Channel [%s] (not yet known on this site)" msgstr "" -#: ../../addon/moremoods/moremoods.php:20 -msgid "drunk" +#: ../../Zotlabs/Module/Rate.php:160 +msgid "Rating (this information is public)" msgstr "" -#: ../../addon/moremoods/moremoods.php:21 -msgid "horny" +#: ../../Zotlabs/Module/Rate.php:161 +msgid "Optionally explain your rating (this information is public)" msgstr "" -#: ../../addon/moremoods/moremoods.php:22 -msgid "stoned" +#: ../../Zotlabs/Module/Settings/Network.php:41 +#: ../../Zotlabs/Module/Settings/Channel_home.php:44 +msgid "Max height of content (in pixels)" msgstr "" -#: ../../addon/moremoods/moremoods.php:23 -msgid "fucked up" +#: ../../Zotlabs/Module/Settings/Network.php:43 +#: ../../Zotlabs/Module/Settings/Channel_home.php:46 +msgid "Click to expand content exceeding this height" msgstr "" -#: ../../addon/moremoods/moremoods.php:24 -msgid "clusterfucked" +#: ../../Zotlabs/Module/Settings/Network.php:58 +msgid "Stream Settings" msgstr "" -#: ../../addon/moremoods/moremoods.php:25 -msgid "crazy" +#: ../../Zotlabs/Module/Settings/Features.php:43 +msgid "Additional Features" msgstr "" -#: ../../addon/moremoods/moremoods.php:26 -msgid "hurt" +#: ../../Zotlabs/Module/Settings/Channel.php:327 +msgid "Nobody except yourself" msgstr "" -#: ../../addon/moremoods/moremoods.php:27 -msgid "sleepy" +#: ../../Zotlabs/Module/Settings/Channel.php:328 +msgid "Only those you specifically allow" msgstr "" -#: ../../addon/moremoods/moremoods.php:28 -msgid "grumpy" +#: ../../Zotlabs/Module/Settings/Channel.php:329 +msgid "Approved connections" msgstr "" -#: ../../addon/moremoods/moremoods.php:29 -msgid "high" +#: ../../Zotlabs/Module/Settings/Channel.php:330 +msgid "Any connections" msgstr "" -#: ../../addon/moremoods/moremoods.php:30 -msgid "semi-conscious" +#: ../../Zotlabs/Module/Settings/Channel.php:331 +msgid "Anybody on this website" msgstr "" -#: ../../addon/moremoods/moremoods.php:31 -msgid "in love" +#: ../../Zotlabs/Module/Settings/Channel.php:332 +msgid "Anybody in this network" msgstr "" -#: ../../addon/moremoods/moremoods.php:32 -msgid "in lust" +#: ../../Zotlabs/Module/Settings/Channel.php:333 +msgid "Anybody authenticated" msgstr "" -#: ../../addon/moremoods/moremoods.php:33 -msgid "naked" +#: ../../Zotlabs/Module/Settings/Channel.php:334 +msgid "Anybody on the internet" msgstr "" -#: ../../addon/moremoods/moremoods.php:34 -msgid "stinky" +#: ../../Zotlabs/Module/Settings/Channel.php:409 +msgid "Publish your default profile in the network directory" msgstr "" -#: ../../addon/moremoods/moremoods.php:35 -msgid "sweaty" +#: ../../Zotlabs/Module/Settings/Channel.php:414 +msgid "Allow us to suggest you as a potential friend to new members?" msgstr "" -#: ../../addon/moremoods/moremoods.php:36 -msgid "bleeding out" +#: ../../Zotlabs/Module/Settings/Channel.php:418 +msgid "or" msgstr "" -#: ../../addon/moremoods/moremoods.php:37 -msgid "victorious" +#: ../../Zotlabs/Module/Settings/Channel.php:427 +msgid "Your channel address is" msgstr "" -#: ../../addon/moremoods/moremoods.php:38 -msgid "defeated" +#: ../../Zotlabs/Module/Settings/Channel.php:430 +msgid "Your files/photos are accessible via WebDAV at" msgstr "" -#: ../../addon/moremoods/moremoods.php:39 -msgid "envious" +#: ../../Zotlabs/Module/Settings/Channel.php:470 +msgid "Automatic membership approval" msgstr "" -#: ../../addon/moremoods/moremoods.php:40 -msgid "jealous" +#: ../../Zotlabs/Module/Settings/Channel.php:470 +#: ../../Zotlabs/Module/Defperms.php:255 +msgid "" +"If enabled, connection requests will be approved without your interaction" msgstr "" -#: ../../addon/xmpp/Mod_Xmpp.php:23 -msgid "XMPP settings updated." +#: ../../Zotlabs/Module/Settings/Channel.php:491 +msgid "Channel Settings" msgstr "" -#: ../../addon/xmpp/Mod_Xmpp.php:35 -msgid "XMPP App" +#: ../../Zotlabs/Module/Settings/Channel.php:498 +msgid "Basic Settings" msgstr "" -#: ../../addon/xmpp/Mod_Xmpp.php:36 -msgid "Embedded XMPP (Jabber) client" +#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Account.php:104 +msgid "Email Address:" msgstr "" -#: ../../addon/xmpp/Mod_Xmpp.php:52 -msgid "Individual credentials" +#: ../../Zotlabs/Module/Settings/Channel.php:501 +msgid "Your Timezone:" msgstr "" -#: ../../addon/xmpp/Mod_Xmpp.php:58 -msgid "Jabber BOSH server" +#: ../../Zotlabs/Module/Settings/Channel.php:502 +msgid "Default Post Location:" msgstr "" -#: ../../addon/xmpp/Mod_Xmpp.php:67 -msgid "XMPP Settings" +#: ../../Zotlabs/Module/Settings/Channel.php:502 +msgid "Geographical location to display on your posts" msgstr "" -#: ../../addon/xmpp/xmpp.php:44 -msgid "Jabber BOSH host" +#: ../../Zotlabs/Module/Settings/Channel.php:503 +msgid "Use Browser Location:" msgstr "" -#: ../../addon/xmpp/xmpp.php:45 -msgid "Use central userbase" +#: ../../Zotlabs/Module/Settings/Channel.php:505 +msgid "Adult Content" msgstr "" -#: ../../addon/xmpp/xmpp.php:45 +#: ../../Zotlabs/Module/Settings/Channel.php:505 msgid "" -"If enabled, members will automatically login to an ejabberd server that has " -"to be installed on this machine with synchronized credentials via the " -"\"auth_ejabberd.php\" script." +"This channel frequently or regularly publishes adult content. (Please tag " +"any adult material and/or nudity with #NSFW)" msgstr "" -#: ../../addon/wholikesme/wholikesme.php:29 -msgid "Who likes me?" +#: ../../Zotlabs/Module/Settings/Channel.php:507 +msgid "Security and Privacy Settings" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:40 -msgid "Pump.io Settings saved." +#: ../../Zotlabs/Module/Settings/Channel.php:509 +msgid "Your permissions are already configured. Click to view/adjust" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:53 -msgid "Pump.io Crosspost Connector App" +#: ../../Zotlabs/Module/Settings/Channel.php:511 +msgid "Hide my online presence" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:54 -msgid "Relay public posts to pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:511 +msgid "Prevents displaying in your profile that you are online" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:73 -msgid "Pump.io servername" +#: ../../Zotlabs/Module/Settings/Channel.php:513 +msgid "Simple Privacy Settings:" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:73 -msgid "Without \"http://\" or \"https://\"" +#: ../../Zotlabs/Module/Settings/Channel.php:514 +msgid "" +"Very Public - <em>extremely permissive (should be used with caution)</em>" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:77 -msgid "Pump.io username" +#: ../../Zotlabs/Module/Settings/Channel.php:515 +msgid "" +"Typical - <em>default public, privacy when desired (similar to social " +"network permissions but with improved privacy)</em>" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:77 -msgid "Without the servername" +#: ../../Zotlabs/Module/Settings/Channel.php:516 +msgid "Private - <em>default private, never open or public</em>" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:88 -msgid "You are not authenticated to pumpio" +#: ../../Zotlabs/Module/Settings/Channel.php:517 +msgid "Blocked - <em>default blocked to/from everybody</em>" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:90 -msgid "(Re-)Authenticate your pump.io connection" +#: ../../Zotlabs/Module/Settings/Channel.php:519 +msgid "Allow others to tag your posts" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:94 -msgid "Post to pump.io by default" +#: ../../Zotlabs/Module/Settings/Channel.php:519 +msgid "" +"Often used by the community to retro-actively flag inappropriate content" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:98 -msgid "Should posts be public" +#: ../../Zotlabs/Module/Settings/Channel.php:521 +msgid "Channel Permission Limits" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:102 -msgid "Mirror all public posts" +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "Expire other channel content after this many days" msgstr "" -#: ../../addon/pumpio/Mod_Pumpio.php:112 -msgid "Pump.io Crosspost Connector" +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "0 or blank to use the website limit." msgstr "" -#: ../../addon/pumpio/pumpio.php:152 -msgid "You are now authenticated to pumpio." +#: ../../Zotlabs/Module/Settings/Channel.php:523 +#, php-format +msgid "This website expires after %d days." msgstr "" -#: ../../addon/pumpio/pumpio.php:153 -msgid "return to the featured settings page" +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "This website does not expire imported content." msgstr "" -#: ../../addon/pumpio/pumpio.php:168 -msgid "Post to Pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "The website limit takes precedence if lower than your limit." msgstr "" -#: ../../addon/ldapauth/ldapauth.php:70 -msgid "An account has been created for you." +#: ../../Zotlabs/Module/Settings/Channel.php:524 +msgid "Maximum Friend Requests/Day:" msgstr "" -#: ../../addon/ldapauth/ldapauth.php:77 -msgid "Authentication successful but rejected: account creation is disabled." +#: ../../Zotlabs/Module/Settings/Channel.php:524 +msgid "May reduce spam activity" msgstr "" -#: ../../addon/opensearch/opensearch.php:26 -#, php-format -msgctxt "opensearch" -msgid "Search %1$s (%2$s)" +#: ../../Zotlabs/Module/Settings/Channel.php:525 +msgid "Default Privacy Group" msgstr "" -#: ../../addon/opensearch/opensearch.php:28 -msgctxt "opensearch" -msgid "$Projectname" +#: ../../Zotlabs/Module/Settings/Channel.php:527 +msgid "Use my default audience setting for the type of object published" msgstr "" -#: ../../addon/opensearch/opensearch.php:43 -msgid "Search $Projectname" +#: ../../Zotlabs/Module/Settings/Channel.php:536 +msgid "Default permissions category" msgstr "" -#: ../../addon/redfiles/redfiles.php:119 -msgid "Redmatrix File Storage Import" +#: ../../Zotlabs/Module/Settings/Channel.php:542 +msgid "Maximum private messages per day from unknown people:" msgstr "" -#: ../../addon/redfiles/redfiles.php:120 -msgid "This will import all your Redmatrix cloud files to this channel." +#: ../../Zotlabs/Module/Settings/Channel.php:542 +msgid "Useful to reduce spamming" msgstr "" -#: ../../addon/redfiles/redfilehelper.php:64 -msgid "file" +#: ../../Zotlabs/Module/Settings/Channel.php:545 +#: ../../Zotlabs/Lib/Enotify.php:68 +msgid "Notification Settings" msgstr "" -#: ../../addon/hubwall/hubwall.php:19 -msgid "Send email to all members" +#: ../../Zotlabs/Module/Settings/Channel.php:546 +msgid "By default post a status message when:" msgstr "" -#: ../../addon/hubwall/hubwall.php:73 -#, php-format -msgid "%1$d of %2$d messages sent." +#: ../../Zotlabs/Module/Settings/Channel.php:547 +msgid "accepting a friend request" msgstr "" -#: ../../addon/hubwall/hubwall.php:81 -msgid "Send email to all hub members." +#: ../../Zotlabs/Module/Settings/Channel.php:548 +msgid "joining a forum/community" msgstr "" -#: ../../addon/hubwall/hubwall.php:93 -msgid "Sender Email address" +#: ../../Zotlabs/Module/Settings/Channel.php:549 +msgid "making an <em>interesting</em> profile change" msgstr "" -#: ../../addon/hubwall/hubwall.php:94 -msgid "Test mode (only send to hub administrator)" +#: ../../Zotlabs/Module/Settings/Channel.php:550 +msgid "Send a notification email when:" msgstr "" -#: ../../include/selectors.php:18 -msgid "Profile to assign new connections" +#: ../../Zotlabs/Module/Settings/Channel.php:551 +msgid "You receive a connection request" msgstr "" -#: ../../include/selectors.php:41 -msgid "Frequently" +#: ../../Zotlabs/Module/Settings/Channel.php:552 +msgid "Your connections are confirmed" msgstr "" -#: ../../include/selectors.php:42 -msgid "Hourly" +#: ../../Zotlabs/Module/Settings/Channel.php:553 +msgid "Someone writes on your profile wall" msgstr "" -#: ../../include/selectors.php:43 -msgid "Twice daily" +#: ../../Zotlabs/Module/Settings/Channel.php:554 +msgid "Someone writes a followup comment" msgstr "" -#: ../../include/selectors.php:44 -msgid "Daily" +#: ../../Zotlabs/Module/Settings/Channel.php:555 +msgid "You receive a private message" msgstr "" -#: ../../include/selectors.php:45 -msgid "Weekly" +#: ../../Zotlabs/Module/Settings/Channel.php:556 +msgid "You receive a friend suggestion" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Channel.php:557 +msgid "You are tagged in a post" msgstr "" -#: ../../include/selectors.php:46 -msgid "Monthly" +#: ../../Zotlabs/Module/Settings/Channel.php:558 +msgid "You are poked/prodded/etc. in a post" msgstr "" -#: ../../include/selectors.php:60 -msgid "Currently Male" +#: ../../Zotlabs/Module/Settings/Channel.php:560 +msgid "Someone likes your post/comment" msgstr "" -#: ../../include/selectors.php:60 -msgid "Currently Female" +#: ../../Zotlabs/Module/Settings/Channel.php:563 +msgid "Show visual notifications including:" msgstr "" -#: ../../include/selectors.php:60 -msgid "Mostly Male" +#: ../../Zotlabs/Module/Settings/Channel.php:565 +msgid "Unseen stream activity" msgstr "" -#: ../../include/selectors.php:60 -msgid "Mostly Female" +#: ../../Zotlabs/Module/Settings/Channel.php:566 +msgid "Unseen channel activity" msgstr "" -#: ../../include/selectors.php:60 -msgid "Transgender" +#: ../../Zotlabs/Module/Settings/Channel.php:567 +msgid "Unseen private messages" msgstr "" -#: ../../include/selectors.php:60 -msgid "Intersex" +#: ../../Zotlabs/Module/Settings/Channel.php:568 +msgid "Upcoming events" msgstr "" -#: ../../include/selectors.php:60 -msgid "Transsexual" +#: ../../Zotlabs/Module/Settings/Channel.php:569 +msgid "Events today" msgstr "" -#: ../../include/selectors.php:60 -msgid "Hermaphrodite" +#: ../../Zotlabs/Module/Settings/Channel.php:570 +msgid "Upcoming birthdays" msgstr "" -#: ../../include/selectors.php:60 ../../include/channel.php:1606 -msgid "Neuter" +#: ../../Zotlabs/Module/Settings/Channel.php:570 +msgid "Not available in all themes" msgstr "" -#: ../../include/selectors.php:60 ../../include/channel.php:1608 -msgid "Non-specific" +#: ../../Zotlabs/Module/Settings/Channel.php:571 +msgid "System (personal) notifications" msgstr "" -#: ../../include/selectors.php:60 -msgid "Undecided" +#: ../../Zotlabs/Module/Settings/Channel.php:572 +msgid "System info messages" msgstr "" -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Males" +#: ../../Zotlabs/Module/Settings/Channel.php:573 +msgid "System critical alerts" msgstr "" -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Females" +#: ../../Zotlabs/Module/Settings/Channel.php:574 +msgid "New connections" msgstr "" -#: ../../include/selectors.php:96 -msgid "Gay" +#: ../../Zotlabs/Module/Settings/Channel.php:575 +msgid "System Registrations" msgstr "" -#: ../../include/selectors.php:96 -msgid "Lesbian" +#: ../../Zotlabs/Module/Settings/Channel.php:576 +msgid "Unseen shared files" msgstr "" -#: ../../include/selectors.php:96 -msgid "No Preference" +#: ../../Zotlabs/Module/Settings/Channel.php:577 +msgid "Unseen public stream activity" msgstr "" -#: ../../include/selectors.php:96 -msgid "Bisexual" +#: ../../Zotlabs/Module/Settings/Channel.php:578 +msgid "Unseen likes and dislikes" msgstr "" -#: ../../include/selectors.php:96 -msgid "Autosexual" +#: ../../Zotlabs/Module/Settings/Channel.php:579 +msgid "Unseen forum posts" msgstr "" -#: ../../include/selectors.php:96 -msgid "Abstinent" +#: ../../Zotlabs/Module/Settings/Channel.php:580 +msgid "Email notification hub (hostname)" msgstr "" -#: ../../include/selectors.php:96 -msgid "Virgin" +#: ../../Zotlabs/Module/Settings/Channel.php:580 +#, php-format +msgid "" +"If your channel is mirrored to multiple hubs, set this to your preferred " +"location. This will prevent duplicate email notifications. Example: %s" msgstr "" -#: ../../include/selectors.php:96 -msgid "Deviant" +#: ../../Zotlabs/Module/Settings/Channel.php:581 +msgid "Show new wall posts, private messages and connections under Notices" msgstr "" -#: ../../include/selectors.php:96 -msgid "Fetish" +#: ../../Zotlabs/Module/Settings/Channel.php:583 +msgid "Notify me of events this many days in advance" msgstr "" -#: ../../include/selectors.php:96 -msgid "Oodles" +#: ../../Zotlabs/Module/Settings/Channel.php:583 +msgid "Must be greater than 0" msgstr "" -#: ../../include/selectors.php:96 -msgid "Nonsexual" +#: ../../Zotlabs/Module/Settings/Channel.php:588 +msgid "Advanced Account/Page Type Settings" msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Single" +#: ../../Zotlabs/Module/Settings/Channel.php:589 +msgid "Change the behaviour of this account for special situations" msgstr "" -#: ../../include/selectors.php:134 -msgid "Lonely" +#: ../../Zotlabs/Module/Settings/Channel.php:591 +msgid "Miscellaneous Settings" msgstr "" -#: ../../include/selectors.php:134 -msgid "Available" +#: ../../Zotlabs/Module/Settings/Channel.php:592 +msgid "Default photo upload folder" msgstr "" -#: ../../include/selectors.php:134 -msgid "Unavailable" +#: ../../Zotlabs/Module/Settings/Channel.php:592 +#: ../../Zotlabs/Module/Settings/Channel.php:593 +msgid "%Y - current year, %m - current month" msgstr "" -#: ../../include/selectors.php:134 -msgid "Has crush" +#: ../../Zotlabs/Module/Settings/Channel.php:593 +msgid "Default file upload folder" msgstr "" -#: ../../include/selectors.php:134 -msgid "Infatuated" +#: ../../Zotlabs/Module/Settings/Channel.php:595 +msgid "Remove this channel." msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Dating" +#: ../../Zotlabs/Module/Settings/Account.php:19 +msgid "Not valid email." msgstr "" -#: ../../include/selectors.php:134 -msgid "Unfaithful" +#: ../../Zotlabs/Module/Settings/Account.php:22 +msgid "Protected email address. Cannot change to that email." msgstr "" -#: ../../include/selectors.php:134 -msgid "Sex Addict" +#: ../../Zotlabs/Module/Settings/Account.php:31 +msgid "System failure storing new email. Please try again." msgstr "" -#: ../../include/selectors.php:134 -msgid "Friends/Benefits" +#: ../../Zotlabs/Module/Settings/Account.php:48 +msgid "Password verification failed." msgstr "" -#: ../../include/selectors.php:134 -msgid "Casual" +#: ../../Zotlabs/Module/Settings/Account.php:55 +msgid "Passwords do not match. Password unchanged." msgstr "" -#: ../../include/selectors.php:134 -msgid "Engaged" +#: ../../Zotlabs/Module/Settings/Account.php:59 +msgid "Empty passwords are not allowed. Password unchanged." msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Married" +#: ../../Zotlabs/Module/Settings/Account.php:73 +msgid "Password changed." msgstr "" -#: ../../include/selectors.php:134 -msgid "Imaginarily married" +#: ../../Zotlabs/Module/Settings/Account.php:75 +msgid "Password update failed. Please try again." msgstr "" -#: ../../include/selectors.php:134 -msgid "Partners" +#: ../../Zotlabs/Module/Settings/Account.php:99 +msgid "Account Settings" msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Cohabiting" +#: ../../Zotlabs/Module/Settings/Account.php:100 +msgid "Current Password" msgstr "" -#: ../../include/selectors.php:134 -msgid "Common law" +#: ../../Zotlabs/Module/Settings/Account.php:101 +msgid "Enter New Password" msgstr "" -#: ../../include/selectors.php:134 -msgid "Happy" +#: ../../Zotlabs/Module/Settings/Account.php:102 +msgid "Confirm New Password" msgstr "" -#: ../../include/selectors.php:134 -msgid "Not looking" +#: ../../Zotlabs/Module/Settings/Account.php:102 +msgid "Leave password fields blank unless changing" msgstr "" -#: ../../include/selectors.php:134 -msgid "Swinger" +#: ../../Zotlabs/Module/Settings/Account.php:106 +msgid "Remove this account including all its channels" msgstr "" -#: ../../include/selectors.php:134 -msgid "Betrayed" +#: ../../Zotlabs/Module/Settings/Featured.php:24 +msgid "No feature settings configured" msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Separated" +#: ../../Zotlabs/Module/Settings/Featured.php:33 +msgid "Addon Settings" msgstr "" -#: ../../include/selectors.php:134 -msgid "Unstable" +#: ../../Zotlabs/Module/Settings/Featured.php:34 +msgid "Please save/submit changes to any panel before opening another." msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Divorced" +#: ../../Zotlabs/Module/Settings/Events.php:39 +msgid "Events Settings" msgstr "" -#: ../../include/selectors.php:134 -msgid "Imaginarily divorced" +#: ../../Zotlabs/Module/Settings/Manage.php:39 +msgid "Channel Manager Settings" msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Widowed" +#: ../../Zotlabs/Module/Settings/Channel_home.php:59 +msgid "Personal menu to display in your channel pages" msgstr "" -#: ../../include/selectors.php:134 -msgid "Uncertain" +#: ../../Zotlabs/Module/Settings/Channel_home.php:86 +msgid "Channel Home Settings" msgstr "" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "It's complicated" +#: ../../Zotlabs/Module/Settings/Calendar.php:39 +msgid "Calendar Settings" msgstr "" -#: ../../include/selectors.php:134 -msgid "Don't care" +#: ../../Zotlabs/Module/Settings/Display.php:128 +#, php-format +msgid "%s - (Experimental)" msgstr "" -#: ../../include/selectors.php:134 -msgid "Ask me" +#: ../../Zotlabs/Module/Settings/Display.php:184 +msgid "Display Settings" msgstr "" -#: ../../include/conversation.php:169 -#, php-format -msgid "likes %1$s's %2$s" +#: ../../Zotlabs/Module/Settings/Display.php:185 +msgid "Theme Settings" msgstr "" -#: ../../include/conversation.php:172 -#, php-format -msgid "doesn't like %1$s's %2$s" +#: ../../Zotlabs/Module/Settings/Display.php:186 +msgid "Custom Theme Settings" msgstr "" -#: ../../include/conversation.php:212 -#, php-format -msgid "%1$s is now connected with %2$s" +#: ../../Zotlabs/Module/Settings/Display.php:187 +msgid "Content Settings" msgstr "" -#: ../../include/conversation.php:247 -#, php-format -msgid "%1$s poked %2$s" +#: ../../Zotlabs/Module/Settings/Display.php:193 +msgid "Display Theme:" msgstr "" -#: ../../include/conversation.php:251 ../../include/text.php:1195 -#: ../../include/text.php:1199 -msgid "poked" +#: ../../Zotlabs/Module/Settings/Display.php:194 +msgid "Select scheme" msgstr "" -#: ../../include/conversation.php:739 -#, php-format -msgid "View %s's profile @ %s" +#: ../../Zotlabs/Module/Settings/Display.php:196 +msgid "Preload images before rendering the page" msgstr "" -#: ../../include/conversation.php:759 -msgid "Categories:" +#: ../../Zotlabs/Module/Settings/Display.php:196 +msgid "" +"The subjective page load time will be longer but the page will be ready when " +"displayed" msgstr "" -#: ../../include/conversation.php:760 -msgid "Filed under:" +#: ../../Zotlabs/Module/Settings/Display.php:197 +msgid "Enable user zoom on mobile devices" msgstr "" -#: ../../include/conversation.php:785 -msgid "View in context" +#: ../../Zotlabs/Module/Settings/Display.php:198 +msgid "Update browser every xx seconds" msgstr "" -#: ../../include/conversation.php:886 -msgid "remove" +#: ../../Zotlabs/Module/Settings/Display.php:198 +msgid "Minimum of 10 seconds, no maximum" msgstr "" -#: ../../include/conversation.php:890 -msgid "Loading..." +#: ../../Zotlabs/Module/Settings/Display.php:199 +msgid "Maximum number of conversations to load at any time:" msgstr "" -#: ../../include/conversation.php:892 -msgid "Delete Selected Items" +#: ../../Zotlabs/Module/Settings/Display.php:199 +msgid "Maximum of 100 items" msgstr "" -#: ../../include/conversation.php:935 -msgid "View Source" +#: ../../Zotlabs/Module/Settings/Display.php:200 +msgid "Show emoticons (smilies) as images" msgstr "" -#: ../../include/conversation.php:945 -msgid "Follow Thread" +#: ../../Zotlabs/Module/Settings/Display.php:201 +msgid "Provide channel menu in navigation bar" msgstr "" -#: ../../include/conversation.php:954 -msgid "Unfollow Thread" +#: ../../Zotlabs/Module/Settings/Display.php:201 +msgid "Default: channel menu located in app menu" msgstr "" -#: ../../include/conversation.php:1068 -msgid "Edit Connection" +#: ../../Zotlabs/Module/Settings/Display.php:202 +msgid "Manual conversation updates" msgstr "" -#: ../../include/conversation.php:1078 -msgid "Message" +#: ../../Zotlabs/Module/Settings/Display.php:202 +msgid "Default is on, turning this off may increase screen jumping" msgstr "" -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s likes this." +#: ../../Zotlabs/Module/Settings/Display.php:203 +msgid "Link post titles to source" msgstr "" -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s doesn't like this." +#: ../../Zotlabs/Module/Settings/Display.php:205 +msgid "Display new member quick links menu" msgstr "" -#: ../../include/conversation.php:1216 -#, php-format -msgid "<span %1$s>%2$d people</span> like this." -msgid_plural "<span %1$s>%2$d people</span> like this." -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1218 -#, php-format -msgid "<span %1$s>%2$d people</span> don't like this." -msgid_plural "<span %1$s>%2$d people</span> don't like this." -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1224 -msgid "and" +#: ../../Zotlabs/Module/Settings/Directory.php:39 +msgid "Directory Settings" msgstr "" -#: ../../include/conversation.php:1227 -#, php-format -msgid ", and %d other people" -msgid_plural ", and %d other people" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1228 -#, php-format -msgid "%s like this." +#: ../../Zotlabs/Module/Settings/Editor.php:39 +msgid "Editor Settings" msgstr "" -#: ../../include/conversation.php:1228 -#, php-format -msgid "%s don't like this." +#: ../../Zotlabs/Module/Settings/Connections.php:39 +msgid "Connections Settings" msgstr "" -#: ../../include/conversation.php:1708 -msgctxt "noun" -msgid "Attending" -msgid_plural "Attending" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1711 -msgctxt "noun" -msgid "Not Attending" -msgid_plural "Not Attending" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1714 -msgctxt "noun" -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1717 -msgctxt "noun" -msgid "Agree" -msgid_plural "Agrees" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1720 -msgctxt "noun" -msgid "Disagree" -msgid_plural "Disagrees" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Settings/Photos.php:39 +msgid "Photos Settings" +msgstr "" -#: ../../include/conversation.php:1723 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Settings/Profiles.php:47 +msgid "Profiles Settings" +msgstr "" -#: ../../include/bookmarks.php:34 -#, php-format -msgid "%1$s's bookmarks" +#: ../../Zotlabs/Module/Settings/Conversation.php:22 +msgid "Settings saved." msgstr "" -#: ../../include/import.php:28 -msgid "Unable to import a removed channel." +#: ../../Zotlabs/Module/Settings/Conversation.php:24 +msgid "Settings saved. Reload page please." msgstr "" -#: ../../include/import.php:54 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." +#: ../../Zotlabs/Module/Settings/Conversation.php:46 +msgid "Conversation Settings" msgstr "" -#: ../../include/import.php:120 -msgid "Cloned channel not found. Import failed." +#: ../../Zotlabs/Module/Menu.php:68 +msgid "Unable to update menu." msgstr "" -#: ../../include/text.php:520 -msgid "prev" +#: ../../Zotlabs/Module/Menu.php:79 +msgid "Unable to create menu." msgstr "" -#: ../../include/text.php:522 -msgid "first" +#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 +msgid "Menu Name" msgstr "" -#: ../../include/text.php:551 -msgid "last" +#: ../../Zotlabs/Module/Menu.php:161 +msgid "Unique name (not visible on webpage) - required" msgstr "" -#: ../../include/text.php:554 -msgid "next" +#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:175 +msgid "Menu Title" msgstr "" -#: ../../include/text.php:572 -msgid "older" +#: ../../Zotlabs/Module/Menu.php:162 +msgid "Visible on webpage - leave empty for no title" msgstr "" -#: ../../include/text.php:574 -msgid "newer" +#: ../../Zotlabs/Module/Menu.php:163 +msgid "Allow Bookmarks" msgstr "" -#: ../../include/text.php:998 -msgid "No connections" +#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 +msgid "Menu may be used to store saved bookmarks" msgstr "" -#: ../../include/text.php:1030 -#, php-format -msgid "View all %s connections" +#: ../../Zotlabs/Module/Menu.php:164 ../../Zotlabs/Module/Menu.php:225 +msgid "Submit and proceed" msgstr "" -#: ../../include/text.php:1092 -#, php-format -msgid "Network: %s" +#: ../../Zotlabs/Module/Menu.php:177 ../../Zotlabs/Module/Locs.php:120 +msgid "Drop" msgstr "" -#: ../../include/text.php:1195 ../../include/text.php:1199 -msgid "poke" +#: ../../Zotlabs/Module/Menu.php:181 +msgid "Bookmarks allowed" msgstr "" -#: ../../include/text.php:1200 -msgid "ping" +#: ../../Zotlabs/Module/Menu.php:183 +msgid "Delete this menu" msgstr "" -#: ../../include/text.php:1200 -msgid "pinged" +#: ../../Zotlabs/Module/Menu.php:184 ../../Zotlabs/Module/Menu.php:219 +msgid "Edit menu contents" msgstr "" -#: ../../include/text.php:1201 -msgid "prod" +#: ../../Zotlabs/Module/Menu.php:185 +msgid "Edit this menu" msgstr "" -#: ../../include/text.php:1201 -msgid "prodded" +#: ../../Zotlabs/Module/Menu.php:201 +msgid "Menu could not be deleted." msgstr "" -#: ../../include/text.php:1202 -msgid "slap" +#: ../../Zotlabs/Module/Menu.php:214 +msgid "Edit Menu" msgstr "" -#: ../../include/text.php:1202 -msgid "slapped" +#: ../../Zotlabs/Module/Menu.php:218 +msgid "Add or remove entries to this menu" msgstr "" -#: ../../include/text.php:1203 -msgid "finger" +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Menu name" msgstr "" -#: ../../include/text.php:1203 -msgid "fingered" +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Must be unique, only seen by you" msgstr "" -#: ../../include/text.php:1204 -msgid "rebuff" +#: ../../Zotlabs/Module/Menu.php:221 +msgid "Menu title" msgstr "" -#: ../../include/text.php:1204 -msgid "rebuffed" +#: ../../Zotlabs/Module/Menu.php:221 +msgid "Menu title as seen by others" msgstr "" -#: ../../include/text.php:1227 -msgid "happy" +#: ../../Zotlabs/Module/Menu.php:222 +msgid "Allow bookmarks" msgstr "" -#: ../../include/text.php:1228 -msgid "sad" +#: ../../Zotlabs/Module/Defperms.php:67 ../../Zotlabs/Module/Connedit.php:81 +msgid "Could not access contact record." msgstr "" -#: ../../include/text.php:1229 -msgid "mellow" +#: ../../Zotlabs/Module/Defperms.php:189 +msgid "Default Permissions App" msgstr "" -#: ../../include/text.php:1230 -msgid "tired" +#: ../../Zotlabs/Module/Defperms.php:190 +msgid "Set custom default permissions for new connections" msgstr "" -#: ../../include/text.php:1231 -msgid "perky" +#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:867 +msgid "Connection Default Permissions" msgstr "" -#: ../../include/text.php:1232 -msgid "angry" +#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:868 +msgid "Apply these permissions automatically" msgstr "" -#: ../../include/text.php:1233 -msgid "stupefied" +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 +msgid "Permission role" msgstr "" -#: ../../include/text.php:1234 -msgid "puzzled" +#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870 +msgid "Add permission role" msgstr "" -#: ../../include/text.php:1235 -msgid "interested" +#: ../../Zotlabs/Module/Defperms.php:261 ../../Zotlabs/Module/Connedit.php:883 +msgid "" +"The permissions indicated on this page will be applied to all new " +"connections." msgstr "" -#: ../../include/text.php:1236 -msgid "bitter" +#: ../../Zotlabs/Module/Defperms.php:262 +msgid "Automatic approval settings" msgstr "" -#: ../../include/text.php:1237 -msgid "cheerful" +#: ../../Zotlabs/Module/Defperms.php:270 +msgid "" +"Some individual permissions may have been preset or locked based on your " +"channel type and privacy settings." msgstr "" -#: ../../include/text.php:1238 -msgid "alive" +#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68 +msgid "This setting requires special processing and editing has been blocked." msgstr "" -#: ../../include/text.php:1239 -msgid "annoyed" +#: ../../Zotlabs/Module/Pconfig.php:57 +msgid "Configuration Editor" msgstr "" -#: ../../include/text.php:1240 -msgid "anxious" +#: ../../Zotlabs/Module/Pconfig.php:58 +msgid "" +"Warning: Changing some settings could render your channel inoperable. Please " +"leave this page unless you are comfortable with and knowledgeable about how " +"to correctly use this feature." msgstr "" -#: ../../include/text.php:1241 -msgid "cranky" +#: ../../Zotlabs/Module/Oauth2.php:54 +msgid "Name and Secret are required" msgstr "" -#: ../../include/text.php:1242 -msgid "disturbed" +#: ../../Zotlabs/Module/Oauth2.php:106 +msgid "OAuth2 Apps Manager App" msgstr "" -#: ../../include/text.php:1243 -msgid "frustrated" +#: ../../Zotlabs/Module/Oauth2.php:107 +msgid "OAuth2 authenticatication tokens for mobile and remote apps" msgstr "" -#: ../../include/text.php:1244 -msgid "depressed" +#: ../../Zotlabs/Module/Oauth2.php:115 +msgid "Add OAuth2 application" msgstr "" -#: ../../include/text.php:1245 -msgid "motivated" +#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 +msgid "Grant Types" msgstr "" -#: ../../include/text.php:1246 -msgid "relaxed" +#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122 +msgid "leave blank unless your application sepcifically requires this" msgstr "" -#: ../../include/text.php:1247 -msgid "surprised" +#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 +msgid "Authorization scope" msgstr "" -#: ../../include/text.php:1435 ../../include/js_strings.php:96 -msgid "Monday" +#: ../../Zotlabs/Module/Oauth2.php:134 +msgid "OAuth2 Application not found." msgstr "" -#: ../../include/text.php:1435 ../../include/js_strings.php:97 -msgid "Tuesday" +#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150 +msgid "leave blank unless your application specifically requires this" msgstr "" -#: ../../include/text.php:1435 ../../include/js_strings.php:98 -msgid "Wednesday" +#: ../../Zotlabs/Module/Oauth2.php:192 +msgid "Connected OAuth2 Apps" msgstr "" -#: ../../include/text.php:1435 ../../include/js_strings.php:99 -msgid "Thursday" +#: ../../Zotlabs/Module/Randprof.php:29 +msgid "Random Channel App" msgstr "" -#: ../../include/text.php:1435 ../../include/js_strings.php:100 -msgid "Friday" +#: ../../Zotlabs/Module/Randprof.php:30 +msgid "Visit a random channel in the $Projectname network" msgstr "" -#: ../../include/text.php:1435 ../../include/js_strings.php:101 -msgid "Saturday" +#: ../../Zotlabs/Module/Dreport.php:59 +msgid "Invalid message" msgstr "" -#: ../../include/text.php:1435 ../../include/js_strings.php:95 -msgid "Sunday" +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "no results" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:71 -msgid "January" +#: ../../Zotlabs/Module/Dreport.php:107 +msgid "channel sync processed" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:72 -msgid "February" +#: ../../Zotlabs/Module/Dreport.php:111 +msgid "queued" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:73 -msgid "March" +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "posted" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:74 -msgid "April" +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "accepted for delivery" msgstr "" -#: ../../include/text.php:1439 -msgid "May" +#: ../../Zotlabs/Module/Dreport.php:123 +msgid "updated" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:76 -msgid "June" +#: ../../Zotlabs/Module/Dreport.php:126 +msgid "update ignored" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:77 -msgid "July" +#: ../../Zotlabs/Module/Dreport.php:129 +msgid "permission denied" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:78 -msgid "August" +#: ../../Zotlabs/Module/Dreport.php:133 +msgid "recipient not found" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:79 -msgid "September" +#: ../../Zotlabs/Module/Dreport.php:136 +msgid "mail recalled" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:80 -msgid "October" +#: ../../Zotlabs/Module/Dreport.php:139 +msgid "duplicate mail received" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:81 -msgid "November" +#: ../../Zotlabs/Module/Dreport.php:142 +msgid "mail delivered" msgstr "" -#: ../../include/text.php:1439 ../../include/js_strings.php:82 -msgid "December" +#: ../../Zotlabs/Module/Dreport.php:162 +#, php-format +msgid "Delivery report for %1$s" msgstr "" -#: ../../include/text.php:1513 -msgid "Unknown Attachment" +#: ../../Zotlabs/Module/Dreport.php:167 +msgid "Redeliver" msgstr "" -#: ../../include/text.php:1515 ../../include/feedutils.php:858 -msgid "unknown" +#: ../../Zotlabs/Module/Thing.php:120 +msgid "Thing updated" msgstr "" -#: ../../include/text.php:1551 -msgid "remove category" +#: ../../Zotlabs/Module/Thing.php:172 +msgid "Object store: failed" msgstr "" -#: ../../include/text.php:1627 -msgid "remove from file" +#: ../../Zotlabs/Module/Thing.php:176 +msgid "Thing added" msgstr "" -#: ../../include/text.php:1791 ../../include/message.php:13 -msgid "Download binary/encrypted content" +#: ../../Zotlabs/Module/Thing.php:202 +#, php-format +msgid "OBJ: %1$s %2$s %3$s" msgstr "" -#: ../../include/text.php:1961 ../../include/language.php:423 -msgid "default" +#: ../../Zotlabs/Module/Thing.php:265 +msgid "Show Thing" msgstr "" -#: ../../include/text.php:1969 -msgid "Page layout" +#: ../../Zotlabs/Module/Thing.php:272 +msgid "item not found." msgstr "" -#: ../../include/text.php:1969 -msgid "You can create your own with the layouts tool" +#: ../../Zotlabs/Module/Thing.php:305 +msgid "Edit Thing" msgstr "" -#: ../../include/text.php:1980 -msgid "HTML" +#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:364 +msgid "Select a profile" msgstr "" -#: ../../include/text.php:1983 -msgid "Comanche Layout" +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 +msgid "Post an activity" msgstr "" -#: ../../include/text.php:1988 -msgid "PHP" +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 +msgid "Only sends to viewers of the applicable profile" msgstr "" -#: ../../include/text.php:1997 -msgid "Page content type" +#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +msgid "Name of thing e.g. something" msgstr "" -#: ../../include/text.php:2130 -msgid "activity" +#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:370 +msgid "URL of thing (optional)" msgstr "" -#: ../../include/text.php:2231 -msgid "a-z, 0-9, -, and _ only" +#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:371 +msgid "URL for photo of thing (optional)" msgstr "" -#: ../../include/text.php:2557 -msgid "Design Tools" +#: ../../Zotlabs/Module/Thing.php:362 +msgid "Add Thing to your Profile" msgstr "" -#: ../../include/text.php:2563 -msgid "Pages" +#: ../../Zotlabs/Module/Rmagic.php:44 +msgid "Authentication failed." msgstr "" -#: ../../include/text.php:2575 -msgid "Import" +#: ../../Zotlabs/Module/Pdledit.php:26 +msgid "Layout updated." msgstr "" -#: ../../include/text.php:2576 -msgid "Import website..." +#: ../../Zotlabs/Module/Pdledit.php:42 +msgid "PDL Editor App" msgstr "" -#: ../../include/text.php:2577 -msgid "Select folder to import" +#: ../../Zotlabs/Module/Pdledit.php:43 +msgid "Provides the ability to edit system page layouts" msgstr "" -#: ../../include/text.php:2578 -msgid "Import from a zipped folder:" +#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99 +msgid "Edit System Page Description" msgstr "" -#: ../../include/text.php:2579 -msgid "Import from cloud files:" +#: ../../Zotlabs/Module/Pdledit.php:77 +msgid "(modified)" msgstr "" -#: ../../include/text.php:2580 -msgid "/cloud/channel/path/to/folder" +#: ../../Zotlabs/Module/Pdledit.php:94 +msgid "Layout not found." msgstr "" -#: ../../include/text.php:2581 -msgid "Enter path to website files" +#: ../../Zotlabs/Module/Pdledit.php:100 +msgid "Module Name:" msgstr "" -#: ../../include/text.php:2582 -msgid "Select folder" +#: ../../Zotlabs/Module/Pdledit.php:101 +msgid "Layout Help" msgstr "" -#: ../../include/text.php:2583 -msgid "Export website..." +#: ../../Zotlabs/Module/Pdledit.php:102 +msgid "Edit another layout" msgstr "" -#: ../../include/text.php:2584 -msgid "Export to a zip file" +#: ../../Zotlabs/Module/Pdledit.php:103 +msgid "System layout" msgstr "" -#: ../../include/text.php:2585 -msgid "website.zip" +#: ../../Zotlabs/Module/Wiki.php:52 +msgid "Wiki App" msgstr "" -#: ../../include/text.php:2586 -msgid "Enter a name for the zip file." +#: ../../Zotlabs/Module/Wiki.php:53 +msgid "Provide a wiki for your channel" msgstr "" -#: ../../include/text.php:2587 -msgid "Export to cloud files" +#: ../../Zotlabs/Module/Wiki.php:133 +msgid "Error retrieving wiki" msgstr "" -#: ../../include/text.php:2588 -msgid "/path/to/export/folder" +#: ../../Zotlabs/Module/Wiki.php:140 +msgid "Error creating zip file export folder" msgstr "" -#: ../../include/text.php:2589 -msgid "Enter a path to a cloud files destination." +#: ../../Zotlabs/Module/Wiki.php:191 +msgid "Error downloading wiki: " msgstr "" -#: ../../include/text.php:2590 -msgid "Specify folder" +#: ../../Zotlabs/Module/Wiki.php:212 +msgid "Download" msgstr "" -#: ../../include/contact_widgets.php:11 -#, php-format -msgid "%d invitation available" -msgid_plural "%d invitations available" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/contact_widgets.php:19 -msgid "Find Channels" +#: ../../Zotlabs/Module/Wiki.php:216 +msgid "Wiki name" msgstr "" -#: ../../include/contact_widgets.php:20 -msgid "Enter name or interest" +#: ../../Zotlabs/Module/Wiki.php:217 +msgid "Content type" msgstr "" -#: ../../include/contact_widgets.php:21 -msgid "Connect/Follow" +#: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:292 +msgid "Type" msgstr "" -#: ../../include/contact_widgets.php:22 -msgid "Examples: Robert Morgenstein, Fishing" +#: ../../Zotlabs/Module/Wiki.php:220 +msgid "Any type" msgstr "" -#: ../../include/contact_widgets.php:26 -msgid "Random Profile" +#: ../../Zotlabs/Module/Wiki.php:227 +msgid "Lock content type" msgstr "" -#: ../../include/contact_widgets.php:27 -msgid "Invite Friends" +#: ../../Zotlabs/Module/Wiki.php:228 +msgid "Create a status post for this wiki" msgstr "" -#: ../../include/contact_widgets.php:29 -msgid "Advanced example: name=fred and country=iceland" +#: ../../Zotlabs/Module/Wiki.php:229 +msgid "Edit Wiki Name" msgstr "" -#: ../../include/contact_widgets.php:218 -msgid "Common Connections" +#: ../../Zotlabs/Module/Wiki.php:274 +msgid "Wiki not found" msgstr "" -#: ../../include/contact_widgets.php:222 -#, php-format -msgid "View all %d common connections" +#: ../../Zotlabs/Module/Wiki.php:300 +msgid "Rename page" msgstr "" -#: ../../include/markdown.php:202 ../../include/bbcode.php:366 -#, php-format -msgid "%1$s wrote the following %2$s %3$s" +#: ../../Zotlabs/Module/Wiki.php:321 +msgid "Error retrieving page content" msgstr "" -#: ../../include/follow.php:37 -msgid "Channel is blocked on this site." +#: ../../Zotlabs/Module/Wiki.php:329 ../../Zotlabs/Module/Wiki.php:331 +msgid "New page" msgstr "" -#: ../../include/follow.php:42 -msgid "Channel location missing." +#: ../../Zotlabs/Module/Wiki.php:366 +msgid "Revision Comparison" msgstr "" -#: ../../include/follow.php:84 -msgid "Response from remote channel was incomplete." +#: ../../Zotlabs/Module/Wiki.php:374 +msgid "Short description of your changes (optional)" msgstr "" -#: ../../include/follow.php:96 -msgid "Premium channel - please visit:" +#: ../../Zotlabs/Module/Wiki.php:384 +msgid "Source" msgstr "" -#: ../../include/follow.php:110 -msgid "Channel was deleted and no longer exists." +#: ../../Zotlabs/Module/Wiki.php:394 +msgid "New page name" msgstr "" -#: ../../include/follow.php:166 -msgid "Remote channel or protocol unavailable." +#: ../../Zotlabs/Module/Wiki.php:399 +msgid "Embed image from photo albums" msgstr "" -#: ../../include/follow.php:190 -msgid "Channel discovery failed." +#: ../../Zotlabs/Module/Wiki.php:410 +msgid "History" msgstr "" -#: ../../include/follow.php:202 -msgid "Protocol disabled." +#: ../../Zotlabs/Module/Wiki.php:488 +msgid "Error creating wiki. Invalid name." msgstr "" -#: ../../include/follow.php:213 -msgid "Cannot connect to yourself." +#: ../../Zotlabs/Module/Wiki.php:495 +msgid "A wiki with this name already exists." msgstr "" -#: ../../include/js_strings.php:5 -msgid "Delete this item?" +#: ../../Zotlabs/Module/Wiki.php:508 +msgid "Wiki created, but error creating Home page." msgstr "" -#: ../../include/js_strings.php:8 -#, php-format -msgid "%s show less" +#: ../../Zotlabs/Module/Wiki.php:515 +msgid "Error creating wiki" msgstr "" -#: ../../include/js_strings.php:9 -#, php-format -msgid "%s expand" +#: ../../Zotlabs/Module/Wiki.php:539 +msgid "Error updating wiki. Invalid name." msgstr "" -#: ../../include/js_strings.php:10 -#, php-format -msgid "%s collapse" +#: ../../Zotlabs/Module/Wiki.php:559 +msgid "Error updating wiki" msgstr "" -#: ../../include/js_strings.php:11 -msgid "Password too short" +#: ../../Zotlabs/Module/Wiki.php:574 +msgid "Wiki delete permission denied." msgstr "" -#: ../../include/js_strings.php:12 -msgid "Passwords do not match" +#: ../../Zotlabs/Module/Wiki.php:584 +msgid "Error deleting wiki" msgstr "" -#: ../../include/js_strings.php:13 -msgid "everybody" +#: ../../Zotlabs/Module/Wiki.php:617 +msgid "New page created" msgstr "" -#: ../../include/js_strings.php:14 -msgid "Secret Passphrase" +#: ../../Zotlabs/Module/Wiki.php:739 +msgid "Cannot delete Home" msgstr "" -#: ../../include/js_strings.php:15 -msgid "Passphrase hint" +#: ../../Zotlabs/Module/Wiki.php:803 +msgid "Current Revision" msgstr "" -#: ../../include/js_strings.php:16 -msgid "Notice: Permissions have changed but have not yet been submitted." +#: ../../Zotlabs/Module/Wiki.php:803 +msgid "Selected Revision" msgstr "" -#: ../../include/js_strings.php:17 -msgid "close all" +#: ../../Zotlabs/Module/Wiki.php:853 +msgid "You must be authenticated." msgstr "" -#: ../../include/js_strings.php:18 -msgid "Nothing new here" +#: ../../Zotlabs/Module/Home.php:90 +#, php-format +msgid "Welcome to %s" msgstr "" -#: ../../include/js_strings.php:19 -msgid "Rate This Channel (this is public)" +#: ../../Zotlabs/Module/Suggest.php:40 +msgid "Suggest Channels App" msgstr "" -#: ../../include/js_strings.php:21 -msgid "Describe (optional)" +#: ../../Zotlabs/Module/Suggest.php:41 +msgid "" +"Suggestions for channels in the $Projectname network you might be interested " +"in" msgstr "" -#: ../../include/js_strings.php:23 -msgid "Please enter a link URL" +#: ../../Zotlabs/Module/Suggest.php:54 +msgid "" +"No suggestions available. If this is a new site, please try again in 24 " +"hours." msgstr "" -#: ../../include/js_strings.php:24 -msgid "Unsaved changes. Are you sure you wish to leave this page?" +#: ../../Zotlabs/Module/Connedit.php:112 +msgid "Could not locate selected profile." msgstr "" -#: ../../include/js_strings.php:26 -msgid "lovely" +#: ../../Zotlabs/Module/Connedit.php:256 +msgid "Connection updated." msgstr "" -#: ../../include/js_strings.php:27 -msgid "wonderful" +#: ../../Zotlabs/Module/Connedit.php:258 +msgid "Failed to update connection record." msgstr "" -#: ../../include/js_strings.php:28 -msgid "fantastic" +#: ../../Zotlabs/Module/Connedit.php:312 +msgid "is now connected to" msgstr "" -#: ../../include/js_strings.php:29 -msgid "great" +#: ../../Zotlabs/Module/Connedit.php:437 +msgid "Could not access address book record." msgstr "" -#: ../../include/js_strings.php:30 -msgid "" -"Your chosen nickname was either already taken or not valid. Please use our " -"suggestion (" +#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489 +msgid "Refresh failed - channel is currently unavailable." msgstr "" -#: ../../include/js_strings.php:31 -msgid ") or enter a new one." +#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513 +#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531 +#: ../../Zotlabs/Module/Connedit.php:544 +msgid "Unable to set address book parameters." msgstr "" -#: ../../include/js_strings.php:32 -msgid "Thank you, this nickname is valid." +#: ../../Zotlabs/Module/Connedit.php:568 +msgid "Connection has been removed." msgstr "" -#: ../../include/js_strings.php:33 -msgid "A channel name is required." +#: ../../Zotlabs/Module/Connedit.php:611 +#, php-format +msgid "View %s's profile" msgstr "" -#: ../../include/js_strings.php:34 -msgid "This is a " +#: ../../Zotlabs/Module/Connedit.php:615 +msgid "Refresh Permissions" msgstr "" -#: ../../include/js_strings.php:35 -msgid " channel name" +#: ../../Zotlabs/Module/Connedit.php:618 +msgid "Fetch updated permissions" msgstr "" -#: ../../include/js_strings.php:36 -msgid "Back to reply" +#: ../../Zotlabs/Module/Connedit.php:622 +msgid "Refresh Photo" msgstr "" -#: ../../include/js_strings.php:42 -#, php-format -msgid "%d minutes" -msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Connedit.php:625 +msgid "Fetch updated photo" +msgstr "" -#: ../../include/js_strings.php:43 -#, php-format -msgid "about %d hours" -msgid_plural "about %d hours" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Connedit.php:632 +msgid "View recent posts and comments" +msgstr "" -#: ../../include/js_strings.php:44 -#, php-format -msgid "%d days" -msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Connedit.php:639 +msgid "Block (or Unblock) all communications with this connection" +msgstr "" -#: ../../include/js_strings.php:45 -#, php-format -msgid "%d months" -msgid_plural "%d months" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Connedit.php:640 +msgid "This connection is blocked!" +msgstr "" -#: ../../include/js_strings.php:46 -#, php-format -msgid "%d years" -msgid_plural "%d years" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Module/Connedit.php:644 +msgid "Unignore" +msgstr "" -#: ../../include/js_strings.php:51 -msgid "timeago.prefixAgo" +#: ../../Zotlabs/Module/Connedit.php:647 +msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "" -#: ../../include/js_strings.php:52 -msgid "timeago.prefixFromNow" +#: ../../Zotlabs/Module/Connedit.php:648 +msgid "This connection is ignored!" msgstr "" -#: ../../include/js_strings.php:53 -msgid "timeago.suffixAgo" +#: ../../Zotlabs/Module/Connedit.php:652 +msgid "Unarchive" msgstr "" -#: ../../include/js_strings.php:54 -msgid "timeago.suffixFromNow" +#: ../../Zotlabs/Module/Connedit.php:652 +msgid "Archive" msgstr "" -#: ../../include/js_strings.php:57 -msgid "less than a minute" +#: ../../Zotlabs/Module/Connedit.php:655 +msgid "" +"Archive (or Unarchive) this connection - mark channel dead but keep content" msgstr "" -#: ../../include/js_strings.php:58 -msgid "about a minute" +#: ../../Zotlabs/Module/Connedit.php:656 +msgid "This connection is archived!" msgstr "" -#: ../../include/js_strings.php:60 -msgid "about an hour" +#: ../../Zotlabs/Module/Connedit.php:660 +msgid "Unhide" msgstr "" -#: ../../include/js_strings.php:62 -msgid "a day" +#: ../../Zotlabs/Module/Connedit.php:660 +msgid "Hide" msgstr "" -#: ../../include/js_strings.php:64 -msgid "about a month" +#: ../../Zotlabs/Module/Connedit.php:663 +msgid "Hide or Unhide this connection from your other connections" msgstr "" -#: ../../include/js_strings.php:66 -msgid "about a year" +#: ../../Zotlabs/Module/Connedit.php:664 +msgid "This connection is hidden!" msgstr "" -#: ../../include/js_strings.php:68 -msgid " " +#: ../../Zotlabs/Module/Connedit.php:671 +msgid "Delete this connection" msgstr "" -#: ../../include/js_strings.php:69 -msgid "timeago.numbers" +#: ../../Zotlabs/Module/Connedit.php:679 +msgid "Fetch Vcard" msgstr "" -#: ../../include/js_strings.php:75 -msgctxt "long" -msgid "May" +#: ../../Zotlabs/Module/Connedit.php:682 +msgid "Fetch electronic calling card for this connection" msgstr "" -#: ../../include/js_strings.php:83 -msgid "Jan" +#: ../../Zotlabs/Module/Connedit.php:693 +msgid "Open Individual Permissions section by default" msgstr "" -#: ../../include/js_strings.php:84 -msgid "Feb" +#: ../../Zotlabs/Module/Connedit.php:716 +msgid "Affinity" msgstr "" -#: ../../include/js_strings.php:85 -msgid "Mar" +#: ../../Zotlabs/Module/Connedit.php:719 +msgid "Open Set Affinity section by default" msgstr "" -#: ../../include/js_strings.php:86 -msgid "Apr" +#: ../../Zotlabs/Module/Connedit.php:756 +msgid "Filter" msgstr "" -#: ../../include/js_strings.php:87 -msgctxt "short" -msgid "May" +#: ../../Zotlabs/Module/Connedit.php:759 +msgid "Open Custom Filter section by default" msgstr "" -#: ../../include/js_strings.php:88 -msgid "Jun" +#: ../../Zotlabs/Module/Connedit.php:796 +msgid "Approve this connection" msgstr "" -#: ../../include/js_strings.php:89 -msgid "Jul" +#: ../../Zotlabs/Module/Connedit.php:796 +msgid "Accept connection to allow communication" msgstr "" -#: ../../include/js_strings.php:90 -msgid "Aug" +#: ../../Zotlabs/Module/Connedit.php:801 +msgid "Set Affinity" msgstr "" -#: ../../include/js_strings.php:91 -msgid "Sep" +#: ../../Zotlabs/Module/Connedit.php:804 +msgid "Set Profile" msgstr "" -#: ../../include/js_strings.php:92 -msgid "Oct" +#: ../../Zotlabs/Module/Connedit.php:807 +msgid "Set Affinity & Profile" msgstr "" -#: ../../include/js_strings.php:93 -msgid "Nov" +#: ../../Zotlabs/Module/Connedit.php:855 +msgid "This connection is unreachable from this location." msgstr "" -#: ../../include/js_strings.php:94 -msgid "Dec" +#: ../../Zotlabs/Module/Connedit.php:856 +msgid "This connection may be unreachable from other channel locations." msgstr "" -#: ../../include/js_strings.php:102 -msgid "Sun" +#: ../../Zotlabs/Module/Connedit.php:858 +msgid "Location independence is not supported by their network." msgstr "" -#: ../../include/js_strings.php:103 -msgid "Mon" +#: ../../Zotlabs/Module/Connedit.php:864 +msgid "" +"This connection is unreachable from this location. Location independence is " +"not supported by their network." msgstr "" -#: ../../include/js_strings.php:104 -msgid "Tue" +#: ../../Zotlabs/Module/Connedit.php:868 +msgid "Connection requests will be approved without your interaction" msgstr "" -#: ../../include/js_strings.php:105 -msgid "Wed" +#: ../../Zotlabs/Module/Connedit.php:877 +msgid "This connection's primary address is" msgstr "" -#: ../../include/js_strings.php:106 -msgid "Thu" +#: ../../Zotlabs/Module/Connedit.php:878 +msgid "Available locations:" msgstr "" -#: ../../include/js_strings.php:107 -msgid "Fri" +#: ../../Zotlabs/Module/Connedit.php:884 +msgid "Connection Tools" msgstr "" -#: ../../include/js_strings.php:108 -msgid "Sat" +#: ../../Zotlabs/Module/Connedit.php:886 +msgid "Slide to adjust your degree of friendship" msgstr "" -#: ../../include/js_strings.php:109 -msgctxt "calendar" -msgid "today" +#: ../../Zotlabs/Module/Connedit.php:888 +msgid "Slide to adjust your rating" msgstr "" -#: ../../include/js_strings.php:110 -msgctxt "calendar" -msgid "month" +#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894 +msgid "Optionally explain your rating" msgstr "" -#: ../../include/js_strings.php:111 -msgctxt "calendar" -msgid "week" +#: ../../Zotlabs/Module/Connedit.php:891 +msgid "Custom Filter" msgstr "" -#: ../../include/js_strings.php:112 -msgctxt "calendar" -msgid "day" +#: ../../Zotlabs/Module/Connedit.php:892 +msgid "Only import posts with this text" msgstr "" -#: ../../include/js_strings.php:113 -msgctxt "calendar" -msgid "All day" +#: ../../Zotlabs/Module/Connedit.php:893 +msgid "Do not import posts with this text" msgstr "" -#: ../../include/message.php:41 -msgid "Unable to determine sender." +#: ../../Zotlabs/Module/Connedit.php:895 +msgid "This information is public!" msgstr "" -#: ../../include/message.php:80 -msgid "No recipient provided." +#: ../../Zotlabs/Module/Connedit.php:900 +msgid "Connection Pending Approval" msgstr "" -#: ../../include/message.php:85 -msgid "[no subject]" +#: ../../Zotlabs/Module/Connedit.php:905 +#, php-format +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." msgstr "" -#: ../../include/message.php:214 -msgid "Stored post could not be verified." +#: ../../Zotlabs/Module/Connedit.php:912 +msgid "" +"Some permissions may be inherited from your channel's <a href=\"settings" +"\"><strong>privacy settings</strong></a>, which have higher priority than " +"individual settings. You can change those settings here but they wont have " +"any impact unless the inherited setting changes." msgstr "" -#: ../../include/activities.php:42 -msgid " and " +#: ../../Zotlabs/Module/Connedit.php:913 +msgid "Last update:" msgstr "" -#: ../../include/activities.php:50 -msgid "public profile" +#: ../../Zotlabs/Module/Connedit.php:921 +msgid "Details" msgstr "" -#: ../../include/activities.php:59 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" +#: ../../Zotlabs/Module/Notifications.php:55 ../../Zotlabs/Module/Notify.php:61 +msgid "No more system notifications." msgstr "" -#: ../../include/activities.php:60 -#, php-format -msgid "Visit %1$s's %2$s" +#: ../../Zotlabs/Module/Notifications.php:59 ../../Zotlabs/Module/Notify.php:65 +msgid "System Notifications" msgstr "" -#: ../../include/activities.php:63 -#, php-format -msgid "%1$s has an updated %2$s, changing %3$s." +#: ../../Zotlabs/Module/Notifications.php:60 +#: ../../Zotlabs/Lib/ThreadItem.php:450 +msgid "Mark all seen" msgstr "" -#: ../../include/attach.php:267 ../../include/attach.php:375 -msgid "Item was not found." +#: ../../Zotlabs/Module/Layouts.php:186 +msgid "Comanche page description language help" msgstr "" -#: ../../include/attach.php:284 -msgid "Unknown error." +#: ../../Zotlabs/Module/Layouts.php:190 +msgid "Layout Description" msgstr "" -#: ../../include/attach.php:568 -msgid "No source file." +#: ../../Zotlabs/Module/Layouts.php:195 +msgid "Download PDL file" msgstr "" -#: ../../include/attach.php:590 -msgid "Cannot locate file to replace" +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." msgstr "" -#: ../../include/attach.php:609 -msgid "Cannot locate file to revise/update" +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." msgstr "" -#: ../../include/attach.php:751 -#, php-format -msgid "File exceeds size limit of %d" +#: ../../Zotlabs/Module/Locs.php:66 +msgid "" +"Please select another location to become primary before removing the primary " +"location." msgstr "" -#: ../../include/attach.php:772 -#, php-format -msgid "You have reached your limit of %1$.0f Mbytes attachment storage." +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" msgstr "" -#: ../../include/attach.php:954 -msgid "File upload failed. Possible system limit or action terminated." +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." msgstr "" -#: ../../include/attach.php:983 -msgid "Stored file could not be verified. Upload failed." +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" msgstr "" -#: ../../include/attach.php:1057 ../../include/attach.php:1073 -msgid "Path not available." +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" msgstr "" -#: ../../include/attach.php:1122 ../../include/attach.php:1285 -msgid "Empty pathname" +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." msgstr "" -#: ../../include/attach.php:1148 -msgid "duplicate filename or path" +#: ../../Zotlabs/Module/Locs.php:124 +msgid "" +"When possible, drop a location by logging into that website/hub and removing " +"your channel." msgstr "" -#: ../../include/attach.php:1173 -msgid "Path not found." +#: ../../Zotlabs/Module/Locs.php:125 +msgid "Use this form to drop the location if the hub is no longer operating." msgstr "" -#: ../../include/attach.php:1241 -msgid "mkdir failed." +#: ../../Zotlabs/Module/Sources.php:41 +msgid "Failed to create source. No channel selected." msgstr "" -#: ../../include/attach.php:1245 -msgid "database storage failed." +#: ../../Zotlabs/Module/Sources.php:57 +msgid "Source created." msgstr "" -#: ../../include/attach.php:1291 -msgid "Empty path" +#: ../../Zotlabs/Module/Sources.php:70 +msgid "Source updated." msgstr "" -#: ../../include/security.php:607 -msgid "" -"The form security token was not correct. This probably happened because the " -"form has been opened for too long (>3 hours) before submitting it." +#: ../../Zotlabs/Module/Sources.php:88 +msgid "Sources App" msgstr "" -#: ../../include/items.php:965 ../../include/items.php:1025 -msgid "(Unknown)" +#: ../../Zotlabs/Module/Sources.php:89 +msgid "Automatically import channel content from other channels or feeds" msgstr "" -#: ../../include/items.php:1213 -msgid "Visible to anybody on the internet." +#: ../../Zotlabs/Module/Sources.php:101 +msgid "*" msgstr "" -#: ../../include/items.php:1215 -msgid "Visible to you only." +#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:367 +msgid "Channel Sources" msgstr "" -#: ../../include/items.php:1217 -msgid "Visible to anybody in this network." +#: ../../Zotlabs/Module/Sources.php:108 +msgid "Manage remote sources of content for your channel." msgstr "" -#: ../../include/items.php:1219 -msgid "Visible to anybody authenticated." +#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:119 +msgid "New Source" msgstr "" -#: ../../include/items.php:1221 -#, php-format -msgid "Visible to anybody on %s." +#: ../../Zotlabs/Module/Sources.php:120 ../../Zotlabs/Module/Sources.php:154 +msgid "" +"Import all or selected content from the following channel into this channel " +"and distribute it according to your channel settings." msgstr "" -#: ../../include/items.php:1223 -msgid "Visible to all connections." +#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 +msgid "Only import content with these words (one per line)" msgstr "" -#: ../../include/items.php:1225 -msgid "Visible to approved connections." +#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 +msgid "Leave blank to import all public content" msgstr "" -#: ../../include/items.php:1227 -msgid "Visible to specific connections." +#: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:161 +msgid "Channel Name" msgstr "" -#: ../../include/items.php:4306 -msgid "Privacy group is empty." +#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 +msgid "" +"Add the following categories to posts imported from this source (comma " +"separated)" msgstr "" - -#: ../../include/items.php:4313 -#, php-format -msgid "Privacy group: %s" + +#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 +msgid "Resend posts with this channel as author" msgstr "" -#: ../../include/items.php:4325 -msgid "Connection not found." +#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 +msgid "Copyrights may apply" msgstr "" -#: ../../include/items.php:4674 -msgid "profile photo" +#: ../../Zotlabs/Module/Sources.php:144 ../../Zotlabs/Module/Sources.php:174 +msgid "Source not found." msgstr "" -#: ../../include/items.php:4866 -#, php-format -msgid "[Edited %s]" +#: ../../Zotlabs/Module/Sources.php:151 +msgid "Edit Source" msgstr "" -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Post" +#: ../../Zotlabs/Module/Sources.php:152 +msgid "Delete Source" msgstr "" -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Comment" +#: ../../Zotlabs/Module/Sources.php:182 +msgid "Source removed" msgstr "" -#: ../../include/channel.php:43 -msgid "Unable to obtain identity information from database" +#: ../../Zotlabs/Module/Sources.php:184 +msgid "Unable to remove source." msgstr "" -#: ../../include/channel.php:76 -msgid "Empty name" +#: ../../Zotlabs/Module/Rbmark.php:94 +msgid "Select a bookmark folder" msgstr "" -#: ../../include/channel.php:79 -msgid "Name too long" +#: ../../Zotlabs/Module/Rbmark.php:99 +msgid "Save Bookmark" msgstr "" -#: ../../include/channel.php:196 -msgid "No account identifier" +#: ../../Zotlabs/Module/Rbmark.php:100 +msgid "URL of bookmark" msgstr "" -#: ../../include/channel.php:208 -msgid "Nickname is required." +#: ../../Zotlabs/Module/Rbmark.php:105 +msgid "Or enter new bookmark folder name" msgstr "" -#: ../../include/channel.php:287 -msgid "Unable to retrieve created identity" +#: ../../Zotlabs/Zot/Auth.php:152 +msgid "" +"Remote authentication blocked. You are logged into this site locally. Please " +"logout and retry." msgstr "" -#: ../../include/channel.php:429 -msgid "Default Profile" +#: ../../Zotlabs/Lib/Permcat.php:82 +msgctxt "permcat" +msgid "default" msgstr "" -#: ../../include/channel.php:588 ../../include/channel.php:677 -msgid "Unable to retrieve modified identity" +#: ../../Zotlabs/Lib/Permcat.php:133 +msgctxt "permcat" +msgid "follower" msgstr "" -#: ../../include/channel.php:1419 -msgid "Create New Profile" +#: ../../Zotlabs/Lib/Permcat.php:137 +msgctxt "permcat" +msgid "contributor" msgstr "" -#: ../../include/channel.php:1440 -msgid "Visible to everybody" +#: ../../Zotlabs/Lib/Permcat.php:141 +msgctxt "permcat" +msgid "publisher" msgstr "" -#: ../../include/channel.php:1517 ../../include/channel.php:1645 -msgid "Gender:" +#: ../../Zotlabs/Lib/Activity.php:1656 +#, php-format +msgid "Likes %1$s's %2$s" msgstr "" -#: ../../include/channel.php:1519 ../../include/channel.php:1713 -msgid "Homepage:" +#: ../../Zotlabs/Lib/Activity.php:1659 +#, php-format +msgid "Doesn't like %1$s's %2$s" msgstr "" -#: ../../include/channel.php:1520 -msgid "Online Now" +#: ../../Zotlabs/Lib/Activity.php:1662 +#, php-format +msgid "Will attend %1$s's %2$s" msgstr "" -#: ../../include/channel.php:1573 -msgid "Change your profile photo" +#: ../../Zotlabs/Lib/Activity.php:1665 +#, php-format +msgid "Will not attend %1$s's %2$s" msgstr "" -#: ../../include/channel.php:1604 -msgid "Trans" +#: ../../Zotlabs/Lib/Activity.php:1668 +#, php-format +msgid "May attend %1$s's %2$s" msgstr "" -#: ../../include/channel.php:1650 -msgid "Like this channel" +#: ../../Zotlabs/Lib/Enotify.php:60 +msgid "$Projectname Notification" msgstr "" -#: ../../include/channel.php:1674 -msgid "j F, Y" +#: ../../Zotlabs/Lib/Enotify.php:63 +msgid "Thank You," msgstr "" -#: ../../include/channel.php:1675 -msgid "j F" +#: ../../Zotlabs/Lib/Enotify.php:66 +#, php-format +msgid "This email was sent by %1$s at %2$s." msgstr "" -#: ../../include/channel.php:1682 -msgid "Birthday:" +#: ../../Zotlabs/Lib/Enotify.php:67 +#, php-format +msgid "" +"To stop receiving these messages, please adjust your Notification Settings " +"at %s" msgstr "" -#: ../../include/channel.php:1695 +#: ../../Zotlabs/Lib/Enotify.php:68 #, php-format -msgid "for %1$d %2$s" +msgid "To stop receiving these messages, please adjust your %s." msgstr "" -#: ../../include/channel.php:1707 -msgid "Tags:" +#: ../../Zotlabs/Lib/Enotify.php:123 +#, php-format +msgid "%s <!item_type!>" msgstr "" -#: ../../include/channel.php:1711 -msgid "Sexual Preference:" +#: ../../Zotlabs/Lib/Enotify.php:127 +#, php-format +msgid "[$Projectname:Notify] New mail received at %s" msgstr "" -#: ../../include/channel.php:1717 -msgid "Political Views:" +#: ../../Zotlabs/Lib/Enotify.php:129 +#, php-format +msgid "%1$s sent you a new private message at %2$s." msgstr "" -#: ../../include/channel.php:1719 -msgid "Religion:" +#: ../../Zotlabs/Lib/Enotify.php:130 +#, php-format +msgid "%1$s sent you %2$s." msgstr "" -#: ../../include/channel.php:1723 -msgid "Hobbies/Interests:" +#: ../../Zotlabs/Lib/Enotify.php:130 +msgid "a private message" msgstr "" -#: ../../include/channel.php:1725 -msgid "Likes:" +#: ../../Zotlabs/Lib/Enotify.php:131 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." msgstr "" -#: ../../include/channel.php:1727 -msgid "Dislikes:" +#: ../../Zotlabs/Lib/Enotify.php:144 +msgid "commented on" msgstr "" -#: ../../include/channel.php:1729 -msgid "Contact information and Social Networks:" +#: ../../Zotlabs/Lib/Enotify.php:155 +msgid "liked" msgstr "" -#: ../../include/channel.php:1731 -msgid "My other channels:" +#: ../../Zotlabs/Lib/Enotify.php:158 +msgid "disliked" msgstr "" -#: ../../include/channel.php:1733 -msgid "Musical interests:" +#: ../../Zotlabs/Lib/Enotify.php:201 +#, php-format +msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" msgstr "" -#: ../../include/channel.php:1735 -msgid "Books, literature:" +#: ../../Zotlabs/Lib/Enotify.php:209 +#, php-format +msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" msgstr "" -#: ../../include/channel.php:1737 -msgid "Television:" +#: ../../Zotlabs/Lib/Enotify.php:218 +#, php-format +msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" msgstr "" -#: ../../include/channel.php:1739 -msgid "Film/dance/culture/entertainment:" +#: ../../Zotlabs/Lib/Enotify.php:230 +#, php-format +msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../include/channel.php:1741 -msgid "Love/Romance:" +#: ../../Zotlabs/Lib/Enotify.php:232 +#, php-format +msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" msgstr "" -#: ../../include/channel.php:1743 -msgid "Work/employment:" +#: ../../Zotlabs/Lib/Enotify.php:233 +#, php-format +msgid "%1$s commented on an item/conversation you have been following." msgstr "" -#: ../../include/channel.php:1745 -msgid "School/education:" +#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:333 ../../Zotlabs/Lib/Enotify.php:358 +#: ../../Zotlabs/Lib/Enotify.php:375 ../../Zotlabs/Lib/Enotify.php:388 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." msgstr "" -#: ../../include/channel.php:1768 -msgid "Like this thing" +#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241 +#, php-format +msgid "Please visit %s to approve or reject this comment." msgstr "" -#: ../../include/event.php:32 ../../include/event.php:95 -msgid "l F d, Y \\@ g:i A" +#: ../../Zotlabs/Lib/Enotify.php:299 +#, php-format +msgid "%1$s liked [zrl=%2$s]your %3$s[/zrl]" msgstr "" -#: ../../include/event.php:40 -msgid "Starts:" +#: ../../Zotlabs/Lib/Enotify.php:313 +#, php-format +msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" msgstr "" -#: ../../include/event.php:50 -msgid "Finishes:" +#: ../../Zotlabs/Lib/Enotify.php:314 +#, php-format +msgid "%1$s liked an item/conversation you created." msgstr "" -#: ../../include/event.php:95 -msgid "l F d, Y" +#: ../../Zotlabs/Lib/Enotify.php:325 +#, php-format +msgid "[$Projectname:Notify] %s posted to your profile wall" msgstr "" -#: ../../include/event.php:99 -msgid "Start:" +#: ../../Zotlabs/Lib/Enotify.php:327 +#, php-format +msgid "%1$s posted to your profile wall at %2$s" msgstr "" -#: ../../include/event.php:103 -msgid "End:" +#: ../../Zotlabs/Lib/Enotify.php:329 +#, php-format +msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" msgstr "" -#: ../../include/event.php:1058 -msgid "This event has been added to your calendar." +#: ../../Zotlabs/Lib/Enotify.php:352 +#, php-format +msgid "[$Projectname:Notify] %s tagged you" msgstr "" -#: ../../include/event.php:1284 -msgid "Not specified" +#: ../../Zotlabs/Lib/Enotify.php:353 +#, php-format +msgid "%1$s tagged you at %2$s" msgstr "" -#: ../../include/event.php:1285 -msgid "Needs Action" +#: ../../Zotlabs/Lib/Enotify.php:354 +#, php-format +msgid "%1$s [zrl=%2$s]tagged you[/zrl]." msgstr "" -#: ../../include/event.php:1286 -msgid "Completed" +#: ../../Zotlabs/Lib/Enotify.php:365 +#, php-format +msgid "[$Projectname:Notify] %1$s poked you" msgstr "" -#: ../../include/event.php:1287 -msgid "In Process" +#: ../../Zotlabs/Lib/Enotify.php:366 +#, php-format +msgid "%1$s poked you at %2$s" msgstr "" -#: ../../include/event.php:1288 -msgid "Cancelled" +#: ../../Zotlabs/Lib/Enotify.php:367 +#, php-format +msgid "%1$s [zrl=%2$s]poked you[/zrl]." msgstr "" -#: ../../include/event.php:1371 ../../include/connections.php:725 -msgid "Home, Voice" +#: ../../Zotlabs/Lib/Enotify.php:382 +#, php-format +msgid "[$Projectname:Notify] %s tagged your post" msgstr "" -#: ../../include/event.php:1372 ../../include/connections.php:726 -msgid "Home, Fax" +#: ../../Zotlabs/Lib/Enotify.php:383 +#, php-format +msgid "%1$s tagged your post at %2$s" msgstr "" -#: ../../include/event.php:1374 ../../include/connections.php:728 -msgid "Work, Voice" +#: ../../Zotlabs/Lib/Enotify.php:384 +#, php-format +msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" msgstr "" -#: ../../include/event.php:1375 ../../include/connections.php:729 -msgid "Work, Fax" +#: ../../Zotlabs/Lib/Enotify.php:395 +msgid "[$Projectname:Notify] Introduction received" msgstr "" -#: ../../include/network.php:1729 -msgid "GNU-Social" +#: ../../Zotlabs/Lib/Enotify.php:396 +#, php-format +msgid "You've received an new connection request from '%1$s' at %2$s" msgstr "" -#: ../../include/network.php:1730 -msgid "RSS/Atom" +#: ../../Zotlabs/Lib/Enotify.php:397 +#, php-format +msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." msgstr "" -#: ../../include/network.php:1734 -msgid "Facebook" +#: ../../Zotlabs/Lib/Enotify.php:400 ../../Zotlabs/Lib/Enotify.php:418 +#, php-format +msgid "You may visit their profile at %s" msgstr "" -#: ../../include/network.php:1736 -msgid "LinkedIn" +#: ../../Zotlabs/Lib/Enotify.php:402 +#, php-format +msgid "Please visit %s to approve or reject the connection request." msgstr "" -#: ../../include/network.php:1737 -msgid "XMPP/IM" +#: ../../Zotlabs/Lib/Enotify.php:409 +msgid "[$Projectname:Notify] Friend suggestion received" msgstr "" -#: ../../include/network.php:1738 -msgid "MySpace" +#: ../../Zotlabs/Lib/Enotify.php:410 +#, php-format +msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "" -#: ../../include/language.php:436 -msgid "Select an alternate language" +#: ../../Zotlabs/Lib/Enotify.php:411 +#, php-format +msgid "You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." msgstr "" -#: ../../include/acl_selectors.php:113 -msgid "Who can see this?" +#: ../../Zotlabs/Lib/Enotify.php:416 +msgid "Name:" msgstr "" -#: ../../include/acl_selectors.php:114 -msgid "Custom selection" +#: ../../Zotlabs/Lib/Enotify.php:417 +msgid "Photo:" msgstr "" -#: ../../include/acl_selectors.php:115 -msgid "" -"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit " -"the scope of \"Show\"." +#: ../../Zotlabs/Lib/Enotify.php:420 +#, php-format +msgid "Please visit %s to approve or reject the suggestion." msgstr "" -#: ../../include/acl_selectors.php:116 -msgid "Show" +#: ../../Zotlabs/Lib/Enotify.php:640 +msgid "[$Projectname:Notify]" msgstr "" -#: ../../include/acl_selectors.php:117 -msgid "Don't show" +#: ../../Zotlabs/Lib/Enotify.php:808 +msgid "created a new post" msgstr "" -#: ../../include/acl_selectors.php:150 +#: ../../Zotlabs/Lib/Enotify.php:809 #, php-format -msgid "" -"Post permissions %s cannot be changed %s after a post is shared.</br />These " -"permissions set who is allowed to view the post." +msgid "commented on %s's post" msgstr "" -#: ../../include/bbcode.php:219 ../../include/bbcode.php:1214 -#: ../../include/bbcode.php:1217 ../../include/bbcode.php:1222 -#: ../../include/bbcode.php:1225 ../../include/bbcode.php:1228 -#: ../../include/bbcode.php:1231 ../../include/bbcode.php:1236 -#: ../../include/bbcode.php:1239 ../../include/bbcode.php:1244 -#: ../../include/bbcode.php:1247 ../../include/bbcode.php:1250 -#: ../../include/bbcode.php:1253 -msgid "Image/photo" +#: ../../Zotlabs/Lib/Enotify.php:812 +#, php-format +msgid "repeated %s's post" msgstr "" -#: ../../include/bbcode.php:258 ../../include/bbcode.php:1264 -msgid "Encrypted content" +#: ../../Zotlabs/Lib/Enotify.php:821 +#, php-format +msgid "edited a post dated %s" msgstr "" -#: ../../include/bbcode.php:274 +#: ../../Zotlabs/Lib/Enotify.php:825 #, php-format -msgid "Install %1$s element %2$s" +msgid "edited a comment dated %s" msgstr "" -#: ../../include/bbcode.php:278 -#, php-format -msgid "" -"This post contains an installable %s element, however you lack permissions " -"to install it on this site." +#: ../../Zotlabs/Lib/Chatroom.php:23 +msgid "Missing room name" msgstr "" -#: ../../include/bbcode.php:358 -msgid "card" +#: ../../Zotlabs/Lib/Chatroom.php:32 +msgid "Duplicate room name" msgstr "" -#: ../../include/bbcode.php:360 -msgid "article" +#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 +msgid "Invalid room specifier." msgstr "" -#: ../../include/bbcode.php:443 ../../include/bbcode.php:451 -msgid "Click to open/close" +#: ../../Zotlabs/Lib/Chatroom.php:122 +msgid "Room not found." msgstr "" -#: ../../include/bbcode.php:451 -msgid "spoiler" +#: ../../Zotlabs/Lib/Chatroom.php:143 +msgid "Room is full" msgstr "" -#: ../../include/bbcode.php:464 -msgid "View article" +#: ../../Zotlabs/Lib/NativeWiki.php:143 +msgid "Wiki updated successfully" msgstr "" -#: ../../include/bbcode.php:464 -msgid "View summary" +#: ../../Zotlabs/Lib/NativeWiki.php:197 +msgid "Wiki files deleted successfully" msgstr "" -#: ../../include/bbcode.php:1202 -msgid "$1 wrote:" +#: ../../Zotlabs/Lib/Apps.php:322 +msgid "Apps" msgstr "" -#: ../../include/oembed.php:153 -msgid "View PDF" +#: ../../Zotlabs/Lib/Apps.php:323 +msgid "Affinity Tool" msgstr "" -#: ../../include/oembed.php:357 -msgid " by " +#: ../../Zotlabs/Lib/Apps.php:326 +msgid "Site Admin" msgstr "" -#: ../../include/oembed.php:358 -msgid " on " +#: ../../Zotlabs/Lib/Apps.php:330 +msgid "Content Filter" msgstr "" -#: ../../include/oembed.php:387 -msgid "Embedded content" +#: ../../Zotlabs/Lib/Apps.php:333 +msgid "Remote Diagnostics" msgstr "" -#: ../../include/oembed.php:396 -msgid "Embedding disabled" +#: ../../Zotlabs/Lib/Apps.php:334 +msgid "Suggest Channels" msgstr "" -#: ../../include/zid.php:363 -#, php-format -msgid "OpenWebAuth: %1$s welcomes %2$s" +#: ../../Zotlabs/Lib/Apps.php:337 +msgid "Stream" msgstr "" -#: ../../include/features.php:86 -msgid "Start calendar week on Monday" +#: ../../Zotlabs/Lib/Apps.php:348 +msgid "Mail" msgstr "" -#: ../../include/features.php:87 -msgid "Default is Sunday" +#: ../../Zotlabs/Lib/Apps.php:351 +msgid "Chat" msgstr "" -#: ../../include/features.php:94 -msgid "Event Timezone Selection" +#: ../../Zotlabs/Lib/Apps.php:353 +msgid "Probe" msgstr "" -#: ../../include/features.php:95 -msgid "Allow event creation in timezones other than your own." +#: ../../Zotlabs/Lib/Apps.php:354 +msgid "Suggest" msgstr "" -#: ../../include/features.php:108 -msgid "Search by Date" +#: ../../Zotlabs/Lib/Apps.php:355 +msgid "Random Channel" msgstr "" -#: ../../include/features.php:109 -msgid "Ability to select posts by date ranges" +#: ../../Zotlabs/Lib/Apps.php:356 +msgid "Invite" msgstr "" -#: ../../include/features.php:116 -msgid "Tag Cloud" +#: ../../Zotlabs/Lib/Apps.php:359 +msgid "Post" msgstr "" -#: ../../include/features.php:117 -msgid "Provide a personal tag cloud on your channel page" +#: ../../Zotlabs/Lib/Apps.php:364 +msgid "Notifications" msgstr "" -#: ../../include/features.php:124 ../../include/features.php:351 -msgid "Use blog/list mode" +#: ../../Zotlabs/Lib/Apps.php:365 +msgid "Order Apps" msgstr "" -#: ../../include/features.php:125 ../../include/features.php:352 -msgid "Comments will be displayed separately" +#: ../../Zotlabs/Lib/Apps.php:366 +msgid "CardDAV" msgstr "" -#: ../../include/features.php:137 -msgid "Connection Filtering" +#: ../../Zotlabs/Lib/Apps.php:368 +msgid "Guest Access" msgstr "" -#: ../../include/features.php:138 -msgid "Filter incoming posts from connections based on keywords/content" +#: ../../Zotlabs/Lib/Apps.php:370 +msgid "OAuth Apps Manager" msgstr "" -#: ../../include/features.php:146 -msgid "Conversation" +#: ../../Zotlabs/Lib/Apps.php:371 +msgid "OAuth2 Apps Manager" msgstr "" -#: ../../include/features.php:150 -msgid "Community Tagging" +#: ../../Zotlabs/Lib/Apps.php:372 +msgid "PDL Editor" msgstr "" -#: ../../include/features.php:151 -msgid "Ability to tag existing posts" +#: ../../Zotlabs/Lib/Apps.php:374 +msgid "Premium Channel" msgstr "" -#: ../../include/features.php:158 -msgid "Emoji Reactions" +#: ../../Zotlabs/Lib/Apps.php:376 +msgid "My Chatrooms" msgstr "" -#: ../../include/features.php:159 -msgid "Add emoji reaction ability to posts" +#: ../../Zotlabs/Lib/Apps.php:377 +msgid "Channel Export" msgstr "" -#: ../../include/features.php:166 -msgid "Dislike Posts" +#: ../../Zotlabs/Lib/Apps.php:554 +msgid "Purchase" msgstr "" -#: ../../include/features.php:167 -msgid "Ability to dislike posts/comments" +#: ../../Zotlabs/Lib/Apps.php:559 +msgid "Undelete" msgstr "" -#: ../../include/features.php:174 -msgid "Star Posts" +#: ../../Zotlabs/Lib/Apps.php:568 +msgid "Add to app-tray" msgstr "" -#: ../../include/features.php:175 -msgid "Ability to mark special posts with a star indicator" +#: ../../Zotlabs/Lib/Apps.php:569 +msgid "Remove from app-tray" msgstr "" -#: ../../include/features.php:182 -msgid "Reply on comment" +#: ../../Zotlabs/Lib/Apps.php:570 +msgid "Pin to navbar" msgstr "" -#: ../../include/features.php:183 -msgid "Ability to reply on selected comment" +#: ../../Zotlabs/Lib/Apps.php:571 +msgid "Unpin from navbar" msgstr "" -#: ../../include/features.php:196 -msgid "Advanced Directory Search" +#: ../../Zotlabs/Lib/Techlevels.php:10 +msgid "0. Beginner/Basic" msgstr "" -#: ../../include/features.php:197 -msgid "Allows creation of complex directory search queries" +#: ../../Zotlabs/Lib/Techlevels.php:11 +msgid "1. Novice - not skilled but willing to learn" msgstr "" -#: ../../include/features.php:206 -msgid "Editor" +#: ../../Zotlabs/Lib/Techlevels.php:12 +msgid "2. Intermediate - somewhat comfortable" msgstr "" -#: ../../include/features.php:210 -msgid "Post Categories" +#: ../../Zotlabs/Lib/Techlevels.php:13 +msgid "3. Advanced - very comfortable" msgstr "" -#: ../../include/features.php:211 -msgid "Add categories to your posts" +#: ../../Zotlabs/Lib/Techlevels.php:14 +msgid "4. Expert - I can write computer code" msgstr "" -#: ../../include/features.php:219 -msgid "Large Photos" +#: ../../Zotlabs/Lib/Techlevels.php:15 +msgid "5. Wizard - I probably know more than you do" msgstr "" -#: ../../include/features.php:220 -msgid "" -"Include large (1024px) photo thumbnails in posts. If not enabled, use small " -"(640px) photo thumbnails" +#: ../../Zotlabs/Lib/NativeWikiPage.php:42 +#: ../../Zotlabs/Lib/NativeWikiPage.php:94 +msgid "(No Title)" msgstr "" -#: ../../include/features.php:227 -msgid "Even More Encryption" +#: ../../Zotlabs/Lib/NativeWikiPage.php:109 +msgid "Wiki page create failed." msgstr "" -#: ../../include/features.php:228 -msgid "" -"Allow optional encryption of content end-to-end with a shared secret key" +#: ../../Zotlabs/Lib/NativeWikiPage.php:122 +msgid "Wiki not found." msgstr "" -#: ../../include/features.php:235 -msgid "Enable Voting Tools" +#: ../../Zotlabs/Lib/NativeWikiPage.php:133 +msgid "Destination name already exists" msgstr "" -#: ../../include/features.php:236 -msgid "Provide a class of post which others can vote on" +#: ../../Zotlabs/Lib/NativeWikiPage.php:166 +#: ../../Zotlabs/Lib/NativeWikiPage.php:362 +msgid "Page not found" msgstr "" -#: ../../include/features.php:243 -msgid "Disable Comments" +#: ../../Zotlabs/Lib/NativeWikiPage.php:197 +msgid "Error reading page content" msgstr "" -#: ../../include/features.php:244 -msgid "Provide the option to disable comments for a post" +#: ../../Zotlabs/Lib/NativeWikiPage.php:353 +#: ../../Zotlabs/Lib/NativeWikiPage.php:402 +#: ../../Zotlabs/Lib/NativeWikiPage.php:469 +#: ../../Zotlabs/Lib/NativeWikiPage.php:510 +msgid "Error reading wiki" msgstr "" -#: ../../include/features.php:251 -msgid "Delayed Posting" +#: ../../Zotlabs/Lib/NativeWikiPage.php:390 +msgid "Page update failed." msgstr "" -#: ../../include/features.php:252 -msgid "Allow posts to be published at a later date" +#: ../../Zotlabs/Lib/NativeWikiPage.php:424 +msgid "Nothing deleted" msgstr "" -#: ../../include/features.php:259 -msgid "Content Expiration" +#: ../../Zotlabs/Lib/NativeWikiPage.php:490 +msgid "Compare: object not found." msgstr "" -#: ../../include/features.php:260 -msgid "Remove posts/comments and/or private messages at a future time" +#: ../../Zotlabs/Lib/NativeWikiPage.php:496 +msgid "Page updated" msgstr "" -#: ../../include/features.php:267 -msgid "Suppress Duplicate Posts/Comments" +#: ../../Zotlabs/Lib/NativeWikiPage.php:499 +msgid "Untitled" msgstr "" -#: ../../include/features.php:268 -msgid "" -"Prevent posts with identical content to be published with less than two " -"minutes in between submissions." +#: ../../Zotlabs/Lib/NativeWikiPage.php:505 +msgid "Wiki resource_id required for git commit" msgstr "" -#: ../../include/features.php:275 -msgid "Auto-save drafts of posts and comments" +#: ../../Zotlabs/Lib/ThreadItem.php:130 +msgid "Privacy conflict. Discretion advised." msgstr "" -#: ../../include/features.php:276 -msgid "" -"Automatically saves post and comment drafts in local browser storage to help " -"prevent accidental loss of compositions" +#: ../../Zotlabs/Lib/ThreadItem.php:172 ../../Zotlabs/Storage/Browser.php:286 +msgid "Admin Delete" msgstr "" -#: ../../include/features.php:285 -msgid "Manage" +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I will attend" msgstr "" -#: ../../include/features.php:289 -msgid "Navigation Channel Select" +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I will not attend" msgstr "" -#: ../../include/features.php:290 -msgid "Change channels directly from within the navigation dropdown menu" +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I might attend" msgstr "" -#: ../../include/features.php:304 -msgid "Save search terms for re-use" +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I agree" msgstr "" -#: ../../include/features.php:312 -msgid "Ability to file posts under folders" +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I disagree" msgstr "" -#: ../../include/features.php:319 -msgid "Alternate Stream Order" +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I abstain" msgstr "" -#: ../../include/features.php:320 -msgid "" -"Ability to order the stream by last post date, last comment date or " -"unthreaded activities" +#: ../../Zotlabs/Lib/ThreadItem.php:287 +msgid "Add Tag" msgstr "" -#: ../../include/features.php:327 -msgid "Contact Filter" +#: ../../Zotlabs/Lib/ThreadItem.php:309 +msgid "Reply on this comment" msgstr "" -#: ../../include/features.php:328 -msgid "Ability to display only posts of a selected contact" +#: ../../Zotlabs/Lib/ThreadItem.php:309 +msgid "reply" msgstr "" -#: ../../include/features.php:335 -msgid "Forum Filter" +#: ../../Zotlabs/Lib/ThreadItem.php:309 +msgid "Reply to" msgstr "" -#: ../../include/features.php:336 -msgid "Ability to display only posts of a specific forum" +#: ../../Zotlabs/Lib/ThreadItem.php:319 +msgid "Share This" msgstr "" -#: ../../include/features.php:343 -msgid "Personal Posts Filter" +#: ../../Zotlabs/Lib/ThreadItem.php:319 +msgid "share" msgstr "" -#: ../../include/features.php:344 -msgid "Ability to display only posts that you've interacted on" +#: ../../Zotlabs/Lib/ThreadItem.php:329 +msgid "Delivery Report" msgstr "" -#: ../../include/features.php:365 -msgid "Photo Location" -msgstr "" +#: ../../Zotlabs/Lib/ThreadItem.php:348 +#, php-format +msgid "%d comment" +msgid_plural "%d comments" +msgstr[0] "" +msgstr[1] "" -#: ../../include/features.php:366 -msgid "If location data is available on uploaded photos, link this to a map." +#: ../../Zotlabs/Lib/ThreadItem.php:380 ../../Zotlabs/Lib/ThreadItem.php:381 +#, php-format +msgid "View %s's profile - %s" msgstr "" -#: ../../include/features.php:379 -msgid "Advanced Profiles" +#: ../../Zotlabs/Lib/ThreadItem.php:384 +msgid "to" msgstr "" -#: ../../include/features.php:380 -msgid "Additional profile sections and selections" +#: ../../Zotlabs/Lib/ThreadItem.php:385 +msgid "via" msgstr "" -#: ../../include/features.php:387 -msgid "Profile Import/Export" +#: ../../Zotlabs/Lib/ThreadItem.php:386 +msgid "Wall-to-Wall" msgstr "" -#: ../../include/features.php:388 -msgid "Save and load profile details across sites/channels" +#: ../../Zotlabs/Lib/ThreadItem.php:387 +msgid "via Wall-To-Wall:" msgstr "" -#: ../../include/features.php:395 -msgid "Multiple Profiles" +#: ../../Zotlabs/Lib/ThreadItem.php:413 +msgid "Attend" msgstr "" -#: ../../include/features.php:396 -msgid "Ability to create multiple profiles" +#: ../../Zotlabs/Lib/ThreadItem.php:414 +msgid "Attendance Options" msgstr "" -#: ../../include/taxonomy.php:320 -msgid "Trending" +#: ../../Zotlabs/Lib/ThreadItem.php:415 +msgid "Vote" msgstr "" -#: ../../include/taxonomy.php:550 -msgid "Keywords" +#: ../../Zotlabs/Lib/ThreadItem.php:416 +msgid "Voting Options" msgstr "" -#: ../../include/taxonomy.php:571 -msgid "have" +#: ../../Zotlabs/Lib/ThreadItem.php:431 +msgid "Go to previous comment" msgstr "" -#: ../../include/taxonomy.php:571 -msgid "has" +#: ../../Zotlabs/Lib/ThreadItem.php:441 +msgid "Add to Calendar" msgstr "" -#: ../../include/taxonomy.php:572 -msgid "want" +#: ../../Zotlabs/Lib/ThreadItem.php:802 +msgid "Image" msgstr "" -#: ../../include/taxonomy.php:572 -msgid "wants" +#: ../../Zotlabs/Lib/ThreadItem.php:804 +msgid "Insert Link" msgstr "" -#: ../../include/taxonomy.php:573 -msgid "likes" +#: ../../Zotlabs/Lib/ThreadItem.php:805 +msgid "Video" msgstr "" -#: ../../include/taxonomy.php:574 -msgid "dislikes" +#: ../../Zotlabs/Lib/ThreadItem.php:815 +msgid "Your full name (required)" msgstr "" -#: ../../include/account.php:36 -msgid "Not a valid email address" +#: ../../Zotlabs/Lib/ThreadItem.php:816 +msgid "Your email address (required)" msgstr "" -#: ../../include/account.php:38 -msgid "Your email domain is not among those allowed on this site" +#: ../../Zotlabs/Lib/ThreadItem.php:817 +msgid "Your website URL (optional)" msgstr "" -#: ../../include/account.php:44 -msgid "Your email address is already registered at this site." +#: ../../Zotlabs/Lib/DB_Upgrade.php:67 +msgid "Source code of failed update: " msgstr "" -#: ../../include/account.php:76 -msgid "An invitation is required." +#: ../../Zotlabs/Lib/DB_Upgrade.php:88 +#, php-format +msgid "Update Error at %s" msgstr "" -#: ../../include/account.php:80 -msgid "Invitation could not be verified." +#: ../../Zotlabs/Lib/DB_Upgrade.php:94 +#, php-format +msgid "Update %s failed. See error logs." msgstr "" -#: ../../include/account.php:156 -msgid "Please enter the required information." +#: ../../Zotlabs/Lib/PermissionDescription.php:108 +msgid "Public" msgstr "" -#: ../../include/account.php:223 -msgid "Failed to store account information." +#: ../../Zotlabs/Lib/PermissionDescription.php:109 +msgid "Anybody in the $Projectname network" msgstr "" -#: ../../include/account.php:311 +#: ../../Zotlabs/Lib/PermissionDescription.php:110 #, php-format -msgid "Registration confirmation for %s" +msgid "Any account on %s" msgstr "" -#: ../../include/account.php:380 -#, php-format -msgid "Registration request at %s" +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" msgstr "" -#: ../../include/account.php:402 -msgid "your registration password" +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" msgstr "" -#: ../../include/account.php:408 ../../include/account.php:471 -#, php-format -msgid "Registration details for %s" +#: ../../Zotlabs/Lib/PermissionDescription.php:113 +msgid "Anybody authenticated (could include visitors from other networks)" msgstr "" -#: ../../include/account.php:482 -msgid "Account approved." +#: ../../Zotlabs/Lib/PermissionDescription.php:114 +msgid "Any connections including those who haven't yet been approved" msgstr "" -#: ../../include/account.php:522 -#, php-format -msgid "Registration revoked for %s" +#: ../../Zotlabs/Lib/PermissionDescription.php:150 +msgid "" +"This is your default setting for the audience of your normal stream, and " +"posts." msgstr "" -#: ../../include/account.php:805 ../../include/account.php:807 -msgid "Click here to upgrade." +#: ../../Zotlabs/Lib/PermissionDescription.php:151 +msgid "" +"This is your default setting for who can view your default channel profile" msgstr "" -#: ../../include/account.php:813 -msgid "This action exceeds the limits set by your subscription plan." +#: ../../Zotlabs/Lib/PermissionDescription.php:152 +msgid "This is your default setting for who can view your connections" msgstr "" -#: ../../include/account.php:818 -msgid "This action is not available under your subscription plan." +#: ../../Zotlabs/Lib/PermissionDescription.php:153 +msgid "" +"This is your default setting for who can view your file storage and photos" msgstr "" -#: ../../include/datetime.php:140 -msgid "Birthday" +#: ../../Zotlabs/Lib/PermissionDescription.php:154 +msgid "This is your default setting for the audience of your webpages" msgstr "" -#: ../../include/datetime.php:140 -msgid "Age: " +#: ../../Zotlabs/Access/PermissionRoles.php:283 +msgid "Social Networking" msgstr "" -#: ../../include/datetime.php:140 -msgid "YYYY-MM-DD or MM-DD" +#: ../../Zotlabs/Access/PermissionRoles.php:284 +msgid "Social - Federation" msgstr "" -#: ../../include/datetime.php:244 -msgid "less than a second ago" +#: ../../Zotlabs/Access/PermissionRoles.php:285 +msgid "Social - Mostly Public" msgstr "" -#: ../../include/datetime.php:262 -#, php-format -msgctxt "e.g. 22 hours ago, 1 minute ago" -msgid "%1$d %2$s ago" +#: ../../Zotlabs/Access/PermissionRoles.php:286 +msgid "Social - Restricted" msgstr "" -#: ../../include/datetime.php:273 -msgctxt "relative_date" -msgid "year" -msgid_plural "years" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Access/PermissionRoles.php:287 +msgid "Social - Private" +msgstr "" -#: ../../include/datetime.php:276 -msgctxt "relative_date" -msgid "month" -msgid_plural "months" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Access/PermissionRoles.php:290 +msgid "Community Forum" +msgstr "" -#: ../../include/datetime.php:279 -msgctxt "relative_date" -msgid "week" -msgid_plural "weeks" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Access/PermissionRoles.php:291 +msgid "Forum - Mostly Public" +msgstr "" -#: ../../include/datetime.php:282 -msgctxt "relative_date" -msgid "day" -msgid_plural "days" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Access/PermissionRoles.php:292 +msgid "Forum - Restricted" +msgstr "" -#: ../../include/datetime.php:285 -msgctxt "relative_date" -msgid "hour" -msgid_plural "hours" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Access/PermissionRoles.php:293 +msgid "Forum - Private" +msgstr "" -#: ../../include/datetime.php:288 -msgctxt "relative_date" -msgid "minute" -msgid_plural "minutes" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Access/PermissionRoles.php:296 +msgid "Feed Republish" +msgstr "" -#: ../../include/datetime.php:291 -msgctxt "relative_date" -msgid "second" -msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" +#: ../../Zotlabs/Access/PermissionRoles.php:297 +msgid "Feed - Mostly Public" +msgstr "" -#: ../../include/datetime.php:520 -#, php-format -msgid "%1$s's birthday" +#: ../../Zotlabs/Access/PermissionRoles.php:298 +msgid "Feed - Restricted" msgstr "" -#: ../../include/datetime.php:521 -#, php-format -msgid "Happy Birthday %1$s" +#: ../../Zotlabs/Access/PermissionRoles.php:301 +msgid "Special Purpose" msgstr "" -#: ../../include/nav.php:90 -msgid "Remote authentication" +#: ../../Zotlabs/Access/PermissionRoles.php:302 +msgid "Special - Celebrity/Soapbox" msgstr "" -#: ../../include/nav.php:90 -msgid "Click to authenticate to your home hub" +#: ../../Zotlabs/Access/PermissionRoles.php:303 +msgid "Special - Group Repository" msgstr "" -#: ../../include/nav.php:96 -msgid "Manage your channels" +#: ../../Zotlabs/Access/PermissionRoles.php:307 +msgid "Custom/Expert Mode" msgstr "" -#: ../../include/nav.php:99 -msgid "Manage your privacy groups" +#: ../../Zotlabs/Access/Permissions.php:56 +msgid "Can view my channel stream and posts" msgstr "" -#: ../../include/nav.php:101 -msgid "Account/Channel Settings" +#: ../../Zotlabs/Access/Permissions.php:57 +msgid "Can send me their channel stream and posts" msgstr "" -#: ../../include/nav.php:107 ../../include/nav.php:136 -msgid "End this session" +#: ../../Zotlabs/Access/Permissions.php:58 +msgid "Can view my default channel profile" msgstr "" -#: ../../include/nav.php:110 -msgid "Your profile page" +#: ../../Zotlabs/Access/Permissions.php:59 +msgid "Can view my connections" msgstr "" -#: ../../include/nav.php:113 -msgid "Manage/Edit profiles" +#: ../../Zotlabs/Access/Permissions.php:60 +msgid "Can view my file storage and photos" msgstr "" -#: ../../include/nav.php:122 ../../include/nav.php:126 -msgid "Sign in" +#: ../../Zotlabs/Access/Permissions.php:61 +msgid "Can upload/modify my file storage and photos" msgstr "" -#: ../../include/nav.php:153 -msgid "Take me home" +#: ../../Zotlabs/Access/Permissions.php:62 +msgid "Can view my channel webpages" msgstr "" -#: ../../include/nav.php:155 -msgid "Log me out of this site" +#: ../../Zotlabs/Access/Permissions.php:63 +msgid "Can view my wiki pages" msgstr "" -#: ../../include/nav.php:160 -msgid "Create an account" +#: ../../Zotlabs/Access/Permissions.php:64 +msgid "Can create/edit my channel webpages" msgstr "" -#: ../../include/nav.php:172 -msgid "Help and documentation" +#: ../../Zotlabs/Access/Permissions.php:65 +msgid "Can write to my wiki pages" msgstr "" -#: ../../include/nav.php:186 -msgid "Search site @name, !forum, #tag, ?docs, content" +#: ../../Zotlabs/Access/Permissions.php:66 +msgid "Can post on my channel (wall) page" msgstr "" -#: ../../include/nav.php:192 -msgid "Site Setup and Configuration" +#: ../../Zotlabs/Access/Permissions.php:67 +msgid "Can comment on or like my posts" msgstr "" -#: ../../include/nav.php:332 -msgid "@name, !forum, #tag, ?doc, content" +#: ../../Zotlabs/Access/Permissions.php:68 +msgid "Can send me private mail messages" msgstr "" -#: ../../include/nav.php:333 -msgid "Please wait..." +#: ../../Zotlabs/Access/Permissions.php:69 +msgid "Can like/dislike profiles and profile things" msgstr "" -#: ../../include/nav.php:339 -msgid "Add Apps" +#: ../../Zotlabs/Access/Permissions.php:70 +msgid "Can forward to all my channel connections via ! mentions in posts" msgstr "" -#: ../../include/nav.php:340 -msgid "Arrange Apps" +#: ../../Zotlabs/Access/Permissions.php:71 +msgid "Can chat with me" msgstr "" -#: ../../include/nav.php:341 -msgid "Toggle System Apps" +#: ../../Zotlabs/Access/Permissions.php:72 +msgid "Can source my public posts in derived channels" msgstr "" -#: ../../include/nav.php:426 -msgid "Status Messages and Posts" +#: ../../Zotlabs/Access/Permissions.php:73 +msgid "Can administer my channel" msgstr "" -#: ../../include/nav.php:439 -msgid "Profile Details" +#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:295 +msgid "parent" msgstr "" -#: ../../include/nav.php:449 ../../include/photos.php:666 -msgid "Photo Albums" +#: ../../Zotlabs/Storage/Browser.php:134 +msgid "Principal" msgstr "" -#: ../../include/nav.php:457 -msgid "Files and Storage" +#: ../../Zotlabs/Storage/Browser.php:137 +msgid "Addressbook" msgstr "" -#: ../../include/nav.php:495 -msgid "Saved Bookmarks" +#: ../../Zotlabs/Storage/Browser.php:143 +msgid "Schedule Inbox" msgstr "" -#: ../../include/nav.php:506 -msgid "View Cards" +#: ../../Zotlabs/Storage/Browser.php:146 +msgid "Schedule Outbox" msgstr "" -#: ../../include/nav.php:517 -msgid "View Articles" +#: ../../Zotlabs/Storage/Browser.php:279 +msgid "Total" msgstr "" -#: ../../include/nav.php:529 -msgid "View Webpages" +#: ../../Zotlabs/Storage/Browser.php:281 +msgid "Shared" msgstr "" -#: ../../include/photos.php:151 -#, php-format -msgid "Image exceeds website size limit of %lu bytes" +#: ../../Zotlabs/Storage/Browser.php:283 +msgid "Add Files" msgstr "" -#: ../../include/photos.php:162 -msgid "Image file is empty." +#: ../../Zotlabs/Storage/Browser.php:367 +#, php-format +msgid "You are using %1$s of your available file storage." msgstr "" -#: ../../include/photos.php:324 -msgid "Photo storage failed." +#: ../../Zotlabs/Storage/Browser.php:372 +#, php-format +msgid "You are using %1$s of %2$s available file storage. (%3$s%)" msgstr "" -#: ../../include/photos.php:373 -msgid "a new photo" +#: ../../Zotlabs/Storage/Browser.php:383 +msgid "WARNING:" msgstr "" -#: ../../include/photos.php:377 -#, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" +#: ../../Zotlabs/Storage/Browser.php:395 +msgid "Create new folder" msgstr "" -#: ../../include/photos.php:671 -msgid "Upload New Photos" +#: ../../Zotlabs/Storage/Browser.php:397 +msgid "Upload file" msgstr "" -#: ../../include/zot.php:774 -msgid "Invalid data packet" +#: ../../Zotlabs/Storage/Browser.php:410 +msgid "Drop files here to immediately upload" msgstr "" -#: ../../include/zot.php:4329 -msgid "invalid target signature" +#: ../../boot.php:1653 +msgid "Create an account to access services and applications" msgstr "" -#: ../../include/connections.php:133 -msgid "New window" +#: ../../boot.php:1677 +msgid "Login/Email" msgstr "" -#: ../../include/connections.php:134 -msgid "Open the selected location in a different window or browser tab" +#: ../../boot.php:1678 +msgid "Password" msgstr "" -#: ../../include/auth.php:192 -msgid "Delegation session ended." +#: ../../boot.php:1679 +msgid "Remember me" msgstr "" -#: ../../include/auth.php:196 -msgid "Logged out." +#: ../../boot.php:1682 +msgid "Forgot your password?" msgstr "" -#: ../../include/auth.php:291 -msgid "Email validation is incomplete. Please check your email." +#: ../../boot.php:2478 +#, php-format +msgid "[$Projectname] Website SSL error for %s" msgstr "" -#: ../../include/auth.php:307 -msgid "Failed authentication" +#: ../../boot.php:2483 +msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../include/help.php:80 -msgid "Help:" +#: ../../boot.php:2599 +#, php-format +msgid "[$Projectname] Cron tasks not running on %s" msgstr "" -#: ../../include/help.php:129 -msgid "Not Found" +#: ../../boot.php:2604 +msgid "Cron/Scheduled tasks not running." msgstr "" -- cgit v1.2.3 From 08b804cd2d365a35f26cc7e6b8fb838a0679fa97 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 11 Nov 2019 10:17:03 +0000 Subject: use minified version of jquery (cherry picked from commit 89342ca9fbf329d5e84839c51f26db19bdd4ac8c) --- view/js/jquery.js | 10600 +--------------------------------------------------- 1 file changed, 2 insertions(+), 10598 deletions(-) diff --git a/view/js/jquery.js b/view/js/jquery.js index 773ad95c5..a1c07fd80 100644 --- a/view/js/jquery.js +++ b/view/js/jquery.js @@ -1,10598 +1,2 @@ -/*! - * jQuery JavaScript Library v3.4.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2019-05-01T21:04Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var document = window.document; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML <object> elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.4.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a global context - globalEval: function( code, options ) { - DOMEval( code, { nonce: options && options.nonce } ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.4 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2019-04-08 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) && - - // Support: IE 8 only - // Exclude object elements - (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && rdescend.test( selector ) ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = (elem.ownerDocument || elem).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( el ) { - el.className = "i"; - return !el.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID filter and find - if ( support.getById ) { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( el ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" + - "<select id='" + expando + "-\r\\' msallowcapture=''>" + - "<option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( el ) { - el.innerHTML = "<a href='' disabled='disabled'></a>" + - "<select disabled='disabled'><option/></select>"; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( el ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { - el.innerHTML = "<a href='#'></a>"; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { - el.innerHTML = "<input/>"; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( typeof elem.contentDocument !== "undefined" ) { - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // Support: IE <=9 only - option: [ 1, "<select multiple='multiple'>", "</select>" ], - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting <tbody> or other required elements. - thead: [ 1, "<table>", "</table>" ], - col: [ 2, "<table><colgroup>", "</colgroup></table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - _default: [ 0, "", "" ] -}; - -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG <use> instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /<script|<style|<link/i, - - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - } ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1></$2>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - // Support: IE 9-11 only - // Also use offsetWidth/offsetHeight for when box sizing is unreliable - // We use getClientRects() to check for hidden/disconnected. - // In those cases, the computed value can be trusted to be border-box - if ( ( !support.boxSizingReliable() && isBorderBox || - val === "auto" || - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = Date.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url, options ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( "<script>" ) - .attr( s.scriptAttrs || {} ) - .prop( { charset: s.scriptCharset, src: s.url } ) - .on( "load error", callback = function( evt ) { - script.remove(); - callback = null; - if ( evt ) { - complete( evt.type === "error" ? 404 : 200, evt.type ); - } - } ); - - // Use native DOM manipulation to avoid our domManip AJAX trickery - document.head.appendChild( script[ 0 ] ); - }, - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup( { - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -} ); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && - ( s.contentType || "" ) - .indexOf( "application/x-www-form-urlencoded" ) === 0 && - rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters[ "script json" ] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // Force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always( function() { - - // If previous value didn't exist - remove it - if ( overwritten === undefined ) { - jQuery( window ).removeProp( callbackName ); - - // Otherwise restore preexisting value - } else { - window[ callbackName ] = overwritten; - } - - // Save back as free - if ( s[ callbackName ] ) { - - // Make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // Save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - } ); - - // Delegate to script - return "script"; - } -} ); - - - - -// Support: Safari 8 only -// In Safari 8 documents created via document.implementation.createHTMLDocument -// collapse sibling forms: the second one becomes a child of the first one. -// Because of that, this security measure has to be disabled in Safari 8. -// https://bugs.webkit.org/show_bug.cgi?id=137337 -support.createHTMLDocument = ( function() { - var body = document.implementation.createHTMLDocument( "" ).body; - body.innerHTML = "<form></form><form></form>"; - return body.childNodes.length === 2; -} )(); - - -// Argument "data" should be string of html -// context (optional): If specified, the fragment will be created in this context, -// defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( typeof data !== "string" ) { - return []; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - - var base, parsed, scripts; - - if ( !context ) { - - // Stop scripts or inline event handlers from being executed immediately - // by using document.implementation - if ( support.createHTMLDocument ) { - context = document.implementation.createHTMLDocument( "" ); - - // Set the base href for the created document - // so any parsed elements with URLs - // are based on the document's URL (gh-2965) - base = context.createElement( "base" ); - base.href = document.location.href; - context.head.appendChild( base ); - } else { - context = document; - } - } - - parsed = rsingleTag.exec( data ); - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[ 1 ] ) ]; - } - - parsed = buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - var selector, type, response, - self = this, - off = url.indexOf( " " ); - - if ( off > -1 ) { - selector = stripAndCollapse( url.slice( off ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax( { - url: url, - - // If "type" variable is undefined, then "GET" method will be used. - // Make value of this field explicit since - // user can override it through ajaxSetup method - type: type || "GET", - dataType: "html", - data: params - } ).done( function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - // If the request succeeds, this function gets "data", "status", "jqXHR" - // but they are ignored because response was set above. - // If it fails, this function gets "jqXHR", "status", "error" - } ).always( callback && function( jqXHR, status ) { - self.each( function() { - callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); - } ); - } ); - } - - return this; -}; - - - - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ - "ajaxStart", - "ajaxStop", - "ajaxComplete", - "ajaxError", - "ajaxSuccess", - "ajaxSend" -], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -} ); - - - - -jQuery.expr.pseudos.animated = function( elem ) { - return jQuery.grep( jQuery.timers, function( fn ) { - return elem === fn.elem; - } ).length; -}; - - - - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // Set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; - - // Need to be able to calculate position if either - // top or left is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( isFunction( options ) ) { - - // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) - options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend( { - - // offset() relates an element's border box to the document origin - offset: function( options ) { - - // Preserve chaining for setter - if ( arguments.length ) { - return options === undefined ? - this : - this.each( function( i ) { - jQuery.offset.setOffset( this, options, i ); - } ); - } - - var rect, win, - elem = this[ 0 ]; - - if ( !elem ) { - return; - } - - // Return zeros for disconnected and hidden (display: none) elements (gh-2310) - // Support: IE <=11 only - // Running getBoundingClientRect on a - // disconnected node in IE throws an error - if ( !elem.getClientRects().length ) { - return { top: 0, left: 0 }; - } - - // Get document-relative position by adding viewport scroll to viewport-relative gBCR - rect = elem.getBoundingClientRect(); - win = elem.ownerDocument.defaultView; - return { - top: rect.top + win.pageYOffset, - left: rect.left + win.pageXOffset - }; - }, - - // position() relates an element's margin box to its offset parent's padding box - // This corresponds to the behavior of CSS absolute positioning - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, doc, - elem = this[ 0 ], - parentOffset = { top: 0, left: 0 }; - - // position:fixed elements are offset from the viewport, which itself always has zero offset - if ( jQuery.css( elem, "position" ) === "fixed" ) { - - // Assume position:fixed implies availability of getBoundingClientRect - offset = elem.getBoundingClientRect(); - - } else { - offset = this.offset(); - - // Account for the *real* offset parent, which can be the document or its root element - // when a statically positioned element is identified - doc = elem.ownerDocument; - offsetParent = elem.offsetParent || doc.documentElement; - while ( offsetParent && - ( offsetParent === doc.body || offsetParent === doc.documentElement ) && - jQuery.css( offsetParent, "position" ) === "static" ) { - - offsetParent = offsetParent.parentNode; - } - if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { - - // Incorporate borders into its offset, since they are outside its content origin - parentOffset = jQuery( offsetParent ).offset(); - parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); - } - } - - // Subtract parent offsets and element margins - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) - }; - }, - - // This method will return documentElement in the following cases: - // 1) For the element inside the iframe without offsetParent, this method will return - // documentElement of the parent window - // 2) For the hidden or detached element - // 3) For body or html element, i.e. in case of the html node - it will return itself - // - // but those exceptions were never presented as a real life use-cases - // and might be considered as more preferable results. - // - // This logic, however, is not guaranteed and can change at any point in the future - offsetParent: function() { - return this.map( function() { - var offsetParent = this.offsetParent; - - while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { - offsetParent = offsetParent.offsetParent; - } - - return offsetParent || documentElement; - } ); - } -} ); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = "pageYOffset" === prop; - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - - // Coalesce documents and windows - var win; - if ( isWindow( elem ) ) { - win = elem; - } else if ( elem.nodeType === 9 ) { - win = elem.defaultView; - } - - if ( val === undefined ) { - return win ? win[ prop ] : elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : win.pageXOffset, - top ? val : win.pageYOffset - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length ); - }; -} ); - -// Support: Safari <=7 - 9.1, Chrome <=37 - 49 -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 -// getComputedStyle returns percent when specified for top/left/bottom/right; -// rather than make the css module depend on the offset module, just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - - // If curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -} ); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, - function( defaultExtra, funcName ) { - - // Margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( isWindow( elem ) ) { - - // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) - return funcName.indexOf( "outer" ) === 0 ? - elem[ "inner" + name ] : - elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], - // whichever is greatest - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable ); - }; - } ); -} ); - - -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - - - -jQuery.fn.extend( { - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? - this.off( selector, "**" ) : - this.off( types, selector || "**", fn ); - } -} ); - -// Bind a function to a context, optionally partially applying any -// arguments. -// jQuery.proxy is deprecated to promote standards (specifically Function#bind) -// However, it is not slated for removal any time soon -jQuery.proxy = function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; -}; - -jQuery.holdReady = function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } -}; -jQuery.isArray = Array.isArray; -jQuery.parseJSON = JSON.parse; -jQuery.nodeName = nodeName; -jQuery.isFunction = isFunction; -jQuery.isWindow = isWindow; -jQuery.camelCase = camelCase; -jQuery.type = toType; - -jQuery.now = Date.now; - -jQuery.isNumeric = function( obj ) { - - // As of jQuery 3.0, isNumeric is limited to - // strings and numbers (primitives or objects) - // that can be coerced to finite numbers (gh-2662) - var type = jQuery.type( obj ); - return ( type === "number" || type === "string" ) && - - // parseFloat NaNs numeric-cast false positives ("") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - !isNaN( obj - parseFloat( obj ) ); -}; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - } ); -} - - - - -var - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in AMD -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( !noGlobal ) { - window.jQuery = window.$ = jQuery; -} - - - - -return jQuery; -} ); +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k}); -- cgit v1.2.3 From 3a2fdec241b84bd4ae559565876c6869e1c067fe Mon Sep 17 00:00:00 2001 From: zotlabs <mike@macgirvin.com> Date: Wed, 13 Nov 2019 04:25:25 +0000 Subject: wildcard tag issue (cherry picked from commit 2f4c619d510e64eeda05366e485d50f490cefebe) --- include/text.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/text.php b/include/text.php index daa3c4c94..44af40810 100644 --- a/include/text.php +++ b/include/text.php @@ -2789,6 +2789,9 @@ function handle_tag(&$body, &$str_tags, $profile_uid, $tag, $in_network = true) // select someone by attag or nick and the name passed in if(! $r) { + // strip user-supplied wildcards before running a wildcard search + $newname = str_replace('%','',$newname); + $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE xchan_addr like ('%s') AND abook_channel = %d ", dbesc(((strpos($newname,'@')) ? $newname : $newname . '@%')), -- cgit v1.2.3 From c850a61a896cfd42cb731f0e159e39e9ffee3236 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Wed, 13 Nov 2019 13:40:40 +0000 Subject: check if file exists (cherry picked from commit 52bd27a0280c736e563ccc67a9307cd75bd14d3f) --- Zotlabs/Web/Router.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php index c4db0ef3e..96bf131b8 100644 --- a/Zotlabs/Web/Router.php +++ b/Zotlabs/Web/Router.php @@ -56,7 +56,7 @@ class Router { $routes = Route::get(); if($routes) { foreach($routes as $route) { - if(is_array($route) && strtolower($route[1]) === $module) { + if(is_array($route) && file_exists($route[0]) && strtolower($route[1]) === $module) { include_once($route[0]); if(class_exists($modname)) { $this->controller = new $modname; -- cgit v1.2.3 From a974d0d52dc0f1b40316f0c30e9794b7b700e59e Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Fri, 15 Nov 2019 09:43:39 +0000 Subject: AP fixes (cherry picked from commit 3009c88d246ddcafabf1965f88c5ebd8fe1717fd) --- Zotlabs/Lib/Activity.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index e41e165b1..08a8b8d03 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -609,9 +609,15 @@ class Activity { } if($i['id'] != $i['parent']) { - $ret['inReplyTo'] = ((strpos($i['thr_parent'],'http') === 0) ? $i['thr_parent'] : z_root() . '/item/' . urlencode($i['thr_parent'])); $reply = true; + // inReplyTo needs to be set in the activity for followup actiions (Like, Dislike, Attend, Announce, etc.), + // but *not* for comments, where it should only be present in the object + + if (! in_array($ret['type'],[ 'Create','Update' ])) { + $ret['inReplyTo'] = ((strpos($i['thr_parent'],'http') === 0) ? $i['thr_parent'] : z_root() . '/item/' . urlencode($i['thr_parent'])); + } + if($i['item_private']) { $d = q("select xchan_url, xchan_addr, xchan_name from item left join xchan on xchan_hash = author_xchan where id = %d limit 1", intval($i['parent']) -- cgit v1.2.3 From fd7d497cd1ba8846770425fc4dcb07c7cf5bbb85 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Fri, 15 Nov 2019 09:55:44 +0000 Subject: make inline pdf a security option, move thumbnail security to security options from admin/site (cherry picked from commit de9a7f0fa909792656d26d369f2ff21c57fc1e4d) --- Zotlabs/Module/Admin/Security.php | 14 +++++++++++--- Zotlabs/Module/Admin/Site.php | 3 --- include/oembed.php | 2 +- view/tpl/admin_security.tpl | 3 +++ view/tpl/admin_site.tpl | 1 - 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Zotlabs/Module/Admin/Security.php b/Zotlabs/Module/Admin/Security.php index 80c1d85b7..16045f9ed 100644 --- a/Zotlabs/Module/Admin/Security.php +++ b/Zotlabs/Module/Admin/Security.php @@ -43,6 +43,12 @@ class Security { $be = $this->trim_array_elems(explode("\n",$_POST['embed_deny'])); set_config('system','embed_deny',$be); + + $thumbnail_security = ((x($_POST,'thumbnail_security')) ? intval($_POST['thumbnail_security']) : 0); + set_config('system', 'thumbnail_security' , $thumbnail_security); + + $inline_pdf = ((x($_POST,'inline_pdf')) ? intval($_POST['inline_pdf']) : 0); + set_config('system', 'inline_pdf' , $inline_pdf); $ts = ((x($_POST,'transport_security')) ? True : False); set_config('system','transport_security_header',$ts); @@ -86,7 +92,7 @@ class Security { $embedhelp2 = t("The recommended setting is to only allow unfiltered HTML from the following sites:"); $embedhelp3 = t("https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"); $embedhelp4 = t("All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."); - + $t = get_markup_template('admin_security.tpl'); return replace_macros($t, array( '$title' => t('Administration'), @@ -106,7 +112,9 @@ class Security { '$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(get_config('system','embed_sslonly')),''), '$embed_allow' => array('embed_allow', t('Allow unfiltered embedded HTML content only from these domains'), $whiteembeds_str, t('One site per line. By default embedded content is filtered.')), '$embed_deny' => array('embed_deny', t('Block embedded HTML from these domains'), $blackembeds_str, ''), - + '$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ], + '$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), get_config('system','inline_pdf',0), '' ], + // '$embed_coop' => array('embed_coop', t('Cooperative embed security'), $embed_coop, t('Enable to share embed security with other compatible sites/hubs')), '$submit' => t('Submit') @@ -128,4 +136,4 @@ class Security { } -} \ No newline at end of file +} diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php index 55c8ca928..4bb34b7b7 100644 --- a/Zotlabs/Module/Admin/Site.php +++ b/Zotlabs/Module/Admin/Site.php @@ -73,7 +73,6 @@ class Site { $feed_contacts = ((x($_POST,'feed_contacts')) ? intval($_POST['feed_contacts']) : 0); $verify_email = ((x($_POST,'verify_email')) ? 1 : 0); $imagick_path = ((x($_POST,'imagick_path')) ? trim($_POST['imagick_path']) : ''); - $thumbnail_security = ((x($_POST,'thumbnail_security')) ? intval($_POST['thumbnail_security']) : 0); $force_queue = ((intval($_POST['force_queue']) > 0) ? intval($_POST['force_queue']) : 3000); $pub_incl = escape_tags(trim($_POST['pub_incl'])); $pub_excl = escape_tags(trim($_POST['pub_excl'])); @@ -100,7 +99,6 @@ class Site { set_config('system', 'from_email', $from_email); set_config('system', 'from_email_name' , $from_email_name); set_config('system', 'imagick_convert_path' , $imagick_path); - set_config('system', 'thumbnail_security' , $thumbnail_security); set_config('system', 'default_permissions_role', $permissions_role); set_config('system', 'pubstream_incl',$pub_incl); set_config('system', 'pubstream_excl',$pub_excl); @@ -341,7 +339,6 @@ class Site { '$force_queue' => array('force_queue', t("Queue Threshold"), get_config('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")), '$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")), '$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), get_config('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")), - '$thumbnail_security' => array('thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.")), '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")), '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(get_config('system','default_expire_days')), t('0 for no expiration of imported content')), '$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(get_config('system','active_expire_days',7)), ''), diff --git a/include/oembed.php b/include/oembed.php index ee9e57c3f..eeae7a174 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -146,7 +146,7 @@ function oembed_fetch_url($embedurl){ $txt = Cache::get('[' . App::$videowidth . '] ' . $furl); } - if(strpos(strtolower($embedurl),'.pdf') !== false) { + if(strpos(strtolower($embedurl),'.pdf') !== false && get_config('system','inline_pdf')) { $action = 'allow'; $j = [ 'html' => '<object data="' . $embedurl . '" type="application/pdf" style="width: 100%; height: 300px;"></object>', diff --git a/view/tpl/admin_security.tpl b/view/tpl/admin_security.tpl index 9a99c7456..3cc23f5b2 100755 --- a/view/tpl/admin_security.tpl +++ b/view/tpl/admin_security.tpl @@ -13,6 +13,9 @@ {{include file="field_checkbox.tpl" field=$content_security}} {{include file="field_checkbox.tpl" field=$embed_sslonly}} + {{include file="field_checkbox.tpl" field=$thumbnail_security}} + {{include file="field_checkbox.tpl" field=$inline_pdf}} + {{include file="field_textarea.tpl" field=$allowed_email}} {{include file="field_textarea.tpl" field=$not_allowed_email}} diff --git a/view/tpl/admin_site.tpl b/view/tpl/admin_site.tpl index c644bc973..5e10e6eea 100755 --- a/view/tpl/admin_site.tpl +++ b/view/tpl/admin_site.tpl @@ -96,7 +96,6 @@ <h3>{{$advanced}}</h3> {{include file="field_input.tpl" field=$imagick_path}} - {{include file="field_checkbox.tpl" field=$thumbnail_security}} {{include file="field_input.tpl" field=$proxy}} {{include file="field_input.tpl" field=$proxyuser}} {{include file="field_input.tpl" field=$timeout}} -- cgit v1.2.3 From 05604e4bd2f6491ebd567e8583acf820e5459514 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Fri, 15 Nov 2019 10:01:21 +0000 Subject: onepoll: do not update dead feeds (cherry picked from commit 5a6b14f8787927ee6ea99c622d02875811d3a74a) --- Zotlabs/Daemon/Onepoll.php | 12 +++++++----- include/feedutils.php | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php index 1d9fd5f72..2f06ec125 100644 --- a/Zotlabs/Daemon/Onepoll.php +++ b/Zotlabs/Daemon/Onepoll.php @@ -61,11 +61,13 @@ class Onepoll { if($contact['xchan_network'] === 'rss') { logger('onepoll: processing feed ' . $contact['xchan_name'], LOGGER_DEBUG); - handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']); - q("update abook set abook_connected = '%s' where abook_id = %d", - dbesc(datetime_convert()), - intval($contact['abook_id']) - ); + $alive = handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']); + if ($alive) { + q("update abook set abook_connected = '%s' where abook_id = %d", + dbesc(datetime_convert()), + intval($contact['abook_id']) + ); + } return; } diff --git a/include/feedutils.php b/include/feedutils.php index 9f4d732bb..6d14eb5c4 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -1760,7 +1760,11 @@ function handle_feed($uid, $abook_id, $url) { if($z['success']) { consume_feed($z['body'], $channel, $x[0], 1); consume_feed($z['body'], $channel, $x[0], 2); + return true; } + + return false; + } -- cgit v1.2.3 From 8727f12b18788a7a1dc450130ceb0ea7524b649a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Jim=C3=A9nez=20Friaza?= <mjfriaza@disroot.org> Date: Thu, 21 Nov 2019 13:47:20 +0000 Subject: no mention notifications from mastodon (and pleroma) (cherry picked from commit ea235c0c6751b682332b968b4c18f905e8ece451) (cherry picked from commit 0159b631fcc2041009cc273b3f5308f06cee0429) --- view/es-es/hmessages.po | 24112 +++++++++++++++++++++++----------------------- view/es-es/hstrings.php | 6710 ++++++------- 2 files changed, 15436 insertions(+), 15386 deletions(-) diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po index 10701710d..754f20e50 100644 --- a/view/es-es/hmessages.po +++ b/view/es-es/hmessages.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: hubzilla\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-01 21:45+0200\n" -"PO-Revision-Date: 2019-08-11 08:49+0000\n" +"POT-Creation-Date: 2019-11-11 08:09+0000\n" +"PO-Revision-Date: 2019-11-16 14:43+0000\n" "Last-Translator: Manuel Jiménez Friaza <mjfriaza@disroot.org>\n" "Language-Team: Spanish (Spain) (http://www.transifex.com/Friendica/hubzilla/language/es_ES/)\n" "MIME-Version: 1.0\n" @@ -23,15477 +23,15515 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: es_ES\n" "Plural-Forms: nplurals=2; plural=(n != 1 ? 1 : 0);\n" +#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3231 +#: ../../Zotlabs/Module/Admin/Site.php:187 +msgid "Default" +msgstr "Predeterminado" -#: ../../Zotlabs/Access/Permissions.php:56 -msgid "Can view my channel stream and posts" -msgstr "Pueden verse la actividad y publicaciones de mi canal" - -#: ../../Zotlabs/Access/Permissions.php:57 -msgid "Can send me their channel stream and posts" -msgstr "Se me pueden enviar entradas y contenido de un canal" - -#: ../../Zotlabs/Access/Permissions.php:58 -msgid "Can view my default channel profile" -msgstr "Puede verse mi perfil de canal predeterminado." - -#: ../../Zotlabs/Access/Permissions.php:59 -msgid "Can view my connections" -msgstr "Pueden verse mis conexiones" - -#: ../../Zotlabs/Access/Permissions.php:60 -msgid "Can view my file storage and photos" -msgstr "Pueden verse mi repositorio de ficheros y mis fotos" - -#: ../../Zotlabs/Access/Permissions.php:61 -msgid "Can upload/modify my file storage and photos" -msgstr "Se pueden subir / modificar elementos en mi repositorio de ficheros y fotos" - -#: ../../Zotlabs/Access/Permissions.php:62 -msgid "Can view my channel webpages" -msgstr "Pueden verse las páginas personales de mi canal" - -#: ../../Zotlabs/Access/Permissions.php:63 -msgid "Can view my wiki pages" -msgstr "Pueden verse mis páginas wiki" - -#: ../../Zotlabs/Access/Permissions.php:64 -msgid "Can create/edit my channel webpages" -msgstr "Pueden crearse / modificarse páginas personales en mi canal" - -#: ../../Zotlabs/Access/Permissions.php:65 -msgid "Can write to my wiki pages" -msgstr "Se pueden modificar las páginas de mi wiki" - -#: ../../Zotlabs/Access/Permissions.php:66 -msgid "Can post on my channel (wall) page" -msgstr "Pueden crearse entradas en mi página de inicio del canal (“muro”)" - -#: ../../Zotlabs/Access/Permissions.php:67 -msgid "Can comment on or like my posts" -msgstr "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'." - -#: ../../Zotlabs/Access/Permissions.php:68 -msgid "Can send me private mail messages" -msgstr "Se me pueden enviar mensajes privados" - -#: ../../Zotlabs/Access/Permissions.php:69 -msgid "Can like/dislike profiles and profile things" -msgstr "Se puede mostrar agrado o desagrado (Me gusta / No me gusta) en mis perfiles y sus distintos apartados" - -#: ../../Zotlabs/Access/Permissions.php:70 -msgid "Can forward to all my channel connections via ! mentions in posts" -msgstr "Pueden reenviarse publicaciones a todas las conexiones de mi canal a través de ! menciones en las entradas" - -#: ../../Zotlabs/Access/Permissions.php:71 -msgid "Can chat with me" -msgstr "Se puede chatear conmigo" - -#: ../../Zotlabs/Access/Permissions.php:72 -msgid "Can source my public posts in derived channels" -msgstr "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados" - -#: ../../Zotlabs/Access/Permissions.php:73 -msgid "Can administer my channel" -msgstr "Se puede administrar mi canal" - -#: ../../Zotlabs/Access/PermissionRoles.php:283 -msgid "Social Networking" -msgstr "Redes sociales" - -#: ../../Zotlabs/Access/PermissionRoles.php:284 -msgid "Social - Federation" -msgstr "Social - Federación" - -#: ../../Zotlabs/Access/PermissionRoles.php:285 -msgid "Social - Mostly Public" -msgstr "Social - Público en su mayor parte" - -#: ../../Zotlabs/Access/PermissionRoles.php:286 -msgid "Social - Restricted" -msgstr "Social - Restringido" - -#: ../../Zotlabs/Access/PermissionRoles.php:287 -msgid "Social - Private" -msgstr "Social - Privado" - -#: ../../Zotlabs/Access/PermissionRoles.php:290 -msgid "Community Forum" -msgstr "Foro de discusión" - -#: ../../Zotlabs/Access/PermissionRoles.php:291 -msgid "Forum - Mostly Public" -msgstr "Foro - Público en su mayor parte" - -#: ../../Zotlabs/Access/PermissionRoles.php:292 -msgid "Forum - Restricted" -msgstr "Foro - Restringido" - -#: ../../Zotlabs/Access/PermissionRoles.php:293 -msgid "Forum - Private" -msgstr "Foro - Privado" - -#: ../../Zotlabs/Access/PermissionRoles.php:296 -msgid "Feed Republish" -msgstr "Republicar un \"feed\"" - -#: ../../Zotlabs/Access/PermissionRoles.php:297 -msgid "Feed - Mostly Public" -msgstr "Feed - Público en su mayor parte" - -#: ../../Zotlabs/Access/PermissionRoles.php:298 -msgid "Feed - Restricted" -msgstr "Feed - Restringido" - -#: ../../Zotlabs/Access/PermissionRoles.php:301 -msgid "Special Purpose" -msgstr "Propósito especial" - -#: ../../Zotlabs/Access/PermissionRoles.php:302 -msgid "Special - Celebrity/Soapbox" -msgstr "Especial - Celebridad / Tribuna improvisada" - -#: ../../Zotlabs/Access/PermissionRoles.php:303 -msgid "Special - Group Repository" -msgstr "Especial - Repositorio de grupo" - -#: ../../Zotlabs/Access/PermissionRoles.php:306 -#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Connedit.php:935 -#: ../../Zotlabs/Module/Profiles.php:795 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/selectors.php:115 -#: ../../include/selectors.php:151 ../../include/event.php:1376 -#: ../../include/event.php:1383 ../../include/connections.php:730 -#: ../../include/connections.php:737 -msgid "Other" -msgstr "Otro" +#: ../../view/theme/redbasic/php/config.php:16 +#: ../../view/theme/redbasic/php/config.php:19 +msgid "Focus (Hubzilla default)" +msgstr "Focus (predefinido)" -#: ../../Zotlabs/Access/PermissionRoles.php:307 -msgid "Custom/Expert Mode" -msgstr "Modo personalizado/experto" +#: ../../view/theme/redbasic/php/config.php:94 +#: ../../addon/channelreputation/channelreputation.php:142 +#: ../../addon/openclipatar/openclipatar.php:53 +#: ../../addon/photocache/Mod_Photocache.php:67 +#: ../../addon/redred/Mod_Redred.php:90 +#: ../../addon/redphotos/redphotos.php:136 +#: ../../addon/statusnet/Mod_Statusnet.php:193 +#: ../../addon/statusnet/Mod_Statusnet.php:251 +#: ../../addon/statusnet/Mod_Statusnet.php:306 +#: ../../addon/statusnet/statusnet.php:602 +#: ../../addon/frphotos/frphotos.php:97 ../../addon/rtof/Mod_Rtof.php:72 +#: ../../addon/wppost/Mod_Wppost.php:97 +#: ../../addon/content_import/Mod_content_import.php:142 +#: ../../addon/openstreetmap/openstreetmap.php:153 +#: ../../addon/ijpost/Mod_Ijpost.php:72 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:65 +#: ../../addon/dwpost/Mod_Dwpost.php:71 +#: ../../addon/startpage/Mod_Startpage.php:73 +#: ../../addon/twitter/Mod_Twitter.php:184 +#: ../../addon/pumpio/Mod_Pumpio.php:115 +#: ../../addon/cart/submodules/subscriptions.php:410 +#: ../../addon/cart/submodules/hzservices.php:642 +#: ../../addon/cart/submodules/manualcat.php:250 +#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1258 +#: ../../addon/nofed/Mod_Nofed.php:53 +#: ../../addon/smileybutton/Mod_Smileybutton.php:55 +#: ../../addon/redfiles/redfiles.php:124 +#: ../../addon/diaspora/Mod_Diaspora.php:102 ../../addon/piwik/piwik.php:95 +#: ../../addon/workflow/workflow.php:1256 +#: ../../addon/workflow/workflow.php:1302 +#: ../../addon/workflow/workflow.php:1399 +#: ../../addon/workflow/workflow.php:2398 +#: ../../addon/workflow/Settings/Mod_WorkflowSettings.php:94 +#: ../../addon/likebanner/likebanner.php:57 +#: ../../addon/chords/Mod_Chords.php:60 ../../addon/fuzzloc/Mod_Fuzzloc.php:56 +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92 +#: ../../addon/hubwall/hubwall.php:95 +#: ../../addon/flashcards/Mod_Flashcards.php:213 +#: ../../addon/libertree/Mod_Libertree.php:70 ../../addon/logrot/logrot.php:35 +#: ../../addon/skeleton/Mod_Skeleton.php:51 ../../addon/nsfw/Mod_Nsfw.php:61 +#: ../../addon/mailtest/mailtest.php:100 ../../addon/ljpost/Mod_Ljpost.php:78 +#: ../../addon/hzfiles/hzfiles.php:86 +#: ../../addon/jappixmini/Mod_Jappixmini.php:261 +#: ../../addon/pageheader/Mod_Pageheader.php:54 ../../addon/irc/irc.php:45 +#: ../../addon/xmpp/Mod_Xmpp.php:70 ../../include/js_strings.php:22 +#: ../../Zotlabs/Widget/Wiki_pages.php:42 +#: ../../Zotlabs/Widget/Wiki_pages.php:99 +#: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Module/Tokens.php:188 +#: ../../Zotlabs/Module/Import_items.php:129 +#: ../../Zotlabs/Module/Import.php:646 ../../Zotlabs/Module/Setup.php:304 +#: ../../Zotlabs/Module/Setup.php:344 ../../Zotlabs/Module/Group.php:150 +#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Oauth.php:111 +#: ../../Zotlabs/Module/Chat.php:211 ../../Zotlabs/Module/Chat.php:250 +#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Mitem.php:259 +#: ../../Zotlabs/Module/Filestorage.php:203 +#: ../../Zotlabs/Module/Connect.php:124 ../../Zotlabs/Module/Editpost.php:86 +#: ../../Zotlabs/Module/Admin/Themes.php:158 +#: ../../Zotlabs/Module/Admin/Features.php:66 +#: ../../Zotlabs/Module/Admin/Security.php:112 +#: ../../Zotlabs/Module/Admin/Accounts.php:168 +#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Logs.php:84 +#: ../../Zotlabs/Module/Admin/Channels.php:147 +#: ../../Zotlabs/Module/Admin/Account_edit.php:73 +#: ../../Zotlabs/Module/Admin/Profs.php:178 +#: ../../Zotlabs/Module/Admin/Addons.php:442 +#: ../../Zotlabs/Module/Events.php:501 ../../Zotlabs/Module/Permcats.php:128 +#: ../../Zotlabs/Module/Mood.php:158 ../../Zotlabs/Module/Appman.php:155 +#: ../../Zotlabs/Module/Email_validation.php:40 +#: ../../Zotlabs/Module/Photos.php:1055 ../../Zotlabs/Module/Photos.php:1096 +#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Module/Profiles.php:723 +#: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Xchan.php:15 +#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Module/Affinity.php:87 +#: ../../Zotlabs/Module/Rate.php:166 +#: ../../Zotlabs/Module/Settings/Network.php:61 +#: ../../Zotlabs/Module/Settings/Features.php:46 +#: ../../Zotlabs/Module/Settings/Channel.php:493 +#: ../../Zotlabs/Module/Settings/Account.php:103 +#: ../../Zotlabs/Module/Settings/Events.php:41 +#: ../../Zotlabs/Module/Settings/Manage.php:41 +#: ../../Zotlabs/Module/Settings/Channel_home.php:89 +#: ../../Zotlabs/Module/Settings/Calendar.php:41 +#: ../../Zotlabs/Module/Settings/Display.php:189 +#: ../../Zotlabs/Module/Settings/Directory.php:41 +#: ../../Zotlabs/Module/Settings/Editor.php:41 +#: ../../Zotlabs/Module/Settings/Connections.php:41 +#: ../../Zotlabs/Module/Settings/Photos.php:41 +#: ../../Zotlabs/Module/Settings/Profiles.php:50 +#: ../../Zotlabs/Module/Settings/Conversation.php:48 +#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Pconfig.php:116 +#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Thing.php:326 +#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Pdledit.php:107 +#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Connedit.php:904 +#: ../../Zotlabs/Module/Locs.php:121 ../../Zotlabs/Module/Sources.php:125 +#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Lib/ThreadItem.php:796 +msgid "Submit" +msgstr "Enviar" -#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:42 -#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17 -#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12 -#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20 -#: ../../Zotlabs/Module/Menu.php:91 ../../Zotlabs/Module/Layouts.php:31 -#: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Cards.php:42 -#: ../../Zotlabs/Module/Webpages.php:39 -#: ../../Zotlabs/Module/Filestorage.php:53 -#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1319 -msgid "Requested profile is not available." -msgstr "El perfil solicitado no está disponible." +#: ../../view/theme/redbasic/php/config.php:98 +msgid "Theme settings" +msgstr "Ajustes del tema" -#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 -#: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102 -#: ../../Zotlabs/Module/Articles.php:88 ../../Zotlabs/Module/Editlayout.php:67 -#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:179 -#: ../../Zotlabs/Module/Channel.php:342 ../../Zotlabs/Module/Channel.php:381 -#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87 -#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Events.php:277 -#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Regmod.php:20 -#: ../../Zotlabs/Module/Article_edit.php:51 -#: ../../Zotlabs/Module/New_channel.php:105 -#: ../../Zotlabs/Module/New_channel.php:130 -#: ../../Zotlabs/Module/Sharedwithme.php:16 ../../Zotlabs/Module/Setup.php:206 -#: ../../Zotlabs/Module/Moderate.php:13 -#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:280 -#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341 -#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67 -#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101 -#: ../../Zotlabs/Module/Mood.php:126 ../../Zotlabs/Module/Connections.php:32 -#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:70 -#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:59 -#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428 -#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Poke.php:157 -#: ../../Zotlabs/Module/Profile_photo.php:336 -#: ../../Zotlabs/Module/Profile_photo.php:349 -#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:417 -#: ../../Zotlabs/Module/Item.php:436 ../../Zotlabs/Module/Item.php:446 -#: ../../Zotlabs/Module/Item.php:1326 ../../Zotlabs/Module/Page.php:34 -#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:399 -#: ../../Zotlabs/Module/Chat.php:115 ../../Zotlabs/Module/Chat.php:120 -#: ../../Zotlabs/Module/Menu.php:129 ../../Zotlabs/Module/Menu.php:140 -#: ../../Zotlabs/Module/Channel_calendar.php:224 -#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 -#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Cloud.php:40 -#: ../../Zotlabs/Module/Defperms.php:181 ../../Zotlabs/Module/Group.php:14 -#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Profiles.php:198 -#: ../../Zotlabs/Module/Profiles.php:635 -#: ../../Zotlabs/Module/Editwebpage.php:68 -#: ../../Zotlabs/Module/Editwebpage.php:89 -#: ../../Zotlabs/Module/Editwebpage.php:107 -#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10 -#: ../../Zotlabs/Module/Cards.php:86 ../../Zotlabs/Module/Webpages.php:133 -#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74 -#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:80 -#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Suggest.php:32 -#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:150 -#: ../../Zotlabs/Module/Register.php:80 -#: ../../Zotlabs/Module/Cover_photo.php:347 -#: ../../Zotlabs/Module/Cover_photo.php:360 -#: ../../Zotlabs/Module/Display.php:451 ../../Zotlabs/Module/Network.php:19 -#: ../../Zotlabs/Module/Filestorage.php:17 -#: ../../Zotlabs/Module/Filestorage.php:72 -#: ../../Zotlabs/Module/Filestorage.php:90 -#: ../../Zotlabs/Module/Filestorage.php:113 -#: ../../Zotlabs/Module/Filestorage.php:160 ../../Zotlabs/Module/Common.php:38 -#: ../../Zotlabs/Module/Viewconnections.php:28 -#: ../../Zotlabs/Module/Viewconnections.php:33 -#: ../../Zotlabs/Module/Service_limits.php:11 -#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Card_edit.php:51 -#: ../../Zotlabs/Module/Notifications.php:11 -#: ../../Zotlabs/Lib/Chatroom.php:133 ../../Zotlabs/Web/WebServer.php:123 -#: ../../addon/keepout/keepout.php:36 -#: ../../addon/flashcards/Mod_Flashcards.php:281 -#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44 -#: ../../include/attach.php:150 ../../include/attach.php:199 -#: ../../include/attach.php:272 ../../include/attach.php:380 -#: ../../include/attach.php:394 ../../include/attach.php:401 -#: ../../include/attach.php:483 ../../include/attach.php:1043 -#: ../../include/attach.php:1117 ../../include/attach.php:1280 -#: ../../include/items.php:3790 ../../include/photos.php:27 -msgid "Permission denied." -msgstr "Acceso denegado." +#: ../../view/theme/redbasic/php/config.php:99 +msgid "Narrow navbar" +msgstr "Estrechar la barra de navegación" -#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 -#: ../../Zotlabs/Module/Editblock.php:113 -msgid "Block Name" -msgstr "Nombre del bloque" +#: ../../view/theme/redbasic/php/config.php:99 +#: ../../view/theme/redbasic/php/config.php:116 +#: ../../addon/channelreputation/channelreputation.php:110 +#: ../../addon/redred/Mod_Redred.php:63 +#: ../../addon/statusnet/Mod_Statusnet.php:260 +#: ../../addon/statusnet/Mod_Statusnet.php:282 +#: ../../addon/statusnet/Mod_Statusnet.php:291 +#: ../../addon/rtof/Mod_Rtof.php:49 ../../addon/wppost/Mod_Wppost.php:82 +#: ../../addon/wppost/Mod_Wppost.php:86 +#: ../../addon/content_import/Mod_content_import.php:137 +#: ../../addon/content_import/Mod_content_import.php:138 +#: ../../addon/ijpost/Mod_Ijpost.php:61 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 +#: ../../addon/dwpost/Mod_Dwpost.php:60 +#: ../../addon/twitter/Mod_Twitter.php:162 +#: ../../addon/twitter/Mod_Twitter.php:171 +#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 +#: ../../addon/pumpio/Mod_Pumpio.php:102 +#: ../../addon/cart/submodules/subscriptions.php:153 +#: ../../addon/cart/submodules/subscriptions.php:425 +#: ../../addon/cart/submodules/hzservices.php:64 +#: ../../addon/cart/submodules/hzservices.php:648 +#: ../../addon/cart/submodules/hzservices.php:652 +#: ../../addon/cart/submodules/paypalbutton.php:87 +#: ../../addon/cart/submodules/paypalbutton.php:95 +#: ../../addon/cart/submodules/manualcat.php:63 +#: ../../addon/cart/submodules/manualcat.php:256 +#: ../../addon/cart/submodules/manualcat.php:260 +#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 +#: ../../addon/cart/cart.php:1252 ../../addon/nofed/Mod_Nofed.php:42 +#: ../../addon/smileybutton/Mod_Smileybutton.php:44 +#: ../../addon/libertree/Mod_Libertree.php:59 +#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/ljpost/Mod_Ljpost.php:66 +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 +#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Filestorage.php:198 +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Module/Admin/Site.php:255 +#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Events.php:478 +#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Api.php:99 +#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Settings/Channel.php:309 +#: ../../Zotlabs/Module/Settings/Display.php:89 +#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 +#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Wiki.php:227 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 +#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Sources.php:124 +#: ../../Zotlabs/Module/Sources.php:159 ../../Zotlabs/Lib/Libzotdir.php:162 +#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165 +#: ../../Zotlabs/Storage/Browser.php:411 ../../boot.php:1679 +msgid "No" +msgstr "No" -#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2560 -msgid "Blocks" -msgstr "Bloques" +#: ../../view/theme/redbasic/php/config.php:99 +#: ../../view/theme/redbasic/php/config.php:116 +#: ../../addon/channelreputation/channelreputation.php:110 +#: ../../addon/redred/Mod_Redred.php:63 +#: ../../addon/statusnet/Mod_Statusnet.php:260 +#: ../../addon/statusnet/Mod_Statusnet.php:282 +#: ../../addon/statusnet/Mod_Statusnet.php:291 +#: ../../addon/rtof/Mod_Rtof.php:49 ../../addon/wppost/Mod_Wppost.php:82 +#: ../../addon/wppost/Mod_Wppost.php:86 +#: ../../addon/content_import/Mod_content_import.php:137 +#: ../../addon/content_import/Mod_content_import.php:138 +#: ../../addon/ijpost/Mod_Ijpost.php:61 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 +#: ../../addon/dwpost/Mod_Dwpost.php:60 +#: ../../addon/twitter/Mod_Twitter.php:162 +#: ../../addon/twitter/Mod_Twitter.php:171 +#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 +#: ../../addon/pumpio/Mod_Pumpio.php:102 +#: ../../addon/cart/submodules/subscriptions.php:153 +#: ../../addon/cart/submodules/subscriptions.php:425 +#: ../../addon/cart/submodules/hzservices.php:64 +#: ../../addon/cart/submodules/hzservices.php:648 +#: ../../addon/cart/submodules/hzservices.php:652 +#: ../../addon/cart/submodules/paypalbutton.php:87 +#: ../../addon/cart/submodules/paypalbutton.php:95 +#: ../../addon/cart/submodules/manualcat.php:63 +#: ../../addon/cart/submodules/manualcat.php:256 +#: ../../addon/cart/submodules/manualcat.php:260 +#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 +#: ../../addon/cart/cart.php:1252 ../../addon/nofed/Mod_Nofed.php:42 +#: ../../addon/smileybutton/Mod_Smileybutton.php:44 +#: ../../addon/libertree/Mod_Libertree.php:59 +#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/ljpost/Mod_Ljpost.php:66 +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 ../../include/dir_fns.php:143 +#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 +#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 +#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Mitem.php:176 +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Filestorage.php:198 +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Module/Admin/Site.php:257 +#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Events.php:478 +#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Api.php:98 +#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Settings/Channel.php:309 +#: ../../Zotlabs/Module/Settings/Display.php:89 +#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 +#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Wiki.php:227 +#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 +#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 +#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163 +#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../Zotlabs/Storage/Browser.php:411 +#: ../../boot.php:1679 +msgid "Yes" +msgstr "Sí" -#: ../../Zotlabs/Module/Blocks.php:156 -msgid "Block Title" -msgstr "Título del bloque" +#: ../../view/theme/redbasic/php/config.php:100 +msgid "Navigation bar background color" +msgstr "Color de fondo de la barra de navegación" -#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:177 -#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:266 -msgid "Created" -msgstr "Creado" +#: ../../view/theme/redbasic/php/config.php:101 +msgid "Navigation bar icon color " +msgstr "Color del icono de la barra de navegación" -#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:178 -#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:267 -msgid "Edited" -msgstr "Editado" +#: ../../view/theme/redbasic/php/config.php:102 +msgid "Navigation bar active icon color " +msgstr "Color del icono activo de la barra de navegación" -#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:116 -#: ../../Zotlabs/Module/Cdav.php:1084 ../../Zotlabs/Module/Cdav.php:1390 -#: ../../Zotlabs/Module/New_channel.php:189 -#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Menu.php:181 -#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:798 -#: ../../Zotlabs/Module/Cards.php:113 ../../Zotlabs/Module/Webpages.php:254 -#: ../../Zotlabs/Storage/Browser.php:282 ../../Zotlabs/Storage/Browser.php:396 -#: ../../Zotlabs/Widget/Cdav.php:140 ../../Zotlabs/Widget/Cdav.php:178 -msgid "Create" -msgstr "Crear" +#: ../../view/theme/redbasic/php/config.php:103 +msgid "Link color" +msgstr "Color del enlace" -#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114 -#: ../../Zotlabs/Module/Article_edit.php:99 -#: ../../Zotlabs/Module/Admin/Profs.php:175 ../../Zotlabs/Module/Thing.php:266 -#: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Editblock.php:114 -#: ../../Zotlabs/Module/Connections.php:298 -#: ../../Zotlabs/Module/Connections.php:336 -#: ../../Zotlabs/Module/Connections.php:356 ../../Zotlabs/Module/Wiki.php:211 -#: ../../Zotlabs/Module/Wiki.php:384 ../../Zotlabs/Module/Menu.php:175 -#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Group.php:252 -#: ../../Zotlabs/Module/Editwebpage.php:142 -#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Card_edit.php:99 -#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Lib/Apps.php:557 -#: ../../Zotlabs/Lib/ThreadItem.php:148 ../../Zotlabs/Storage/Browser.php:296 -#: ../../Zotlabs/Widget/Cdav.php:138 ../../Zotlabs/Widget/Cdav.php:175 -#: ../../include/channel.php:1418 ../../include/channel.php:1422 -#: ../../include/menu.php:118 -msgid "Edit" -msgstr "Editar" +#: ../../view/theme/redbasic/php/config.php:104 +msgid "Set font-color for banner" +msgstr "Ajustar el color del tipo de letra para el \"banner\"" -#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1075 -#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194 -#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Widget/Cdav.php:136 -#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392 -msgid "Share" -msgstr "Compartir" +#: ../../view/theme/redbasic/php/config.php:105 +msgid "Set the background color" +msgstr "Ajustar el color de fondo" -#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138 -#: ../../Zotlabs/Module/Cdav.php:1081 ../../Zotlabs/Module/Cdav.php:1392 -#: ../../Zotlabs/Module/Article_edit.php:129 -#: ../../Zotlabs/Module/Admin/Accounts.php:175 -#: ../../Zotlabs/Module/Admin/Channels.php:149 -#: ../../Zotlabs/Module/Admin/Profs.php:176 ../../Zotlabs/Module/Thing.php:267 -#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editblock.php:139 -#: ../../Zotlabs/Module/Connections.php:306 -#: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Connedit.php:668 -#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:800 -#: ../../Zotlabs/Module/Editwebpage.php:167 -#: ../../Zotlabs/Module/Webpages.php:257 -#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Module/Oauth.php:174 -#: ../../Zotlabs/Lib/Apps.php:558 ../../Zotlabs/Lib/ThreadItem.php:168 -#: ../../Zotlabs/Storage/Browser.php:297 ../../include/conversation.php:691 -#: ../../include/conversation.php:736 -msgid "Delete" -msgstr "Eliminar" +#: ../../view/theme/redbasic/php/config.php:106 +msgid "Set the background image" +msgstr "Ajustar la imagen de fondo" -#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Events.php:702 -#: ../../Zotlabs/Module/Wiki.php:213 ../../Zotlabs/Module/Wiki.php:409 -#: ../../Zotlabs/Module/Layouts.php:198 ../../Zotlabs/Module/Webpages.php:261 -#: ../../Zotlabs/Module/Pubsites.php:60 -msgid "View" -msgstr "Ver" +#: ../../view/theme/redbasic/php/config.php:107 +msgid "Set the background color of items" +msgstr "Ajustar el color de los elementos de fondo" -#: ../../Zotlabs/Module/Invite.php:37 -msgid "Total invitation limit exceeded." -msgstr "Se ha superado el límite máximo de invitaciones." +#: ../../view/theme/redbasic/php/config.php:108 +msgid "Set the background color of comments" +msgstr "Ajustar el color de fondo de los comentarios" -#: ../../Zotlabs/Module/Invite.php:61 -#, php-format -msgid "%s : Not a valid email address." -msgstr "%s : No es una dirección de correo electrónico válida. " +#: ../../view/theme/redbasic/php/config.php:109 +msgid "Set font-size for the entire application" +msgstr "Ajustar el tamaño de letra para toda la aplicación" -#: ../../Zotlabs/Module/Invite.php:75 -msgid "Please join us on $Projectname" -msgstr "Únase a nosotros en $Projectname" +#: ../../view/theme/redbasic/php/config.php:109 +msgid "Examples: 1rem, 100%, 16px" +msgstr "Ejemplos: 1rem, 100%, 16px" -#: ../../Zotlabs/Module/Invite.php:85 -msgid "Invitation limit exceeded. Please contact your site administrator." -msgstr "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio." +#: ../../view/theme/redbasic/php/config.php:110 +msgid "Set font-color for posts and comments" +msgstr "Establecer el color de la letra para publicaciones y comentarios" -#: ../../Zotlabs/Module/Invite.php:90 -#: ../../addon/notifyadmin/notifyadmin.php:40 -#, php-format -msgid "%s : Message delivery failed." -msgstr "%s : Falló el envío del mensaje." +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Set radius of corners" +msgstr "Establecer el radio de curvatura de las esquinas" -#: ../../Zotlabs/Module/Invite.php:94 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "%d mensajes enviados." -msgstr[1] "%d mensajes enviados." +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Example: 4px" +msgstr "Ejemplo: 4px" -#: ../../Zotlabs/Module/Invite.php:110 -msgid "Invite App" -msgstr "Solicitar una app" +#: ../../view/theme/redbasic/php/config.php:112 +msgid "Set shadow depth of photos" +msgstr "Ajustar la profundidad de sombras de las fotos" -#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:51 -#: ../../Zotlabs/Module/Cdav.php:899 ../../Zotlabs/Module/Permcats.php:62 -#: ../../Zotlabs/Module/Lang.php:17 ../../Zotlabs/Module/Uexport.php:61 -#: ../../Zotlabs/Module/Pubstream.php:20 ../../Zotlabs/Module/Connect.php:104 -#: ../../Zotlabs/Module/Tokens.php:99 ../../Zotlabs/Module/Oauth2.php:106 -#: ../../Zotlabs/Module/Randprof.php:29 ../../Zotlabs/Module/Mood.php:134 -#: ../../Zotlabs/Module/Bookmarks.php:78 ../../Zotlabs/Module/Wiki.php:52 -#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Poke.php:165 -#: ../../Zotlabs/Module/Chat.php:102 ../../Zotlabs/Module/Notes.php:56 -#: ../../Zotlabs/Module/Affinity.php:52 ../../Zotlabs/Module/Defperms.php:189 -#: ../../Zotlabs/Module/Group.php:106 ../../Zotlabs/Module/Cards.php:51 -#: ../../Zotlabs/Module/Webpages.php:48 ../../Zotlabs/Module/Sources.php:88 -#: ../../Zotlabs/Module/Suggest.php:40 ../../Zotlabs/Module/Probe.php:18 -#: ../../Zotlabs/Module/Oauth.php:100 ../../addon/skeleton/Mod_Skeleton.php:32 -#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/planets/Mod_Planets.php:20 -#: ../../addon/wppost/Mod_Wppost.php:41 ../../addon/nsfw/Mod_Nsfw.php:33 -#: ../../addon/ijpost/Mod_Ijpost.php:35 ../../addon/dwpost/Mod_Dwpost.php:36 -#: ../../addon/gallery/Mod_Gallery.php:58 ../../addon/ljpost/Mod_Ljpost.php:36 -#: ../../addon/startpage/Mod_Startpage.php:50 -#: ../../addon/diaspora/Mod_Diaspora.php:58 -#: ../../addon/photocache/Mod_Photocache.php:42 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 -#: ../../addon/nsabait/Mod_Nsabait.php:20 -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 ../../addon/rtof/Mod_Rtof.php:36 -#: ../../addon/jappixmini/Mod_Jappixmini.php:96 -#: ../../addon/superblock/Mod_Superblock.php:20 -#: ../../addon/nofed/Mod_Nofed.php:33 ../../addon/redred/Mod_Redred.php:50 -#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/pubcrawl/Mod_Pubcrawl.php:40 -#: ../../addon/libertree/Mod_Libertree.php:35 -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 -#: ../../addon/statusnet/Mod_Statusnet.php:146 -#: ../../addon/twitter/Mod_Twitter.php:78 -#: ../../addon/smileybutton/Mod_Smileybutton.php:35 -#: ../../addon/sendzid/Mod_Sendzid.php:20 -#: ../../addon/pageheader/Mod_Pageheader.php:34 -#: ../../addon/authchoose/Mod_Authchoose.php:28 -#: ../../addon/xmpp/Mod_Xmpp.php:35 ../../addon/pumpio/Mod_Pumpio.php:53 -msgid "Not Installed" -msgstr "No instalado/a" +#: ../../view/theme/redbasic/php/config.php:113 +msgid "Set maximum width of content region in pixel" +msgstr "Ajustar la anchura máxima de la región de contenido, en pixels" -#: ../../Zotlabs/Module/Invite.php:111 -msgid "Send email invitations to join this network" -msgstr "Enviar invitaciones por correo electrónico para unirse a esta red" +#: ../../view/theme/redbasic/php/config.php:113 +msgid "Leave empty for default width" +msgstr "Dejar en blanco para la anchura predeterminada" -#: ../../Zotlabs/Module/Invite.php:124 -msgid "You have no more invitations available" -msgstr "No tiene más invitaciones disponibles" +#: ../../view/theme/redbasic/php/config.php:114 +msgid "Set size of conversation author photo" +msgstr "Ajustar el tamaño de la foto del autor de la conversación" -#: ../../Zotlabs/Module/Invite.php:155 -msgid "Send invitations" -msgstr "Enviar invitaciones" +#: ../../view/theme/redbasic/php/config.php:115 +msgid "Set size of followup author photos" +msgstr "Ajustar el tamaño de foto de los seguidores del autor" -#: ../../Zotlabs/Module/Invite.php:156 -msgid "Enter email addresses, one per line:" -msgstr "Introduzca las direcciones de correo electrónico, una por línea:" +#: ../../view/theme/redbasic/php/config.php:116 +msgid "Show advanced settings" +msgstr "Mostrar ajustes avanzados" -#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:289 -msgid "Your message:" -msgstr "Su mensaje:" +#: ../../util/nconfig.php:34 +msgid "Source channel not found." +msgstr "No se ha encontrado el canal de origen." -#: ../../Zotlabs/Module/Invite.php:158 -msgid "Please join my community on $Projectname." -msgstr "Por favor, únase a mi comunidad en $Projectname." +#: ../../addon/channelreputation/channelreputation.php:100 +#: ../../addon/channelreputation/channelreputation.php:101 +#: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177 +#: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259 +#: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317 +msgid "Access Denied" +msgstr "Acceso denegado" -#: ../../Zotlabs/Module/Invite.php:160 -msgid "You will need to supply this invitation code:" -msgstr "Tendrá que suministrar este código de invitación:" +#: ../../addon/channelreputation/channelreputation.php:108 +msgid "Enable Community Moderation" +msgstr "Habilitar la moderación de la comunidad" -#: ../../Zotlabs/Module/Invite.php:161 -msgid "" -"1. Register at any $Projectname location (they are all inter-connected)" -msgstr "1. Regístrese en cualquier sitio de $Projectname (están todos interconectados)" +#: ../../addon/channelreputation/channelreputation.php:116 +msgid "Reputation automatically given to new members" +msgstr "La reputación se otorga automáticamente a los nuevos miembros" -#: ../../Zotlabs/Module/Invite.php:163 -msgid "2. Enter my $Projectname network address into the site searchbar." -msgstr "2. Introduzca mi dirección $Projectname en la caja de búsqueda del sitio." +#: ../../addon/channelreputation/channelreputation.php:117 +msgid "Reputation will never fall below this value" +msgstr "La reputación nunca caerá por debajo de este valor" -#: ../../Zotlabs/Module/Invite.php:164 -msgid "or visit" -msgstr "o visitar" +#: ../../addon/channelreputation/channelreputation.php:118 +msgid "Minimum reputation before posting is allowed" +msgstr "Reputación mínima antes de que se permita el envío de entradas" -#: ../../Zotlabs/Module/Invite.php:166 -msgid "3. Click [Connect]" -msgstr "3. Pulse [conectar]" +#: ../../addon/channelreputation/channelreputation.php:119 +msgid "Minimum reputation before commenting is allowed" +msgstr "Mínima reputación antes de que se permitan los comentarios" -#: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Permcats.php:128 -#: ../../Zotlabs/Module/Locs.php:121 ../../Zotlabs/Module/Mitem.php:259 -#: ../../Zotlabs/Module/Events.php:501 ../../Zotlabs/Module/Appman.php:155 -#: ../../Zotlabs/Module/Import_items.php:129 -#: ../../Zotlabs/Module/Setup.php:304 ../../Zotlabs/Module/Setup.php:344 -#: ../../Zotlabs/Module/Connect.php:124 -#: ../../Zotlabs/Module/Admin/Features.php:66 -#: ../../Zotlabs/Module/Admin/Accounts.php:168 -#: ../../Zotlabs/Module/Admin/Logs.php:84 -#: ../../Zotlabs/Module/Admin/Channels.php:147 -#: ../../Zotlabs/Module/Admin/Themes.php:158 -#: ../../Zotlabs/Module/Admin/Site.php:289 -#: ../../Zotlabs/Module/Admin/Addons.php:441 -#: ../../Zotlabs/Module/Admin/Profs.php:178 -#: ../../Zotlabs/Module/Admin/Account_edit.php:73 -#: ../../Zotlabs/Module/Admin/Security.php:112 -#: ../../Zotlabs/Module/Settings/Channel.php:493 -#: ../../Zotlabs/Module/Settings/Features.php:46 -#: ../../Zotlabs/Module/Settings/Events.php:41 -#: ../../Zotlabs/Module/Settings/Calendar.php:41 -#: ../../Zotlabs/Module/Settings/Conversation.php:48 -#: ../../Zotlabs/Module/Settings/Connections.php:41 -#: ../../Zotlabs/Module/Settings/Photos.php:41 -#: ../../Zotlabs/Module/Settings/Account.php:103 -#: ../../Zotlabs/Module/Settings/Profiles.php:50 -#: ../../Zotlabs/Module/Settings/Manage.php:41 -#: ../../Zotlabs/Module/Settings/Channel_home.php:89 -#: ../../Zotlabs/Module/Settings/Directory.php:41 -#: ../../Zotlabs/Module/Settings/Editor.php:41 -#: ../../Zotlabs/Module/Settings/Display.php:189 -#: ../../Zotlabs/Module/Settings/Network.php:61 -#: ../../Zotlabs/Module/Tokens.php:188 ../../Zotlabs/Module/Thing.php:326 -#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Import.php:646 -#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Mood.php:158 -#: ../../Zotlabs/Module/Photos.php:1055 ../../Zotlabs/Module/Photos.php:1096 -#: ../../Zotlabs/Module/Photos.php:1215 ../../Zotlabs/Module/Wiki.php:215 -#: ../../Zotlabs/Module/Pdledit.php:107 ../../Zotlabs/Module/Poke.php:217 -#: ../../Zotlabs/Module/Connedit.php:904 ../../Zotlabs/Module/Chat.php:211 -#: ../../Zotlabs/Module/Chat.php:250 -#: ../../Zotlabs/Module/Email_validation.php:40 -#: ../../Zotlabs/Module/Pconfig.php:116 ../../Zotlabs/Module/Affinity.php:87 -#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Group.php:150 -#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Profiles.php:723 -#: ../../Zotlabs/Module/Editpost.php:86 ../../Zotlabs/Module/Sources.php:125 -#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Module/Filestorage.php:203 -#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Oauth.php:111 -#: ../../Zotlabs/Lib/ThreadItem.php:796 -#: ../../Zotlabs/Widget/Eventstools.php:16 -#: ../../Zotlabs/Widget/Wiki_pages.php:42 -#: ../../Zotlabs/Widget/Wiki_pages.php:99 -#: ../../view/theme/redbasic_c/php/config.php:95 -#: ../../view/theme/redbasic/php/config.php:94 -#: ../../addon/skeleton/Mod_Skeleton.php:51 -#: ../../addon/openclipatar/openclipatar.php:53 -#: ../../addon/wppost/Mod_Wppost.php:97 ../../addon/nsfw/Mod_Nsfw.php:61 -#: ../../addon/flashcards/Mod_Flashcards.php:218 -#: ../../addon/ijpost/Mod_Ijpost.php:72 ../../addon/dwpost/Mod_Dwpost.php:71 -#: ../../addon/likebanner/likebanner.php:57 -#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:45 -#: ../../addon/ljpost/Mod_Ljpost.php:73 -#: ../../addon/startpage/Mod_Startpage.php:73 -#: ../../addon/diaspora/Mod_Diaspora.php:102 -#: ../../addon/photocache/Mod_Photocache.php:67 -#: ../../addon/hzfiles/hzfiles.php:86 ../../addon/mailtest/mailtest.php:100 -#: ../../addon/openstreetmap/openstreetmap.php:134 -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:56 ../../addon/rtof/Mod_Rtof.php:72 -#: ../../addon/jappixmini/Mod_Jappixmini.php:261 -#: ../../addon/channelreputation/channelreputation.php:142 -#: ../../addon/nofed/Mod_Nofed.php:53 ../../addon/redred/Mod_Redred.php:90 -#: ../../addon/logrot/logrot.php:35 -#: ../../addon/content_import/Mod_content_import.php:142 -#: ../../addon/frphotos/frphotos.php:97 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:65 -#: ../../addon/chords/Mod_Chords.php:60 -#: ../../addon/libertree/Mod_Libertree.php:70 -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92 -#: ../../addon/statusnet/Mod_Statusnet.php:193 -#: ../../addon/statusnet/Mod_Statusnet.php:251 -#: ../../addon/statusnet/Mod_Statusnet.php:306 -#: ../../addon/statusnet/statusnet.php:602 -#: ../../addon/twitter/Mod_Twitter.php:184 -#: ../../addon/smileybutton/Mod_Smileybutton.php:55 -#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1264 -#: ../../addon/cart/submodules/manualcat.php:248 -#: ../../addon/cart/submodules/hzservices.php:640 -#: ../../addon/cart/submodules/subscriptions.php:410 -#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/Mod_Pageheader.php:54 -#: ../../addon/xmpp/Mod_Xmpp.php:70 ../../addon/pumpio/Mod_Pumpio.php:115 -#: ../../addon/redfiles/redfiles.php:124 ../../addon/hubwall/hubwall.php:95 -#: ../../include/js_strings.php:22 -msgid "Submit" -msgstr "Enviar" +#: ../../addon/channelreputation/channelreputation.php:120 +msgid "Minimum reputation before a member is able to moderate other posts" +msgstr "Reputación mínima antes de que un miembro sea capaz de moderar otros mensajes" -#: ../../Zotlabs/Module/Articles.php:51 -msgid "Articles App" -msgstr "App Artículos" +#: ../../addon/channelreputation/channelreputation.php:121 +msgid "" +"Max ratio of moderator's reputation that can be added to/deducted from " +"reputation of person being moderated" +msgstr "Proporción máxima de la reputación del moderador que puede ser añadida/descontada de la reputación de la persona que está siendo moderada." -#: ../../Zotlabs/Module/Articles.php:52 -msgid "Create interactive articles" -msgstr "Crear artículos interactivos" +#: ../../addon/channelreputation/channelreputation.php:122 +msgid "Reputation \"cost\" to post" +msgstr "\"Coste\" de la reputación a contabilizar" -#: ../../Zotlabs/Module/Articles.php:115 -msgid "Add Article" -msgstr "Añadir un artículo" +#: ../../addon/channelreputation/channelreputation.php:123 +msgid "Reputation \"cost\" to comment" +msgstr "\"Coste\" de la reputación para comentar" -#: ../../Zotlabs/Module/Articles.php:222 ../../Zotlabs/Lib/Apps.php:324 -#: ../../include/nav.php:514 -msgid "Articles" -msgstr "Artículos" +#: ../../addon/channelreputation/channelreputation.php:124 +msgid "" +"Reputation automatically recovers at this rate per hour until it reaches " +"minimum_to_post" +msgstr "La reputación se recupera automáticamente a esta tasa por hora hasta que alcanza el mínimo_a_post" -#: ../../Zotlabs/Module/Editlayout.php:79 -#: ../../Zotlabs/Module/Article_edit.php:17 -#: ../../Zotlabs/Module/Article_edit.php:33 -#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 -#: ../../Zotlabs/Module/Editwebpage.php:80 -#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Card_edit.php:17 -#: ../../Zotlabs/Module/Card_edit.php:33 -msgid "Item not found" -msgstr "Elemento no encontrado" +#: ../../addon/channelreputation/channelreputation.php:125 +msgid "" +"When minimum_to_moderate > reputation > minimum_to_post reputation recovers " +"at this rate per hour" +msgstr "Cuando el mínimo_a_moderar > reputación > mínimo_a_publicar la reputación se recupera a esta tasa por hora " -#: ../../Zotlabs/Module/Editlayout.php:128 -#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189 -msgid "Layout Name" -msgstr "Nombre de la plantilla" +#: ../../addon/channelreputation/channelreputation.php:139 +msgid "Community Moderation Settings" +msgstr "Configuración de la moderación de la comunidad" -#: ../../Zotlabs/Module/Editlayout.php:129 -#: ../../Zotlabs/Module/Layouts.php:132 -msgid "Layout Description (Optional)" -msgstr "Descripción de la plantilla (opcional)" +#: ../../addon/channelreputation/channelreputation.php:229 +msgid "Channel Reputation" +msgstr "Reputación del canal" -#: ../../Zotlabs/Module/Editlayout.php:137 -msgid "Edit Layout" -msgstr "Modificar la plantilla" +#: ../../addon/channelreputation/channelreputation.php:230 +#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1274 +#: ../../Zotlabs/Lib/ThreadItem.php:463 +msgid "Close" +msgstr "Cerrar" -#: ../../Zotlabs/Module/Editlayout.php:140 ../../Zotlabs/Module/Cdav.php:1083 -#: ../../Zotlabs/Module/Cdav.php:1393 -#: ../../Zotlabs/Module/Article_edit.php:131 -#: ../../Zotlabs/Module/Admin/Addons.php:426 -#: ../../Zotlabs/Module/Oauth2.php:117 ../../Zotlabs/Module/Oauth2.php:145 -#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Wiki.php:368 -#: ../../Zotlabs/Module/Wiki.php:401 -#: ../../Zotlabs/Module/Profile_photo.php:505 -#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Fbrowser.php:66 -#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:801 -#: ../../Zotlabs/Module/Editwebpage.php:169 -#: ../../Zotlabs/Module/Editpost.php:110 ../../Zotlabs/Module/Filer.php:55 -#: ../../Zotlabs/Module/Cover_photo.php:434 ../../Zotlabs/Module/Tagrm.php:15 -#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Card_edit.php:131 -#: ../../Zotlabs/Module/Oauth.php:112 ../../Zotlabs/Module/Oauth.php:138 -#: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 -#: ../../include/conversation.php:1415 ../../include/conversation.php:1464 -msgid "Cancel" -msgstr "Cancelar" +#: ../../addon/channelreputation/channelreputation.php:233 +msgid "An Error has occurred." +msgstr "Se ha producido un error." -#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86 -#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Share.php:71 -#: ../../Zotlabs/Module/Cloud.php:126 ../../Zotlabs/Module/Group.php:98 -#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:82 -#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Web/WebServer.php:122 -#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:75 -#: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109 -#: ../../include/items.php:416 -msgid "Permission denied" -msgstr "Permiso denegado" +#: ../../addon/channelreputation/channelreputation.php:251 +msgid "Upvote" +msgstr "Votar a favor" -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." -msgstr "Identificador del perfil no válido" +#: ../../addon/channelreputation/channelreputation.php:252 +msgid "Downvote" +msgstr "Votar en contra" -#: ../../Zotlabs/Module/Profperm.php:111 -msgid "Profile Visibility Editor" -msgstr "Editor de visibilidad del perfil" +#: ../../addon/channelreputation/channelreputation.php:374 +msgid "Can moderate reputation on my channel." +msgstr "Se puede moderar la reputación en mi canal." -#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:361 -#: ../../include/channel.php:1766 -msgid "Profile" -msgstr "Perfil" +#: ../../addon/superblock/superblock.php:337 +msgid "Block Completely" +msgstr "Bloquear completamente" + +#: ../../addon/superblock/Mod_Superblock.php:20 +msgid "Superblock App" +msgstr "App Superblock" + +#: ../../addon/superblock/Mod_Superblock.php:20 +#: ../../addon/nsabait/Mod_Nsabait.php:20 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 +#: ../../addon/photocache/Mod_Photocache.php:42 +#: ../../addon/gallery/Mod_Gallery.php:58 +#: ../../addon/planets/Mod_Planets.php:20 ../../addon/redred/Mod_Redred.php:50 +#: ../../addon/statusnet/Mod_Statusnet.php:146 +#: ../../addon/rtof/Mod_Rtof.php:36 ../../addon/wppost/Mod_Wppost.php:41 +#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/ijpost/Mod_Ijpost.php:35 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 +#: ../../addon/dwpost/Mod_Dwpost.php:36 +#: ../../addon/startpage/Mod_Startpage.php:50 +#: ../../addon/twitter/Mod_Twitter.php:78 ../../addon/pumpio/Mod_Pumpio.php:53 +#: ../../addon/sendzid/Mod_Sendzid.php:20 ../../addon/nofed/Mod_Nofed.php:33 +#: ../../addon/smileybutton/Mod_Smileybutton.php:35 +#: ../../addon/diaspora/Mod_Diaspora.php:58 +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 +#: ../../addon/libertree/Mod_Libertree.php:35 +#: ../../addon/skeleton/Mod_Skeleton.php:32 ../../addon/nsfw/Mod_Nsfw.php:33 +#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/ljpost/Mod_Ljpost.php:37 +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 +#: ../../addon/authchoose/Mod_Authchoose.php:28 +#: ../../addon/pageheader/Mod_Pageheader.php:34 +#: ../../addon/xmpp/Mod_Xmpp.php:35 ../../Zotlabs/Module/Tokens.php:99 +#: ../../Zotlabs/Module/Group.php:106 ../../Zotlabs/Module/Oauth.php:100 +#: ../../Zotlabs/Module/Chat.php:102 ../../Zotlabs/Module/Poke.php:165 +#: ../../Zotlabs/Module/Cdav.php:899 ../../Zotlabs/Module/Webpages.php:48 +#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Pubstream.php:20 +#: ../../Zotlabs/Module/Permcats.php:62 ../../Zotlabs/Module/Lang.php:17 +#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Mood.php:134 +#: ../../Zotlabs/Module/Cards.php:51 ../../Zotlabs/Module/Articles.php:52 +#: ../../Zotlabs/Module/Bookmarks.php:78 ../../Zotlabs/Module/Probe.php:18 +#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Notes.php:56 +#: ../../Zotlabs/Module/Affinity.php:52 ../../Zotlabs/Module/Defperms.php:189 +#: ../../Zotlabs/Module/Oauth2.php:106 ../../Zotlabs/Module/Randprof.php:29 +#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Wiki.php:52 +#: ../../Zotlabs/Module/Suggest.php:40 ../../Zotlabs/Module/Sources.php:88 +msgid "Not Installed" +msgstr "No instalado/a" -#: ../../Zotlabs/Module/Profperm.php:115 -msgid "Click on a contact to add or remove." -msgstr "Pulsar en un contacto para añadirlo o eliminarlo." +#: ../../addon/superblock/Mod_Superblock.php:21 +msgid "Block channels" +msgstr "Bloquear canales" -#: ../../Zotlabs/Module/Profperm.php:124 -msgid "Visible To" -msgstr "Visible para" +#: ../../addon/superblock/Mod_Superblock.php:63 +msgid "superblock settings updated" +msgstr "se han actualizado los ajustes de superblock" -#: ../../Zotlabs/Module/Profperm.php:140 -#: ../../Zotlabs/Module/Connections.php:217 -msgid "All Connections" -msgstr "Todas las conexiones" +#: ../../addon/superblock/Mod_Superblock.php:87 +msgid "Currently blocked" +msgstr "Actualmente bloqueado" -#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 -msgid "Calendar entries imported." -msgstr "Entradas de calendario importadas." +#: ../../addon/superblock/Mod_Superblock.php:89 +msgid "No channels currently blocked" +msgstr "No hay canales bloqueados actualmente" -#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 -msgid "No calendar entries found." -msgstr "No se han encontrado entradas de calendario." +#: ../../addon/superblock/Mod_Superblock.php:91 +#: ../../Zotlabs/Module/Tagrm.php:137 +#: ../../Zotlabs/Module/Admin/Addons.php:459 +#: ../../Zotlabs/Module/Profile_photo.php:499 +#: ../../Zotlabs/Module/Cover_photo.php:430 +#: ../../Zotlabs/Module/Photos.php:993 +msgid "Remove" +msgstr "Eliminar" -#: ../../Zotlabs/Module/Cdav.php:870 -msgid "INVALID EVENT DISMISSED!" -msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" +#: ../../addon/nsabait/Mod_Nsabait.php:20 +#: ../../addon/nsabait/Mod_Nsabait.php:24 +msgid "NSA Bait App" +msgstr "App NSA Bait " -#: ../../Zotlabs/Module/Cdav.php:871 -msgid "Summary: " -msgstr "Resumen: " +#: ../../addon/nsabait/Mod_Nsabait.php:24 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 +#: ../../addon/planets/Mod_Planets.php:23 ../../addon/hsse/Mod_Hsse.php:26 +#: ../../addon/authchoose/Mod_Authchoose.php:33 +msgid "Installed" +msgstr "Instalado" -#: ../../Zotlabs/Module/Cdav.php:871 ../../Zotlabs/Module/Cdav.php:872 -#: ../../Zotlabs/Module/Cdav.php:879 ../../Zotlabs/Module/Embedphotos.php:174 -#: ../../Zotlabs/Module/Photos.php:790 ../../Zotlabs/Module/Photos.php:1254 -#: ../../Zotlabs/Lib/Activity.php:1095 ../../Zotlabs/Lib/Apps.php:1114 -#: ../../Zotlabs/Lib/Apps.php:1198 ../../Zotlabs/Storage/Browser.php:164 -#: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84 -#: ../../addon/pubcrawl/as.php:1071 ../../include/conversation.php:1166 -msgid "Unknown" -msgstr "Desconocido" +#: ../../addon/nsabait/Mod_Nsabait.php:26 +msgid "Make yourself a political target" +msgstr "Conviértase en un objetivo político" -#: ../../Zotlabs/Module/Cdav.php:872 -msgid "Date: " -msgstr "Fecha: " +#: ../../addon/visage/Mod_Visage.php:21 +msgid "Who viewed my channel/profile" +msgstr "Quién ha visto mi canal/perfi" -#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 -msgid "Reason: " -msgstr "Razón: " +#: ../../addon/visage/Mod_Visage.php:25 +msgid "Recent Channel/Profile Viewers" +msgstr "Visitantes recientes del canal o perfil" -#: ../../Zotlabs/Module/Cdav.php:878 -msgid "INVALID CARD DISMISSED!" -msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" +#: ../../addon/visage/Mod_Visage.php:36 +msgid "No entries." +msgstr "No hay entradas." -#: ../../Zotlabs/Module/Cdav.php:879 -msgid "Name: " -msgstr "Nombre: " +#: ../../addon/openclipatar/openclipatar.php:50 +#: ../../addon/openclipatar/openclipatar.php:128 +msgid "System defaults:" +msgstr "Valores predeterminados del sistema: " -#: ../../Zotlabs/Module/Cdav.php:899 -msgid "CardDAV App" -msgstr "App CarDav" +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "Preferred Clipart IDs" +msgstr "IDs de las imágenes clipart preferidas" -#: ../../Zotlabs/Module/Cdav.php:900 -msgid "CalDAV capable addressbook" -msgstr "Libreta de direcciones compatible con CalDav" +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "List of preferred clipart ids. These will be shown first." +msgstr "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar." -#: ../../Zotlabs/Module/Cdav.php:968 ../../Zotlabs/Module/Cal.php:167 -#: ../../Zotlabs/Module/Channel_calendar.php:387 -msgid "Link to source" -msgstr "Enlace a la fuente" +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "Default Search Term" +msgstr "Términos de búsqueda predeterminados" -#: ../../Zotlabs/Module/Cdav.php:1034 ../../Zotlabs/Module/Events.php:468 -msgid "Event title" -msgstr "Título del evento" +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "The default search term. These will be shown second." +msgstr "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar." -#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:474 -msgid "Start date and time" -msgstr "Fecha y hora de comienzo" +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Return After" +msgstr "Regresar después" -#: ../../Zotlabs/Module/Cdav.php:1036 -msgid "End date and time" -msgstr "Fecha y hora de finalización" +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Page to load after image selection." +msgstr "Página para cargar después de la selección de imágenes." -#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:497 -msgid "Timezone:" -msgstr "Zona horaria: " +#: ../../addon/openclipatar/openclipatar.php:57 ../../include/nav.php:110 +#: ../../include/conversation.php:1038 ../../Zotlabs/Module/Connedit.php:608 +#: ../../Zotlabs/Lib/Apps.php:343 +msgid "View Profile" +msgstr "Ver el perfil" -#: ../../Zotlabs/Module/Cdav.php:1039 ../../Zotlabs/Module/Events.php:481 -#: ../../Zotlabs/Module/Appman.php:145 ../../Zotlabs/Module/Rbmark.php:101 -#: ../../addon/rendezvous/rendezvous.php:173 -#: ../../addon/cart/submodules/manualcat.php:260 -#: ../../addon/cart/submodules/hzservices.php:652 -msgid "Description" -msgstr "Descripción" +#: ../../addon/openclipatar/openclipatar.php:58 ../../include/nav.php:115 +#: ../../include/channel.php:1430 +msgid "Edit Profile" +msgstr "Editar el perfil" -#: ../../Zotlabs/Module/Cdav.php:1040 ../../Zotlabs/Module/Locs.php:117 -#: ../../Zotlabs/Module/Events.php:483 ../../Zotlabs/Module/Profiles.php:509 -#: ../../Zotlabs/Module/Profiles.php:734 ../../Zotlabs/Module/Pubsites.php:52 -#: ../../include/js_strings.php:25 -msgid "Location" -msgstr "Ubicación" +#: ../../addon/openclipatar/openclipatar.php:59 +msgid "Profile List" +msgstr "Lista de perfiles" -#: ../../Zotlabs/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:697 -#: ../../Zotlabs/Module/Events.php:706 ../../Zotlabs/Module/Cal.php:205 -#: ../../Zotlabs/Module/Photos.php:944 -msgid "Previous" -msgstr "Anterior" +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Order of Preferred" +msgstr "Orden de preferencia" -#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:698 -#: ../../Zotlabs/Module/Events.php:707 ../../Zotlabs/Module/Setup.php:260 -#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:953 -msgid "Next" -msgstr "Siguiente" +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Sort order of preferred clipart ids." +msgstr "Orden de clasificación de los identificadores de imágenes clipart preferidas." -#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:708 -#: ../../Zotlabs/Module/Cal.php:207 -msgid "Today" -msgstr "Hoy" +#: ../../addon/openclipatar/openclipatar.php:62 +#: ../../addon/openclipatar/openclipatar.php:68 +msgid "Newest first" +msgstr "Las más nuevas en primer lugar" -#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:703 -msgid "Month" -msgstr "Mes" +#: ../../addon/openclipatar/openclipatar.php:65 +msgid "As entered" +msgstr "Tal como se ingresaron" -#: ../../Zotlabs/Module/Cdav.php:1064 ../../Zotlabs/Module/Events.php:704 -msgid "Week" -msgstr "Semana" +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Order of other" +msgstr "Orden de los demás" -#: ../../Zotlabs/Module/Cdav.php:1065 ../../Zotlabs/Module/Events.php:705 -msgid "Day" -msgstr "Día" +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Sort order of other clipart ids." +msgstr "Orden de clasificación de otros ids de imágenes clipart." -#: ../../Zotlabs/Module/Cdav.php:1066 -msgid "List month" -msgstr "Lista mensual" +#: ../../addon/openclipatar/openclipatar.php:69 +msgid "Most downloaded first" +msgstr "Las más descargadas en primer lugar" -#: ../../Zotlabs/Module/Cdav.php:1067 -msgid "List week" -msgstr "Lista semanal" +#: ../../addon/openclipatar/openclipatar.php:70 +msgid "Most liked first" +msgstr "Las más apreciadas en primer lugar" -#: ../../Zotlabs/Module/Cdav.php:1068 -msgid "List day" -msgstr "Lista diaria" +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Preferred IDs Message" +msgstr "Mensaje de IDs preferido" -#: ../../Zotlabs/Module/Cdav.php:1076 -msgid "More" -msgstr "Más" +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Message to display above preferred results." +msgstr "Mensaje para mostrar sobre los resultados preferidos." -#: ../../Zotlabs/Module/Cdav.php:1077 -msgid "Less" -msgstr "Menos" +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Uploaded by: " +msgstr "Subida por: " -#: ../../Zotlabs/Module/Cdav.php:1078 ../../Zotlabs/Module/Cdav.php:1391 -#: ../../Zotlabs/Module/Admin/Addons.php:456 -#: ../../Zotlabs/Module/Oauth2.php:58 ../../Zotlabs/Module/Oauth2.php:144 -#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Profiles.php:799 -#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137 -#: ../../Zotlabs/Lib/Apps.php:536 -msgid "Update" -msgstr "Actualizar" +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Drawn by: " +msgstr "Creada por: " -#: ../../Zotlabs/Module/Cdav.php:1079 -msgid "Select calendar" -msgstr "Seleccionar un calendario" +#: ../../addon/openclipatar/openclipatar.php:182 +#: ../../addon/openclipatar/openclipatar.php:194 +msgid "Use this image" +msgstr "Usar esta imagen" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:143 -msgid "Channel Calendars" -msgstr "Calendarios del canal" +#: ../../addon/openclipatar/openclipatar.php:192 +msgid "Or select from a free OpenClipart.org image:" +msgstr "O seleccionar una imagen gratuita de OpenClipart.org: " -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:129 -#: ../../Zotlabs/Widget/Cdav.php:143 -msgid "CalDAV Calendars" -msgstr "Calendarios CalDAV" +#: ../../addon/openclipatar/openclipatar.php:195 +msgid "Search Term" +msgstr "Término de búsqueda" -#: ../../Zotlabs/Module/Cdav.php:1082 -msgid "Delete all" -msgstr "Eliminar todos" +#: ../../addon/openclipatar/openclipatar.php:232 +msgid "Unknown error. Please try again later." +msgstr "Error desconocido. Por favor, inténtelo otra vez." -#: ../../Zotlabs/Module/Cdav.php:1085 -msgid "Sorry! Editing of recurrent events is not yet implemented." -msgstr "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado." +#: ../../addon/openclipatar/openclipatar.php:298 +#: ../../Zotlabs/Module/Profile_photo.php:252 +msgid "" +"Shift-reload the page or clear browser cache if the new photo does not " +"display immediately." +msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente." -#: ../../Zotlabs/Module/Cdav.php:1095 -#: ../../Zotlabs/Widget/Appcategories.php:43 -#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139 -#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409 -#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511 -#: ../../include/taxonomy.php:532 -msgid "Categories" -msgstr "Temas" +#: ../../addon/openclipatar/openclipatar.php:308 +msgid "Profile photo updated successfully." +msgstr "Se ha actualizado con éxito la foto de perfil." -#: ../../Zotlabs/Module/Cdav.php:1375 -#: ../../Zotlabs/Module/Sharedwithme.php:104 -#: ../../Zotlabs/Module/Admin/Channels.php:159 -#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 -#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923 -#: ../../Zotlabs/Module/Chat.php:259 ../../Zotlabs/Module/Group.php:154 -#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth.php:139 -#: ../../Zotlabs/Lib/NativeWikiPage.php:561 -#: ../../Zotlabs/Storage/Browser.php:291 -#: ../../Zotlabs/Widget/Wiki_page_history.php:22 -#: ../../addon/rendezvous/rendezvous.php:172 -msgid "Name" -msgstr "Nombre" +#: ../../addon/bookmarker/bookmarker.php:38 +#: ../../Zotlabs/Lib/ThreadItem.php:440 +msgid "Save Bookmarks" +msgstr "Guardar en Marcadores" -#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Connedit.php:924 -msgid "Organisation" -msgstr "Organización" +#: ../../addon/queueworker/Mod_Queueworker.php:77 +msgid "Max queueworker threads" +msgstr "Máximo de hilos en la cola" -#: ../../Zotlabs/Module/Cdav.php:1377 ../../Zotlabs/Module/Connedit.php:925 -msgid "Title" -msgstr "Título" +#: ../../addon/queueworker/Mod_Queueworker.php:91 +msgid "Assume workers dead after ___ seconds" +msgstr "Asumir que el proceso de trabajo está muerto después de ___ segundos" -#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Connedit.php:926 -#: ../../Zotlabs/Module/Profiles.php:786 -msgid "Phone" -msgstr "Teléfono" +#: ../../addon/queueworker/Mod_Queueworker.php:105 +msgid "" +"Pause before starting next task: (microseconds. Minimum 100 = .0001 " +"seconds)" +msgstr "Haga una pausa antes de comenzar la siguiente tarea: (microsegundos. Mínimo 100 =.0001 segundos)" -#: ../../Zotlabs/Module/Cdav.php:1379 -#: ../../Zotlabs/Module/Admin/Accounts.php:171 -#: ../../Zotlabs/Module/Admin/Accounts.php:183 -#: ../../Zotlabs/Module/Connedit.php:927 ../../Zotlabs/Module/Profiles.php:787 -#: ../../addon/openid/MysqlProvider.php:56 -#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/Mod_Rtof.php:57 -#: ../../addon/redred/Mod_Redred.php:71 ../../include/network.php:1732 -msgid "Email" -msgstr "Correo electrónico" +#: ../../addon/queueworker/Mod_Queueworker.php:116 +msgid "Queueworker Settings" +msgstr "Configuración del gestor de procesos de trabajo en cola" -#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Connedit.php:928 -#: ../../Zotlabs/Module/Profiles.php:788 -msgid "Instant messenger" -msgstr "Mensajería instantánea" +#: ../../addon/queueworker/Mod_Queueworker.php:119 ../../include/text.php:1106 +#: ../../include/text.php:1118 ../../Zotlabs/Widget/Notes.php:23 +#: ../../Zotlabs/Module/Admin/Profs.php:94 +#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Filer.php:53 +#: ../../Zotlabs/Module/Rbmark.php:32 ../../Zotlabs/Module/Rbmark.php:104 +msgid "Save" +msgstr "Guardar" -#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Connedit.php:929 -#: ../../Zotlabs/Module/Profiles.php:789 -msgid "Website" -msgstr "Sitio web" +#: ../../addon/tour/tour.php:76 +msgid "Edit your profile and change settings." +msgstr "Editar su perfil y cambiar los ajustes." -#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Locs.php:118 -#: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Profiles.php:502 -#: ../../Zotlabs/Module/Profiles.php:790 -msgid "Address" -msgstr "Dirección" +#: ../../addon/tour/tour.php:77 +msgid "Click here to see activity from your connections." +msgstr "Pulsar aquí para ver la actividad de sus conexiones." -#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Connedit.php:931 -#: ../../Zotlabs/Module/Profiles.php:791 -msgid "Note" -msgstr "Nota" +#: ../../addon/tour/tour.php:78 +msgid "Click here to see your channel home." +msgstr "Pulsar aquí para ver la página de inicio de su canal." -#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Connedit.php:932 -#: ../../Zotlabs/Module/Profiles.php:792 ../../include/event.php:1369 -#: ../../include/connections.php:723 -msgid "Mobile" -msgstr "Móvil" +#: ../../addon/tour/tour.php:79 +msgid "You can access your private messages from here." +msgstr "Puede acceder a sus mensajes privados desde aquí." -#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Connedit.php:933 -#: ../../Zotlabs/Module/Profiles.php:793 ../../include/event.php:1370 -#: ../../include/connections.php:724 -msgid "Home" -msgstr "Inicio" +#: ../../addon/tour/tour.php:80 +msgid "Create new events here." +msgstr "Crear nuevos eventos aquí." -#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Connedit.php:934 -#: ../../Zotlabs/Module/Profiles.php:794 ../../include/event.php:1373 -#: ../../include/connections.php:727 -msgid "Work" -msgstr "Trabajo" +#: ../../addon/tour/tour.php:81 +msgid "" +"You can accept new connections and change permissions for existing ones " +"here. You can also e.g. create groups of contacts." +msgstr "Puede aceptar nuevas conexiones y cambiar permisos para las que ya existen aquí. También puede, por ejemplo, crear grupos de contactos." -#: ../../Zotlabs/Module/Cdav.php:1388 ../../Zotlabs/Module/Connedit.php:936 -#: ../../Zotlabs/Module/Profiles.php:796 -#: ../../addon/jappixmini/Mod_Jappixmini.php:216 -msgid "Add Contact" -msgstr "Añadir un contacto" +#: ../../addon/tour/tour.php:82 +msgid "System notifications will arrive here" +msgstr "Las notificaciones del sistema llegarán aquí" -#: ../../Zotlabs/Module/Cdav.php:1389 ../../Zotlabs/Module/Connedit.php:937 -#: ../../Zotlabs/Module/Profiles.php:797 -msgid "Add Field" -msgstr "Añadir un campo" +#: ../../addon/tour/tour.php:83 +msgid "Search for content and users" +msgstr "Buscar contenido y usuarios" -#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:942 -msgid "P.O. Box" -msgstr "Buzón de correos" +#: ../../addon/tour/tour.php:84 +msgid "Browse for new contacts" +msgstr "Buscar nuevos contactos" -#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:943 -msgid "Additional" -msgstr "Adicional" +#: ../../addon/tour/tour.php:85 +msgid "Launch installed apps" +msgstr "Iniciar aplicaciones instaladas" -#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:944 -msgid "Street" -msgstr "Calle" +#: ../../addon/tour/tour.php:86 +msgid "Looking for help? Click here." +msgstr "¿Busca ayuda? Pulse aquí." -#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:945 -msgid "Locality" -msgstr "Localidad" +#: ../../addon/tour/tour.php:87 +msgid "" +"New events have occurred in your network. Click here to see what has " +"happened!" +msgstr "Se han producido nuevos eventos en su red. ¡Haga clic aquí para ver lo que ha sucedido!" -#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Connedit.php:946 -msgid "Region" -msgstr "Provincia, región o estado" +#: ../../addon/tour/tour.php:88 +msgid "You have received a new private message. Click here to see from who!" +msgstr "Ha recibido un nuevo mensaje privado. Haga clic aquí para ver de quién!" -#: ../../Zotlabs/Module/Cdav.php:1399 ../../Zotlabs/Module/Connedit.php:947 -msgid "ZIP Code" -msgstr "Código postal" +#: ../../addon/tour/tour.php:89 +msgid "There are events this week. Click here too see which!" +msgstr "Hay eventos esta semana. Haga clic aquí para ver cuáles!" -#: ../../Zotlabs/Module/Cdav.php:1400 ../../Zotlabs/Module/Connedit.php:948 -#: ../../Zotlabs/Module/Profiles.php:757 -msgid "Country" -msgstr "País" +#: ../../addon/tour/tour.php:90 +msgid "You have received a new introduction. Click here to see who!" +msgstr "Ha recibido una nueva solicitud de conexión. ¡Pulse aquí para ver de quién!" -#: ../../Zotlabs/Module/Cdav.php:1447 -msgid "Default Calendar" -msgstr "Calendario por defecto" +#: ../../addon/tour/tour.php:91 +msgid "" +"There is a new system notification. Click here to see what has happened!" +msgstr "Hay una nueva notificación del sistema. ¡Haga clic aquí para ver lo que ha sucedido!" -#: ../../Zotlabs/Module/Cdav.php:1458 -msgid "Default Addressbook" -msgstr "Agenda de direcciones por defecto" +#: ../../addon/tour/tour.php:94 +msgid "Click here to share text, images, videos and sound." +msgstr "Haga clic aquí para compartir texto, imágenes, vídeos y sonido." -#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25 -msgid "This site is not a directory server" -msgstr "Este sitio no es un servidor de directorio" +#: ../../addon/tour/tour.php:95 +msgid "You can write an optional title for your update (good for long posts)." +msgstr "Puede escribir un título opcional para su actualización (bueno para los mensajes largos)." -#: ../../Zotlabs/Module/Permcats.php:28 -msgid "Permission category name is required." -msgstr "El nombre de la categoría de permiso es obligatorio." +#: ../../addon/tour/tour.php:96 +msgid "Entering some categories here makes it easier to find your post later." +msgstr "Al ingresar algunos temas aquí, es más fácil encontrar su publicación más tarde." -#: ../../Zotlabs/Module/Permcats.php:47 -msgid "Permission category saved." -msgstr "Se ha guardado la categoría del permiso." +#: ../../addon/tour/tour.php:97 +msgid "Share photos, links, location, etc." +msgstr "Compartir fotos, enlaces, ubicación, etc." -#: ../../Zotlabs/Module/Permcats.php:62 -msgid "Permission Categories App" -msgstr "App Categorías de permisos" +#: ../../addon/tour/tour.php:98 +msgid "" +"Only want to share content for a while? Make it expire at a certain date." +msgstr "¿Solo quieres compartir contenido durante un tiempo? Haga que expire en una fecha determinada." -#: ../../Zotlabs/Module/Permcats.php:63 -msgid "Create custom connection permission limits" -msgstr "Crear límites de permisos de conexión personalizados" +#: ../../addon/tour/tour.php:99 +msgid "You can password protect content." +msgstr "Puede proteger contenido con una contraseña." -#: ../../Zotlabs/Module/Permcats.php:79 -msgid "" -"Use this form to create permission rules for various classes of people or " -"connections." -msgstr "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones." +#: ../../addon/tour/tour.php:100 +msgid "Choose who you share with." +msgstr "Elegir con quién compartir." -#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 -msgid "Permission Categories" -msgstr "Tipos de permisos" +#: ../../addon/tour/tour.php:102 +msgid "Click here when you are done." +msgstr "Haga clic aquí cuando haya terminado." -#: ../../Zotlabs/Module/Permcats.php:120 -msgid "Permission category name" -msgstr "Nombre de categoría de permiso" +#: ../../addon/tour/tour.php:105 +msgid "Adjust from which channels posts should be displayed." +msgstr "Ajustar de qué canales se deben mostrar las publicaciones." -#: ../../Zotlabs/Module/Permcats.php:121 ../../Zotlabs/Module/Tokens.php:181 -#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:266 -msgid "My Settings" -msgstr "Mis ajustes" +#: ../../addon/tour/tour.php:106 +msgid "Only show posts from channels in the specified privacy group." +msgstr "Mostrar solo las entradas de los canales de un grupo específico de canales." -#: ../../Zotlabs/Module/Permcats.php:123 ../../Zotlabs/Module/Tokens.php:183 -#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:264 -msgid "inherited" -msgstr "heredado" +#: ../../addon/tour/tour.php:110 +msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)." +msgstr "Encuentre fácilmente entradas que contengan etiquetas (palabras clave precedidas del símbolo \"#\")." -#: ../../Zotlabs/Module/Permcats.php:126 ../../Zotlabs/Module/Tokens.php:186 -#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:269 -msgid "Individual Permissions" -msgstr "Permisos individuales" +#: ../../addon/tour/tour.php:111 +msgid "Easily find posts in given category." +msgstr "Encuentre fácilmente las publicaciones en una categoría dada." -#: ../../Zotlabs/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187 -#: ../../Zotlabs/Module/Connedit.php:911 +#: ../../addon/tour/tour.php:112 +msgid "Easily find posts by date." +msgstr "Encuentre fácilmente entradas por fechas." + +#: ../../addon/tour/tour.php:113 msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can <strong>not</strong> change those" -" settings here." -msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí." +"Suggested users who have volounteered to be shown as suggestions, and who we" +" think you might find interesting." +msgstr "Se sugiere a los usuarios que se han ofrecido voluntariamente que se muestren como sugerencias, y que creemos que podrían resultar interesantes." -#: ../../Zotlabs/Module/Channel.php:41 ../../Zotlabs/Module/Ochannel.php:32 -#: ../../Zotlabs/Module/Chat.php:31 ../../addon/chess/Mod_Chess.php:343 -msgid "You must be logged in to see this page." -msgstr "Debe haber iniciado sesión para poder ver esta página." +#: ../../addon/tour/tour.php:114 +msgid "Here you see channels you have connected to." +msgstr "Aquí puede ver los canales a los que está conectado." -#: ../../Zotlabs/Module/Channel.php:98 ../../Zotlabs/Module/Hcard.php:37 -#: ../../Zotlabs/Module/Profile.php:45 -msgid "Posts and comments" -msgstr "Publicaciones y comentarios" +#: ../../addon/tour/tour.php:115 +msgid "Save your search so you can repeat it at a later date." +msgstr "Guarde su búsqueda para poder repetirla en una fecha posterior." -#: ../../Zotlabs/Module/Channel.php:105 ../../Zotlabs/Module/Hcard.php:44 -#: ../../Zotlabs/Module/Profile.php:52 -msgid "Only posts" -msgstr "Solo publicaciones" +#: ../../addon/tour/tour.php:118 +msgid "" +"If you see this icon you can be sure that the sender is who it say it is. It" +" is normal that it is not always possible to verify the sender, so the icon " +"will be missing sometimes. There is usually no need to worry about that." +msgstr "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso." -#: ../../Zotlabs/Module/Channel.php:122 -#, php-format -msgid "This is the home page of %s." -msgstr "Esta es la página personal de %s." +#: ../../addon/tour/tour.php:119 +msgid "" +"Danger! It seems someone tried to forge a message! This message is not " +"necessarily from who it says it is from!" +msgstr "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!" -#: ../../Zotlabs/Module/Channel.php:176 -msgid "Insufficient permissions. Request redirected to profile page." -msgstr "Permisos insuficientes. Petición redirigida a la página del perfil." +#: ../../addon/tour/tour.php:126 +msgid "" +"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can " +"pause it at any time and continue where you left off by reloading the page, " +"or navigting to another page.</p><p>You can also advance by pressing the " +"return key" +msgstr "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno" -#: ../../Zotlabs/Module/Channel.php:193 ../../Zotlabs/Module/Network.php:173 -msgid "Search Results For:" -msgstr "Buscar resultados para:" +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 +msgid "Add some colour to tag clouds" +msgstr "Añadir color a las nubes de etiquetas" -#: ../../Zotlabs/Module/Channel.php:228 ../../Zotlabs/Module/Hq.php:134 -#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Display.php:80 -#: ../../Zotlabs/Module/Network.php:203 -msgid "Reset form" -msgstr "Reiniciar el formulario" +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 +msgid "Rainbow Tag App" +msgstr "App Etiqueta Arcoiris" -#: ../../Zotlabs/Module/Channel.php:483 ../../Zotlabs/Module/Display.php:378 -msgid "" -"You must enable javascript for your browser to be able to view this content." -msgstr "Debe habilitar javascript para poder ver este contenido en su navegador." +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 +msgid "Rainbow Tag" +msgstr "Etiqueta Arcoiris" -#: ../../Zotlabs/Module/Lang.php:17 -msgid "Language App" -msgstr "App idioma" +#: ../../addon/photocache/Mod_Photocache.php:27 +msgid "Photo Cache settings saved." +msgstr "Se ha guardado la configuración de la caché de fotos." -#: ../../Zotlabs/Module/Lang.php:18 -msgid "Change UI language" -msgstr "Cambiar el idioma de la interfaz de usuario" +#: ../../addon/photocache/Mod_Photocache.php:36 +msgid "" +"Photo Cache addon saves a copy of images from external sites locally to " +"increase your anonymity in the web." +msgstr "El complemento Photo Cache guarda localmente una copia de las imágenes de sitios externos para aumentar su anonimato en la Web." -#: ../../Zotlabs/Module/Uexport.php:61 -msgid "Channel Export App" -msgstr "App Exportación de canales" +#: ../../addon/photocache/Mod_Photocache.php:42 +msgid "Photo Cache App" +msgstr "App Photo Cache" -#: ../../Zotlabs/Module/Uexport.php:62 -msgid "Export your channel" -msgstr "Exportar su canal" +#: ../../addon/photocache/Mod_Photocache.php:53 +msgid "Minimal photo size for caching" +msgstr "Tamaño mínimo de la foto para el almacenamiento en caché" -#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 -msgid "Export Channel" -msgstr "Exportar el canal" +#: ../../addon/photocache/Mod_Photocache.php:55 +msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default." +msgstr "En píxeles. Desde 1 hasta 1024, 0 será reemplazado por el predeterminado del sistema." -#: ../../Zotlabs/Module/Uexport.php:74 -msgid "" -"Export your basic channel information to a file. This acts as a backup of " -"your connections, permissions, profile and basic data, which can be used to " -"import your data to a new server hub, but does not contain your content." -msgstr "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido." +#: ../../addon/photocache/Mod_Photocache.php:64 +msgid "Photo Cache" +msgstr "Photo Cache" -#: ../../Zotlabs/Module/Uexport.php:75 -msgid "Export Content" -msgstr "Exportar contenidos" +#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 +msgid "Gallery" +msgstr "Galería" -#: ../../Zotlabs/Module/Uexport.php:76 -msgid "" -"Export your channel information and recent content to a JSON backup that can" -" be restored or imported to another server hub. This backs up all of your " -"connections, permissions, profile data and several months of posts. This " -"file may be VERY large. Please be patient - it may take several minutes for" -" this download to begin." -msgstr "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar." +#: ../../addon/gallery/gallery.php:41 +msgid "Photo Gallery" +msgstr "Galería de fotos" -#: ../../Zotlabs/Module/Uexport.php:78 -msgid "Export your posts from a given year." -msgstr "Exporta sus publicaciones de un año dado." +#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1327 +#: ../../Zotlabs/Module/Hcard.php:12 ../../Zotlabs/Module/Editwebpage.php:32 +#: ../../Zotlabs/Module/Profile.php:20 ../../Zotlabs/Module/Webpages.php:39 +#: ../../Zotlabs/Module/Filestorage.php:53 ../../Zotlabs/Module/Connect.php:17 +#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Cards.php:42 +#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Editblock.php:31 +#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Articles.php:43 +#: ../../Zotlabs/Module/Menu.php:92 ../../Zotlabs/Module/Layouts.php:31 +msgid "Requested profile is not available." +msgstr "El perfil solicitado no está disponible." -#: ../../Zotlabs/Module/Uexport.php:80 -msgid "" -"You may also export your posts and conversations for a particular year or " -"month. Adjust the date in your browser location bar to select other dates. " -"If the export fails (possibly due to memory exhaustion on your server hub), " -"please try again selecting a more limited date range." -msgstr "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño." +#: ../../addon/gallery/Mod_Gallery.php:58 +msgid "Gallery App" +msgstr "App Gallery" -#: ../../Zotlabs/Module/Uexport.php:81 -#, php-format -msgid "" -"To select all posts for a given year, such as this year, visit <a " -"href=\"%1$s\">%2$s</a>" -msgstr "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1$s\">%2$s</a>" +#: ../../addon/gallery/Mod_Gallery.php:59 +msgid "A simple gallery for your photo albums" +msgstr "Una galería sencilla para sus álbumes de fotos" -#: ../../Zotlabs/Module/Uexport.php:82 -#, php-format -msgid "" -"To select all posts for a given month, such as January of this year, visit " -"<a href=\"%1$s\">%2$s</a>" -msgstr "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1$s\">%2$s</a>" +#: ../../addon/planets/Mod_Planets.php:20 +#: ../../addon/planets/Mod_Planets.php:23 +msgid "Random Planet App" +msgstr "App Random Planet" -#: ../../Zotlabs/Module/Uexport.php:83 -#, php-format +#: ../../addon/planets/Mod_Planets.php:25 msgid "" -"These content files may be imported or restored by visiting <a " -"href=\"%1$s\">%2$s</a> on any site containing your channel. For best results" -" please import or restore these in date order (oldest first)." -msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)." - -#: ../../Zotlabs/Module/Hq.php:140 -msgid "Welcome to Hubzilla!" -msgstr "¡Bienvenido a Hubzilla!" +"Set a random planet from the Star Wars Empire as your location when posting" +msgstr "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias como su ubicación cuando publique." -#: ../../Zotlabs/Module/Hq.php:140 -msgid "You have got no unseen posts..." -msgstr "No tiene ningún mensaje sin leer..." +#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44 +#: ../../addon/keepout/keepout.php:36 +#: ../../addon/flashcards/Mod_Flashcards.php:276 ../../include/photos.php:27 +#: ../../include/items.php:3796 ../../include/attach.php:150 +#: ../../include/attach.php:199 ../../include/attach.php:272 +#: ../../include/attach.php:380 ../../include/attach.php:394 +#: ../../include/attach.php:401 ../../include/attach.php:483 +#: ../../include/attach.php:1043 ../../include/attach.php:1117 +#: ../../include/attach.php:1280 ../../Zotlabs/Module/Article_edit.php:51 +#: ../../Zotlabs/Module/Network.php:19 ../../Zotlabs/Module/Register.php:80 +#: ../../Zotlabs/Module/Setup.php:206 +#: ../../Zotlabs/Module/Viewconnections.php:28 +#: ../../Zotlabs/Module/Viewconnections.php:33 +#: ../../Zotlabs/Module/Channel.php:169 ../../Zotlabs/Module/Channel.php:332 +#: ../../Zotlabs/Module/Channel.php:371 ../../Zotlabs/Module/Group.php:14 +#: ../../Zotlabs/Module/Group.php:30 ../../Zotlabs/Module/Card_edit.php:51 +#: ../../Zotlabs/Module/Editwebpage.php:68 +#: ../../Zotlabs/Module/Editwebpage.php:89 +#: ../../Zotlabs/Module/Editwebpage.php:107 +#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Chat.php:115 +#: ../../Zotlabs/Module/Chat.php:120 +#: ../../Zotlabs/Module/Channel_calendar.php:224 +#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Poke.php:157 +#: ../../Zotlabs/Module/Item.php:417 ../../Zotlabs/Module/Item.php:436 +#: ../../Zotlabs/Module/Item.php:446 ../../Zotlabs/Module/Item.php:1315 +#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Profile.php:85 +#: ../../Zotlabs/Module/Profile.php:101 +#: ../../Zotlabs/Module/Sharedwithme.php:16 +#: ../../Zotlabs/Module/Webpages.php:133 +#: ../../Zotlabs/Module/Filestorage.php:17 +#: ../../Zotlabs/Module/Filestorage.php:72 +#: ../../Zotlabs/Module/Filestorage.php:90 +#: ../../Zotlabs/Module/Filestorage.php:113 +#: ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Editpost.php:17 +#: ../../Zotlabs/Module/Achievements.php:34 +#: ../../Zotlabs/Module/Events.php:277 ../../Zotlabs/Module/Manage.php:10 +#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Viewsrc.php:19 +#: ../../Zotlabs/Module/Moderate.php:13 ../../Zotlabs/Module/Display.php:451 +#: ../../Zotlabs/Module/Common.php:38 ../../Zotlabs/Module/New_channel.php:105 +#: ../../Zotlabs/Module/New_channel.php:130 +#: ../../Zotlabs/Module/Service_limits.php:11 +#: ../../Zotlabs/Module/Mood.php:126 ../../Zotlabs/Module/Appman.php:87 +#: ../../Zotlabs/Module/Cards.php:86 ../../Zotlabs/Module/Api.php:24 +#: ../../Zotlabs/Module/Regmod.php:20 ../../Zotlabs/Module/Blocks.php:73 +#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Message.php:18 +#: ../../Zotlabs/Module/Profile_photo.php:336 +#: ../../Zotlabs/Module/Profile_photo.php:349 +#: ../../Zotlabs/Module/Editblock.php:67 ../../Zotlabs/Module/Settings.php:59 +#: ../../Zotlabs/Module/Editlayout.php:67 +#: ../../Zotlabs/Module/Editlayout.php:90 +#: ../../Zotlabs/Module/Connections.php:32 +#: ../../Zotlabs/Module/Cover_photo.php:347 +#: ../../Zotlabs/Module/Cover_photo.php:360 ../../Zotlabs/Module/Photos.php:69 +#: ../../Zotlabs/Module/Page.php:34 ../../Zotlabs/Module/Page.php:133 +#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635 +#: ../../Zotlabs/Module/Articles.php:89 ../../Zotlabs/Module/Bookmarks.php:70 +#: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102 +#: ../../Zotlabs/Module/Mail.php:150 ../../Zotlabs/Module/Block.php:24 +#: ../../Zotlabs/Module/Block.php:74 ../../Zotlabs/Module/Rate.php:113 +#: ../../Zotlabs/Module/Menu.php:130 ../../Zotlabs/Module/Menu.php:141 +#: ../../Zotlabs/Module/Defperms.php:181 ../../Zotlabs/Module/Thing.php:280 +#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341 +#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Wiki.php:59 +#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428 +#: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Connedit.php:399 +#: ../../Zotlabs/Module/Notifications.php:11 +#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 +#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Locs.php:87 +#: ../../Zotlabs/Module/Sources.php:80 ../../Zotlabs/Lib/Chatroom.php:133 +#: ../../Zotlabs/Web/WebServer.php:123 +msgid "Permission denied." +msgstr "Acceso denegado." -#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:516 -#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:67 -#: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Display.php:29 -#: ../../Zotlabs/Module/Viewconnections.php:23 -msgid "Public access denied." -msgstr "Acceso público denegado." +#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1610 +msgid "Male" +msgstr "Hombre" -#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:352 -#: ../../Zotlabs/Lib/Apps.php:352 ../../Zotlabs/Widget/Sitesearch.php:31 -#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../include/text.php:1103 -#: ../../include/text.php:1115 ../../include/acl_selectors.php:118 -#: ../../include/nav.php:186 -msgid "Search" -msgstr "Buscar" +#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1608 +msgid "Female" +msgstr "Mujer" -#: ../../Zotlabs/Module/Search.php:230 -#, php-format -msgid "Items tagged with: %s" -msgstr "elementos etiquetados con: %s" +#: ../../addon/openid/Mod_Openid.php:30 +msgid "OpenID protocol error. No ID returned." +msgstr "Error de protocolo OpenID. No se recuperó ninguna ID." -#: ../../Zotlabs/Module/Search.php:232 +#: ../../addon/openid/Mod_Openid.php:76 ../../addon/openid/Mod_Openid.php:178 +#: ../../Zotlabs/Zot/Auth.php:264 #, php-format -msgid "Search results for: %s" -msgstr "Resultados de la búsqueda para: %s" - -#: ../../Zotlabs/Module/Pubstream.php:20 -msgid "Public Stream App" -msgstr "App Stream público" - -#: ../../Zotlabs/Module/Pubstream.php:21 -msgid "The unmoderated public stream of this hub" -msgstr "Stream público no moderado de este hub" +msgid "Welcome %s. Remote authentication successful." +msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente." -#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 -#: ../../Zotlabs/Widget/Notifications.php:142 -msgid "Public Stream" -msgstr "\"Stream\" público" +#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 +msgid "Login failed." +msgstr "El acceso ha fallado." -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." -msgstr "Dirección no encontrada." +#: ../../addon/openid/openid.php:49 +msgid "" +"We encountered a problem while logging in with the OpenID you provided. " +"Please check the correct spelling of the ID." +msgstr "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito." -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." -msgstr "Ha fallado la búsqueda de la dirección." +#: ../../addon/openid/openid.php:49 +msgid "The error message was:" +msgstr "El mensaje de error ha sido: " -#: ../../Zotlabs/Module/Locs.php:66 -msgid "" -"Please select another location to become primary before removing the primary" -" location." -msgstr "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal." +#: ../../addon/openid/MysqlProvider.php:52 +msgid "First Name" +msgstr "Nombre" -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" -msgstr "Sincronizando ubicaciones" +#: ../../addon/openid/MysqlProvider.php:53 +msgid "Last Name" +msgstr "Apellido" -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." -msgstr "No encontrada ninguna dirección." +#: ../../addon/openid/MysqlProvider.php:54 +#: ../../addon/redred/Mod_Redred.php:75 +msgid "Nickname" +msgstr "Alias" -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" -msgstr "Gestionar las direcciones del canal" +#: ../../addon/openid/MysqlProvider.php:55 +msgid "Full Name" +msgstr "Nombre completo" -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" -msgstr "Primario" +#: ../../addon/openid/MysqlProvider.php:56 +#: ../../addon/openid/MysqlProvider.php:57 +#: ../../addon/redred/Mod_Redred.php:71 ../../addon/rtof/Mod_Rtof.php:57 +#: ../../include/network.php:1732 ../../Zotlabs/Module/Cdav.php:1377 +#: ../../Zotlabs/Module/Admin/Accounts.php:171 +#: ../../Zotlabs/Module/Admin/Accounts.php:183 +#: ../../Zotlabs/Module/Profiles.php:787 ../../Zotlabs/Module/Connedit.php:927 +msgid "Email" +msgstr "Correo electrónico" -#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:176 -msgid "Drop" -msgstr "Eliminar" +#: ../../addon/openid/MysqlProvider.php:58 +#: ../../addon/openid/MysqlProvider.php:59 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:360 +msgid "Profile Photo" +msgstr "Foto del perfil" -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" -msgstr "Sincronizar ahora" +#: ../../addon/openid/MysqlProvider.php:61 +msgid "Profile Photo 16px" +msgstr "Foto del perfil 16px" -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." -msgstr "Por favor, espere algunos minutos entre operaciones consecutivas." +#: ../../addon/openid/MysqlProvider.php:62 +msgid "Profile Photo 32px" +msgstr "Foto del perfil 32px" -#: ../../Zotlabs/Module/Locs.php:124 -msgid "" -"When possible, drop a location by logging into that website/hub and removing" -" your channel." -msgstr "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal." +#: ../../addon/openid/MysqlProvider.php:63 +msgid "Profile Photo 48px" +msgstr "Foto del perfil 48px" -#: ../../Zotlabs/Module/Locs.php:125 -msgid "Use this form to drop the location if the hub is no longer operating." -msgstr "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo." +#: ../../addon/openid/MysqlProvider.php:64 +msgid "Profile Photo 64px" +msgstr "Foto del perfil 64px" -#: ../../Zotlabs/Module/Apporder.php:47 -msgid "Change Order of Pinned Navbar Apps" -msgstr "Cambiar el orden de las aplicaciones fijas en la barra de navegación" +#: ../../addon/openid/MysqlProvider.php:65 +msgid "Profile Photo 80px" +msgstr "Foto del perfil 80px" -#: ../../Zotlabs/Module/Apporder.php:47 -msgid "Change Order of App Tray Apps" -msgstr "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones" +#: ../../addon/openid/MysqlProvider.php:66 +msgid "Profile Photo 128px" +msgstr "Foto del perfil 128px" -#: ../../Zotlabs/Module/Apporder.php:48 -msgid "" -"Use arrows to move the corresponding app left (top) or right (bottom) in the" -" navbar" -msgstr "Use las flechas para mover la aplicación correspondiente a la izquierda (arriba) o derecha (abajo) en la barra de navegación." +#: ../../addon/openid/MysqlProvider.php:67 +msgid "Timezone" +msgstr "Zona horaria" -#: ../../Zotlabs/Module/Apporder.php:48 -msgid "Use arrows to move the corresponding app up or down in the app tray" -msgstr "Use las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la bandeja de aplicaciones." +#: ../../addon/openid/MysqlProvider.php:68 +#: ../../Zotlabs/Module/Profiles.php:767 +msgid "Homepage URL" +msgstr "Dirección de la página personal" -#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:208 -msgid "Menu not found." -msgstr "Menú no encontrado" +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:358 +msgid "Language" +msgstr "Idioma" -#: ../../Zotlabs/Module/Mitem.php:63 -msgid "Unable to create element." -msgstr "No se puede crear el elemento." +#: ../../addon/openid/MysqlProvider.php:70 +msgid "Birth Year" +msgstr "Año de nacimiento" -#: ../../Zotlabs/Module/Mitem.php:87 -msgid "Unable to update menu element." -msgstr "No es posible actualizar el elemento del menú." +#: ../../addon/openid/MysqlProvider.php:71 +msgid "Birth Month" +msgstr "Mes de nacimiento" -#: ../../Zotlabs/Module/Mitem.php:103 -msgid "Unable to add menu element." -msgstr "No es posible añadir el elemento al menú" +#: ../../addon/openid/MysqlProvider.php:72 +msgid "Birth Day" +msgstr "Día de nacimiento" -#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Menu.php:231 -#: ../../Zotlabs/Module/Xchan.php:41 -msgid "Not found." -msgstr "No encontrado." +#: ../../addon/openid/MysqlProvider.php:73 +msgid "Birthdate" +msgstr "Fecha de nacimiento" -#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 -msgid "Menu Item Permissions" -msgstr "Permisos del elemento del menú" +#: ../../addon/openid/MysqlProvider.php:74 +#: ../../Zotlabs/Module/Profiles.php:486 +msgid "Gender" +msgstr "Género" -#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247 -#: ../../Zotlabs/Module/Settings/Channel.php:526 -msgid "(click to open/close)" -msgstr "(pulsar para abrir o cerrar)" +#: ../../addon/moremoods/moremoods.php:19 +msgid "lonely" +msgstr "Solo/a" -#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 -msgid "Link Name" -msgstr "Nombre del enlace" +#: ../../addon/moremoods/moremoods.php:20 +msgid "drunk" +msgstr "ebrio/a" -#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 -msgid "Link or Submenu Target" -msgstr "Destino del enlace o submenú" +#: ../../addon/moremoods/moremoods.php:21 +msgid "horny" +msgstr "caliente" -#: ../../Zotlabs/Module/Mitem.php:175 -msgid "Enter URL of the link or select a menu name to create a submenu" -msgstr "Introducir la dirección del enlace o seleccionar el nombre de un submenú" +#: ../../addon/moremoods/moremoods.php:22 +msgid "stoned" +msgstr "drogado/a" -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256 -msgid "Use magic-auth if available" -msgstr "Usar la autenticación mágica si está disponible" +#: ../../addon/moremoods/moremoods.php:23 +msgid "fucked up" +msgstr "jodido/a" -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 -#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Events.php:479 -#: ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Admin/Site.php:255 -#: ../../Zotlabs/Module/Settings/Channel.php:309 -#: ../../Zotlabs/Module/Settings/Display.php:89 -#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 -#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Api.php:99 -#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 -#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Menu.php:162 -#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Defperms.php:197 -#: ../../Zotlabs/Module/Profiles.php:681 ../../Zotlabs/Module/Sources.php:124 -#: ../../Zotlabs/Module/Sources.php:159 -#: ../../Zotlabs/Module/Filestorage.php:198 -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163 -#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../Zotlabs/Storage/Browser.php:411 -#: ../../boot.php:1681 ../../view/theme/redbasic_c/php/config.php:100 -#: ../../view/theme/redbasic_c/php/config.php:115 -#: ../../view/theme/redbasic/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:116 -#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86 -#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60 -#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49 -#: ../../addon/jappixmini/Mod_Jappixmini.php:161 -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -#: ../../addon/jappixmini/Mod_Jappixmini.php:199 -#: ../../addon/jappixmini/Mod_Jappixmini.php:203 -#: ../../addon/jappixmini/Mod_Jappixmini.php:207 -#: ../../addon/channelreputation/channelreputation.php:110 -#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63 -#: ../../addon/content_import/Mod_content_import.php:137 -#: ../../addon/content_import/Mod_content_import.php:138 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 -#: ../../addon/libertree/Mod_Libertree.php:59 -#: ../../addon/statusnet/Mod_Statusnet.php:260 -#: ../../addon/statusnet/Mod_Statusnet.php:282 -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:162 -#: ../../addon/twitter/Mod_Twitter.php:171 -#: ../../addon/smileybutton/Mod_Smileybutton.php:44 -#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 -#: ../../addon/cart/cart.php:1258 -#: ../../addon/cart/submodules/paypalbutton.php:87 -#: ../../addon/cart/submodules/paypalbutton.php:95 -#: ../../addon/cart/submodules/manualcat.php:63 -#: ../../addon/cart/submodules/manualcat.php:254 -#: ../../addon/cart/submodules/manualcat.php:258 -#: ../../addon/cart/submodules/hzservices.php:64 -#: ../../addon/cart/submodules/hzservices.php:646 -#: ../../addon/cart/submodules/hzservices.php:650 -#: ../../addon/cart/submodules/subscriptions.php:153 -#: ../../addon/cart/submodules/subscriptions.php:425 -#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 -#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -msgid "No" -msgstr "No" +#: ../../addon/moremoods/moremoods.php:24 +msgid "clusterfucked" +msgstr "hecho/a polvo" -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:177 -#: ../../Zotlabs/Module/Mitem.php:256 ../../Zotlabs/Module/Mitem.php:257 -#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Events.php:479 -#: ../../Zotlabs/Module/Removeme.php:63 -#: ../../Zotlabs/Module/Admin/Site.php:257 -#: ../../Zotlabs/Module/Settings/Channel.php:309 -#: ../../Zotlabs/Module/Settings/Display.php:89 -#: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 -#: ../../Zotlabs/Module/Import.php:640 ../../Zotlabs/Module/Api.php:98 -#: ../../Zotlabs/Module/Photos.php:670 ../../Zotlabs/Module/Wiki.php:227 -#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406 -#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221 -#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 -#: ../../Zotlabs/Module/Filestorage.php:198 -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163 -#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../Zotlabs/Storage/Browser.php:411 -#: ../../boot.php:1681 ../../view/theme/redbasic_c/php/config.php:100 -#: ../../view/theme/redbasic_c/php/config.php:115 -#: ../../view/theme/redbasic/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:116 -#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86 -#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60 -#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49 -#: ../../addon/jappixmini/Mod_Jappixmini.php:161 -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -#: ../../addon/jappixmini/Mod_Jappixmini.php:199 -#: ../../addon/jappixmini/Mod_Jappixmini.php:203 -#: ../../addon/jappixmini/Mod_Jappixmini.php:207 -#: ../../addon/channelreputation/channelreputation.php:110 -#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63 -#: ../../addon/content_import/Mod_content_import.php:137 -#: ../../addon/content_import/Mod_content_import.php:138 -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:45 -#: ../../addon/libertree/Mod_Libertree.php:59 -#: ../../addon/statusnet/Mod_Statusnet.php:260 -#: ../../addon/statusnet/Mod_Statusnet.php:282 -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:162 -#: ../../addon/twitter/Mod_Twitter.php:171 -#: ../../addon/smileybutton/Mod_Smileybutton.php:44 -#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71 -#: ../../addon/cart/cart.php:1258 -#: ../../addon/cart/submodules/paypalbutton.php:87 -#: ../../addon/cart/submodules/paypalbutton.php:95 -#: ../../addon/cart/submodules/manualcat.php:63 -#: ../../addon/cart/submodules/manualcat.php:254 -#: ../../addon/cart/submodules/manualcat.php:258 -#: ../../addon/cart/submodules/hzservices.php:64 -#: ../../addon/cart/submodules/hzservices.php:646 -#: ../../addon/cart/submodules/hzservices.php:650 -#: ../../addon/cart/submodules/subscriptions.php:153 -#: ../../addon/cart/submodules/subscriptions.php:425 -#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98 -#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143 -#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145 -msgid "Yes" -msgstr "Sí" +#: ../../addon/moremoods/moremoods.php:25 +msgid "crazy" +msgstr "loco/a" -#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257 -msgid "Open link in new window" -msgstr "Abrir el enlace en una nueva ventana" +#: ../../addon/moremoods/moremoods.php:26 +msgid "hurt" +msgstr "ofendido/a" -#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 -msgid "Order in list" -msgstr "Orden en la lista" +#: ../../addon/moremoods/moremoods.php:27 +msgid "sleepy" +msgstr "soñoliento/a" -#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 -msgid "Higher numbers will sink to bottom of listing" -msgstr "Los números más altos irán al final de la lista" +#: ../../addon/moremoods/moremoods.php:28 +msgid "grumpy" +msgstr "gruñón/ona" -#: ../../Zotlabs/Module/Mitem.php:179 -msgid "Submit and finish" -msgstr "Enviar y terminar" +#: ../../addon/moremoods/moremoods.php:29 +msgid "high" +msgstr "superior" -#: ../../Zotlabs/Module/Mitem.php:180 -msgid "Submit and continue" -msgstr "Enviar y continuar" +#: ../../addon/moremoods/moremoods.php:30 +msgid "semi-conscious" +msgstr "semiconsciente" -#: ../../Zotlabs/Module/Mitem.php:189 -msgid "Menu:" -msgstr "Menú:" +#: ../../addon/moremoods/moremoods.php:31 +msgid "in love" +msgstr "enamorado/a" -#: ../../Zotlabs/Module/Mitem.php:192 -msgid "Link Target" -msgstr "Destino del enlace" +#: ../../addon/moremoods/moremoods.php:32 +msgid "in lust" +msgstr "lujurioso/a" -#: ../../Zotlabs/Module/Mitem.php:195 -msgid "Edit menu" -msgstr "Editar menú" +#: ../../addon/moremoods/moremoods.php:33 +msgid "naked" +msgstr "desnudo/a" -#: ../../Zotlabs/Module/Mitem.php:198 -msgid "Edit element" -msgstr "Editar el elemento" +#: ../../addon/moremoods/moremoods.php:34 +msgid "stinky" +msgstr "apestoso/a" -#: ../../Zotlabs/Module/Mitem.php:199 -msgid "Drop element" -msgstr "Eliminar el elemento" +#: ../../addon/moremoods/moremoods.php:35 +msgid "sweaty" +msgstr "sudoroso/a" -#: ../../Zotlabs/Module/Mitem.php:200 -msgid "New element" -msgstr "Nuevo elemento" +#: ../../addon/moremoods/moremoods.php:36 +msgid "bleeding out" +msgstr "exánime" -#: ../../Zotlabs/Module/Mitem.php:201 -msgid "Edit this menu container" -msgstr "Modificar el contenedor del menú" +#: ../../addon/moremoods/moremoods.php:37 +msgid "victorious" +msgstr "victorioso/a" -#: ../../Zotlabs/Module/Mitem.php:202 -msgid "Add menu element" -msgstr "Añadir un elemento al menú" +#: ../../addon/moremoods/moremoods.php:38 +msgid "defeated" +msgstr "derrotado/a" -#: ../../Zotlabs/Module/Mitem.php:203 -msgid "Delete this menu item" -msgstr "Eliminar este elemento del menú" +#: ../../addon/moremoods/moremoods.php:39 +msgid "envious" +msgstr "envidioso/a" -#: ../../Zotlabs/Module/Mitem.php:204 -msgid "Edit this menu item" -msgstr "Modificar este elemento del menú" +#: ../../addon/moremoods/moremoods.php:40 +msgid "jealous" +msgstr "celoso/a" -#: ../../Zotlabs/Module/Mitem.php:222 -msgid "Menu item not found." -msgstr "Este elemento del menú no se ha encontrado" +#: ../../addon/dirstats/dirstats.php:94 +msgid "Hubzilla Directory Stats" +msgstr "Estadísticas de directorio de Hubzilla" -#: ../../Zotlabs/Module/Mitem.php:235 -msgid "Menu item deleted." -msgstr "Este elemento del menú ha sido borrado" +#: ../../addon/dirstats/dirstats.php:95 +msgid "Total Hubs" +msgstr "Número total de servidores" -#: ../../Zotlabs/Module/Mitem.php:237 -msgid "Menu item could not be deleted." -msgstr "Este elemento del menú no puede ser borrado." +#: ../../addon/dirstats/dirstats.php:97 +msgid "Hubzilla Hubs" +msgstr "Servidores (hubs) de Hubzilla" -#: ../../Zotlabs/Module/Mitem.php:244 -msgid "Edit Menu Element" -msgstr "Editar elemento del menú" +#: ../../addon/dirstats/dirstats.php:99 +msgid "Friendica Hubs" +msgstr "Servidores (hubs) de Friendica" -#: ../../Zotlabs/Module/Mitem.php:254 -msgid "Link text" -msgstr "Texto del enlace" +#: ../../addon/dirstats/dirstats.php:101 +msgid "Diaspora Pods" +msgstr "Servidores (pods) de Diaspora" -#: ../../Zotlabs/Module/Events.php:113 -#: ../../Zotlabs/Module/Channel_calendar.php:51 -msgid "Event can not end before it has started." -msgstr "Un evento no puede terminar antes de que haya comenzado." +#: ../../addon/dirstats/dirstats.php:103 +msgid "Hubzilla Channels" +msgstr "Canales de Hubzilla" -#: ../../Zotlabs/Module/Events.php:115 ../../Zotlabs/Module/Events.php:124 -#: ../../Zotlabs/Module/Events.php:146 -#: ../../Zotlabs/Module/Channel_calendar.php:53 -#: ../../Zotlabs/Module/Channel_calendar.php:61 -#: ../../Zotlabs/Module/Channel_calendar.php:78 -msgid "Unable to generate preview." -msgstr "No se puede crear la vista previa." +#: ../../addon/dirstats/dirstats.php:105 +msgid "Friendica Channels" +msgstr "Canales de Friendica" -#: ../../Zotlabs/Module/Events.php:122 -#: ../../Zotlabs/Module/Channel_calendar.php:59 -msgid "Event title and start time are required." -msgstr "Se requieren el título del evento y su hora de inicio." +#: ../../addon/dirstats/dirstats.php:107 +msgid "Diaspora Channels" +msgstr "Canales de Diaspora" -#: ../../Zotlabs/Module/Events.php:144 ../../Zotlabs/Module/Events.php:271 -#: ../../Zotlabs/Module/Channel_calendar.php:76 -#: ../../Zotlabs/Module/Channel_calendar.php:218 -msgid "Event not found." -msgstr "Evento no encontrado." +#: ../../addon/dirstats/dirstats.php:109 +msgid "Aged 35 and above" +msgstr "De 35 años de edad en adelante" -#: ../../Zotlabs/Module/Events.php:266 -#: ../../Zotlabs/Module/Channel_calendar.php:213 -#: ../../Zotlabs/Module/Tagger.php:73 ../../Zotlabs/Module/Like.php:394 -#: ../../include/conversation.php:119 ../../include/text.php:2120 -#: ../../include/event.php:1207 -msgid "event" -msgstr "el/su evento" +#: ../../addon/dirstats/dirstats.php:111 +msgid "Aged 34 and under" +msgstr "De 34 o menos años de edad" -#: ../../Zotlabs/Module/Events.php:468 -msgid "Edit event title" -msgstr "Editar el título del evento" +#: ../../addon/dirstats/dirstats.php:113 +msgid "Average Age" +msgstr "Promedio de edad" -#: ../../Zotlabs/Module/Events.php:468 ../../Zotlabs/Module/Events.php:473 -#: ../../Zotlabs/Module/Appman.php:143 ../../Zotlabs/Module/Appman.php:144 -#: ../../Zotlabs/Module/Profiles.php:745 ../../Zotlabs/Module/Profiles.php:749 -#: ../../include/datetime.php:211 -msgid "Required" -msgstr "Obligatorio" +#: ../../addon/dirstats/dirstats.php:115 +msgid "Known Chatrooms" +msgstr "Salas de chat conocidas" -#: ../../Zotlabs/Module/Events.php:470 -msgid "Categories (comma-separated list)" -msgstr "Temas (lista separada por comas)" +#: ../../addon/dirstats/dirstats.php:117 +msgid "Known Tags" +msgstr "Etiquetas conocidas" -#: ../../Zotlabs/Module/Events.php:471 -msgid "Edit Category" -msgstr "Modificar el tema" +#: ../../addon/dirstats/dirstats.php:119 +msgid "" +"Please note Diaspora and Friendica statistics are merely those **this " +"directory** is aware of, and not all those known in the network. This also " +"applies to chatrooms," +msgstr "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat," -#: ../../Zotlabs/Module/Events.php:471 -msgid "Category" -msgstr "Tema" +#: ../../addon/redred/Mod_Redred.php:24 +msgid "Channel is required." +msgstr "Se requiere un canal." -#: ../../Zotlabs/Module/Events.php:474 -msgid "Edit start date and time" -msgstr "Modificar la fecha y hora de comienzo" +#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:325 +msgid "Invalid channel." +msgstr "El canal no es válido." -#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Events.php:478 -msgid "Finish date and time are not known or not relevant" -msgstr "La fecha y hora de terminación no se conocen o no son relevantes" +#: ../../addon/redred/Mod_Redred.php:38 +msgid "Hubzilla Crosspost Connector Settings saved." +msgstr "Se han guardado los ajustes de Hubzilla Crosspost Connector" -#: ../../Zotlabs/Module/Events.php:477 -msgid "Edit finish date and time" -msgstr "Modificar la fecha y hora de terminación" +#: ../../addon/redred/Mod_Redred.php:50 +#: ../../addon/statusnet/Mod_Statusnet.php:146 +msgid "Hubzilla Crosspost Connector App" +msgstr "App Hubzilla Crosspost Connector" -#: ../../Zotlabs/Module/Events.php:477 -msgid "Finish date and time" -msgstr "Fecha y hora de terminación" +#: ../../addon/redred/Mod_Redred.php:51 +msgid "Relay public postings to another Hubzilla channel" +msgstr "Retransmisión de entradas a otro canal de Hubzilla" -#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Events.php:480 -msgid "Adjust for viewer timezone" -msgstr "Ajustar para obtener el visor de los husos horarios" +#: ../../addon/redred/Mod_Redred.php:63 +msgid "Send public postings to Hubzilla channel by default" +msgstr "Enviar entradas públicas al canal Hubzilla por defecto" -#: ../../Zotlabs/Module/Events.php:479 -msgid "" -"Important for events that happen in a particular place. Not practical for " -"global holidays." -msgstr "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales." +#: ../../addon/redred/Mod_Redred.php:67 +msgid "Hubzilla API Path" +msgstr "Ruta de la API de Hubzilla" -#: ../../Zotlabs/Module/Events.php:481 -msgid "Edit Description" -msgstr "Editar la descripción" +#: ../../addon/redred/Mod_Redred.php:67 ../../addon/rtof/Mod_Rtof.php:53 +msgid "https://{sitename}/api" +msgstr "https://{sitename}/api" -#: ../../Zotlabs/Module/Events.php:483 -msgid "Edit Location" -msgstr "Modificar la dirección" +#: ../../addon/redred/Mod_Redred.php:71 +msgid "Hubzilla login name" +msgstr "Nombre de inicio de sesión en Hubzilla" -#: ../../Zotlabs/Module/Events.php:486 ../../Zotlabs/Module/Photos.php:1097 -#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Lib/ThreadItem.php:806 -#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359 -msgid "Preview" -msgstr "Previsualizar" +#: ../../addon/redred/Mod_Redred.php:75 +msgid "Hubzilla channel name" +msgstr "Nombre del canal de Hubzilla" -#: ../../Zotlabs/Module/Events.php:487 ../../addon/hsse/hsse.php:225 -#: ../../include/conversation.php:1431 -msgid "Permission settings" -msgstr "Configuración de permisos" +#: ../../addon/redred/Mod_Redred.php:79 +#: ../../addon/jappixmini/Mod_Jappixmini.php:195 +msgid "Hubzilla password" +msgstr "Contraseña de Hubzilla" -#: ../../Zotlabs/Module/Events.php:502 -msgid "Advanced Options" -msgstr "Opciones avanzadas" +#: ../../addon/redred/Mod_Redred.php:87 +msgid "Hubzilla Crosspost Connector" +msgstr "Hubzilla Crosspost Connector" -#: ../../Zotlabs/Module/Events.php:613 -msgid "l, F j" -msgstr "l j F" +#: ../../addon/redred/redred.php:50 +msgid "Post to Hubzilla" +msgstr "Publicar en Hubzilla" -#: ../../Zotlabs/Module/Events.php:641 -#: ../../Zotlabs/Module/Channel_calendar.php:370 -msgid "Edit event" -msgstr "Editar evento" +#: ../../addon/redphotos/redphotos.php:106 +msgid "Photos imported" +msgstr "Se han importado las fotos" -#: ../../Zotlabs/Module/Events.php:643 -#: ../../Zotlabs/Module/Channel_calendar.php:372 -msgid "Delete event" -msgstr "Borrar evento" +#: ../../addon/redphotos/redphotos.php:119 +#: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109 +#: ../../addon/hzfiles/hzfiles.php:75 ../../include/items.php:435 +#: ../../Zotlabs/Module/Import_items.php:120 +#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Group.php:98 +#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Module/Cloud.php:119 +#: ../../Zotlabs/Module/Share.php:71 ../../Zotlabs/Module/Subthread.php:86 +#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:82 +#: ../../Zotlabs/Web/WebServer.php:122 +msgid "Permission denied" +msgstr "Permiso denegado" -#: ../../Zotlabs/Module/Events.php:669 ../../include/text.php:1939 -msgid "Link to Source" -msgstr "Enlazar con la entrada en su ubicación original" +#: ../../addon/redphotos/redphotos.php:129 +msgid "Redmatrix Photo Album Import" +msgstr "Importar un álbum de fotos de Redmatrix" -#: ../../Zotlabs/Module/Events.php:677 -#: ../../Zotlabs/Module/Channel_calendar.php:401 -msgid "calendar" -msgstr "calendario" +#: ../../addon/redphotos/redphotos.php:130 +msgid "This will import all your Redmatrix photo albums to this channel." +msgstr "Esto importará todos sus álbumes de fotos de Redmatrix a este canal." -#: ../../Zotlabs/Module/Events.php:696 -msgid "Edit Event" -msgstr "Editar el evento" +#: ../../addon/redphotos/redphotos.php:131 +#: ../../addon/redfiles/redfiles.php:121 +msgid "Redmatrix Server base URL" +msgstr "URL base del servidor Redmatrix" -#: ../../Zotlabs/Module/Events.php:696 -msgid "Create Event" -msgstr "Crear un evento" +#: ../../addon/redphotos/redphotos.php:132 +#: ../../addon/redfiles/redfiles.php:122 +msgid "Redmatrix Login Username" +msgstr "Nombre de inicio de sesión en Redmatrix" -#: ../../Zotlabs/Module/Events.php:699 ../../include/channel.php:1769 -msgid "Export" -msgstr "Exportar" +#: ../../addon/redphotos/redphotos.php:133 +#: ../../addon/redfiles/redfiles.php:123 +msgid "Redmatrix Login Password" +msgstr "Contraseña de inicio de sesión en Redmatrix" -#: ../../Zotlabs/Module/Events.php:739 -msgid "Event removed" -msgstr "Evento borrado" +#: ../../addon/redphotos/redphotos.php:134 +msgid "Import just this album" +msgstr "Importar solo este álbum" -#: ../../Zotlabs/Module/Events.php:742 -#: ../../Zotlabs/Module/Channel_calendar.php:488 -msgid "Failed to remove event" -msgstr "Error al eliminar el evento" +#: ../../addon/redphotos/redphotos.php:134 +msgid "Leave blank to import all albums" +msgstr "Dejar en blanco para importar todos los álbumes" -#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 -msgid "App installed." -msgstr "Aplicación instalada." +#: ../../addon/redphotos/redphotos.php:135 +msgid "Maximum count to import" +msgstr "Límite máximo de importación" + +#: ../../addon/redphotos/redphotos.php:135 +msgid "0 or blank to import all available" +msgstr "0 o en blanco para importar todos los disponibles" -#: ../../Zotlabs/Module/Appman.php:49 -msgid "Malformed app." -msgstr "Aplicación con errores" +#: ../../addon/redphotos/redphotohelper.php:71 +#: ../../addon/pubcrawl/as.php:1692 ../../addon/diaspora/Receiver.php:1592 +#: ../../include/text.php:2119 ../../include/conversation.php:116 +#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Tagger.php:69 +#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:2444 +msgid "photo" +msgstr "foto" -#: ../../Zotlabs/Module/Appman.php:132 -msgid "Embed code" -msgstr "Código incorporado" +#: ../../addon/statusnet/Mod_Statusnet.php:61 +msgid "" +"Please contact your site administrator.<br />The provided API URL is not " +"valid." +msgstr "Por favor, contacte con el administrador de su sitio.<br />La URL de la API proporcionada no es válida." -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Edit App" -msgstr "Modificar la aplicación" +#: ../../addon/statusnet/Mod_Statusnet.php:98 +msgid "We could not contact the GNU social API with the Path you entered." +msgstr "No podemos conectar con la API de GNU social con la ruta que ha proporcionado." -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Create App" -msgstr "Crear una aplicación" +#: ../../addon/statusnet/Mod_Statusnet.php:130 +msgid "GNU social settings updated." +msgstr "Se han guardado los ajustes de GNU social." -#: ../../Zotlabs/Module/Appman.php:143 -msgid "Name of app" -msgstr "Nombre de la aplicación" +#: ../../addon/statusnet/Mod_Statusnet.php:147 +msgid "" +"Relay public postings to a connected GNU social account (formerly StatusNet)" +msgstr "Retransmisión de entradas públicas a una cuenta conectada de GNU social (antiguo StarusNet)" -#: ../../Zotlabs/Module/Appman.php:144 -msgid "Location (URL) of app" -msgstr "Dirección (URL) de la aplicación" +#: ../../addon/statusnet/Mod_Statusnet.php:181 +msgid "Globally Available GNU social OAuthKeys" +msgstr "OAuthKeys globales de GNU social disponibles" -#: ../../Zotlabs/Module/Appman.php:146 -msgid "Photo icon URL" -msgstr "Dirección del icono" +#: ../../addon/statusnet/Mod_Statusnet.php:183 +msgid "" +"There are preconfigured OAuth key pairs for some GNU social servers " +"available. If you are using one of them, please use these credentials.<br " +"/>If not feel free to connect to any other GNU social instance (see below)." +msgstr "Existen pares de claves OAuth preconfiguradas disponibles para algunos servidores libres de GNU social. Si está usando uno de ellos, utilice estas credenciales.<br />Si no se siente libre de conectarse a cualquier otra instancia de GNU social (vea a continuación)." -#: ../../Zotlabs/Module/Appman.php:146 -msgid "80 x 80 pixels - optional" -msgstr "80 x 80 pixels - opcional" +#: ../../addon/statusnet/Mod_Statusnet.php:198 +msgid "Provide your own OAuth Credentials" +msgstr "Proporcione sus propias credenciales de OAuth" -#: ../../Zotlabs/Module/Appman.php:147 -msgid "Categories (optional, comma separated list)" -msgstr "Temas (opcional, lista separada por comas)" +#: ../../addon/statusnet/Mod_Statusnet.php:200 +msgid "" +"No consumer key pair for GNU social found. Register your Hubzilla Account as" +" an desktop client on your GNU social account, copy the consumer key pair " +"here and enter the API base root.<br />Before you register your own OAuth " +"key pair ask the administrator if there is already a key pair for this " +"Hubzilla installation at your favourite GNU social installation." +msgstr "No se ha encontrado un par de claves de consumidor para GNU social. Registre su cuenta de Hubzilla como un cliente de escritorio en su cuenta social GNU, copie el par de claves de consumidor aquí y escriba la dirección raíz de la API.<br />Antes de registrar su propio par de claves OAuth, pregunte al administrador si ya hay un par de claves para esta instalación de Hubzilla en su instalación GNU social favorita." -#: ../../Zotlabs/Module/Appman.php:148 -msgid "Version ID" -msgstr "Versión" +#: ../../addon/statusnet/Mod_Statusnet.php:204 +msgid "OAuth Consumer Key" +msgstr "OAuth Consumer Key" -#: ../../Zotlabs/Module/Appman.php:149 -msgid "Price of app" -msgstr "Precio de la aplicación" +#: ../../addon/statusnet/Mod_Statusnet.php:208 +msgid "OAuth Consumer Secret" +msgstr "OAuth Consumer Secret" -#: ../../Zotlabs/Module/Appman.php:150 -msgid "Location (URL) to purchase app" -msgstr "Dirección (URL) donde adquirir la aplicación" +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Base API Path" +msgstr "Ruta base de la API" -#: ../../Zotlabs/Module/Regmod.php:15 -msgid "Please login." -msgstr "Por favor, inicie sesión." +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Remember the trailing /" +msgstr "Recuerde la barra /" -#: ../../Zotlabs/Module/Magic.php:78 -msgid "Hub not found." -msgstr "Servidor no encontrado" +#: ../../addon/statusnet/Mod_Statusnet.php:216 +msgid "GNU social application name" +msgstr "Nombre de la aplicación de GNU social" -#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:69 -#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Lib/Activity.php:2320 -#: ../../addon/redphotos/redphotohelper.php:71 -#: ../../addon/diaspora/Receiver.php:1592 ../../addon/pubcrawl/as.php:1690 -#: ../../include/conversation.php:116 ../../include/text.php:2117 -msgid "photo" -msgstr "foto" +#: ../../addon/statusnet/Mod_Statusnet.php:239 +msgid "" +"To connect to your GNU social account click the button below to get a " +"security code from GNU social which you have to copy into the input box " +"below and submit the form. Only your <strong>public</strong> posts will be " +"posted to GNU social." +msgstr "Para conectarse a su cuenta de GNU social, haga clic en el botón de abajo para obtener un código de seguridad de GNU social que tiene que copiar en el cuadro de entrada a continuación y envíe el formulario. Solo sus <strong>entradas</strong> públicas aparecerán en GNU social." -#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Like.php:392 -#: ../../Zotlabs/Lib/Activity.php:2320 ../../addon/diaspora/Receiver.php:1592 -#: ../../addon/pubcrawl/as.php:1690 ../../include/conversation.php:144 -#: ../../include/text.php:2123 -msgid "status" -msgstr "el mensaje de estado " +#: ../../addon/statusnet/Mod_Statusnet.php:241 +msgid "Log in with GNU social" +msgstr "Inicio de sesión en GNU social" -#: ../../Zotlabs/Module/Subthread.php:143 -#, php-format -msgid "%1$s is following %2$s's %3$s" -msgstr "%1$s está siguiendo %3$s de %2$s" +#: ../../addon/statusnet/Mod_Statusnet.php:244 +msgid "Copy the security code from GNU social here" +msgstr "Copiar aquí el código de seguridad de GNU social" -#: ../../Zotlabs/Module/Subthread.php:145 -#, php-format -msgid "%1$s stopped following %2$s's %3$s" -msgstr "%1$s ha dejado de seguir %3$s de %2$s" +#: ../../addon/statusnet/Mod_Statusnet.php:254 +msgid "Cancel Connection Process" +msgstr "Cancelar el proceso de conexión" -#: ../../Zotlabs/Module/Article_edit.php:44 ../../Zotlabs/Module/Cal.php:31 -#: ../../Zotlabs/Module/Chanview.php:96 ../../Zotlabs/Module/Page.php:75 -#: ../../Zotlabs/Module/Wall_upload.php:31 ../../Zotlabs/Module/Block.php:41 -#: ../../Zotlabs/Module/Card_edit.php:44 -msgid "Channel not found." -msgstr "Canal no encontrado." +#: ../../addon/statusnet/Mod_Statusnet.php:256 +msgid "Current GNU social API is" +msgstr "La API actual de GNU social es " -#: ../../Zotlabs/Module/Article_edit.php:101 -#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:222 -#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Mail.php:292 -#: ../../Zotlabs/Module/Mail.php:435 ../../Zotlabs/Module/Card_edit.php:101 -#: ../../addon/hsse/hsse.php:95 ../../include/conversation.php:1298 -msgid "Insert web link" -msgstr "Insertar enlace web" +#: ../../addon/statusnet/Mod_Statusnet.php:260 +msgid "Cancel GNU social Connection" +msgstr "Cancelar la conexión de GNU social" -#: ../../Zotlabs/Module/Article_edit.php:117 -#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:671 -#: ../../Zotlabs/Module/Photos.php:1041 ../../Zotlabs/Module/Card_edit.php:117 -#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427 -msgid "Title (optional)" -msgstr "Título (opcional)" +#: ../../addon/statusnet/Mod_Statusnet.php:272 +#: ../../addon/twitter/Mod_Twitter.php:147 +msgid "Currently connected to: " +msgstr "Actualmente está conectado a: " -#: ../../Zotlabs/Module/Article_edit.php:128 -msgid "Edit Article" -msgstr "Editar el artículo" +#: ../../addon/statusnet/Mod_Statusnet.php:277 +msgid "" +"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile " +"details from unknown viewers?</em>) the link potentially included in public " +"postings relayed to GNU social will lead the visitor to a blank page " +"informing the visitor that the access to your profile has been restricted." +msgstr "<strong>Aviso</strong>: Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>) el vínculo potencialmente incluido en las entradas públicas retransmitidas a GNU social llevará al visitante a una página en blanco que le informará de que el acceso a su perfil ha sido restringido." -#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:68 -msgid "Nothing to import." -msgstr "No hay nada para importar." +#: ../../addon/statusnet/Mod_Statusnet.php:282 +msgid "Post to GNU social by default" +msgstr "Publicar en GNU social por defecto" -#: ../../Zotlabs/Module/Import_items.php:72 ../../Zotlabs/Module/Import.php:83 -#: ../../Zotlabs/Module/Import.php:99 -msgid "Unable to download data from old server" -msgstr "No se han podido descargar datos de su antiguo servidor" +#: ../../addon/statusnet/Mod_Statusnet.php:282 +msgid "" +"If enabled your public postings will be posted to the associated GNU-social " +"account by default" +msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta GNU-social asociada de forma predeterminada" -#: ../../Zotlabs/Module/Import_items.php:77 -#: ../../Zotlabs/Module/Import.php:106 -msgid "Imported file is empty." -msgstr "El fichero importado está vacío." +#: ../../addon/statusnet/Mod_Statusnet.php:291 +#: ../../addon/twitter/Mod_Twitter.php:171 +msgid "Clear OAuth configuration" +msgstr "Limpiar la configuración de OAuth" -#: ../../Zotlabs/Module/Import_items.php:93 -#, php-format -msgid "Warning: Database versions differ by %1$d updates." -msgstr "Atención: Las versiones de la base de datos difieren en %1$d actualizaciones." +#: ../../addon/statusnet/Mod_Statusnet.php:303 +msgid "GNU-Social Crosspost Connector" +msgstr "GNU-Social Crosspost Connector" -#: ../../Zotlabs/Module/Import_items.php:108 -msgid "Import completed" -msgstr "Importación completada" +#: ../../addon/statusnet/statusnet.php:145 +msgid "Post to GNU social" +msgstr "Publicar en GNU social" -#: ../../Zotlabs/Module/Import_items.php:125 -msgid "Import Items" -msgstr "Importar elementos" +#: ../../addon/statusnet/statusnet.php:593 +#: ../../Zotlabs/Module/Admin/Site.php:297 +msgid "Site name" +msgstr "Nombre del sitio" -#: ../../Zotlabs/Module/Import_items.php:126 -msgid "" -"Use this form to import existing posts and content from an export file." -msgstr "Utilice este formulario para importar entradas y contenido desde un archivo de exportación." +#: ../../addon/statusnet/statusnet.php:594 +msgid "API URL" +msgstr "URL de la API" -#: ../../Zotlabs/Module/Import_items.php:127 -#: ../../Zotlabs/Module/Import.php:629 -msgid "File to Upload" -msgstr "Fichero para subir" +#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:501 +#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141 +#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 +msgid "Consumer Secret" +msgstr "Consumer Secret" -#: ../../Zotlabs/Module/New_channel.php:147 -#: ../../Zotlabs/Module/Manage.php:138 -#, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." -msgstr "Ha creado %1$.0f de %2$.0f canales permitidos." +#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:500 +#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140 +msgid "Consumer Key" +msgstr "Consumer Key" -#: ../../Zotlabs/Module/New_channel.php:157 -#: ../../Zotlabs/Module/New_channel.php:164 -#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256 -#: ../../Zotlabs/Widget/Notifications.php:162 ../../include/nav.php:326 -msgid "Loading" -msgstr "Cargando" +#: ../../addon/statusnet/statusnet.php:597 +msgid "Application name" +msgstr "Nombre de la aplicación" -#: ../../Zotlabs/Module/New_channel.php:159 -msgid "Your real name is recommended." -msgstr "Se recomienda su nombre real." +#: ../../addon/frphotos/frphotos.php:92 +msgid "Friendica Photo Album Import" +msgstr "Importar un álbum de fotos de Friendica" -#: ../../Zotlabs/Module/New_channel.php:160 -msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\"" -msgstr "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\"" +#: ../../addon/frphotos/frphotos.php:93 +msgid "This will import all your Friendica photo albums to this Red channel." +msgstr "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla." -#: ../../Zotlabs/Module/New_channel.php:165 -msgid "" -"This will be used to create a unique network address (like an email " -"address)." -msgstr "Esto se utilizará para crear una dirección de red única (como una dirección de correo electrónico)." +#: ../../addon/frphotos/frphotos.php:94 +msgid "Friendica Server base URL" +msgstr "URL base del servidor de Friendica" -#: ../../Zotlabs/Module/New_channel.php:167 -msgid "Allowed characters are a-z 0-9, - and _" -msgstr "Los caracteres permitidos son a-z 0-9, - and _" +#: ../../addon/frphotos/frphotos.php:95 +msgid "Friendica Login Username" +msgstr "Nombre de inicio de sesión en Friendica" + +#: ../../addon/frphotos/frphotos.php:96 +msgid "Friendica Login Password" +msgstr "Contraseña de inicio de sesión en Friendica" -#: ../../Zotlabs/Module/New_channel.php:175 -msgid "Channel name" -msgstr "Nombre del canal" +#: ../../addon/rtof/Mod_Rtof.php:24 +msgid "Friendica Crosspost Connector Settings saved." +msgstr "Se han guardado los ajustes del conector de publicación cruzada con Friendica." -#: ../../Zotlabs/Module/New_channel.php:177 -#: ../../Zotlabs/Module/Register.php:263 -msgid "Choose a short nickname" -msgstr "Elija un alias corto" +#: ../../addon/rtof/Mod_Rtof.php:36 +msgid "Friendica Crosspost Connector App" +msgstr "App Friendica Crosspost Connector" -#: ../../Zotlabs/Module/New_channel.php:178 -#: ../../Zotlabs/Module/Settings/Channel.php:535 -#: ../../Zotlabs/Module/Register.php:264 -msgid "Channel role and privacy" -msgstr "Clase de canal y privacidad" +#: ../../addon/rtof/Mod_Rtof.php:37 +msgid "Relay public postings to a connected Friendica account" +msgstr "Retransmisión de entradas públicas a una cuenta Friendica conectada" -#: ../../Zotlabs/Module/New_channel.php:178 -msgid "" -"Select a channel permission role compatible with your usage needs and " -"privacy requirements." -msgstr "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad." +#: ../../addon/rtof/Mod_Rtof.php:49 +msgid "Send public postings to Friendica by default" +msgstr "Enviar entradas públicas a Friendica por defecto" -#: ../../Zotlabs/Module/New_channel.php:178 -#: ../../Zotlabs/Module/Register.php:264 -msgid "Read more about channel permission roles" -msgstr "Leer más sobre los roles y permisos" +#: ../../addon/rtof/Mod_Rtof.php:53 +msgid "Friendica API Path" +msgstr "Ruta a la API de Friendica" -#: ../../Zotlabs/Module/New_channel.php:181 -msgid "Create a Channel" -msgstr "Crear un canal" +#: ../../addon/rtof/Mod_Rtof.php:57 +msgid "Friendica login name" +msgstr "Nombre de inicio de sesión en Friendica" -#: ../../Zotlabs/Module/New_channel.php:182 -msgid "" -"A channel is a unique network identity. It can represent a person (social " -"network profile), a forum (group), a business or celebrity page, a newsfeed," -" and many other things." -msgstr "Un canal es una identidad única en la red. Puede representar a una persona (un perfil de una red social), un foro o grupo, un negocio o una página de una celebridad, un \"feed\" de noticias, y muchas otras cosas." +#: ../../addon/rtof/Mod_Rtof.php:61 +msgid "Friendica password" +msgstr "Contraseña de Friendica" -#: ../../Zotlabs/Module/New_channel.php:183 -msgid "" -"or <a href=\"import\">import an existing channel</a> from another location." -msgstr "O <a href=\"import\">importar un canal </a> desde otro lugar." +#: ../../addon/rtof/Mod_Rtof.php:69 +msgid "Friendica Crosspost Connector" +msgstr "Friendica Crosspost Connector" -#: ../../Zotlabs/Module/New_channel.php:188 -msgid "Validate" -msgstr "Validar" +#: ../../addon/rtof/rtof.php:51 +msgid "Post to Friendica" +msgstr "Publicar en Friendica" -#: ../../Zotlabs/Module/Removeme.php:35 -msgid "" -"Channel removals are not allowed within 48 hours of changing the account " -"password." -msgstr "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña." +#: ../../addon/wppost/wppost.php:46 +msgid "Post to WordPress" +msgstr "Publicar en WordPress" -#: ../../Zotlabs/Module/Removeme.php:60 -msgid "Remove This Channel" -msgstr "Eliminar este canal" +#: ../../addon/wppost/Mod_Wppost.php:28 +msgid "Wordpress Settings saved." +msgstr "Se han guardado los ajustes de WordPress." -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -#: ../../Zotlabs/Module/Changeaddr.php:78 -msgid "WARNING: " -msgstr "ATENCIÓN:" +#: ../../addon/wppost/Mod_Wppost.php:41 +msgid "Wordpress Post App" +msgstr "App Publicar en Wordpress" -#: ../../Zotlabs/Module/Removeme.php:61 -msgid "This channel will be completely removed from the network. " -msgstr "Este canal va a ser completamente eliminado de la red. " +#: ../../addon/wppost/Mod_Wppost.php:42 +msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API" +msgstr "Publicar en WordPress o cualquier otra cosa que utilice la API XMLRPC de wordpress" -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "This action is permanent and can not be undone!" -msgstr "¡Esta acción tiene carácter definitivo y no se puede deshacer!" +#: ../../addon/wppost/Mod_Wppost.php:65 +msgid "WordPress username" +msgstr "Nombre de usuario de WordPress" -#: ../../Zotlabs/Module/Removeme.php:62 -#: ../../Zotlabs/Module/Removeaccount.php:59 -#: ../../Zotlabs/Module/Changeaddr.php:79 -msgid "Please enter your password for verification:" -msgstr "Por favor, introduzca su contraseña para su verificación:" +#: ../../addon/wppost/Mod_Wppost.php:69 +msgid "WordPress password" +msgstr "Contraseña de WordPress" -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "Remove this channel and all its clones from the network" -msgstr "Eliminar este canal y todos sus clones de la red" +#: ../../addon/wppost/Mod_Wppost.php:73 +msgid "WordPress API URL" +msgstr "URL de la API de WordPress" -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "" -"By default only the instance of the channel located on this hub will be " -"removed from the network" -msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red" +#: ../../addon/wppost/Mod_Wppost.php:74 +msgid "Typically https://your-blog.tld/xmlrpc.php" +msgstr "Habitualmente https://your-blog.tld/xmlrpc.php" -#: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:594 -msgid "Remove Channel" -msgstr "Eliminar el canal" +#: ../../addon/wppost/Mod_Wppost.php:77 +msgid "WordPress blogid" +msgstr "Blog de WordPress" -#: ../../Zotlabs/Module/Sharedwithme.php:103 -msgid "Files: shared with me" -msgstr "Ficheros: compartidos conmigo" +#: ../../addon/wppost/Mod_Wppost.php:78 +msgid "For multi-user sites such as wordpress.com, otherwise leave blank" +msgstr "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco" -#: ../../Zotlabs/Module/Sharedwithme.php:105 -msgid "NEW" -msgstr "NUEVO" +#: ../../addon/wppost/Mod_Wppost.php:82 +msgid "Post to WordPress by default" +msgstr "Publicar en WordPress por defecto" -#: ../../Zotlabs/Module/Sharedwithme.php:106 -#: ../../Zotlabs/Storage/Browser.php:293 ../../include/text.php:1515 -msgid "Size" -msgstr "Tamaño" +#: ../../addon/wppost/Mod_Wppost.php:86 +msgid "Forward comments (requires hubzilla_wp plugin)" +msgstr "Reenviar comentarios (requerido por el plugin hubzilla_wp)" -#: ../../Zotlabs/Module/Sharedwithme.php:107 -#: ../../Zotlabs/Storage/Browser.php:294 -msgid "Last Modified" -msgstr "Última modificación" +#: ../../addon/wppost/Mod_Wppost.php:94 +msgid "Wordpress Post" +msgstr "Publicar en Wordpress" -#: ../../Zotlabs/Module/Sharedwithme.php:108 -msgid "Remove all files" -msgstr "Eliminar todos los ficheros" +#: ../../addon/content_import/Mod_content_import.php:27 +msgid "No server specified" +msgstr "No se ha especificado ningún servidor" -#: ../../Zotlabs/Module/Sharedwithme.php:109 -msgid "Remove this file" -msgstr "Eliminar este fichero" +#: ../../addon/content_import/Mod_content_import.php:73 +msgid "Posts imported" +msgstr "Entradas importadas" -#: ../../Zotlabs/Module/Setup.php:167 -msgid "$Projectname Server - Setup" -msgstr "Servidor $Projectname - Instalación" +#: ../../addon/content_import/Mod_content_import.php:113 +msgid "Files imported" +msgstr "Ficheros importados" -#: ../../Zotlabs/Module/Setup.php:171 -msgid "Could not connect to database." -msgstr "No se ha podido conectar a la base de datos." +#: ../../addon/content_import/Mod_content_import.php:122 +msgid "" +"This addon app copies existing content and file storage to a cloned/copied " +"channel. Once the app is installed, visit the newly installed app. This will" +" allow you to set the location of your original channel and an optional date" +" range of files/conversations to copy." +msgstr "Este complemento copia el contenido existente y el almacenamiento de ficheros en un canal clonado/copiado. Una vez instalada la aplicación, visite la aplicación recién instalada. Esto le permitirá establecer la ubicación de su canal original y un rango de fechas opcional de ficheros/conversaciones para copiar." -#: ../../Zotlabs/Module/Setup.php:175 +#: ../../addon/content_import/Mod_content_import.php:135 +#: ../../Zotlabs/Lib/Apps.php:331 +msgid "Content Import" +msgstr "Importación de contenidos" + +#: ../../addon/content_import/Mod_content_import.php:136 msgid "" -"Could not connect to specified site URL. Possible SSL certificate or DNS " -"issue." -msgstr "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS." +"This will import all your conversations and cloud files from a cloned " +"channel on another server. This may take a while if you have lots of posts " +"and or files." +msgstr "Esto importará todas sus conversaciones y archivos de nube de un canal clonado en otro servidor. El proceso puede tardar un poco si tiene muchos mensajes y/o ficheros." -#: ../../Zotlabs/Module/Setup.php:182 -msgid "Could not create table." -msgstr "No se puede crear la tabla." +#: ../../addon/content_import/Mod_content_import.php:137 +msgid "Include posts" +msgstr "Incluir entradas" -#: ../../Zotlabs/Module/Setup.php:188 -msgid "Your site database has been installed." -msgstr "La base de datos del sitio ha sido instalada." +#: ../../addon/content_import/Mod_content_import.php:137 +msgid "Conversations, Articles, Cards, and other posted content" +msgstr "Conversaciones, artículos, fichas y otros contenidos publicados" -#: ../../Zotlabs/Module/Setup.php:194 -msgid "" -"You may need to import the file \"install/schema_xxx.sql\" manually using a " -"database client." -msgstr "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos." +#: ../../addon/content_import/Mod_content_import.php:138 +msgid "Include files" +msgstr "Incluir ficheros" -#: ../../Zotlabs/Module/Setup.php:195 ../../Zotlabs/Module/Setup.php:259 -#: ../../Zotlabs/Module/Setup.php:766 -msgid "Please see the file \"install/INSTALL.txt\"." -msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." +#: ../../addon/content_import/Mod_content_import.php:138 +msgid "Files, Photos and other cloud storage" +msgstr "Archivos, fotos y otro tipo de almacenamiento en la nube" -#: ../../Zotlabs/Module/Setup.php:256 -msgid "System check" -msgstr "Verificación del sistema" +#: ../../addon/content_import/Mod_content_import.php:139 +msgid "Original Server base URL" +msgstr "URL base del servidor original" -#: ../../Zotlabs/Module/Setup.php:261 -msgid "Check again" -msgstr "Verificar de nuevo" +#: ../../addon/content_import/Mod_content_import.php:140 +#: ../../addon/hzfiles/hzfiles.php:84 +msgid "Since modified date yyyy-mm-dd" +msgstr "Modificado desde la fecha yyyy-mm-dd" -#: ../../Zotlabs/Module/Setup.php:282 -msgid "Database connection" -msgstr "Conexión a la base de datos" +#: ../../addon/content_import/Mod_content_import.php:141 +#: ../../addon/hzfiles/hzfiles.php:85 +msgid "Until modified date yyyy-mm-dd" +msgstr "Modificado hasta la fecha yyyy-mm-dd" -#: ../../Zotlabs/Module/Setup.php:283 -msgid "" -"In order to install $Projectname we need to know how to connect to your " -"database." -msgstr "Para instalar $Projectname es necesario saber cómo conectar con su base de datos." +#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 +msgid "Set your location" +msgstr "Establecer su ubicación" -#: ../../Zotlabs/Module/Setup.php:284 -msgid "" -"Please contact your hosting provider or site administrator if you have " -"questions about these settings." -msgstr "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes." +#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 +msgid "Clear browser location" +msgstr "Eliminar los datos de localización geográfica del navegador" -#: ../../Zotlabs/Module/Setup.php:285 -msgid "" -"The database you specify below should already exist. If it does not, please " -"create it before continuing." -msgstr "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir." +#: ../../addon/hsse/hsse.php:95 ../../include/conversation.php:1298 +#: ../../Zotlabs/Module/Article_edit.php:100 +#: ../../Zotlabs/Module/Card_edit.php:101 +#: ../../Zotlabs/Module/Editwebpage.php:143 ../../Zotlabs/Module/Chat.php:222 +#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Mail.php:292 +#: ../../Zotlabs/Module/Mail.php:435 +msgid "Insert web link" +msgstr "Insertar enlace web" -#: ../../Zotlabs/Module/Setup.php:289 -msgid "Database Server Name" -msgstr "Nombre del servidor de base de datos" +#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 +msgid "Embed (existing) photo from your photo albums" +msgstr "Insertar una foto de sus álbumes" -#: ../../Zotlabs/Module/Setup.php:289 -msgid "Default is 127.0.0.1" -msgstr "De forma predeterminada es 127.0.0.1" +#: ../../addon/hsse/hsse.php:134 ../../include/conversation.php:1337 +#: ../../Zotlabs/Module/Chat.php:220 ../../Zotlabs/Module/Mail.php:245 +#: ../../Zotlabs/Module/Mail.php:366 +msgid "Please enter a link URL:" +msgstr "Por favor, introduzca la dirección del enlace:" -#: ../../Zotlabs/Module/Setup.php:290 -msgid "Database Port" -msgstr "Puerto de la base de datos" +#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 +msgid "Tag term:" +msgstr "Término de la etiqueta:" -#: ../../Zotlabs/Module/Setup.php:290 -msgid "Communication port number - use 0 for default" -msgstr "Número del puerto de comunicaciones - use 0 como valor por defecto" +#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 +msgid "Where are you right now?" +msgstr "¿Donde está ahora?" -#: ../../Zotlabs/Module/Setup.php:291 -msgid "Database Login Name" -msgstr "Usuario de la base de datos" +#: ../../addon/hsse/hsse.php:139 ../../include/conversation.php:1342 +#: ../../Zotlabs/Module/Profile_photo.php:507 +#: ../../Zotlabs/Module/Cover_photo.php:436 ../../Zotlabs/Module/Wiki.php:403 +msgid "Choose images to embed" +msgstr "Elegir imágenes para incluir" -#: ../../Zotlabs/Module/Setup.php:292 -msgid "Database Login Password" -msgstr "Contraseña de acceso a la base de datos" +#: ../../addon/hsse/hsse.php:140 ../../include/conversation.php:1343 +#: ../../Zotlabs/Module/Profile_photo.php:508 +#: ../../Zotlabs/Module/Cover_photo.php:437 ../../Zotlabs/Module/Wiki.php:404 +msgid "Choose an album" +msgstr "Elegir un álbum" -#: ../../Zotlabs/Module/Setup.php:293 -msgid "Database Name" -msgstr "Nombre de la base de datos" +#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 +msgid "Choose a different album..." +msgstr "Elegir un álbum diferente..." -#: ../../Zotlabs/Module/Setup.php:294 -msgid "Database Type" -msgstr "Tipo de base de datos" +#: ../../addon/hsse/hsse.php:142 ../../include/conversation.php:1345 +#: ../../Zotlabs/Module/Profile_photo.php:510 +#: ../../Zotlabs/Module/Cover_photo.php:439 ../../Zotlabs/Module/Wiki.php:406 +msgid "Error getting album list" +msgstr "Error al obtener la lista de álbumes" -#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 -msgid "Site administrator email address" -msgstr "Dirección de correo electrónico del administrador del sitio" +#: ../../addon/hsse/hsse.php:143 ../../include/conversation.php:1346 +#: ../../Zotlabs/Module/Profile_photo.php:511 +#: ../../Zotlabs/Module/Cover_photo.php:440 ../../Zotlabs/Module/Wiki.php:407 +msgid "Error getting photo link" +msgstr "Error al obtener el enlace de la foto" -#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 -msgid "" -"Your account email address must match this in order to use the web admin " -"panel." -msgstr "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web." +#: ../../addon/hsse/hsse.php:144 ../../include/conversation.php:1347 +#: ../../Zotlabs/Module/Profile_photo.php:512 +#: ../../Zotlabs/Module/Cover_photo.php:441 ../../Zotlabs/Module/Wiki.php:408 +msgid "Error getting album" +msgstr "Error al obtener el álbum" -#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 -msgid "Website URL" -msgstr "Dirección del sitio web" +#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 +msgid "Comments enabled" +msgstr "Comentarios habilitados" -#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 -msgid "Please use SSL (https) URL if available." -msgstr "Por favor, use SSL (https) si está disponible." +#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 +msgid "Comments disabled" +msgstr "Comentarios deshabilitados" -#: ../../Zotlabs/Module/Setup.php:298 ../../Zotlabs/Module/Setup.php:340 -msgid "Please select a default timezone for your website" -msgstr "Por favor, selecciones el huso horario por defecto de su sitio web" +#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359 +#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Module/Events.php:486 +#: ../../Zotlabs/Module/Photos.php:1097 ../../Zotlabs/Lib/ThreadItem.php:806 +msgid "Preview" +msgstr "Previsualizar" -#: ../../Zotlabs/Module/Setup.php:325 -msgid "Site settings" -msgstr "Ajustes del sitio" +#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392 +#: ../../Zotlabs/Widget/Cdav.php:136 ../../Zotlabs/Module/Webpages.php:256 +#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1075 +#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194 +msgid "Share" +msgstr "Compartir" -#: ../../Zotlabs/Module/Setup.php:379 -msgid "PHP version 7.1 or greater is required." -msgstr "Se requiere la versión 7.1 o superior de PHP." +#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 +msgid "Page link name" +msgstr "Nombre del enlace de la página" -#: ../../Zotlabs/Module/Setup.php:380 -msgid "PHP version" -msgstr "Versión de PHP" +#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 +msgid "Post as" +msgstr "Publicar como" -#: ../../Zotlabs/Module/Setup.php:396 -msgid "Could not find a command line version of PHP in the web server PATH." -msgstr "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web." +#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1406 +#: ../../Zotlabs/Lib/ThreadItem.php:797 +msgid "Bold" +msgstr "Negrita" -#: ../../Zotlabs/Module/Setup.php:397 -msgid "" -"If you don't have a command line version of PHP installed on server, you " -"will not be able to run background polling via cron." -msgstr "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron." +#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1407 +#: ../../Zotlabs/Lib/ThreadItem.php:798 +msgid "Italic" +msgstr "Itálico " -#: ../../Zotlabs/Module/Setup.php:401 -msgid "PHP executable path" -msgstr "Ruta del ejecutable PHP" +#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1408 +#: ../../Zotlabs/Lib/ThreadItem.php:799 +msgid "Underline" +msgstr "Subrayar" -#: ../../Zotlabs/Module/Setup.php:401 -msgid "" -"Enter full path to php executable. You can leave this blank to continue the " -"installation." -msgstr "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación." +#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1409 +#: ../../Zotlabs/Lib/ThreadItem.php:800 +msgid "Quote" +msgstr "Citar" -#: ../../Zotlabs/Module/Setup.php:406 -msgid "Command line PHP" -msgstr "PHP en línea de comandos" +#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1410 +#: ../../Zotlabs/Lib/ThreadItem.php:801 +msgid "Code" +msgstr "Código" -#: ../../Zotlabs/Module/Setup.php:416 -msgid "" -"Unable to check command line PHP, as shell_exec() is disabled. This is " -"required." -msgstr "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado." +#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1411 +#: ../../Zotlabs/Lib/ThreadItem.php:803 +msgid "Attach/Upload file" +msgstr "Adjuntar/cargar fichero" -#: ../../Zotlabs/Module/Setup.php:420 -msgid "" -"The command line version of PHP on your system does not have " -"\"register_argc_argv\" enabled." -msgstr "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"." +#: ../../addon/hsse/hsse.php:208 ../../include/conversation.php:1414 +#: ../../Zotlabs/Module/Wiki.php:400 +msgid "Embed an image from your albums" +msgstr "Incluir una imagen de sus álbumes" -#: ../../Zotlabs/Module/Setup.php:421 -msgid "This is required for message delivery to work." -msgstr "Esto es necesario para que funcione la transmisión de mensajes." +#: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258 +#: ../../include/conversation.php:1415 ../../include/conversation.php:1464 +#: ../../Zotlabs/Module/Article_edit.php:130 +#: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 +#: ../../Zotlabs/Module/Card_edit.php:131 ../../Zotlabs/Module/Oauth.php:112 +#: ../../Zotlabs/Module/Oauth.php:138 ../../Zotlabs/Module/Editwebpage.php:169 +#: ../../Zotlabs/Module/Cdav.php:1081 ../../Zotlabs/Module/Cdav.php:1391 +#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 +#: ../../Zotlabs/Module/Editpost.php:110 +#: ../../Zotlabs/Module/Admin/Addons.php:427 +#: ../../Zotlabs/Module/Profile_photo.php:505 +#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Filer.php:55 +#: ../../Zotlabs/Module/Editlayout.php:140 +#: ../../Zotlabs/Module/Cover_photo.php:434 +#: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Oauth2.php:117 +#: ../../Zotlabs/Module/Oauth2.php:145 ../../Zotlabs/Module/Wiki.php:368 +#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Connedit.php:941 +msgid "Cancel" +msgstr "Cancelar" -#: ../../Zotlabs/Module/Setup.php:424 -msgid "PHP register_argc_argv" -msgstr "PHP register_argc_argv" +#: ../../addon/hsse/hsse.php:210 ../../addon/hsse/hsse.php:257 +#: ../../include/conversation.php:1416 ../../include/conversation.php:1463 +#: ../../Zotlabs/Module/Profile_photo.php:506 +#: ../../Zotlabs/Module/Cover_photo.php:435 ../../Zotlabs/Module/Wiki.php:402 +msgid "OK" +msgstr "OK" -#: ../../Zotlabs/Module/Setup.php:444 -msgid "" -"This is not sufficient to upload larger images or files. You should be able " -"to upload at least 4 MB at once." -msgstr "Esto no es suficiente para subir imágenes o archivos más grandes. Usted debe ser capaz de subir al menos 4 MB a la vez." +#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 +msgid "Toggle voting" +msgstr "Cambiar votación" -#: ../../Zotlabs/Module/Setup.php:446 -#, php-format -msgid "" -"Your max allowed total upload size is set to %s. Maximum size of one file to" -" upload is set to %s. You are allowed to upload up to %d files at once." -msgstr "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez." +#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 +msgid "Disable comments" +msgstr "Dehabilitar los comentarios" -#: ../../Zotlabs/Module/Setup.php:452 -msgid "You can adjust these settings in the server php.ini file." -msgstr "Puede ajustar estos valores en el fichero php.ini de su servidor." +#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 +msgid "Toggle comments" +msgstr "Activar o desactivar los comentarios" -#: ../../Zotlabs/Module/Setup.php:454 -msgid "PHP upload limits" -msgstr "Límites PHP de subida" +#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427 +#: ../../Zotlabs/Module/Article_edit.php:116 +#: ../../Zotlabs/Module/Card_edit.php:117 +#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:671 +#: ../../Zotlabs/Module/Photos.php:1041 +msgid "Title (optional)" +msgstr "Título (opcional)" -#: ../../Zotlabs/Module/Setup.php:477 -msgid "" -"Error: the \"openssl_pkey_new\" function on this system is not able to " -"generate encryption keys" -msgstr "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado." +#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 +msgid "Categories (optional, comma-separated list)" +msgstr "Temas (opcional, lista separada por comas)" -#: ../../Zotlabs/Module/Setup.php:478 -msgid "" -"If running under Windows, please see " -"\"http://www.php.net/manual/en/openssl.installation.php\"." -msgstr "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"." +#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1431 +#: ../../Zotlabs/Module/Events.php:487 +msgid "Permission settings" +msgstr "Configuración de permisos" -#: ../../Zotlabs/Module/Setup.php:481 -msgid "Generate encryption keys" -msgstr "Generar claves de cifrado" +#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 +msgid "Other networks and post services" +msgstr "Otras redes y servicios de publicación" -#: ../../Zotlabs/Module/Setup.php:498 -msgid "libCurl PHP module" -msgstr "módulo libCurl PHP" +#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456 +#: ../../Zotlabs/Module/Mail.php:296 ../../Zotlabs/Module/Mail.php:439 +msgid "Set expiration date" +msgstr "Configurar fecha de caducidad" -#: ../../Zotlabs/Module/Setup.php:499 -msgid "GD graphics PHP module" -msgstr "módulo PHP GD graphics" +#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 +msgid "Set publish date" +msgstr "Establecer la fecha de publicación" -#: ../../Zotlabs/Module/Setup.php:500 -msgid "OpenSSL PHP module" -msgstr "módulo PHP OpenSSL" +#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461 +#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:298 +#: ../../Zotlabs/Module/Mail.php:441 ../../Zotlabs/Lib/ThreadItem.php:810 +msgid "Encrypt text" +msgstr "Cifrar texto" -#: ../../Zotlabs/Module/Setup.php:501 -msgid "PDO database PHP module" -msgstr "Módulo PHP de la base de datos PDO " +#: ../../addon/hsse/Mod_Hsse.php:15 +msgid "WYSIWYG status editor" +msgstr "Editor de estado de WYSIWYG" -#: ../../Zotlabs/Module/Setup.php:502 -msgid "mb_string PHP module" -msgstr "módulo PHP mb_string" +#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 +msgid "WYSIWYG Status App" +msgstr "App WYSIWYG Status" -#: ../../Zotlabs/Module/Setup.php:503 -msgid "xml PHP module" -msgstr "módulo PHP xml" +#: ../../addon/hsse/Mod_Hsse.php:34 +msgid "WYSIWYG Status" +msgstr "Estado de WYSIWYG" -#: ../../Zotlabs/Module/Setup.php:504 -msgid "zip PHP module" -msgstr "Módulo zip PHP" +#: ../../addon/openstreetmap/openstreetmap.php:131 +msgid "View Larger" +msgstr "Ver más grande" -#: ../../Zotlabs/Module/Setup.php:508 ../../Zotlabs/Module/Setup.php:510 -msgid "Apache mod_rewrite module" -msgstr "módulo Apache mod_rewrite " +#: ../../addon/openstreetmap/openstreetmap.php:154 +msgid "Tile Server URL" +msgstr "URL del servidor de mosaicos de imágenes " -#: ../../Zotlabs/Module/Setup.php:508 +#: ../../addon/openstreetmap/openstreetmap.php:154 msgid "" -"Error: Apache webserver mod-rewrite module is required but not installed." -msgstr "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado." +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" " +"target=\"_blank\">public tile servers</a>" +msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>" -#: ../../Zotlabs/Module/Setup.php:514 ../../Zotlabs/Module/Setup.php:517 -msgid "exec" -msgstr "ejecutable" +#: ../../addon/openstreetmap/openstreetmap.php:155 +msgid "Nominatim (reverse geocoding) Server URL" +msgstr "URL del servidor nominatim (geocodificación inversa)" -#: ../../Zotlabs/Module/Setup.php:514 +#: ../../addon/openstreetmap/openstreetmap.php:155 msgid "" -"Error: exec is required but is either not installed or has been disabled in " -"php.ini" -msgstr "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini" +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" " +"target=\"_blank\">Nominatim servers</a>" +msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">servidores nominatim</a>" -#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:523 -msgid "shell_exec" -msgstr "shell_exec" +#: ../../addon/openstreetmap/openstreetmap.php:156 +msgid "Default zoom" +msgstr "Zoom predeterminado" -#: ../../Zotlabs/Module/Setup.php:520 +#: ../../addon/openstreetmap/openstreetmap.php:156 msgid "" -"Error: shell_exec is required but is either not installed or has been " -"disabled in php.ini" -msgstr "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini" +"The default zoom level. (1:world, 18:highest, also depends on tile server)" +msgstr "El nivel de zoom predeterminado. (1: mundo, 18: el más alto, también depende del servidor del mosaico de imágenes)" -#: ../../Zotlabs/Module/Setup.php:528 -msgid "Error: libCURL PHP module required but not installed." -msgstr "Error: se necesita el módulo PHP libCURL pero no está instalado." +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include marker on map" +msgstr "Incluir un marcador en el mapa" -#: ../../Zotlabs/Module/Setup.php:532 -msgid "" -"Error: GD PHP module with JPEG support or ImageMagick graphics library " -"required but not installed." -msgstr "Error: Se requiere el módulo GD PHP con soporte para JPEG o la biblioteca de gráficos ImageMagick, pero no está instalado." +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include a marker on the map." +msgstr "Incluir un marcador en el mapa." -#: ../../Zotlabs/Module/Setup.php:536 -msgid "Error: openssl PHP module required but not installed." -msgstr "Error: el módulo PHP openssl es necesario, pero no está instalado." +#: ../../addon/openstreetmap/openstreetmap.php:169 +#: ../../addon/rendezvous/rendezvous.php:82 +#: ../../addon/twitter/twitter.php:489 ../../addon/msgfooter/msgfooter.php:54 +#: ../../addon/piwik/piwik.php:116 ../../addon/logrot/logrot.php:54 +#: ../../addon/xmpp/xmpp.php:54 ../../Zotlabs/Module/Settings/Channel.php:266 +#: ../../Zotlabs/Module/Defperms.php:111 +msgid "Settings updated." +msgstr "Ajustes actualizados." -#: ../../Zotlabs/Module/Setup.php:542 -msgid "" -"Error: PDO database PHP module missing a driver for either mysql or pgsql." -msgstr "Error: El módulo PHP de la base de datos PDO carece de un controlador para mysql o pgsql." +#: ../../addon/ijpost/Mod_Ijpost.php:23 +msgid "Insane Journal Crosspost Connector Settings saved." +msgstr "Se han guardado los ajustes del Conector de publicación cruzada de InsaneJournal." -#: ../../Zotlabs/Module/Setup.php:547 -msgid "Error: PDO database PHP module required but not installed." -msgstr "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado." +#: ../../addon/ijpost/Mod_Ijpost.php:35 +msgid "Insane Journal Crosspost Connector App" +msgstr "App Ajustes del Conector de publicación cruzada de InsaneJournal" -#: ../../Zotlabs/Module/Setup.php:551 -msgid "Error: mb_string PHP module required but not installed." -msgstr "Error: el módulo PHP mb_string es necesario, pero no está instalado." +#: ../../addon/ijpost/Mod_Ijpost.php:36 +msgid "Relay public postings to Insane Journal" +msgstr "Retransmisión de entradas públicas a Insane Journal" -#: ../../Zotlabs/Module/Setup.php:555 -msgid "Error: xml PHP module required for DAV but not installed." -msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado." +#: ../../addon/ijpost/Mod_Ijpost.php:53 +msgid "InsaneJournal username" +msgstr "Nombre de usuario en InsaneJournal" -#: ../../Zotlabs/Module/Setup.php:559 -msgid "Error: zip PHP module required but not installed." -msgstr "Error: se requiere el módulo zip PHP pero no está instalado." +#: ../../addon/ijpost/Mod_Ijpost.php:57 +msgid "InsaneJournal password" +msgstr "Contraseña en InsaneJournal" -#: ../../Zotlabs/Module/Setup.php:578 ../../Zotlabs/Module/Setup.php:587 -msgid ".htconfig.php is writable" -msgstr ".htconfig.php tiene permisos de escritura" +#: ../../addon/ijpost/Mod_Ijpost.php:61 +msgid "Post to InsaneJournal by default" +msgstr "Publicar por defecto en InsaneJournal" -#: ../../Zotlabs/Module/Setup.php:583 -msgid "" -"The web installer needs to be able to create a file called \".htconfig.php\"" -" in the top folder of your web server and it is unable to do so." -msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor." +#: ../../addon/ijpost/Mod_Ijpost.php:69 +msgid "Insane Journal Crosspost Connector" +msgstr "Conector de publicación cruzada de InsaneJournal" -#: ../../Zotlabs/Module/Setup.php:584 -msgid "" -"This is most often a permission setting, as the web server may not be able " -"to write files in your folder - even if you can." -msgstr "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos." +#: ../../addon/ijpost/ijpost.php:44 +msgid "Post to Insane Journal" +msgstr "Publicar en Insane Journal" -#: ../../Zotlabs/Module/Setup.php:585 -msgid "Please see install/INSTALL.txt for additional information." -msgstr "Por favor, consulte install/INSTALL.txt para más información." +#: ../../addon/wholikesme/wholikesme.php:29 +msgid "Who likes me?" +msgstr "¿Quién me ha puesto \"Me gusta\"?" -#: ../../Zotlabs/Module/Setup.php:601 -msgid "" -"This software uses the Smarty3 template engine to render its web views. " -"Smarty3 compiles templates to PHP to speed up rendering." -msgstr "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización." +#: ../../addon/qrator/qrator.php:48 +msgid "QR code" +msgstr "Código QR" -#: ../../Zotlabs/Module/Setup.php:602 -#, php-format -msgid "" -"In order to store these compiled templates, the web server needs to have " -"write access to the directory %s under the top level web folder." -msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal." +#: ../../addon/qrator/qrator.php:63 +msgid "QR Generator" +msgstr "Generador QR" -#: ../../Zotlabs/Module/Setup.php:603 ../../Zotlabs/Module/Setup.php:624 -msgid "" -"Please ensure that the user that your web server runs as (e.g. www-data) has" -" write access to this folder." -msgstr "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)." +#: ../../addon/qrator/qrator.php:64 +msgid "Enter some text" +msgstr "Escribir algún texto" -#: ../../Zotlabs/Module/Setup.php:604 +#: ../../addon/pubcrawl/as.php:1080 ../../include/conversation.php:1166 +#: ../../Zotlabs/Widget/Album.php:84 ../../Zotlabs/Widget/Portfolio.php:95 +#: ../../Zotlabs/Module/Embedphotos.php:174 ../../Zotlabs/Module/Cdav.php:871 +#: ../../Zotlabs/Module/Cdav.php:872 ../../Zotlabs/Module/Cdav.php:879 +#: ../../Zotlabs/Module/Photos.php:790 ../../Zotlabs/Module/Photos.php:1254 +#: ../../Zotlabs/Lib/Activity.php:1192 ../../Zotlabs/Lib/Apps.php:1114 +#: ../../Zotlabs/Lib/Apps.php:1198 ../../Zotlabs/Storage/Browser.php:164 +msgid "Unknown" +msgstr "Desconocido" + +#: ../../addon/pubcrawl/as.php:1348 ../../addon/pubcrawl/as.php:1544 +#: ../../addon/pubcrawl/as.php:1738 ../../include/network.php:1731 +#: ../../Zotlabs/Lib/Activity.php:2294 ../../Zotlabs/Lib/Activity.php:2488 +msgid "ActivityPub" +msgstr "ActivityPub" + +#: ../../addon/pubcrawl/as.php:1692 ../../addon/diaspora/Receiver.php:1592 +#: ../../include/text.php:2125 ../../include/conversation.php:144 +#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Subthread.php:112 +#: ../../Zotlabs/Lib/Activity.php:2444 +msgid "status" +msgstr "el mensaje de estado " + +#: ../../addon/pubcrawl/as.php:1729 ../../addon/diaspora/Receiver.php:1532 +#: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:447 +#: ../../Zotlabs/Lib/Activity.php:2479 #, php-format -msgid "" -"Note: as a security measure, you should give the web server write access to " -"%s only--not the template files (.tpl) that it contains." -msgstr "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene." +msgid "%1$s likes %2$s's %3$s" +msgstr "A %1$s le gusta %3$s de %2$s" -#: ../../Zotlabs/Module/Setup.php:607 +#: ../../addon/pubcrawl/as.php:1731 ../../include/conversation.php:163 +#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:2481 #, php-format -msgid "%s is writable" -msgstr "%s tiene permisos de escritura" +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "A %1$s no le gusta %3$s de %2$s" -#: ../../Zotlabs/Module/Setup.php:623 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 +msgid "ActivityPub Protocol Settings updated." +msgstr "Se han actualizado los ajustes del protocolo ActivityPub." + +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:34 msgid "" -"This software uses the store directory to save uploaded files. The web " -"server needs to have write access to the store directory under the top level" -" web folder" -msgstr "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior" +"The activitypub protocol does not support location independence. Connections" +" you make within that network may be unreachable from alternate channel " +"locations." +msgstr "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos." -#: ../../Zotlabs/Module/Setup.php:627 -msgid "store is writable" -msgstr "\"store\" tiene permisos de escritura" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 +msgid "Activitypub Protocol App" +msgstr "App Protocolo Activitypub" -#: ../../Zotlabs/Module/Setup.php:659 -msgid "" -"SSL certificate cannot be validated. Fix certificate or disable https access" -" to this site." -msgstr "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +msgid "Deliver to ActivityPub recipients in privacy groups" +msgstr "Entregar a los destinatarios de ActivityPub en grupos de canales" -#: ../../Zotlabs/Module/Setup.php:660 +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 msgid "" -"If you have https access to your website or allow connections to TCP port " -"443 (the https: port), you MUST use a browser-valid certificate. You MUST " -"NOT use self-signed certificates!" -msgstr "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo." +"May result in a large number of mentions and expose all the members of your " +"privacy group" +msgstr "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales" -#: ../../Zotlabs/Module/Setup.php:661 -msgid "" -"This restriction is incorporated because public posts from you may for " -"example contain references to images on your own hub." -msgstr "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 +msgid "Send multi-media HTML articles" +msgstr "Enviar artículos multimedia en HTML" -#: ../../Zotlabs/Module/Setup.php:662 -msgid "" -"If your certificate is not recognized, members of other sites (who may " -"themselves have valid certificates) will get a warning message on their own " -"site complaining about security issues." -msgstr "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 +msgid "Not supported by some microblog services such as Mastodon" +msgstr "No soportado por algunos servicios de microblog como Mastodon" -#: ../../Zotlabs/Module/Setup.php:663 -msgid "" -"This can cause usability issues elsewhere (not just on your own site) so we " -"must insist on this requirement." -msgstr "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 +msgid "Activitypub Protocol" +msgstr "Protocolo Activitypub" -#: ../../Zotlabs/Module/Setup.php:664 -msgid "" -"Providers are available that issue free certificates which are browser-" -"valid." -msgstr "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos." +#: ../../addon/ldapauth/ldapauth.php:70 +msgid "An account has been created for you." +msgstr "Se ha creado una cuenta para usted." -#: ../../Zotlabs/Module/Setup.php:665 -msgid "" -"If you are confident that the certificate is valid and signed by a trusted " -"authority, check to see if you have failed to install an intermediate cert. " -"These are not normally required by browsers, but are required for server-to-" -"server communications." -msgstr "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor." +#: ../../addon/ldapauth/ldapauth.php:77 +msgid "Authentication successful but rejected: account creation is disabled." +msgstr "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada." -#: ../../Zotlabs/Module/Setup.php:667 -msgid "SSL certificate validation" -msgstr "validación del certificado SSL" +#: ../../addon/dwpost/Mod_Dwpost.php:24 +msgid "Dreamwidth Crosspost Connector Settings saved." +msgstr "Se han guardado los ajustes del conector de publicación cruzada Dreamwidth." -#: ../../Zotlabs/Module/Setup.php:673 -msgid "" -"Url rewrite in .htaccess is not working. Check your server " -"configuration.Test: " -msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:" +#: ../../addon/dwpost/Mod_Dwpost.php:36 +msgid "Dreamwidth Crosspost Connector App" +msgstr "App Dreamwidth Crosspost Connector" -#: ../../Zotlabs/Module/Setup.php:676 -msgid "Url rewrite is working" -msgstr "La reescritura de las direcciones funciona correctamente" +#: ../../addon/dwpost/Mod_Dwpost.php:37 +msgid "Relay public postings to Dreamwidth" +msgstr "Retransmisión de entradas públicas a Dreamwidth" -#: ../../Zotlabs/Module/Setup.php:689 -msgid "" -"The database configuration file \".htconfig.php\" could not be written. " -"Please use the enclosed text to create a configuration file in your web " -"server root." -msgstr "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor." +#: ../../addon/dwpost/Mod_Dwpost.php:52 +msgid "Dreamwidth username" +msgstr "Nombre de usuario en Dreamwidth" -#: ../../Zotlabs/Module/Setup.php:718 -#: ../../addon/rendezvous/rendezvous.php:401 -msgid "Errors encountered creating database tables." -msgstr "Se han encontrado errores al crear las tablas de la base de datos." +#: ../../addon/dwpost/Mod_Dwpost.php:56 +msgid "Dreamwidth password" +msgstr "Contraseña en Dreamwidth" -#: ../../Zotlabs/Module/Setup.php:764 -msgid "<h1>What next?</h1>" -msgstr "<h1>¿Qué sigue?</h1>" +#: ../../addon/dwpost/Mod_Dwpost.php:60 +msgid "Post to Dreamwidth by default" +msgstr "Publicar en Dreamwidth de forma predeterminada" -#: ../../Zotlabs/Module/Setup.php:765 -msgid "" -"IMPORTANT: You will need to [manually] setup a scheduled task for the " -"poller." -msgstr "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"." +#: ../../addon/dwpost/Mod_Dwpost.php:68 +msgid "Dreamwidth Crosspost Connector" +msgstr "Dreamwidth Crosspost Connector" -#: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135 -msgid "Continue" -msgstr "Continuar" +#: ../../addon/dwpost/dwpost.php:47 +msgid "Post to Dreamwidth" +msgstr "Publicar en Dreamwidth" -#: ../../Zotlabs/Module/Connect.php:104 -msgid "Premium Channel App" -msgstr "App Canal premium" +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslap" +msgstr "una bofetada humillante" -#: ../../Zotlabs/Module/Connect.php:105 -msgid "" -"Allows you to set restrictions and terms on those that connect with your " -"channel" -msgstr "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal" +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslapped" +msgstr "ha abofeteado de forma humillante a" -#: ../../Zotlabs/Module/Connect.php:116 -msgid "Premium Channel Setup" -msgstr "Configuración del canal premium" +#: ../../addon/morepokes/morepokes.php:20 +msgid "shag" +msgstr "un polvo" -#: ../../Zotlabs/Module/Connect.php:118 -msgid "Enable premium channel connection restrictions" -msgstr "Habilitar restricciones de conexión del canal premium" +#: ../../addon/morepokes/morepokes.php:20 +msgid "shagged" +msgstr "ha dejado exhausto/a a" -#: ../../Zotlabs/Module/Connect.php:119 -msgid "" -"Please enter your restrictions or conditions, such as paypal receipt, usage " -"guidelines, etc." -msgstr "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc." +#: ../../addon/morepokes/morepokes.php:21 +msgid "patent" +msgstr "una patente" -#: ../../Zotlabs/Module/Connect.php:121 ../../Zotlabs/Module/Connect.php:141 -msgid "" -"This channel may require additional steps or acknowledgement of the " -"following conditions prior to connecting:" -msgstr "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:" +#: ../../addon/morepokes/morepokes.php:21 +msgid "patented" +msgstr "ha patentado a" -#: ../../Zotlabs/Module/Connect.php:122 -msgid "" -"Potential connections will then see the following text before proceeding:" -msgstr "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:" +#: ../../addon/morepokes/morepokes.php:22 +msgid "hug" +msgstr "un abrazo" -#: ../../Zotlabs/Module/Connect.php:123 ../../Zotlabs/Module/Connect.php:144 -msgid "" -"By continuing, I certify that I have complied with any instructions provided" -" on this page." -msgstr "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página." +#: ../../addon/morepokes/morepokes.php:22 +msgid "hugged" +msgstr "ha abrazado a" -#: ../../Zotlabs/Module/Connect.php:132 -msgid "(No specific instructions have been provided by the channel owner.)" -msgstr "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)" +#: ../../addon/morepokes/morepokes.php:23 +msgid "murder" +msgstr "un asesinato" -#: ../../Zotlabs/Module/Connect.php:140 -msgid "Restricted or Premium Channel" -msgstr "Canal premium o restringido" +#: ../../addon/morepokes/morepokes.php:23 +msgid "murdered" +msgstr "ha asesinado a" -#: ../../Zotlabs/Module/Admin/Queue.php:35 -msgid "Queue Statistics" -msgstr "Estadísticas de la cola" +#: ../../addon/morepokes/morepokes.php:24 +msgid "worship" +msgstr "una alabanza" -#: ../../Zotlabs/Module/Admin/Queue.php:36 -msgid "Total Entries" -msgstr "Total de entradas" +#: ../../addon/morepokes/morepokes.php:24 +msgid "worshipped" +msgstr "ha elogiado a" -#: ../../Zotlabs/Module/Admin/Queue.php:37 -msgid "Priority" -msgstr "Prioridad" +#: ../../addon/morepokes/morepokes.php:25 +msgid "kiss" +msgstr "un beso" -#: ../../Zotlabs/Module/Admin/Queue.php:38 -msgid "Destination URL" -msgstr "Dirección de destino" +#: ../../addon/morepokes/morepokes.php:25 +msgid "kissed" +msgstr "ha besado a" -#: ../../Zotlabs/Module/Admin/Queue.php:39 -msgid "Mark hub permanently offline" -msgstr "Marcar el servidor como permanentemente fuera de línea" +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempt" +msgstr "una tentación" -#: ../../Zotlabs/Module/Admin/Queue.php:40 -msgid "Empty queue for this hub" -msgstr "Vaciar la cola para este servidor" +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempted" +msgstr "ha tentado a" -#: ../../Zotlabs/Module/Admin/Queue.php:41 -msgid "Last known contact" -msgstr "Último contacto conocido" +#: ../../addon/morepokes/morepokes.php:27 +msgid "raise eyebrows at" +msgstr "un levantamiento de cejas" -#: ../../Zotlabs/Module/Admin/Features.php:55 -#: ../../Zotlabs/Module/Admin/Features.php:56 -#: ../../Zotlabs/Module/Settings/Features.php:36 ../../include/features.php:55 -msgid "Off" -msgstr "Desactivado" +#: ../../addon/morepokes/morepokes.php:27 +msgid "raised their eyebrows at" +msgstr "ha levantado las cejas a" -#: ../../Zotlabs/Module/Admin/Features.php:55 -#: ../../Zotlabs/Module/Admin/Features.php:56 -#: ../../Zotlabs/Module/Settings/Features.php:36 ../../include/features.php:55 -msgid "On" -msgstr "Activado" +#: ../../addon/morepokes/morepokes.php:28 +msgid "insult" +msgstr "un insulto" -#: ../../Zotlabs/Module/Admin/Features.php:56 -#, php-format -msgid "Lock feature %s" -msgstr "Bloquear la funcionalidad %s" +#: ../../addon/morepokes/morepokes.php:28 +msgid "insulted" +msgstr "ha insultado a" -#: ../../Zotlabs/Module/Admin/Features.php:64 -msgid "Manage Additional Features" -msgstr "Gestionar las funcionalidades" +#: ../../addon/morepokes/morepokes.php:29 +msgid "praise" +msgstr "un elogio" -#: ../../Zotlabs/Module/Admin/Dbsync.php:19 -#: ../../Zotlabs/Module/Admin/Dbsync.php:59 -msgid "Update has been marked successful" -msgstr "La actualización ha sido marcada como exitosa" +#: ../../addon/morepokes/morepokes.php:29 +msgid "praised" +msgstr "ha elogiado a" -#: ../../Zotlabs/Module/Admin/Dbsync.php:32 -#, php-format -msgid "Verification of update %s failed. Check system logs." -msgstr "Error en la verificación de la actualización %s. Compruebe los registros del sistema." +#: ../../addon/morepokes/morepokes.php:30 +msgid "be dubious of" +msgstr "una indecisión" -#: ../../Zotlabs/Module/Admin/Dbsync.php:35 -#: ../../Zotlabs/Module/Admin/Dbsync.php:74 -#, php-format -msgid "Update %s was successfully applied." -msgstr "La actualización de %s se ha realizado exitosamente." +#: ../../addon/morepokes/morepokes.php:30 +msgid "was dubious of" +msgstr "estaba dudoso de" -#: ../../Zotlabs/Module/Admin/Dbsync.php:39 -#, php-format -msgid "Verifying update %s did not return a status. Unknown if it succeeded." -msgstr "La verificación de la actualización %s no devuelve un estado. Desconocido si tuvo éxito." +#: ../../addon/morepokes/morepokes.php:31 +msgid "eat" +msgstr "una comida" -#: ../../Zotlabs/Module/Admin/Dbsync.php:42 -#, php-format -msgid "Update %s does not contain a verification function." -msgstr "La actualización %s no contiene una función de verificación." +#: ../../addon/morepokes/morepokes.php:31 +msgid "ate" +msgstr "ha comido" -#: ../../Zotlabs/Module/Admin/Dbsync.php:46 -#: ../../Zotlabs/Module/Admin/Dbsync.php:81 -#, php-format -msgid "Update function %s could not be found." -msgstr "No se encuentra la función de actualización de %s." +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggle and fawn at" +msgstr "una sonrisa aduladora" -#: ../../Zotlabs/Module/Admin/Dbsync.php:71 -#, php-format -msgid "Executing update procedure %s failed. Check system logs." -msgstr "Error al ejecutar el procedimiento de actualización %s. Compruebe los registros del sistema." +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggled and fawned at" +msgstr "ha sonreído y adulado a" -#: ../../Zotlabs/Module/Admin/Dbsync.php:78 -#, php-format -msgid "" -"Update %s did not return a status. It cannot be determined if it was " -"successful." -msgstr "La actualización %s no devuelve un estado. No se puede determinar si tuvo éxito." +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubt" +msgstr "una duda" -#: ../../Zotlabs/Module/Admin/Dbsync.php:99 -msgid "Failed Updates" -msgstr "Han fallado las actualizaciones" +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubted" +msgstr "ha dudado de" -#: ../../Zotlabs/Module/Admin/Dbsync.php:101 -msgid "Mark success (if update was manually applied)" -msgstr "Marcar como exitosa (si la actualización se ha hecho manualmente)" +#: ../../addon/morepokes/morepokes.php:34 +msgid "glare" +msgstr "una mirada furiosa" + +#: ../../addon/morepokes/morepokes.php:34 +msgid "glared at" +msgstr "ha mirado con furia" -#: ../../Zotlabs/Module/Admin/Dbsync.php:102 -msgid "Attempt to verify this update if a verification procedure exists" -msgstr "Intentar verificar esta actualización si existe un procedimiento de verificación." +#: ../../addon/morepokes/morepokes.php:35 +msgid "fuck" +msgstr "una mierda" -#: ../../Zotlabs/Module/Admin/Dbsync.php:103 -msgid "Attempt to execute this update step automatically" -msgstr "Intentar ejecutar este paso de actualización automáticamente" +#: ../../addon/morepokes/morepokes.php:35 +msgid "fucked" +msgstr "ha mandado a la mierda a" -#: ../../Zotlabs/Module/Admin/Dbsync.php:108 -msgid "No failed updates." -msgstr "No ha fallado ninguna actualización." +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonk" +msgstr "un golpe" -#: ../../Zotlabs/Module/Admin/Accounts.php:37 -#, php-format -msgid "%s account blocked/unblocked" -msgid_plural "%s account blocked/unblocked" -msgstr[0] "%s cuenta bloqueada/desbloqueada" -msgstr[1] "%s cuenta bloqueada/desbloqueada" +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonked" +msgstr "ha golpeado a" -#: ../../Zotlabs/Module/Admin/Accounts.php:44 -#, php-format -msgid "%s account deleted" -msgid_plural "%s accounts deleted" -msgstr[0] "%s cuentas eliminadas" -msgstr[1] "%s cuentas eliminadas" +#: ../../addon/morepokes/morepokes.php:37 +msgid "declare undying love for" +msgstr "una declaración de amor eterno" -#: ../../Zotlabs/Module/Admin/Accounts.php:80 -msgid "Account not found" -msgstr "Cuenta no encontrada" +#: ../../addon/morepokes/morepokes.php:37 +msgid "declared undying love for" +msgstr "ha declarado amor eterno a" -#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2632 -#, php-format -msgid "Account '%s' deleted" -msgstr "La cuenta '%s' ha sido eliminada" +#: ../../addon/rendezvous/rendezvous.php:57 +msgid "Errors encountered deleting database table " +msgstr "Errores encontrados al eliminar la tabla de la base de datos" -#: ../../Zotlabs/Module/Admin/Accounts.php:99 -#, php-format -msgid "Account '%s' blocked" -msgstr "La cuenta '%s' ha sido bloqueada" +#: ../../addon/rendezvous/rendezvous.php:95 +#: ../../addon/twitter/twitter.php:498 +msgid "Submit Settings" +msgstr "Enviar los ajustes" -#: ../../Zotlabs/Module/Admin/Accounts.php:107 -#, php-format -msgid "Account '%s' unblocked" -msgstr "La cuenta '%s' ha sido desbloqueada" +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "Drop tables when uninstalling?" +msgstr "¿Eliminar tablas al desinstalar?" -#: ../../Zotlabs/Module/Admin/Accounts.php:166 -#: ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Themes.php:122 -#: ../../Zotlabs/Module/Admin/Themes.php:156 -#: ../../Zotlabs/Module/Admin/Site.php:287 -#: ../../Zotlabs/Module/Admin/Addons.php:341 -#: ../../Zotlabs/Module/Admin/Addons.php:439 -#: ../../Zotlabs/Module/Admin/Security.php:92 -#: ../../Zotlabs/Module/Admin.php:138 -msgid "Administration" -msgstr "Administración" +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "" +"If checked, the Rendezvous database tables will be deleted when the plugin " +"is uninstalled." +msgstr "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin." -#: ../../Zotlabs/Module/Admin/Accounts.php:167 -#: ../../Zotlabs/Module/Admin/Accounts.php:180 -#: ../../Zotlabs/Module/Admin.php:96 ../../Zotlabs/Widget/Admin.php:23 -msgid "Accounts" -msgstr "Cuentas" +#: ../../addon/rendezvous/rendezvous.php:97 +msgid "Mapbox Access Token" +msgstr "Token de acceso de Mapbox" -#: ../../Zotlabs/Module/Admin/Accounts.php:169 -#: ../../Zotlabs/Module/Admin/Channels.php:148 -msgid "select all" -msgstr "seleccionar todo" +#: ../../addon/rendezvous/rendezvous.php:97 +msgid "" +"If you enter a Mapbox access token, it will be used to retrieve map tiles " +"from Mapbox instead of the default OpenStreetMap tile server." +msgstr "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado." -#: ../../Zotlabs/Module/Admin/Accounts.php:170 -msgid "Registrations waiting for confirm" -msgstr "Inscripciones en espera de confirmación" +#: ../../addon/rendezvous/rendezvous.php:162 +msgid "Rendezvous" +msgstr "Rendezvous" -#: ../../Zotlabs/Module/Admin/Accounts.php:171 -msgid "Request date" -msgstr "Fecha de solicitud" +#: ../../addon/rendezvous/rendezvous.php:167 +msgid "" +"This identity has been deleted by another member due to inactivity. Please " +"press the \"New identity\" button or refresh the page to register a new " +"identity. You may use the same name." +msgstr "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre." -#: ../../Zotlabs/Module/Admin/Accounts.php:172 -msgid "No registrations." -msgstr "Sin registros." +#: ../../addon/rendezvous/rendezvous.php:168 +msgid "Welcome to Rendezvous!" +msgstr "¡Bienvenido/a a Rendevous!" -#: ../../Zotlabs/Module/Admin/Accounts.php:173 -#: ../../Zotlabs/Module/Connections.php:320 ../../include/conversation.php:735 -msgid "Approve" -msgstr "Aprobar" +#: ../../addon/rendezvous/rendezvous.php:169 +msgid "" +"Enter your name to join this rendezvous. To begin sharing your location with" +" the other members, tap the GPS control. When your location is discovered, a" +" red dot will appear and others will be able to see you on the map." +msgstr "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa." -#: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Authorize.php:33 -msgid "Deny" -msgstr "Rechazar" +#: ../../addon/rendezvous/rendezvous.php:171 +msgid "Let's meet here" +msgstr "Reunámonos aquí" -#: ../../Zotlabs/Module/Admin/Accounts.php:176 -#: ../../Zotlabs/Module/Connedit.php:636 -msgid "Block" -msgstr "Bloquear" +#: ../../addon/rendezvous/rendezvous.php:172 +#: ../../Zotlabs/Widget/Wiki_page_history.php:22 +#: ../../Zotlabs/Module/Group.php:154 ../../Zotlabs/Module/Oauth.php:113 +#: ../../Zotlabs/Module/Oauth.php:139 ../../Zotlabs/Module/Chat.php:259 +#: ../../Zotlabs/Module/Cdav.php:1373 +#: ../../Zotlabs/Module/Sharedwithme.php:104 +#: ../../Zotlabs/Module/Admin/Channels.php:159 +#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 +#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923 +#: ../../Zotlabs/Lib/NativeWikiPage.php:561 +#: ../../Zotlabs/Storage/Browser.php:291 +msgid "Name" +msgstr "Nombre" -#: ../../Zotlabs/Module/Admin/Accounts.php:177 -#: ../../Zotlabs/Module/Connedit.php:636 -msgid "Unblock" -msgstr "Desbloquear" +#: ../../addon/rendezvous/rendezvous.php:173 +#: ../../addon/cart/submodules/hzservices.php:654 +#: ../../addon/cart/submodules/manualcat.php:262 +#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:481 +#: ../../Zotlabs/Module/Appman.php:145 ../../Zotlabs/Module/Rbmark.php:101 +msgid "Description" +msgstr "Descripción" -#: ../../Zotlabs/Module/Admin/Accounts.php:182 -msgid "ID" -msgstr "ID" +#: ../../addon/rendezvous/rendezvous.php:174 +msgid "New marker" +msgstr "Nuevo marcador" -#: ../../Zotlabs/Module/Admin/Accounts.php:184 -msgid "All Channels" -msgstr "Todos los canales" +#: ../../addon/rendezvous/rendezvous.php:175 +msgid "Edit marker" +msgstr "Editar un marcador" -#: ../../Zotlabs/Module/Admin/Accounts.php:185 -msgid "Register date" -msgstr "Fecha de registro" +#: ../../addon/rendezvous/rendezvous.php:176 +msgid "New identity" +msgstr "Nueva identidad" -#: ../../Zotlabs/Module/Admin/Accounts.php:186 -msgid "Last login" -msgstr "Último acceso" +#: ../../addon/rendezvous/rendezvous.php:177 +msgid "Delete marker" +msgstr "Eliminar un marcador" -#: ../../Zotlabs/Module/Admin/Accounts.php:187 -msgid "Expires" -msgstr "Caduca" +#: ../../addon/rendezvous/rendezvous.php:178 +msgid "Delete member" +msgstr "Eliminar un miembro" -#: ../../Zotlabs/Module/Admin/Accounts.php:188 -msgid "Service Class" -msgstr "Clase de servicio" +#: ../../addon/rendezvous/rendezvous.php:179 +msgid "Edit proximity alert" +msgstr "Editar alerta de proximidad" -#: ../../Zotlabs/Module/Admin/Accounts.php:190 +#: ../../addon/rendezvous/rendezvous.php:180 msgid "" -"Selected accounts will be deleted!\\n\\nEverything these accounts had posted" -" on this site will be permanently deleted!\\n\\nAre you sure?" -msgstr "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?" +"A proximity alert will be issued when this member is within a certain radius" +" of you.<br><br>Enter a radius in meters (0 to disable):" +msgstr "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):" -#: ../../Zotlabs/Module/Admin/Accounts.php:191 -msgid "" -"The account {0} will be deleted!\\n\\nEverything this account has posted on " -"this site will be permanently deleted!\\n\\nAre you sure?" -msgstr "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?" +#: ../../addon/rendezvous/rendezvous.php:180 +#: ../../addon/rendezvous/rendezvous.php:185 +msgid "distance" +msgstr "distancia" -#: ../../Zotlabs/Module/Admin/Logs.php:28 -msgid "Log settings updated." -msgstr "Actualizado el informe de configuraciones." +#: ../../addon/rendezvous/rendezvous.php:181 +msgid "Proximity alert distance (meters)" +msgstr "Distancia (en metros) para la alerta de proximidad" -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48 -#: ../../Zotlabs/Widget/Admin.php:58 -msgid "Logs" -msgstr "Informes" +#: ../../addon/rendezvous/rendezvous.php:182 +#: ../../addon/rendezvous/rendezvous.php:184 +msgid "" +"A proximity alert will be issued when you are within a certain radius of the" +" marker location.<br><br>Enter a radius in meters (0 to disable):" +msgstr "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):" -#: ../../Zotlabs/Module/Admin/Logs.php:85 -msgid "Clear" -msgstr "Vaciar" +#: ../../addon/rendezvous/rendezvous.php:183 +msgid "Marker proximity alert" +msgstr "Marcador de alerta de proximidad" -#: ../../Zotlabs/Module/Admin/Logs.php:91 -msgid "Debugging" -msgstr "Depuración" +#: ../../addon/rendezvous/rendezvous.php:186 +msgid "Reminder note" +msgstr "Recordatorio" -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "Log file" -msgstr "Fichero de informe" +#: ../../addon/rendezvous/rendezvous.php:187 +msgid "" +"Enter a note to be displayed when you are within the specified proximity..." +msgstr "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..." -#: ../../Zotlabs/Module/Admin/Logs.php:92 +#: ../../addon/rendezvous/rendezvous.php:199 +msgid "Add new rendezvous" +msgstr "Añadir una nueva cita" + +#: ../../addon/rendezvous/rendezvous.php:200 msgid "" -"Must be writable by web server. Relative to your top-level webserver " -"directory." -msgstr "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal." +"Create a new rendezvous and share the access link with those you wish to " +"invite to the group. Those who open the link become members of the " +"rendezvous. They can view other member locations, add markers to the map, or" +" share their own locations with the group." +msgstr "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo." + +#: ../../addon/rendezvous/rendezvous.php:232 +msgid "You have no rendezvous. Press the button above to create a rendezvous!" +msgstr "No tiene ninguna cita. ¡Presione el botón de arriba para crear una!" -#: ../../Zotlabs/Module/Admin/Logs.php:93 -msgid "Log level" -msgstr "Nivel de depuración" +#: ../../addon/rendezvous/rendezvous.php:401 +#: ../../Zotlabs/Module/Setup.php:718 +msgid "Errors encountered creating database tables." +msgstr "Se han encontrado errores al crear las tablas de la base de datos." -#: ../../Zotlabs/Module/Admin/Channels.php:31 -#, php-format -msgid "%s channel censored/uncensored" -msgid_plural "%s channels censored/uncensored" -msgstr[0] "%s canales censurados/no censurados" -msgstr[1] "%s canales censurados/no censurados" +#: ../../addon/startpage/Mod_Startpage.php:50 +msgid "Startpage App" +msgstr "App Startpage" -#: ../../Zotlabs/Module/Admin/Channels.php:40 -#, php-format -msgid "%s channel code allowed/disallowed" -msgid_plural "%s channels code allowed/disallowed" -msgstr[0] "%s código permitido/no permitido al canal" -msgstr[1] "%s código permitido/no permitido al canal" +#: ../../addon/startpage/Mod_Startpage.php:51 +msgid "Set a preferred page to load on login from home page" +msgstr "Establecer una página preferida para cargar al iniciar sesión desde la página de inicio" -#: ../../Zotlabs/Module/Admin/Channels.php:46 -#, php-format -msgid "%s channel deleted" -msgid_plural "%s channels deleted" -msgstr[0] "%s canales eliminados" -msgstr[1] "%s canales eliminados" +#: ../../addon/startpage/Mod_Startpage.php:62 +msgid "Page to load after login" +msgstr "Página para cargar tras el inicio de sesión" -#: ../../Zotlabs/Module/Admin/Channels.php:65 -msgid "Channel not found" -msgstr "Canal no encontrado" +#: ../../addon/startpage/Mod_Startpage.php:62 +msgid "" +"Examples: "apps", "network?f=&gid=37" (privacy " +"collection), "channel" or "notifications/system" (leave " +"blank for default network page (grid)." +msgstr "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)." -#: ../../Zotlabs/Module/Admin/Channels.php:75 -#, php-format -msgid "Channel '%s' deleted" -msgstr "Canal '%s' eliminado" +#: ../../addon/startpage/Mod_Startpage.php:70 +msgid "Startpage" +msgstr "Startpage" -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' censored" -msgstr "Canal '%s' censurado" +#: ../../addon/adultphotoflag/adultphotoflag.php:24 +msgid "Flag Adult Photos" +msgstr "Indicador (\"flag\") de fotos de adultos" -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' uncensored" -msgstr "Canal '%s' no censurado" +#: ../../addon/adultphotoflag/adultphotoflag.php:25 +msgid "" +"Provide photo edit option to hide inappropriate photos from default album " +"view" +msgstr "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada" -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code allowed" -msgstr "Código permitido al canal '%s'" +#: ../../addon/upgrade_info/upgrade_info.php:48 +msgid "Your channel has been upgraded to $Projectname version" +msgstr "Su canal ha sido actualizado a la versión $Projectname" -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code disallowed" -msgstr "Código no permitido al canal '%s'" +#: ../../addon/upgrade_info/upgrade_info.php:50 +msgid "Please have a look at the" +msgstr "Por favor, eche un vistazo a la " -#: ../../Zotlabs/Module/Admin/Channels.php:146 -#: ../../Zotlabs/Module/Admin.php:114 ../../Zotlabs/Widget/Admin.php:24 -msgid "Channels" -msgstr "Canales" +#: ../../addon/upgrade_info/upgrade_info.php:52 +msgid "git history" +msgstr "historial del git" -#: ../../Zotlabs/Module/Admin/Channels.php:150 -msgid "Censor" -msgstr "Censurar" +#: ../../addon/upgrade_info/upgrade_info.php:54 +msgid "change log" +msgstr "lista de cambios" -#: ../../Zotlabs/Module/Admin/Channels.php:151 -msgid "Uncensor" -msgstr "No censurar" +#: ../../addon/upgrade_info/upgrade_info.php:55 +msgid "for further info." +msgstr "para más información." -#: ../../Zotlabs/Module/Admin/Channels.php:152 -msgid "Allow Code" -msgstr "Permitir código" +#: ../../addon/upgrade_info/upgrade_info.php:60 +msgid "Upgrade Info" +msgstr "Información de actualización" -#: ../../Zotlabs/Module/Admin/Channels.php:153 -msgid "Disallow Code" -msgstr "No permitir código" +#: ../../addon/upgrade_info/upgrade_info.php:64 +msgid "Do not show this again" +msgstr "No mostrar esto de nuevo" -#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:423 -msgid "Channel" -msgstr "Canal" +#: ../../addon/twitter/Mod_Twitter.php:65 +msgid "Twitter settings updated." +msgstr "Se han actualizado los ajustes de Twitter." -#: ../../Zotlabs/Module/Admin/Channels.php:158 -msgid "UID" -msgstr "UID" +#: ../../addon/twitter/Mod_Twitter.php:78 +msgid "Twitter Crosspost Connector App" +msgstr "App Twitter Crosspost Connector" -#: ../../Zotlabs/Module/Admin/Channels.php:162 +#: ../../addon/twitter/Mod_Twitter.php:79 +msgid "Relay public posts to Twitter" +msgstr "Retransmisión de entradas públicas a Twitter" + +#: ../../addon/twitter/Mod_Twitter.php:103 msgid "" -"Selected channels will be deleted!\\n\\nEverything that was posted in these " -"channels on this site will be permanently deleted!\\n\\nAre you sure?" -msgstr "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?" +"No consumer key pair for Twitter found. Please contact your site " +"administrator." +msgstr "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio." -#: ../../Zotlabs/Module/Admin/Channels.php:163 +#: ../../addon/twitter/Mod_Twitter.php:125 msgid "" -"The channel {0} will be deleted!\\n\\nEverything that was posted in this " -"channel on this site will be permanently deleted!\\n\\nAre you sure?" -msgstr "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?" +"At this Hubzilla instance the Twitter plugin was enabled but you have not " +"yet connected your account to your Twitter account. To do so click the " +"button below to get a PIN from Twitter which you have to copy into the input" +" box below and submit the form. Only your <strong>public</strong> posts will" +" be posted to Twitter." +msgstr "En esta instancia de Hubzilla, el complemento de Twitter estaba habilitado pero aún no ha conectado su cuenta a la cuenta de Twitter. Para ello, haga clic en el botón de abajo, para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus entradas <strong>públicas</ strong> se publicarán en Twitter." -#: ../../Zotlabs/Module/Admin/Themes.php:26 -msgid "Theme settings updated." -msgstr "Ajustes del tema actualizados." +#: ../../addon/twitter/Mod_Twitter.php:127 +msgid "Log in with Twitter" +msgstr "Iniciar sesión en Twitter" -#: ../../Zotlabs/Module/Admin/Themes.php:61 -msgid "No themes found." -msgstr "No se han encontrado temas." +#: ../../addon/twitter/Mod_Twitter.php:130 +msgid "Copy the PIN from Twitter here" +msgstr "Copiar aquí el PIN de Twitter" -#: ../../Zotlabs/Module/Admin/Themes.php:72 -#: ../../Zotlabs/Module/Admin/Addons.php:259 ../../Zotlabs/Module/Thing.php:94 -#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45 -#: ../../Zotlabs/Module/Display.php:455 -#: ../../Zotlabs/Module/Filestorage.php:26 ../../Zotlabs/Module/Admin.php:62 -#: ../../addon/flashcards/Mod_Flashcards.php:240 -#: ../../addon/flashcards/Mod_Flashcards.php:241 ../../include/items.php:3713 -msgid "Item not found." -msgstr "Elemento no encontrado." +#: ../../addon/twitter/Mod_Twitter.php:152 +msgid "" +"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile " +"details from unknown viewers?</em>) the link potentially included in public " +"postings relayed to Twitter will lead the visitor to a blank page informing " +"the visitor that the access to your profile has been restricted." +msgstr "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido." -#: ../../Zotlabs/Module/Admin/Themes.php:95 -#: ../../Zotlabs/Module/Admin/Addons.php:310 -msgid "Disable" -msgstr "Desactivar" +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Twitter post length" +msgstr "Longitud del mensaje en Twitter" -#: ../../Zotlabs/Module/Admin/Themes.php:97 -#: ../../Zotlabs/Module/Admin/Addons.php:313 -msgid "Enable" -msgstr "Activar" +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Maximum tweet length" +msgstr "Longitud máxima del tweet" -#: ../../Zotlabs/Module/Admin/Themes.php:116 -msgid "Screenshot" -msgstr "Instantánea de pantalla" +#: ../../addon/twitter/Mod_Twitter.php:162 +msgid "Send public postings to Twitter by default" +msgstr "Enviar mensajes públicos a Twitter de forma predeterminada" -#: ../../Zotlabs/Module/Admin/Themes.php:123 -#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28 -msgid "Themes" -msgstr "Temas" +#: ../../addon/twitter/Mod_Twitter.php:162 +msgid "" +"If enabled your public postings will be posted to the associated Twitter " +"account by default" +msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada." -#: ../../Zotlabs/Module/Admin/Themes.php:124 -#: ../../Zotlabs/Module/Admin/Addons.php:343 -msgid "Toggle" -msgstr "Cambiar" +#: ../../addon/twitter/Mod_Twitter.php:181 +msgid "Twitter Crosspost Connector" +msgstr "Twitter Crosspost Connector" -#: ../../Zotlabs/Module/Admin/Themes.php:125 -#: ../../Zotlabs/Module/Admin/Addons.php:344 ../../Zotlabs/Lib/Apps.php:338 -#: ../../Zotlabs/Widget/Newmember.php:53 -#: ../../Zotlabs/Widget/Settings_menu.php:61 ../../include/nav.php:101 -msgid "Settings" -msgstr "Ajustes" +#: ../../addon/twitter/twitter.php:109 +msgid "Post to Twitter" +msgstr "Publicar en Twitter" -#: ../../Zotlabs/Module/Admin/Themes.php:134 -#: ../../Zotlabs/Module/Admin/Addons.php:351 -msgid "Author: " -msgstr "Autor:" +#: ../../addon/pumpio/pumpio.php:152 +msgid "You are now authenticated to pumpio." +msgstr "Ahora está autenticado en pump.io." -#: ../../Zotlabs/Module/Admin/Themes.php:135 -#: ../../Zotlabs/Module/Admin/Addons.php:352 -msgid "Maintainer: " -msgstr "Mantenedor:" +#: ../../addon/pumpio/pumpio.php:153 +msgid "return to the featured settings page" +msgstr "Volver a la página de configuración destacada" -#: ../../Zotlabs/Module/Admin/Themes.php:162 -msgid "[Experimental]" -msgstr "[Experimental]" +#: ../../addon/pumpio/pumpio.php:168 +msgid "Post to Pump.io" +msgstr "Publicar en Pump.io" -#: ../../Zotlabs/Module/Admin/Themes.php:163 -msgid "[Unsupported]" -msgstr "[No soportado]" +#: ../../addon/pumpio/Mod_Pumpio.php:40 +msgid "Pump.io Settings saved." +msgstr "Se han guardado los ajustes de Pump.io" -#: ../../Zotlabs/Module/Admin/Site.php:161 -msgid "Site settings updated." -msgstr "Ajustes del sitio actualizados." +#: ../../addon/pumpio/Mod_Pumpio.php:53 +msgid "Pump.io Crosspost Connector App" +msgstr "App Pump.io Crosspost Connector" -#: ../../Zotlabs/Module/Admin/Site.php:187 -#: ../../view/theme/redbasic_c/php/config.php:15 -#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3229 -msgid "Default" -msgstr "Predeterminado" +#: ../../addon/pumpio/Mod_Pumpio.php:54 +msgid "Relay public posts to pump.io" +msgstr "Retransmisión de entradas públicas a pump.io" -#: ../../Zotlabs/Module/Admin/Site.php:198 -#: ../../Zotlabs/Module/Settings/Display.php:119 -#, php-format -msgid "%s - (Incompatible)" -msgstr "%s - (Incompatible)" +#: ../../addon/pumpio/Mod_Pumpio.php:73 +msgid "Pump.io servername" +msgstr "Nombre del servidor de Pump.io" -#: ../../Zotlabs/Module/Admin/Site.php:205 -msgid "mobile" -msgstr "móvil" +#: ../../addon/pumpio/Mod_Pumpio.php:73 +msgid "Without \"http://\" or \"https://\"" +msgstr "Sin \"http://\" or \"https://\"" + +#: ../../addon/pumpio/Mod_Pumpio.php:77 +msgid "Pump.io username" +msgstr "Nombre de usuario en Pump.io" -#: ../../Zotlabs/Module/Admin/Site.php:207 -msgid "experimental" -msgstr "experimental" +#: ../../addon/pumpio/Mod_Pumpio.php:77 +msgid "Without the servername" +msgstr "Sin el nombre del servidor" -#: ../../Zotlabs/Module/Admin/Site.php:209 -msgid "unsupported" -msgstr "no soportado" +#: ../../addon/pumpio/Mod_Pumpio.php:88 +msgid "You are not authenticated to pumpio" +msgstr "No está autenticado en pump.io" -#: ../../Zotlabs/Module/Admin/Site.php:256 -msgid "Yes - with approval" -msgstr "Sí - con aprobación" +#: ../../addon/pumpio/Mod_Pumpio.php:90 +msgid "(Re-)Authenticate your pump.io connection" +msgstr "(Re-)Autenticar su conexión en pump.io" -#: ../../Zotlabs/Module/Admin/Site.php:262 -msgid "My site is not a public server" -msgstr "Mi sitio no es un servidor público" +#: ../../addon/pumpio/Mod_Pumpio.php:94 +msgid "Post to pump.io by default" +msgstr "Publicar por defecto en pump.io" -#: ../../Zotlabs/Module/Admin/Site.php:263 -msgid "My site has paid access only" -msgstr "Mi sitio es un servicio de pago" +#: ../../addon/pumpio/Mod_Pumpio.php:98 +msgid "Should posts be public" +msgstr "¿Las entradas deben ser públicas?" -#: ../../Zotlabs/Module/Admin/Site.php:264 -msgid "My site has free access only" -msgstr "Mi sitio es un servicio gratuito" +#: ../../addon/pumpio/Mod_Pumpio.php:102 +msgid "Mirror all public posts" +msgstr "Reflejar todos los mensajes públicos" -#: ../../Zotlabs/Module/Admin/Site.php:265 -msgid "My site offers free accounts with optional paid upgrades" -msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago" +#: ../../addon/pumpio/Mod_Pumpio.php:112 +msgid "Pump.io Crosspost Connector" +msgstr "Pump.io Crosspost Connector" -#: ../../Zotlabs/Module/Admin/Site.php:279 -msgid "Default permission role for new accounts" -msgstr "Permisos de rol por defecto para las nuevas cuentas" +#: ../../addon/gravatar/gravatar.php:123 +msgid "generic profile image" +msgstr "imagen del perfil general" -#: ../../Zotlabs/Module/Admin/Site.php:279 -msgid "" -"This role will be used for the first channel created after registration." -msgstr "Este rol se utilizará para el primer canal creado después del registro." +#: ../../addon/gravatar/gravatar.php:124 +msgid "random geometric pattern" +msgstr "patrón geométrico aleatorio" -#: ../../Zotlabs/Module/Admin/Site.php:288 ../../Zotlabs/Widget/Admin.php:22 -msgid "Site" -msgstr "Sitio" +#: ../../addon/gravatar/gravatar.php:125 +msgid "monster face" +msgstr "cara de monstruo" -#: ../../Zotlabs/Module/Admin/Site.php:290 -#: ../../Zotlabs/Module/Register.php:277 -msgid "Registration" -msgstr "Registro" +#: ../../addon/gravatar/gravatar.php:126 +msgid "computer generated face" +msgstr "cara generada por ordenador" -#: ../../Zotlabs/Module/Admin/Site.php:291 -msgid "File upload" -msgstr "Subir fichero" +#: ../../addon/gravatar/gravatar.php:127 +msgid "retro arcade style face" +msgstr "cara de estilo retro arcade" -#: ../../Zotlabs/Module/Admin/Site.php:292 -msgid "Policies" -msgstr "Políticas" +#: ../../addon/gravatar/gravatar.php:128 +msgid "Hub default profile photo" +msgstr "Foto del perfil por defecto del hub" -#: ../../Zotlabs/Module/Admin/Site.php:293 -#: ../../include/contact_widgets.php:16 -msgid "Advanced" -msgstr "Avanzado" +#: ../../addon/gravatar/gravatar.php:143 +msgid "Information" +msgstr "Información" -#: ../../Zotlabs/Module/Admin/Site.php:297 -#: ../../addon/statusnet/statusnet.php:593 -msgid "Site name" -msgstr "Nombre del sitio" +#: ../../addon/gravatar/gravatar.php:143 +msgid "" +"Libravatar addon is installed, too. Please disable Libravatar addon or this " +"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if " +"nothing was found at Libravatar." +msgstr "El addon Libravatar también está instalado. Por favor deshabilite el addon de Libravatar o este addon de Gravatar.<br> El addon de Libravatar volverá a Gravatar si no se encuentra nada en Libravatar." -#: ../../Zotlabs/Module/Admin/Site.php:299 -msgid "Banner/Logo" -msgstr "Banner/Logo" +#: ../../addon/gravatar/gravatar.php:150 +#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:43 +msgid "Save Settings" +msgstr "Guardar ajustes" -#: ../../Zotlabs/Module/Admin/Site.php:299 -msgid "Unfiltered HTML/CSS/JS is allowed" -msgstr "Se permite HTML/CSS/JS sin filtrar" +#: ../../addon/gravatar/gravatar.php:151 +msgid "Default avatar image" +msgstr "Imagen del avatar por defecto" -#: ../../Zotlabs/Module/Admin/Site.php:300 -msgid "Administrator Information" -msgstr "Información del Administrador" +#: ../../addon/gravatar/gravatar.php:151 +msgid "Select default avatar image if none was found at Gravatar. See README" +msgstr "Selecciona la imagen de avatar predeterminada si no se encontró ninguna en Gravatar. Ver README" -#: ../../Zotlabs/Module/Admin/Site.php:300 -msgid "" -"Contact information for site administrators. Displayed on siteinfo page. " -"BBCode can be used here" -msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" +#: ../../addon/gravatar/gravatar.php:152 +msgid "Rating of images" +msgstr "Valoración de las imágenes" -#: ../../Zotlabs/Module/Admin/Site.php:301 -#: ../../Zotlabs/Module/Siteinfo.php:24 -msgid "Site Information" -msgstr "Información sobre el sitio" +#: ../../addon/gravatar/gravatar.php:152 +msgid "Select the appropriate avatar rating for your site. See README" +msgstr "Seleccione la valoración adecuada del avatar para su sitio. Ver README" -#: ../../Zotlabs/Module/Admin/Site.php:301 -msgid "" -"Publicly visible description of this site. Displayed on siteinfo page. " -"BBCode can be used here" -msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" +#: ../../addon/gravatar/gravatar.php:165 +msgid "Gravatar settings updated." +msgstr "Se han actualizado los ajustes de Gravatar." -#: ../../Zotlabs/Module/Admin/Site.php:302 -msgid "System language" -msgstr "Idioma del sistema" +#: ../../addon/msgfooter/msgfooter.php:47 +msgid "text to include in all outgoing posts from this site" +msgstr "texto a incluir en todos los mensajes salientes de este sitio" -#: ../../Zotlabs/Module/Admin/Site.php:303 -msgid "System theme" -msgstr "Tema gráfico del sistema" +#: ../../addon/sendzid/Mod_Sendzid.php:14 +msgid "Send your identity to all websites" +msgstr "Enviar su identidad a todos los sitios web" -#: ../../Zotlabs/Module/Admin/Site.php:303 -msgid "" -"Default system theme - may be over-ridden by user profiles - <a href='#' " -"id='cnftheme'>change theme settings</a>" -msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>" +#: ../../addon/sendzid/Mod_Sendzid.php:20 +msgid "Sendzid App" +msgstr "App Sendzid" -#: ../../Zotlabs/Module/Admin/Site.php:306 -msgid "Allow Feeds as Connections" -msgstr "Permitir contenidos RSS como conexiones" +#: ../../addon/sendzid/Mod_Sendzid.php:32 +msgid "Send ZID" +msgstr "Enviar ZID" -#: ../../Zotlabs/Module/Admin/Site.php:306 -msgid "(Heavy system resource usage)" -msgstr "(Uso intenso de los recursos del sistema)" +#: ../../addon/cart/widgets/catalogitem.php:57 +#: ../../addon/cart/submodules/hzservices.php:657 +#: ../../addon/cart/submodules/manualcat.php:265 +msgid "Price" +msgstr "Precio" -#: ../../Zotlabs/Module/Admin/Site.php:307 -msgid "Maximum image size" -msgstr "Tamaño máximo de la imagen" +#: ../../addon/cart/manual_payments.php:7 +msgid "Error: order mismatch. Please try again." +msgstr "Error: desajuste de pedidos. Por favor, inténtelo de nuevo." -#: ../../Zotlabs/Module/Admin/Site.php:307 -msgid "" -"Maximum size in bytes of uploaded images. Default is 0, which means no " -"limits." -msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites." +#: ../../addon/cart/manual_payments.php:61 +msgid "Manual payments are not enabled." +msgstr "Los pagos manuales no están habilitados." -#: ../../Zotlabs/Module/Admin/Site.php:308 -msgid "Does this site allow new member registration?" -msgstr "¿Debe este sitio permitir el registro de nuevos miembros?" +#: ../../addon/cart/manual_payments.php:68 +#: ../../addon/cart/submodules/paypalbutton.php:392 +#: ../../addon/cart/cart.php:1460 +msgid "Order not found." +msgstr "El pedido no se ha encontrado." -#: ../../Zotlabs/Module/Admin/Site.php:309 -msgid "Invitation only" -msgstr "Solo con una invitación" +#: ../../addon/cart/manual_payments.php:77 +msgid "Finished" +msgstr "Terminado" -#: ../../Zotlabs/Module/Admin/Site.php:309 -msgid "" -"Only allow new member registrations with an invitation code. Above register " -"policy must be set to Yes." -msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"." +#: ../../addon/cart/manual_payments.php:93 +#: ../../addon/cart/submodules/paypalbutton.php:456 +#: ../../addon/cart/myshop.php:37 ../../addon/cart/cart.php:1438 +#: ../../Zotlabs/Module/Wiki.php:77 +msgid "Invalid channel" +msgstr "Canal no válido" -#: ../../Zotlabs/Module/Admin/Site.php:310 -msgid "Minimum age" -msgstr "Edad mínima" +#: ../../addon/cart/submodules/subscriptions.php:151 +msgid "Enable Subscription Management Module" +msgstr "Habilitar el módulo de gestión de suscripciones" -#: ../../Zotlabs/Module/Admin/Site.php:310 -msgid "Minimum age (in years) for who may register on this site." -msgstr "Edad mínima (en años) para poder registrarse en este sitio." +#: ../../addon/cart/submodules/subscriptions.php:223 +msgid "" +"Cannot include subscription items with different terms in the same order." +msgstr "No se pueden incluir artículos de suscripción con términos diferentes en el mismo orden." -#: ../../Zotlabs/Module/Admin/Site.php:311 -msgid "Which best describes the types of account offered by this hub?" -msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?" +#: ../../addon/cart/submodules/subscriptions.php:372 +msgid "Select Subscription to Edit" +msgstr "Seleccione suscripción a editar" -#: ../../Zotlabs/Module/Admin/Site.php:311 -msgid "This is displayed on the public server site list." -msgstr "Esto se muestra en la lista de sitios de servidores públicos." +#: ../../addon/cart/submodules/subscriptions.php:380 +msgid "Edit Subscriptions" +msgstr "Editar suscripciones" -#: ../../Zotlabs/Module/Admin/Site.php:312 -msgid "Register text" -msgstr "Texto del registro" +#: ../../addon/cart/submodules/subscriptions.php:414 +msgid "Subscription SKU" +msgstr "SKU de la suscripción" -#: ../../Zotlabs/Module/Admin/Site.php:312 -msgid "Will be displayed prominently on the registration page." -msgstr "Se mostrará de forma destacada en la página de registro." +#: ../../addon/cart/submodules/subscriptions.php:419 +msgid "Catalog Description" +msgstr "Descripción del catálogo" -#: ../../Zotlabs/Module/Admin/Site.php:314 -msgid "Site homepage to show visitors (default: login box)" -msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)" +#: ../../addon/cart/submodules/subscriptions.php:423 +msgid "Subscription available for purchase." +msgstr "Suscripción disponible para la compra." -#: ../../Zotlabs/Module/Admin/Site.php:314 -msgid "" -"example: 'pubstream' to show public stream, 'page/sys/home' to show a system" -" webpage called 'home' or 'include:home.html' to include a file." -msgstr "ejemplo: 'pubstream' para mostrar el stream público, 'page/sys/home' para mostrar una página web del sistema llamada 'home' o 'include:home.html' para incluir un archivo." +#: ../../addon/cart/submodules/subscriptions.php:428 +msgid "Maximum active subscriptions to this item per account." +msgstr "Máximo de suscripciones activas a este artículo por cuenta." -#: ../../Zotlabs/Module/Admin/Site.php:315 -msgid "Preserve site homepage URL" -msgstr "Preservar la dirección de la página personal" +#: ../../addon/cart/submodules/subscriptions.php:431 +msgid "Subscription price." +msgstr "Precio de la suscripción." -#: ../../Zotlabs/Module/Admin/Site.php:315 -msgid "" -"Present the site homepage in a frame at the original location instead of " -"redirecting" -msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla." +#: ../../addon/cart/submodules/subscriptions.php:435 +msgid "Quantity" +msgstr "Cuantía" -#: ../../Zotlabs/Module/Admin/Site.php:316 -msgid "Accounts abandoned after x days" -msgstr "Cuentas abandonadas después de x días" +#: ../../addon/cart/submodules/subscriptions.php:439 +msgid "Term" +msgstr "Condición" -#: ../../Zotlabs/Module/Admin/Site.php:316 -msgid "" -"Will not waste system resources polling external sites for abandonded " -"accounts. Enter 0 for no time limit." -msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo." +#: ../../addon/cart/submodules/hzservices.php:62 +msgid "Enable Hubzilla Services Module" +msgstr "Habilitar el Módulo de Servicios de Hubzilla" -#: ../../Zotlabs/Module/Admin/Site.php:317 -msgid "Allowed friend domains" -msgstr "Dominios amigos permitidos" +#: ../../addon/cart/submodules/hzservices.php:161 +#: ../../addon/cart/submodules/manualcat.php:174 +msgid "New Sku" +msgstr "Nuevo SKU (número de referencia)" -#: ../../Zotlabs/Module/Admin/Site.php:317 -msgid "" -"Comma separated list of domains which are allowed to establish friendships " -"with this site. Wildcards are accepted. Empty to allow any domains" -msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio." +#: ../../addon/cart/submodules/hzservices.php:196 +#: ../../addon/cart/submodules/manualcat.php:210 +msgid "Cannot save edits to locked item." +msgstr "No se pueden guardar las ediciones en el elemento bloqueado." -#: ../../Zotlabs/Module/Admin/Site.php:318 -msgid "Verify Email Addresses" -msgstr "Verificar las direcciones de correo electrónico" +#: ../../addon/cart/submodules/hzservices.php:245 +#: ../../addon/cart/submodules/hzservices.php:332 +msgid "SKU not found." +msgstr "No se ha encontrado el SKU" -#: ../../Zotlabs/Module/Admin/Site.php:318 -msgid "" -"Check to verify email addresses used in account registration (recommended)." -msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)." +#: ../../addon/cart/submodules/hzservices.php:298 +#: ../../addon/cart/submodules/hzservices.php:302 +msgid "Invalid Activation Directive." +msgstr "Directiva de activación no válida." -#: ../../Zotlabs/Module/Admin/Site.php:319 -msgid "Force publish" -msgstr "Forzar la publicación" +#: ../../addon/cart/submodules/hzservices.php:373 +#: ../../addon/cart/submodules/hzservices.php:377 +msgid "Invalid Deactivation Directive." +msgstr "Directiva de desactivación no válida" -#: ../../Zotlabs/Module/Admin/Site.php:319 -msgid "" -"Check to force all profiles on this site to be listed in the site directory." -msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio." +#: ../../addon/cart/submodules/hzservices.php:563 +msgid "Add to this privacy group" +msgstr "Añadir a este grupo de canales" -#: ../../Zotlabs/Module/Admin/Site.php:320 -msgid "Import Public Streams" -msgstr "Importar contenido público" +#: ../../addon/cart/submodules/hzservices.php:579 +msgid "Set user service class" +msgstr "Configurar la clase de servicio al usuario" -#: ../../Zotlabs/Module/Admin/Site.php:320 -msgid "" -"Import and allow access to public content pulled from other sites. Warning: " -"this content is unmoderated." -msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas." +#: ../../addon/cart/submodules/hzservices.php:606 +msgid "You must be using a local account to purchase this service." +msgstr "Usted debe estar usando una cuenta local para comprar este servicio." -#: ../../Zotlabs/Module/Admin/Site.php:321 -msgid "Site only Public Streams" -msgstr "Solo contenido público en este sitio" +#: ../../addon/cart/submodules/hzservices.php:646 +#: ../../addon/cart/submodules/manualcat.php:254 +msgid "Changes Locked" +msgstr "Cambios bloqueados" -#: ../../Zotlabs/Module/Admin/Site.php:321 -msgid "" -"Allow access to public content originating only from this site if Imported " -"Public Streams are disabled." -msgstr "Permitir el acceso al contenido público originado sólo desde este sitio si los \"streams\" públicos Importados están deshabilitados." +#: ../../addon/cart/submodules/hzservices.php:650 +#: ../../addon/cart/submodules/manualcat.php:258 +msgid "Item available for purchase." +msgstr "Artículo disponible para la compra." -#: ../../Zotlabs/Module/Admin/Site.php:322 -msgid "Allow anybody on the internet to access the Public streams" -msgstr "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos" +#: ../../addon/cart/submodules/hzservices.php:660 +#: ../../addon/cart/submodules/manualcat.php:268 +msgid "Photo URL" +msgstr "URL de la foto" -#: ../../Zotlabs/Module/Admin/Site.php:322 -msgid "" -"Disable to require authentication before viewing. Warning: this content is " -"unmoderated." -msgstr "Desactivar para requerir autenticación antes de la visualización. Advertencia: este contenido no está moderado." +#: ../../addon/cart/submodules/hzservices.php:664 +msgid "Add buyer to privacy group" +msgstr "Agregar comprador al grupo de canales" -#: ../../Zotlabs/Module/Admin/Site.php:323 -msgid "Only import Public stream posts with this text" -msgstr "Importar solo entradas del stream púlbico con este texto " +#: ../../addon/cart/submodules/hzservices.php:669 +msgid "Add buyer as connection" +msgstr "Añadir comprador como conexión" -#: ../../Zotlabs/Module/Admin/Site.php:323 -#: ../../Zotlabs/Module/Admin/Site.php:324 -#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893 -msgid "" -"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " -"all posts" -msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo" +#: ../../addon/cart/submodules/hzservices.php:677 +#: ../../addon/cart/submodules/hzservices.php:719 +msgid "Set Service Class" +msgstr "Establecer clase de servicio" -#: ../../Zotlabs/Module/Admin/Site.php:324 -msgid "Do not import Public stream posts with this text" -msgstr "No importar entradas del stream público con este texto " +#: ../../addon/cart/submodules/paypalbutton.php:85 +msgid "Enable Paypal Button Module" +msgstr "Habilitar el módulo del botón de Paypal" -#: ../../Zotlabs/Module/Admin/Site.php:327 -msgid "Login on Homepage" -msgstr "Iniciar sesión en la página personal" +#: ../../addon/cart/submodules/paypalbutton.php:93 +msgid "Use Production Key" +msgstr "Utilizar clave en entorno de producción" -#: ../../Zotlabs/Module/Admin/Site.php:327 -msgid "" -"Present a login box to visitors on the home page if no other content has " -"been configured." -msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido." +#: ../../addon/cart/submodules/paypalbutton.php:100 +msgid "Paypal Sandbox Client Key" +msgstr "Clave de cliente en el entorno de pruebas de Paypal" -#: ../../Zotlabs/Module/Admin/Site.php:328 -msgid "Enable context help" -msgstr "Habilitar la ayuda contextual" +#: ../../addon/cart/submodules/paypalbutton.php:107 +msgid "Paypal Sandbox Secret Key" +msgstr "Clave secreta en el entorno de pruebas de Paypal" -#: ../../Zotlabs/Module/Admin/Site.php:328 -msgid "" -"Display contextual help for the current page when the help button is " -"pressed." -msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda." +#: ../../addon/cart/submodules/paypalbutton.php:113 +msgid "Paypal Production Client Key" +msgstr "Clave de cliente en el entorno de producción de Paypal" -#: ../../Zotlabs/Module/Admin/Site.php:330 -msgid "Reply-to email address for system generated email." -msgstr "Dirección de respuesta para el correo electrónico generado por el sistema." +#: ../../addon/cart/submodules/paypalbutton.php:120 +msgid "Paypal Production Secret Key" +msgstr "Clave secreta en el entorno de producción de Paypal" -#: ../../Zotlabs/Module/Admin/Site.php:331 -msgid "Sender (From) email address for system generated email." -msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema." +#: ../../addon/cart/submodules/paypalbutton.php:252 +msgid "Paypal button payments are not enabled." +msgstr "Los pagos con el botón de Paypal no están habilitados." -#: ../../Zotlabs/Module/Admin/Site.php:332 -msgid "Name of email sender for system generated email." -msgstr "Nombre del remitente del correo electrónico generado por el sistema." +#: ../../addon/cart/submodules/paypalbutton.php:270 +msgid "" +"Paypal button payments are not properly configured. Please choose another " +"payment option." +msgstr "Los pagos con el botón de Paypal no están configurados correctamente. Por favor, elija otra opción de pago." -#: ../../Zotlabs/Module/Admin/Site.php:334 -msgid "Directory Server URL" -msgstr "URL del servidor de directorio" +#: ../../addon/cart/submodules/manualcat.php:61 +msgid "Enable Manual Cart Module" +msgstr "Habilitar el módulo de carro manual" -#: ../../Zotlabs/Module/Admin/Site.php:334 -msgid "Default directory server" -msgstr "Servidor de directorio predeterminado" +#: ../../addon/cart/myshop.php:30 +msgid "Access Denied." +msgstr "Acceso denegado" -#: ../../Zotlabs/Module/Admin/Site.php:336 -msgid "Proxy user" -msgstr "Usuario del proxy" +#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1328 +msgid "Order Not Found" +msgstr "No se ha encontrado el pedido" -#: ../../Zotlabs/Module/Admin/Site.php:337 -msgid "Proxy URL" -msgstr "Dirección del proxy" +#: ../../addon/cart/myshop.php:186 ../../addon/cart/myshop.php:220 +#: ../../addon/cart/myshop.php:269 ../../addon/cart/myshop.php:327 +msgid "Invalid Item" +msgstr "Elemento no válido" -#: ../../Zotlabs/Module/Admin/Site.php:338 -msgid "Network timeout" -msgstr "Tiempo de espera de la red" +#: ../../addon/cart/Settings/Cart.php:56 +msgid "Enable Test Catalog" +msgstr "Habilitar el catálogo de pruebas" -#: ../../Zotlabs/Module/Admin/Site.php:338 -msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." -msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)" +#: ../../addon/cart/Settings/Cart.php:68 +msgid "Enable Manual Payments" +msgstr "Permitir pagos manuales" -#: ../../Zotlabs/Module/Admin/Site.php:339 -msgid "Delivery interval" -msgstr "Intervalo de entrega" +#: ../../addon/cart/Settings/Cart.php:88 +msgid "Base Merchant Currency" +msgstr "Divida base del vendedor" -#: ../../Zotlabs/Module/Admin/Site.php:339 -msgid "" -"Delay background delivery processes by this many seconds to reduce system " -"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " -"for large dedicated servers." -msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados." +#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1257 +msgid "Cart Settings" +msgstr "Configuración del carro de la compra" -#: ../../Zotlabs/Module/Admin/Site.php:340 -msgid "Deliveries per process" -msgstr "Intentos de envío por proceso" +#: ../../addon/cart/cart.php:150 +msgid "DB Cleanup Failure" +msgstr "Fallo de limpieza de la base de datos" -#: ../../Zotlabs/Module/Admin/Site.php:340 -msgid "" -"Number of deliveries to attempt in a single operating system process. Adjust" -" if necessary to tune system performance. Recommend: 1-5." -msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5." +#: ../../addon/cart/cart.php:556 +msgid "[cart] Item Added" +msgstr "[cesta] Artículo añadido" -#: ../../Zotlabs/Module/Admin/Site.php:341 -msgid "Queue Threshold" -msgstr "Umbral de la cola de espera" +#: ../../addon/cart/cart.php:945 +msgid "Order already checked out." +msgstr "El pedido ya ha sido revisado" -#: ../../Zotlabs/Module/Admin/Site.php:341 -msgid "" -"Always defer immediate delivery if queue contains more than this number of " -"entries." -msgstr "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas." +#: ../../addon/cart/cart.php:1250 +msgid "Drop database tables when uninstalling." +msgstr "Eliminar tablas de la base de datos al desinstalar." -#: ../../Zotlabs/Module/Admin/Site.php:342 -msgid "Poll interval" -msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos" +#: ../../addon/cart/cart.php:1269 ../../addon/cart/cart.php:1272 +msgid "Shop" +msgstr "Comprar" -#: ../../Zotlabs/Module/Admin/Site.php:342 -msgid "" -"Delay background polling processes by this many seconds to reduce system " -"load. If 0, use delivery interval." -msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega." +#: ../../addon/cart/cart.php:1292 ../../addon/flashcards/Mod_Flashcards.php:37 +#: ../../Zotlabs/Module/Wiki.php:35 +msgid "Profile Unavailable." +msgstr "Perfil no disponible" -#: ../../Zotlabs/Module/Admin/Site.php:343 -msgid "Path to ImageMagick convert program" -msgstr "Ruta al programa de conversión de ImageMagick" +#: ../../addon/cart/cart.php:1389 +msgid "Cart utilities for orders and payments" +msgstr "Utilidades del carro para pedidos y pagos" -#: ../../Zotlabs/Module/Admin/Site.php:343 -msgid "" -"If set, use this program to generate photo thumbnails for huge images ( > " -"4000 pixels in either dimension), otherwise memory exhaustion may occur. " -"Example: /usr/bin/convert" -msgstr "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert" +#: ../../addon/cart/cart.php:1427 +msgid "You must be logged into the Grid to shop." +msgstr "Debe iniciar sesión en la red para comprar." -#: ../../Zotlabs/Module/Admin/Site.php:344 -msgid "Allow SVG thumbnails in file browser" -msgstr "Permitir miniaturas SVG en el navegador de archivos" +#: ../../addon/cart/cart.php:1468 +msgid "Access denied." +msgstr "Acceso denegado" -#: ../../Zotlabs/Module/Admin/Site.php:344 -msgid "WARNING: SVG images may contain malicious code." -msgstr "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso." +#: ../../addon/cart/cart.php:1520 ../../addon/cart/cart.php:1663 +msgid "No Order Found" +msgstr "No se ha encontrado ningún pedido" -#: ../../Zotlabs/Module/Admin/Site.php:345 -msgid "Maximum Load Average" -msgstr "Carga media máxima" +#: ../../addon/cart/cart.php:1529 +msgid "An unknown error has occurred Please start again." +msgstr "Se ha producido un error desconocido Vuelva a empezar." -#: ../../Zotlabs/Module/Admin/Site.php:345 -msgid "" -"Maximum system load before delivery and poll processes are deferred - " -"default 50." -msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50." +#: ../../addon/cart/cart.php:1696 +msgid "Invalid Payment Type. Please start again." +msgstr "Tipo de pago no válido. Por favor, empiece de nuevo." -#: ../../Zotlabs/Module/Admin/Site.php:346 -msgid "Expiration period in days for imported (grid/network) content" -msgstr "Caducidad del contenido importado de otros sitios (en días)" +#: ../../addon/cart/cart.php:1703 +msgid "Order not found" +msgstr "El pedido no se ha encontrado" -#: ../../Zotlabs/Module/Admin/Site.php:346 -msgid "0 for no expiration of imported content" -msgstr "0 para que no caduque el contenido importado" +#: ../../addon/nofed/Mod_Nofed.php:21 +msgid "nofed Settings saved." +msgstr "Se han guardado los ajustes de nofed." -#: ../../Zotlabs/Module/Admin/Site.php:347 -msgid "" -"Do not expire any posts which have comments less than this many days ago" -msgstr "No caduque ningún mensaje que tenga menos comentarios que este hace muchos días" +#: ../../addon/nofed/Mod_Nofed.php:33 +msgid "No Federation App" +msgstr "App No Federation" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../addon/nofed/Mod_Nofed.php:34 msgid "" -"Public servers: Optional landing (marketing) webpage for new registrants" -msgstr "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros" +"Prevent posting from being federated to anybody. It will exist only on your " +"channel page." +msgstr "Evitar que la entrada sea federada con nadie. Sólo existirá en la página de su canal." -#: ../../Zotlabs/Module/Admin/Site.php:349 -#, php-format -msgid "Create this page first. Default is %s/register" -msgstr "Crear esta página primero. Por defecto es %s/register" +#: ../../addon/nofed/Mod_Nofed.php:42 +msgid "Federate posts by default" +msgstr "Federar las publicaciones por defecto" -#: ../../Zotlabs/Module/Admin/Site.php:350 -msgid "Page to display after creating a new channel" -msgstr "Página a mostrar después de la creación de un nuevo canal" +#: ../../addon/nofed/Mod_Nofed.php:50 +msgid "No Federation" +msgstr "No Federation" -#: ../../Zotlabs/Module/Admin/Site.php:350 -msgid "Default: profiles" -msgstr "Perfiles predeterminados" +#: ../../addon/nofed/nofed.php:47 +msgid "Federate" +msgstr "Federar" -#: ../../Zotlabs/Module/Admin/Site.php:352 -msgid "Optional: site location" -msgstr "Opcional: ubicación del sitio" +#: ../../addon/smileybutton/Mod_Smileybutton.php:35 +msgid "Smileybutton App" +msgstr "App Smileybutton" -#: ../../Zotlabs/Module/Admin/Site.php:352 -msgid "Region or country" -msgstr "Región o país" +#: ../../addon/smileybutton/Mod_Smileybutton.php:36 +msgid "Adds a smileybutton to the jot editor" +msgstr "Añade un botón de emoticonos al editor jot" -#: ../../Zotlabs/Module/Admin/Addons.php:289 -#, php-format -msgid "Plugin %s disabled." -msgstr "Extensión %s desactivada." +#: ../../addon/smileybutton/Mod_Smileybutton.php:44 +msgid "Hide the button and show the smilies directly." +msgstr "Ocultar el botón y mostrar los smilies directamente." -#: ../../Zotlabs/Module/Admin/Addons.php:294 -#, php-format -msgid "Plugin %s enabled." -msgstr "Extensión %s activada." +#: ../../addon/smileybutton/Mod_Smileybutton.php:52 +msgid "Smileybutton Settings" +msgstr "Ajustes de Smileybutton" -#: ../../Zotlabs/Module/Admin/Addons.php:342 -#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Widget/Admin.php:27 -msgid "Addons" -msgstr "Addons" +#: ../../addon/redfiles/redfilehelper.php:64 +msgid "file" +msgstr "fichero" -#: ../../Zotlabs/Module/Admin/Addons.php:353 -msgid "Minimum project version: " -msgstr "Versión mínima del proyecto:" +#: ../../addon/redfiles/redfiles.php:119 +msgid "Redmatrix File Storage Import" +msgstr "Importar repositorio de ficheros de Redmatrix" -#: ../../Zotlabs/Module/Admin/Addons.php:354 -msgid "Maximum project version: " -msgstr "Versión máxima del proyecto:" +#: ../../addon/redfiles/redfiles.php:120 +msgid "This will import all your Redmatrix cloud files to this channel." +msgstr "Esto importará todos sus ficheros de la nube de Redmatrix a este canal." -#: ../../Zotlabs/Module/Admin/Addons.php:355 -msgid "Minimum PHP version: " -msgstr "Versión mínima de PHP:" +#: ../../addon/diaspora/p.php:48 ../../addon/diaspora/util.php:336 +#: ../../addon/diaspora/util.php:349 ../../Zotlabs/Lib/Enotify.php:61 +msgid "$projectname" +msgstr "$projectname" -#: ../../Zotlabs/Module/Admin/Addons.php:356 -msgid "Compatible Server Roles: " -msgstr "Configuraciones compatibles con este servidor:" +#: ../../addon/diaspora/import_diaspora.php:18 +msgid "No username found in import file." +msgstr "No se ha encontrado el nombre de usuario en el fichero de importación." -#: ../../Zotlabs/Module/Admin/Addons.php:357 -msgid "Requires: " -msgstr "Se requiere:" +#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:75 +msgid "Unable to create a unique channel address. Import failed." +msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación." -#: ../../Zotlabs/Module/Admin/Addons.php:358 -#: ../../Zotlabs/Module/Admin/Addons.php:445 -msgid "Disabled - version incompatibility" -msgstr "Deshabilitado - versiones incompatibles" +#: ../../addon/diaspora/import_diaspora.php:141 +#: ../../Zotlabs/Module/Import.php:594 +msgid "Import completed." +msgstr "Importación completada." -#: ../../Zotlabs/Module/Admin/Addons.php:414 -msgid "Enter the public git repository URL of the addon repo." -msgstr "Introduzca la URL del repositorio público de git del addon repo." +#: ../../addon/diaspora/Mod_Diaspora.php:43 +msgid "Diaspora Protocol Settings updated." +msgstr "Los ajustes del protocolo de Diaspora se han actualizado." -#: ../../Zotlabs/Module/Admin/Addons.php:415 -msgid "Addon repo git URL" -msgstr "URL del repositorio git del addon" +#: ../../addon/diaspora/Mod_Diaspora.php:52 +msgid "" +"The diaspora protocol does not support location independence. Connections " +"you make within that network may be unreachable from alternate channel " +"locations." +msgstr "El protocolo de Diaspora no admite la independencia de la ubicación. Las conexiones que realice dentro de esa red pueden ser inaccesibles desde ubicaciones de canales alternativos." -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "Custom repo name" -msgstr "Nombre personalizado del repositorio" +#: ../../addon/diaspora/Mod_Diaspora.php:58 +msgid "Diaspora Protocol App" +msgstr "App Protocolo Diaspora" -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "(optional)" -msgstr "(opcional)" +#: ../../addon/diaspora/Mod_Diaspora.php:77 +msgid "Allow any Diaspora member to comment on your public posts" +msgstr "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas" -#: ../../Zotlabs/Module/Admin/Addons.php:417 -msgid "Download Addon Repo" -msgstr "Descargar el repositorio" +#: ../../addon/diaspora/Mod_Diaspora.php:81 +msgid "Prevent your hashtags from being redirected to other sites" +msgstr "Impedir que sus \"hashtags\" sean redirigidos a otros sitios " -#: ../../Zotlabs/Module/Admin/Addons.php:424 -msgid "Install new repo" -msgstr "Instalar un nuevo repositorio" +#: ../../addon/diaspora/Mod_Diaspora.php:85 +msgid "" +"Sign and forward posts and comments with no existing Diaspora signature" +msgstr "Firmar y enviar entradas y comentarios sin firma de Diaspora" -#: ../../Zotlabs/Module/Admin/Addons.php:425 ../../Zotlabs/Lib/Apps.php:536 -msgid "Install" -msgstr "Instalar" +#: ../../addon/diaspora/Mod_Diaspora.php:90 +msgid "Followed hashtags (comma separated, do not include the #)" +msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)" -#: ../../Zotlabs/Module/Admin/Addons.php:448 -msgid "Manage Repos" -msgstr "Gestionar los repositorios" +#: ../../addon/diaspora/Mod_Diaspora.php:99 +msgid "Diaspora Protocol" +msgstr "Protocolo Diaspora" -#: ../../Zotlabs/Module/Admin/Addons.php:449 -msgid "Installed Addon Repositories" -msgstr "Repositorioe de addons instalados" +#: ../../addon/diaspora/Receiver.php:1536 +#, php-format +msgid "%1$s dislikes %2$s's %3$s" +msgstr "a %1$s no le gusta el %3$s de %2$s" -#: ../../Zotlabs/Module/Admin/Addons.php:450 -msgid "Install a New Addon Repository" -msgstr "Instalar un nuevo repositorio de addons" +#: ../../addon/diaspora/Receiver.php:2178 ../../Zotlabs/Module/Like.php:457 +#, php-format +msgid "%1$s is attending %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s participa" -#: ../../Zotlabs/Module/Admin/Addons.php:457 -msgid "Switch branch" -msgstr "Cambiar la rama" +#: ../../addon/diaspora/Receiver.php:2180 ../../Zotlabs/Module/Like.php:459 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s no participa" -#: ../../Zotlabs/Module/Admin/Addons.php:458 -#: ../../Zotlabs/Module/Photos.php:993 -#: ../../Zotlabs/Module/Profile_photo.php:499 -#: ../../Zotlabs/Module/Cover_photo.php:430 ../../Zotlabs/Module/Tagrm.php:137 -#: ../../addon/superblock/Mod_Superblock.php:91 -msgid "Remove" -msgstr "Eliminar" +#: ../../addon/diaspora/Receiver.php:2182 ../../Zotlabs/Module/Like.php:461 +#, php-format +msgid "%1$s may attend %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s quizá participe" -#: ../../Zotlabs/Module/Admin/Profs.php:89 -msgid "New Profile Field" -msgstr "Nuevo campo en el perfil" +#: ../../addon/piwik/piwik.php:85 +msgid "" +"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " +"analytics tool." +msgstr "Este sitio es rastreado mediante la herramienta analítica <a href='http://www.piwik.org'>Piwik</a>." -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 -msgid "Field nickname" -msgstr "Alias del campo" +#: ../../addon/piwik/piwik.php:88 +#, php-format +msgid "" +"If you do not want that your visits are logged this way you <a href='%s'>can" +" set a cookie to prevent Piwik from tracking further visits of the site</a> " +"(opt-out)." +msgstr "Si usted no quiere que sus visitas se registren de esta manera <a href='%s'>puede establecer una cookie para evitar que Piwik rastree otras visitas del sitio</a> (opt-out)." -#: ../../Zotlabs/Module/Admin/Profs.php:90 -#: ../../Zotlabs/Module/Admin/Profs.php:110 -msgid "System name of field" -msgstr "Nombre del campo en el sistema" +#: ../../addon/piwik/piwik.php:96 +msgid "Piwik Base URL" +msgstr "URL base de Piwik" + +#: ../../addon/piwik/piwik.php:96 +msgid "" +"Absolute path to your Piwik installation. (without protocol (http/s), with " +"trailing slash)" +msgstr "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)" -#: ../../Zotlabs/Module/Admin/Profs.php:91 -#: ../../Zotlabs/Module/Admin/Profs.php:111 -msgid "Input type" -msgstr "Tipo de entrada" +#: ../../addon/piwik/piwik.php:97 +msgid "Site ID" +msgstr "ID del sitio" -#: ../../Zotlabs/Module/Admin/Profs.php:92 -#: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Field Name" -msgstr "Nombre del campo" +#: ../../addon/piwik/piwik.php:98 +msgid "Show opt-out cookie link?" +msgstr "Mostrar el enlace de la cookie opt-out?" -#: ../../Zotlabs/Module/Admin/Profs.php:92 -#: ../../Zotlabs/Module/Admin/Profs.php:112 -msgid "Label on profile pages" -msgstr "Etiqueta a mostrar en la página del perfil" +#: ../../addon/piwik/piwik.php:99 +msgid "Asynchronous tracking" +msgstr "Rastreo asíncrono" -#: ../../Zotlabs/Module/Admin/Profs.php:93 -#: ../../Zotlabs/Module/Admin/Profs.php:113 -msgid "Help text" -msgstr "Texto de ayuda" +#: ../../addon/piwik/piwik.php:100 +msgid "Enable frontend JavaScript error tracking" +msgstr "Habilitar la interfaz JavaScript de seguimiento de errores" -#: ../../Zotlabs/Module/Admin/Profs.php:93 -#: ../../Zotlabs/Module/Admin/Profs.php:113 -msgid "Additional info (optional)" -msgstr "Información adicional (opcional)" +#: ../../addon/piwik/piwik.php:100 +msgid "This feature requires Piwik >= 2.2.0" +msgstr "Esta funcionalidad requiere Piwik >= 2.2.0" -#: ../../Zotlabs/Module/Admin/Profs.php:94 -#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32 -#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53 -#: ../../Zotlabs/Widget/Notes.php:23 -#: ../../addon/queueworker/Mod_Queueworker.php:119 ../../include/text.php:1104 -#: ../../include/text.php:1116 -msgid "Save" -msgstr "Guardar" +#: ../../addon/workflow/workflow.php:212 +msgid "Workflow user." +msgstr "Usuario de Workflow." -#: ../../Zotlabs/Module/Admin/Profs.php:103 -msgid "Field definition not found" -msgstr "Definición del campo no encontrada" +#: ../../addon/workflow/workflow.php:259 +msgid "This channel" +msgstr "Este canal" -#: ../../Zotlabs/Module/Admin/Profs.php:109 -msgid "Edit Profile Field" -msgstr "Modificar el campo del perfil" +#: ../../addon/workflow/workflow.php:272 ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" +msgstr "Primario" -#: ../../Zotlabs/Module/Admin/Profs.php:168 ../../Zotlabs/Widget/Admin.php:30 -msgid "Profile Fields" -msgstr "Campos del perfil" +#: ../../addon/workflow/workflow.php:480 +#: ../../addon/workflow/workflow.php:1233 +#: ../../addon/workflow/workflow.php:1251 +msgid "Workflow" +msgstr "Workflow" -#: ../../Zotlabs/Module/Admin/Profs.php:169 -msgid "Basic Profile Fields" -msgstr "Campos básicos del perfil" +#: ../../addon/workflow/workflow.php:1250 +msgid "Add item to which workflow" +msgstr "A qué Workflow añadir un elemento" -#: ../../Zotlabs/Module/Admin/Profs.php:170 -msgid "Advanced Profile Fields" -msgstr "Campos avanzados del perfil" +#: ../../addon/workflow/workflow.php:1297 +#: ../../addon/workflow/workflow.php:1394 +msgid "Create Workflow Item" +msgstr "Crear elemento de Workflow" -#: ../../Zotlabs/Module/Admin/Profs.php:170 -msgid "(In addition to basic fields)" -msgstr "(Además de los campos básicos)" +#: ../../addon/workflow/workflow.php:2270 +msgid "Link" +msgstr "Enlazar" -#: ../../Zotlabs/Module/Admin/Profs.php:172 -msgid "All available fields" -msgstr "Todos los campos disponibles" +#: ../../addon/workflow/workflow.php:2272 +msgid "Web link." +msgstr "Enlace Web." -#: ../../Zotlabs/Module/Admin/Profs.php:173 -msgid "Custom Fields" -msgstr "Campos personalizados" +#: ../../addon/workflow/workflow.php:2291 +#: ../../addon/workflow/workflow.php:2344 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Connedit.php:925 +msgid "Title" +msgstr "Título" -#: ../../Zotlabs/Module/Admin/Profs.php:177 -msgid "Create Custom Field" -msgstr "Crear un campo personalizado" +#: ../../addon/workflow/workflow.php:2293 +#: ../../addon/workflow/workflow.php:2346 +msgid "Brief description or title" +msgstr "Breve descripción o título" -#: ../../Zotlabs/Module/Admin/Account_edit.php:29 -#, php-format -msgid "Password changed for account %d." -msgstr "Ha cambiado la contraseña para la cuenta %d." +#: ../../addon/workflow/workflow.php:2299 ../../Zotlabs/Widget/Notes.php:21 +#: ../../Zotlabs/Lib/Apps.php:369 +msgid "Notes" +msgstr "Notas" -#: ../../Zotlabs/Module/Admin/Account_edit.php:46 -msgid "Account settings updated." -msgstr "Se han actualizado los ajustes de la cuenta." +#: ../../addon/workflow/workflow.php:2301 +#: ../../addon/workflow/workflow.php:2354 +msgid "Notes and Info" +msgstr "Notas e información" -#: ../../Zotlabs/Module/Admin/Account_edit.php:61 -msgid "Account not found." -msgstr "No se ha encontrado la cuenta." +#: ../../addon/workflow/workflow.php:2352 +msgid "Body" +msgstr "Cuerpo" -#: ../../Zotlabs/Module/Admin/Account_edit.php:68 -msgid "Account Edit" -msgstr "Editar la cuenta" +#: ../../addon/workflow/Settings/Mod_WorkflowSettings.php:101 +msgid "Workflow Settings" +msgstr "Ajustes de Workflow" -#: ../../Zotlabs/Module/Admin/Account_edit.php:69 -msgid "New Password" -msgstr "Nueva contraseña" +#: ../../addon/donate/donate.php:21 +msgid "Project Servers and Resources" +msgstr "Servidores y recursos del proyecto" -#: ../../Zotlabs/Module/Admin/Account_edit.php:70 -msgid "New Password again" -msgstr "Nueva contraseña otra vez" +#: ../../addon/donate/donate.php:22 +msgid "Project Creator and Tech Lead" +msgstr "Creador del proyecto y director técnico" -#: ../../Zotlabs/Module/Admin/Account_edit.php:71 -msgid "Account language (for emails)" -msgstr "Idioma de la cuenta (para los correos electrónicos)" +#: ../../addon/donate/donate.php:49 +msgid "" +"And the hundreds of other people and organisations who helped make the " +"Hubzilla possible." +msgstr "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla." -#: ../../Zotlabs/Module/Admin/Account_edit.php:72 -msgid "Service class" -msgstr "Clase de servicio" +#: ../../addon/donate/donate.php:52 +msgid "" +"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving " +"their time and expertise - and often paying out of pocket for services they " +"share with others." +msgstr "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros." -#: ../../Zotlabs/Module/Admin/Security.php:83 +#: ../../addon/donate/donate.php:53 msgid "" -"By default, unfiltered HTML is allowed in embedded media. This is inherently" -" insecure." -msgstr "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro." +"There is no corporate funding and no ads, and we do not collect and sell " +"your personal information. (We don't control your personal information - " +"<strong>you do</strong>.)" +msgstr "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)" -#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../addon/donate/donate.php:54 msgid "" -"The recommended setting is to only allow unfiltered HTML from the following " -"sites:" -msgstr "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: " +"Help support our ground-breaking work in decentralisation, web identity, and" +" privacy." +msgstr "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad." -#: ../../Zotlabs/Module/Admin/Security.php:87 +#: ../../addon/donate/donate.php:56 msgid "" -"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br" -" />https://vimeo.com/<br />https://soundcloud.com/<br />" -msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />" +"Your donations keep servers and services running and also helps us to " +"provide innovative new features and continued development." +msgstr "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada." -#: ../../Zotlabs/Module/Admin/Security.php:88 +#: ../../addon/donate/donate.php:59 +msgid "Donate" +msgstr "Donar" + +#: ../../addon/donate/donate.php:61 msgid "" -"All other embedded content will be filtered, <strong>unless</strong> " -"embedded content from that site is explicitly blocked." -msgstr "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita." +"Choose a project, developer, or public hub to support with a one-time " +"donation" +msgstr "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez" -#: ../../Zotlabs/Module/Admin/Security.php:93 -#: ../../Zotlabs/Widget/Admin.php:25 -msgid "Security" -msgstr "Seguridad" +#: ../../addon/donate/donate.php:62 +msgid "Donate Now" +msgstr "Donar ahora" -#: ../../Zotlabs/Module/Admin/Security.php:95 -msgid "Block public" -msgstr "Bloquear páginas públicas" +#: ../../addon/donate/donate.php:63 +msgid "" +"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project " +"only)" +msgstr "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)" -#: ../../Zotlabs/Module/Admin/Security.php:95 +#: ../../addon/donate/donate.php:64 msgid "" -"Check to block public access to all otherwise public personal pages on this " -"site unless you are currently authenticated." -msgstr "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado." +"Please indicate if you would like your first name or full name (or nothing) " +"to appear in our sponsor listing" +msgstr "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores" -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "Provide a cloud root directory" -msgstr "Proporcionar un directorio raíz de la nube" +#: ../../addon/donate/donate.php:65 +msgid "Sponsor" +msgstr "Patrocinador" -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "" -"The cloud root directory lists all channel names which provide public files" -msgstr "El directorio raíz de la nube lista todos los nombres de canales que proporcionan archivos públicos" +#: ../../addon/donate/donate.php:68 +msgid "Special thanks to: " +msgstr "Agradecimiento especial a: " -#: ../../Zotlabs/Module/Admin/Security.php:97 -msgid "Show total disk space available to cloud uploads" -msgstr "Mostrar el espacio total disponible en el disco para las cargas en la nube" +#: ../../addon/likebanner/likebanner.php:51 +msgid "Your Webbie:" +msgstr "Su webbie: " -#: ../../Zotlabs/Module/Admin/Security.php:98 -msgid "Set \"Transport Security\" HTTP header" -msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP" +#: ../../addon/likebanner/likebanner.php:54 +msgid "Fontsize (px):" +msgstr "Tamaño de fuente (px): " -#: ../../Zotlabs/Module/Admin/Security.php:99 -msgid "Set \"Content Security Policy\" HTTP header" -msgstr "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP" +#: ../../addon/likebanner/likebanner.php:68 +msgid "Link:" +msgstr "Enlace: " -#: ../../Zotlabs/Module/Admin/Security.php:100 -msgid "Allowed email domains" -msgstr "Se aceptan dominios de correo electrónico" +#: ../../addon/likebanner/likebanner.php:70 +msgid "Like us on Hubzilla" +msgstr "Múestrenos su agrado en Hubzilla" -#: ../../Zotlabs/Module/Admin/Security.php:100 +#: ../../addon/likebanner/likebanner.php:72 +msgid "Embed:" +msgstr "Incorporado: " + +#: ../../addon/chords/chords.php:33 +msgid "Quick Reference" +msgstr "Referencia rápida" + +#: ../../addon/chords/Mod_Chords.php:44 msgid "" -"Comma separated list of domains which are allowed in email addresses for " -"registrations to this site. Wildcards are accepted. Empty to allow any " -"domains" -msgstr "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. " +"This is a fairly comprehensive and complete guitar chord dictionary which " +"will list most of the available ways to play a certain chord, starting from " +"the base of the fingerboard up to a few frets beyond the twelfth fret " +"(beyond which everything repeats). A couple of non-standard tunings are " +"provided for the benefit of slide players, etc." +msgstr "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc." -#: ../../Zotlabs/Module/Admin/Security.php:101 -msgid "Not allowed email domains" -msgstr "No se permiten dominios de correo electrónico" +#: ../../addon/chords/Mod_Chords.php:46 +msgid "" +"Chord names start with a root note (A-G) and may include sharps (#) and " +"flats (b). This software will parse most of the standard naming conventions " +"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements." +msgstr "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales." -#: ../../Zotlabs/Module/Admin/Security.php:101 +#: ../../addon/chords/Mod_Chords.php:48 msgid "" -"Comma separated list of domains which are not allowed in email addresses for" -" registrations to this site. Wildcards are accepted. Empty to allow any " -"domains, unless allowed domains have been defined." -msgstr "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado." +"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " +"E7b13b11 ..." +msgstr "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..." + +#: ../../addon/chords/Mod_Chords.php:51 +msgid "Guitar Chords" +msgstr "Acordes de guitarra" + +#: ../../addon/chords/Mod_Chords.php:52 +msgid "The complete online chord dictionary" +msgstr "El diccionario completo de acordes en línea" + +#: ../../addon/chords/Mod_Chords.php:57 +msgid "Tuning" +msgstr "Afinación" -#: ../../Zotlabs/Module/Admin/Security.php:102 -msgid "Allow communications only from these sites" -msgstr "Permitir la comunicación solo desde estos sitios" +#: ../../addon/chords/Mod_Chords.php:58 +msgid "Chord name: example: Em7" +msgstr "Nombre del acorde, por ejemplo: Em7" -#: ../../Zotlabs/Module/Admin/Security.php:102 -msgid "" -"One site per line. Leave empty to allow communication from anywhere by " -"default" -msgstr "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" +#: ../../addon/chords/Mod_Chords.php:59 +msgid "Show for left handed stringing" +msgstr "Mostrar para tocadores zurdos" -#: ../../Zotlabs/Module/Admin/Security.php:103 -msgid "Block communications from these sites" -msgstr "Bloquear la comunicación desde estos sitios" +#: ../../addon/opensearch/opensearch.php:26 +#, php-format +msgctxt "opensearch" +msgid "Search %1$s (%2$s)" +msgstr "Buscar %1$s (%2$s)" -#: ../../Zotlabs/Module/Admin/Security.php:104 -msgid "Allow communications only from these channels" -msgstr "Permitir la comunicación solo desde estos canales" +#: ../../addon/opensearch/opensearch.php:28 +msgctxt "opensearch" +msgid "$Projectname" +msgstr "$Projectname" -#: ../../Zotlabs/Module/Admin/Security.php:104 -msgid "" -"One channel (hash) per line. Leave empty to allow from any channel by " -"default" -msgstr "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" +#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Module/Home.php:72 +#: ../../Zotlabs/Module/Home.php:80 ../../Zotlabs/Lib/Enotify.php:66 +msgid "$Projectname" +msgstr "$Projectname" -#: ../../Zotlabs/Module/Admin/Security.php:105 -msgid "Block communications from these channels" -msgstr "Bloquear la comunicación desde estos canales" +#: ../../addon/opensearch/opensearch.php:43 +msgid "Search $Projectname" +msgstr "Buscar $Projectname" -#: ../../Zotlabs/Module/Admin/Security.php:106 -msgid "Only allow embeds from secure (SSL) websites and links." -msgstr "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)." +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 +msgid "Fuzzloc Settings updated." +msgstr "Los ajustes de Fuzzloc se han actualizado." -#: ../../Zotlabs/Module/Admin/Security.php:107 -msgid "Allow unfiltered embedded HTML content only from these domains" -msgstr "Permitir contenido HTML sin filtrar sólo desde estos dominios " +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 +msgid "Fuzzy Location App" +msgstr "App Fuzzy Location" -#: ../../Zotlabs/Module/Admin/Security.php:107 -msgid "One site per line. By default embedded content is filtered." -msgstr "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada." +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35 +msgid "" +"Blur your precise location if your channel uses browser location mapping" +msgstr "Desdibujar su ubicación precisa si su canal utiliza el mapeo de ubicación del navegador" -#: ../../Zotlabs/Module/Admin/Security.php:108 -msgid "Block embedded HTML from these domains" -msgstr "Bloquear contenido con HTML incorporado desde estos dominios" +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40 +msgid "Minimum offset in meters" +msgstr "Offset mínimo en metros" -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." -msgstr "La información privada remota no está disponible." +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44 +msgid "Maximum offset in meters" +msgstr "Offset máximo en metros" -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" -msgstr "Visible para:" +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 +msgid "Fuzzy Location" +msgstr "Fuzzy Location" -#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153 -#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88 -msgctxt "acl" -msgid "Profile" -msgstr "Perfil" +#: ../../addon/flattrwidget/flattrwidget.php:50 +msgid "Flattr this!" +msgstr "¡Apoyar esto en Flattr!" -#: ../../Zotlabs/Module/Moderate.php:65 -msgid "Comment approved" -msgstr "El comentario ha sido aprobado" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 +msgid "Flattr widget settings updated." +msgstr "Los ajustes del widget Flattr han sido actualizados." -#: ../../Zotlabs/Module/Moderate.php:69 -msgid "Comment deleted" -msgstr "Se ha eliminado el comentario" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 +msgid "Flattr Widget App" +msgstr "App Flattr Widget" -#: ../../Zotlabs/Module/Settings/Channel.php:70 -#: ../../Zotlabs/Module/Settings/Channel.php:74 -#: ../../Zotlabs/Module/Settings/Channel.php:75 -#: ../../Zotlabs/Module/Settings/Channel.php:78 -#: ../../Zotlabs/Module/Settings/Channel.php:89 -#: ../../Zotlabs/Module/Connedit.php:725 ../../Zotlabs/Widget/Affinity.php:32 -#: ../../include/selectors.php:134 ../../include/channel.php:493 -#: ../../include/channel.php:494 ../../include/channel.php:501 -msgid "Friends" -msgstr "Amigos/as" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54 +msgid "Add a Flattr button to your channel page" +msgstr "Proporcionar un botón Flattr a la página de su canal" -#: ../../Zotlabs/Module/Settings/Channel.php:266 -#: ../../Zotlabs/Module/Defperms.php:111 -#: ../../addon/rendezvous/rendezvous.php:82 -#: ../../addon/openstreetmap/openstreetmap.php:150 -#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54 -#: ../../addon/twitter/twitter.php:605 ../../addon/piwik/piwik.php:116 -#: ../../addon/xmpp/xmpp.php:54 -msgid "Settings updated." -msgstr "Ajustes actualizados." +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 +msgid "Flattr user" +msgstr "Usuario en Flattr" -#: ../../Zotlabs/Module/Settings/Channel.php:327 -msgid "Nobody except yourself" -msgstr "Nadie excepto usted" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "URL of the Thing to flattr" +msgstr "URL de la Cosa para apoyar en flattr" -#: ../../Zotlabs/Module/Settings/Channel.php:328 -msgid "Only those you specifically allow" -msgstr "Solo aquellos a los que usted permita explícitamente" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "If empty channel URL is used" +msgstr "Si está vacío, se usa la URL del canal" -#: ../../Zotlabs/Module/Settings/Channel.php:329 -msgid "Approved connections" -msgstr "Conexiones aprobadas" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "Title of the Thing to flattr" +msgstr "Título de la Cosa para apoyar en flattr" -#: ../../Zotlabs/Module/Settings/Channel.php:330 -msgid "Any connections" -msgstr "Cualquier conexión" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "If empty \"channel name on The Hubzilla\" will be used" +msgstr "Si está vacío, se usará \"nombre del canal en Hubzilla\"" -#: ../../Zotlabs/Module/Settings/Channel.php:331 -msgid "Anybody on this website" -msgstr "Cualquiera en este sitio web" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "Static or dynamic flattr button" +msgstr "Botón de flattr estático o dinámico" -#: ../../Zotlabs/Module/Settings/Channel.php:332 -msgid "Anybody in this network" -msgstr "Cualquiera en esta red" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "static" +msgstr "estático" -#: ../../Zotlabs/Module/Settings/Channel.php:333 -msgid "Anybody authenticated" -msgstr "Cualquiera que esté autenticado" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "dynamic" +msgstr "dinámico" -#: ../../Zotlabs/Module/Settings/Channel.php:334 -msgid "Anybody on the internet" -msgstr "Cualquiera en internet" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "Alignment of the widget" +msgstr "Alineamiento del widget" -#: ../../Zotlabs/Module/Settings/Channel.php:409 -msgid "Publish your default profile in the network directory" -msgstr "Publicar su perfil principal en el directorio de la red" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "left" +msgstr "izquierda" -#: ../../Zotlabs/Module/Settings/Channel.php:414 -msgid "Allow us to suggest you as a potential friend to new members?" -msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "right" +msgstr "derecha" -#: ../../Zotlabs/Module/Settings/Channel.php:418 -msgid "or" -msgstr "o" +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 +msgid "Flattr Widget" +msgstr "Flattr Widget" -#: ../../Zotlabs/Module/Settings/Channel.php:427 -msgid "Your channel address is" -msgstr "Su dirección de canal es" +#: ../../addon/hubwall/hubwall.php:19 +msgid "Send email to all members" +msgstr "Enviar un correo electrónico a todos los miembros" -#: ../../Zotlabs/Module/Settings/Channel.php:430 -msgid "Your files/photos are accessible via WebDAV at" -msgstr "Sus archivos y fotos son accesibles a través de WebDAV en " +#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:65 +#, php-format +msgid "%s Administrator" +msgstr "%s Administrador" -#: ../../Zotlabs/Module/Settings/Channel.php:470 -msgid "Automatic membership approval" -msgstr "Aprobación automática de nuevos miembros" +#: ../../addon/hubwall/hubwall.php:50 ../../addon/mailtest/mailtest.php:50 +msgid "No recipients found." +msgstr "No se han encontrado destinatarios." -#: ../../Zotlabs/Module/Settings/Channel.php:470 -#: ../../Zotlabs/Module/Defperms.php:255 -msgid "" -"If enabled, connection requests will be approved without your interaction" -msgstr "Si está habilitado, las solicitudes de conexión serán aprobadas sin su intervención." +#: ../../addon/hubwall/hubwall.php:73 +#, php-format +msgid "%1$d of %2$d messages sent." +msgstr "%1$d de %2$d mensajes enviados." -#: ../../Zotlabs/Module/Settings/Channel.php:491 -msgid "Channel Settings" -msgstr "Ajustes del canal" +#: ../../addon/hubwall/hubwall.php:81 +msgid "Send email to all hub members." +msgstr "Enviar un correo electrónico a todos los miembros del hub." -#: ../../Zotlabs/Module/Settings/Channel.php:498 -msgid "Basic Settings" -msgstr "Configuración básica" +#: ../../addon/hubwall/hubwall.php:92 ../../addon/mailtest/mailtest.php:96 +msgid "Message subject" +msgstr "Asunto del mensaje" -#: ../../Zotlabs/Module/Settings/Channel.php:499 -#: ../../include/channel.php:1643 -msgid "Full Name:" -msgstr "Nombre completo:" +#: ../../addon/hubwall/hubwall.php:93 +msgid "Sender Email address" +msgstr "Dirección de correo electrónico del remitente" -#: ../../Zotlabs/Module/Settings/Channel.php:500 -#: ../../Zotlabs/Module/Settings/Account.php:104 -msgid "Email Address:" -msgstr "Dirección de correo electrónico:" +#: ../../addon/hubwall/hubwall.php:94 +msgid "Test mode (only send to hub administrator)" +msgstr "Modo de prueba (enviar sólo al administrador del hub)" -#: ../../Zotlabs/Module/Settings/Channel.php:501 -msgid "Your Timezone:" -msgstr "Su huso horario:" +#: ../../addon/notifyadmin/notifyadmin.php:34 +msgid "New registration" +msgstr "Nuevo registro" -#: ../../Zotlabs/Module/Settings/Channel.php:502 -msgid "Default Post Location:" -msgstr "Localización geográfica predeterminada para sus publicaciones:" +#: ../../addon/notifyadmin/notifyadmin.php:40 +#: ../../Zotlabs/Module/Invite.php:90 +#, php-format +msgid "%s : Message delivery failed." +msgstr "%s : Falló el envío del mensaje." -#: ../../Zotlabs/Module/Settings/Channel.php:502 -msgid "Geographical location to display on your posts" -msgstr "Localización geográfica que debe mostrarse en sus publicaciones" +#: ../../addon/notifyadmin/notifyadmin.php:42 +#, php-format +msgid "Message sent to %s. New account registration: %s" +msgstr "Mensaje enviado a %s. Registro de una nueva cuenta: %s" -#: ../../Zotlabs/Module/Settings/Channel.php:503 -msgid "Use Browser Location:" -msgstr "Usar la localización geográfica del navegador:" +#: ../../addon/flashcards/Mod_Flashcards.php:169 +msgid "Not allowed." +msgstr "No permitido/a." -#: ../../Zotlabs/Module/Settings/Channel.php:505 -msgid "Adult Content" -msgstr "Contenido solo para adultos" +#: ../../addon/flashcards/Mod_Flashcards.php:205 +#: ../../include/acl_selectors.php:123 ../../Zotlabs/Module/Chat.php:243 +#: ../../Zotlabs/Module/Filestorage.php:190 +#: ../../Zotlabs/Module/Photos.php:675 ../../Zotlabs/Module/Photos.php:1044 +#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:372 +#: ../../Zotlabs/Module/Connedit.php:690 +msgid "Permissions" +msgstr "Permisos" -#: ../../Zotlabs/Module/Settings/Channel.php:505 -msgid "" -"This channel frequently or regularly publishes adult content. (Please tag " -"any adult material and/or nudity with #NSFW)" -msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)" +#: ../../addon/flashcards/Mod_Flashcards.php:212 +#: ../../Zotlabs/Module/Filestorage.php:197 +msgid "Set/edit permissions" +msgstr "Establecer/editar los permisos" -#: ../../Zotlabs/Module/Settings/Channel.php:507 -msgid "Security and Privacy Settings" -msgstr "Configuración de seguridad y privacidad" +#: ../../addon/flashcards/Mod_Flashcards.php:235 +#: ../../addon/flashcards/Mod_Flashcards.php:236 ../../include/items.php:3719 +#: ../../Zotlabs/Module/Filestorage.php:26 +#: ../../Zotlabs/Module/Admin/Themes.php:72 +#: ../../Zotlabs/Module/Admin/Addons.php:260 +#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45 +#: ../../Zotlabs/Module/Display.php:455 ../../Zotlabs/Module/Admin.php:62 +#: ../../Zotlabs/Module/Thing.php:94 +msgid "Item not found." +msgstr "Elemento no encontrado." -#: ../../Zotlabs/Module/Settings/Channel.php:509 -msgid "Your permissions are already configured. Click to view/adjust" -msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar" +#: ../../addon/libertree/libertree.php:43 +msgid "Post to Libertree" +msgstr "Publicar en Libertree" -#: ../../Zotlabs/Module/Settings/Channel.php:511 -msgid "Hide my online presence" -msgstr "Ocultar mi presencia en línea" +#: ../../addon/libertree/Mod_Libertree.php:25 +msgid "Libertree Crosspost Connector Settings saved." +msgstr "Se han guardado los ajustes del conector de publicación cruzada con Libertree." -#: ../../Zotlabs/Module/Settings/Channel.php:511 -msgid "Prevents displaying in your profile that you are online" -msgstr "Evitar mostrar en su perfil que está en línea" +#: ../../addon/libertree/Mod_Libertree.php:35 +msgid "Libertree Crosspost Connector App" +msgstr "App Libertree Crosspost Connector" -#: ../../Zotlabs/Module/Settings/Channel.php:513 -msgid "Simple Privacy Settings:" -msgstr "Configuración de privacidad sencilla:" +#: ../../addon/libertree/Mod_Libertree.php:36 +msgid "Relay public posts to Libertree" +msgstr "Retransmisión de entradas públicas a Libertree" -#: ../../Zotlabs/Module/Settings/Channel.php:514 -msgid "" -"Very Public - <em>extremely permissive (should be used with caution)</em>" -msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>" +#: ../../addon/libertree/Mod_Libertree.php:51 +msgid "Libertree API token" +msgstr "Token de la API de Libertree" -#: ../../Zotlabs/Module/Settings/Channel.php:515 -msgid "" -"Typical - <em>default public, privacy when desired (similar to social " -"network permissions but with improved privacy)</em>" -msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>" +#: ../../addon/libertree/Mod_Libertree.php:55 +msgid "Libertree site URL" +msgstr "URL del servidor de Libertree" -#: ../../Zotlabs/Module/Settings/Channel.php:516 -msgid "Private - <em>default private, never open or public</em>" -msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>" +#: ../../addon/libertree/Mod_Libertree.php:59 +msgid "Post to Libertree by default" +msgstr "Publicar en Libertree por defecto" -#: ../../Zotlabs/Module/Settings/Channel.php:517 -msgid "Blocked - <em>default blocked to/from everybody</em>" -msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>" +#: ../../addon/libertree/Mod_Libertree.php:67 +msgid "Libertree Crosspost Connector" +msgstr "Libertree Crosspost Connector" -#: ../../Zotlabs/Module/Settings/Channel.php:519 -msgid "Allow others to tag your posts" -msgstr "Permitir a otros etiquetar sus publicaciones" +#: ../../addon/randpost/randpost.php:97 +msgid "You're welcome." +msgstr "Bienvenido." -#: ../../Zotlabs/Module/Settings/Channel.php:519 -msgid "" -"Often used by the community to retro-actively flag inappropriate content" -msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva." +#: ../../addon/randpost/randpost.php:98 +msgid "Ah shucks..." +msgstr "Ah, joder..." -#: ../../Zotlabs/Module/Settings/Channel.php:521 -msgid "Channel Permission Limits" -msgstr "Límites de los permisos del canal" +#: ../../addon/randpost/randpost.php:99 +msgid "Don't mention it." +msgstr "No lo menciones." -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "Expire other channel content after this many days" -msgstr "Caducar contenido de otros canales después de este número de días" +#: ../../addon/randpost/randpost.php:100 +msgid "<blush>" +msgstr "<sonrojo>" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "0 or blank to use the website limit." -msgstr "0 o en blanco para usar el límite del sitio web." +#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:327 +msgid "Report Bug" +msgstr "Informe de errores" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -#, php-format -msgid "This website expires after %d days." -msgstr "Este sitio web caduca después de %d días." +#: ../../addon/totp/Mod_Totp.php:23 +msgid "TOTP Two-Step Verification" +msgstr "Verificación en dos pasos de TOTP" -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "This website does not expire imported content." -msgstr "Este sitio web no caduca el contenido importado." +#: ../../addon/totp/Mod_Totp.php:24 +msgid "Enter the 2-step verification generated by your authenticator app:" +msgstr "Introduzca la verificación en 2 pasos generada por su app de autenticación: " -#: ../../Zotlabs/Module/Settings/Channel.php:523 -msgid "The website limit takes precedence if lower than your limit." -msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite." +#: ../../addon/totp/Mod_Totp.php:25 +msgid "Success!" +msgstr "¡Éxito!" -#: ../../Zotlabs/Module/Settings/Channel.php:524 -msgid "Maximum Friend Requests/Day:" -msgstr "Máximo de solicitudes de amistad por día:" +#: ../../addon/totp/Mod_Totp.php:26 +msgid "Invalid code, please try again." +msgstr "Código inválido, por favor inténtelo de nuevo." -#: ../../Zotlabs/Module/Settings/Channel.php:524 -msgid "May reduce spam activity" -msgstr "Podría reducir la actividad de spam" +#: ../../addon/totp/Mod_Totp.php:27 +msgid "Too many invalid codes..." +msgstr "Demasiados códigos no válidos..." -#: ../../Zotlabs/Module/Settings/Channel.php:525 -msgid "Default Privacy Group" -msgstr "Grupo de canales predeterminado" +#: ../../addon/totp/Mod_Totp.php:28 +msgid "Verify" +msgstr "Verficar" -#: ../../Zotlabs/Module/Settings/Channel.php:527 -msgid "Use my default audience setting for the type of object published" -msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación" +#: ../../addon/totp/Settings/Totp.php:90 +msgid "" +"You haven't set a TOTP secret yet.\n" +"Please click the button below to generate one and register this site\n" +"with your preferred authenticator app." +msgstr "Aún no ha establecido un TOTP secret.\nPor favor, haga clic en el botón de abajo para generar uno y registrar este sitio\ncon su aplicación de autenticación preferida." -#: ../../Zotlabs/Module/Settings/Channel.php:536 -msgid "Default permissions category" -msgstr "Categoría de permisos por defecto" +#: ../../addon/totp/Settings/Totp.php:93 +msgid "Your TOTP secret is" +msgstr "Su TOTP secret es " -#: ../../Zotlabs/Module/Settings/Channel.php:542 -msgid "Maximum private messages per day from unknown people:" -msgstr "Máximo de mensajes privados por día de gente desconocida:" +#: ../../addon/totp/Settings/Totp.php:94 +msgid "" +"Be sure to save it somewhere in case you lose or replace your mobile device.\n" +"Use your mobile device to scan the QR code below to register this site\n" +"with your preferred authenticator app." +msgstr "Asegúrese de guardarlo en algún lugar en caso de que pierda o reemplace su dispositivo móvil.\nUtilice su dispositivo móvil para escanear el código QR a continuación para registrar este sitio\ncon su aplicación de autenticación preferida." -#: ../../Zotlabs/Module/Settings/Channel.php:542 -msgid "Useful to reduce spamming" -msgstr "Útil para reducir el envío de correo no deseado" +#: ../../addon/totp/Settings/Totp.php:99 +msgid "Test" +msgstr "Test" -#: ../../Zotlabs/Module/Settings/Channel.php:545 -#: ../../Zotlabs/Lib/Enotify.php:68 -msgid "Notification Settings" -msgstr "Configuración de las notificaciones" +#: ../../addon/totp/Settings/Totp.php:100 +msgid "Generate New Secret" +msgstr "Generar un nuevo Secret" -#: ../../Zotlabs/Module/Settings/Channel.php:546 -msgid "By default post a status message when:" -msgstr "Por defecto, enviar un mensaje de estado cuando:" +#: ../../addon/totp/Settings/Totp.php:101 +msgid "Go" +msgstr "Ir" -#: ../../Zotlabs/Module/Settings/Channel.php:547 -msgid "accepting a friend request" -msgstr "Acepte una solicitud de amistad" +#: ../../addon/totp/Settings/Totp.php:102 +msgid "Enter your password" +msgstr "Introduzca su contraseña" -#: ../../Zotlabs/Module/Settings/Channel.php:548 -msgid "joining a forum/community" -msgstr "al unirse a un foro o comunidad" +#: ../../addon/totp/Settings/Totp.php:103 +msgid "enter TOTP code from your device" +msgstr "introduzca el código TOTP desde su dispositivo" -#: ../../Zotlabs/Module/Settings/Channel.php:549 -msgid "making an <em>interesting</em> profile change" -msgstr "Realice un cambio <em>interesante</em> en su perfil" +#: ../../addon/totp/Settings/Totp.php:104 +msgid "Pass!" +msgstr "¡Pase!" -#: ../../Zotlabs/Module/Settings/Channel.php:550 -msgid "Send a notification email when:" -msgstr "Enviar una notificación por correo electrónico cuando:" +#: ../../addon/totp/Settings/Totp.php:105 +msgid "Fail" +msgstr "Fallo" -#: ../../Zotlabs/Module/Settings/Channel.php:551 -msgid "You receive a connection request" -msgstr "Reciba una solicitud de conexión" +#: ../../addon/totp/Settings/Totp.php:106 +msgid "Incorrect password, try again." +msgstr "Contraseña incorrecta, inténtelo de nuevo." -#: ../../Zotlabs/Module/Settings/Channel.php:552 -msgid "Your connections are confirmed" -msgstr "Sus conexiones hayan sido confirmadas" +#: ../../addon/totp/Settings/Totp.php:107 +msgid "Record your new TOTP secret and rescan the QR code above." +msgstr "Registre su nuevo TOTP secret y vuelva a escanear el código QR de arriba" -#: ../../Zotlabs/Module/Settings/Channel.php:553 -msgid "Someone writes on your profile wall" -msgstr "Alguien escriba en la página de su perfil (\"muro\")" +#: ../../addon/totp/Settings/Totp.php:115 +msgid "TOTP Settings" +msgstr "Ajustes de TOTP" -#: ../../Zotlabs/Module/Settings/Channel.php:554 -msgid "Someone writes a followup comment" -msgstr "Alguien escriba un comentario sobre sus publicaciones" +#: ../../addon/logrot/logrot.php:36 +msgid "Logfile archive directory" +msgstr "Directorio de los ficheros de informe" -#: ../../Zotlabs/Module/Settings/Channel.php:555 -msgid "You receive a private message" -msgstr "Reciba un mensaje privado" +#: ../../addon/logrot/logrot.php:36 +msgid "Directory to store rotated logs" +msgstr "Directorio para almacenar los informes rotados" -#: ../../Zotlabs/Module/Settings/Channel.php:556 -msgid "You receive a friend suggestion" -msgstr "Reciba una sugerencia de amistad" +#: ../../addon/logrot/logrot.php:37 +msgid "Logfile size in bytes before rotating" +msgstr "Tamaño del fichero de informe en bytes antes de rotarlo" -#: ../../Zotlabs/Module/Settings/Channel.php:557 -msgid "You are tagged in a post" -msgstr "Usted sea etiquetado en una publicación" +#: ../../addon/logrot/logrot.php:38 +msgid "Number of logfiles to retain" +msgstr "Número de ficheros de informe que se deben retener" + +#: ../../addon/testdrive/testdrive.php:104 +#, php-format +msgid "Your account on %s will expire in a few days." +msgstr "Su cuenta en %s caducará en unos pocos días." -#: ../../Zotlabs/Module/Settings/Channel.php:558 -msgid "You are poked/prodded/etc. in a post" -msgstr "Reciba un toque o incitación en una publicación" +#: ../../addon/testdrive/testdrive.php:105 +msgid "Your $Productname test account is about to expire." +msgstr "Su cuenta de prueba de $Productname está a punto de caducar." -#: ../../Zotlabs/Module/Settings/Channel.php:560 -msgid "Someone likes your post/comment" -msgstr "Alguien muestre agrado por su entrada o comentario" +#: ../../addon/skeleton/Mod_Skeleton.php:32 +msgid "Skeleton App" +msgstr "App Skeleton" -#: ../../Zotlabs/Module/Settings/Channel.php:563 -msgid "Show visual notifications including:" -msgstr "Mostrar notificaciones visuales que incluyan:" +#: ../../addon/skeleton/Mod_Skeleton.php:33 +msgid "A skeleton for addons, you can copy/paste" +msgstr "Skeleton para los addons, puede copiar/pegar" -#: ../../Zotlabs/Module/Settings/Channel.php:565 -msgid "Unseen stream activity" -msgstr "Actividad del stream no vista" +#: ../../addon/skeleton/Mod_Skeleton.php:40 +msgid "Some setting" +msgstr "Algunos ajustes" -#: ../../Zotlabs/Module/Settings/Channel.php:566 -msgid "Unseen channel activity" -msgstr "Actividad no vista en el canal" +#: ../../addon/skeleton/Mod_Skeleton.php:40 +msgid "A setting" +msgstr "Un ajuste" -#: ../../Zotlabs/Module/Settings/Channel.php:567 -msgid "Unseen private messages" -msgstr "Mensajes privados no leídos" +#: ../../addon/skeleton/Mod_Skeleton.php:48 +msgid "Skeleton Settings" +msgstr "Ajustes de Skeleton" -#: ../../Zotlabs/Module/Settings/Channel.php:567 -#: ../../Zotlabs/Module/Settings/Channel.php:572 -#: ../../Zotlabs/Module/Settings/Channel.php:573 -#: ../../Zotlabs/Module/Settings/Channel.php:574 -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -msgid "Recommended" -msgstr "Recomendado" +#: ../../addon/nsfw/nsfw.php:152 +msgid "Possible adult content" +msgstr "Posible contenido para adultos" -#: ../../Zotlabs/Module/Settings/Channel.php:568 -msgid "Upcoming events" -msgstr "Próximos eventos" +#: ../../addon/nsfw/nsfw.php:167 +#, php-format +msgid "%s - view" +msgstr "ver - %s" -#: ../../Zotlabs/Module/Settings/Channel.php:569 -msgid "Events today" -msgstr "Eventos de hoy" +#: ../../addon/nsfw/Mod_Nsfw.php:22 +msgid "NSFW Settings saved." +msgstr "Se han guardado los ajustes de NSFW." -#: ../../Zotlabs/Module/Settings/Channel.php:570 -msgid "Upcoming birthdays" -msgstr "Próximos cumpleaños" +#: ../../addon/nsfw/Mod_Nsfw.php:33 +msgid "NSFW App" +msgstr "App NSFW" -#: ../../Zotlabs/Module/Settings/Channel.php:570 -msgid "Not available in all themes" -msgstr "No disponible en todos los temas" +#: ../../addon/nsfw/Mod_Nsfw.php:34 +msgid "Collapse content that contains predefined words" +msgstr "Ocultar el contenido que contiene palabras predefinidas" -#: ../../Zotlabs/Module/Settings/Channel.php:571 -msgid "System (personal) notifications" -msgstr "Notificaciones del sistema (personales)" +#: ../../addon/nsfw/Mod_Nsfw.php:44 +msgid "" +"This app looks in posts for the words/text you specify below, and collapses " +"any content containing those keywords so it is not displayed at " +"inappropriate times, such as sexual innuendo that may be improper in a work " +"setting. It is polite and recommended to tag any content containing nudity " +"with #NSFW. This filter can also match any other word/text you specify, and" +" can thereby be used as a general purpose content filter." +msgstr "Esta aplicación busca en los mensajes las palabras o texto que especifique a continuación, y oculta cualquier contenido que contenga esas palabras clave, para que no se muestren en momentos inapropiados, como insinuaciones sexuales que puedan ser inapropiadas en un entorno laboral. Es cortés y recomendable etiquetar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como filtro de contenido de propósito general." -#: ../../Zotlabs/Module/Settings/Channel.php:572 -msgid "System info messages" -msgstr "Mensajes de información del sistema" +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Comma separated list of keywords to hide" +msgstr "Lista separada por comas de palabras clave para ocultar" -#: ../../Zotlabs/Module/Settings/Channel.php:573 -msgid "System critical alerts" -msgstr "Alertas críticas del sistema" +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Word, /regular-expression/, lang=xx, lang!=xx" +msgstr "Palabra, /expresión regular/, lang=xx, lang!=xx" -#: ../../Zotlabs/Module/Settings/Channel.php:574 -msgid "New connections" -msgstr "Nuevas conexiones" +#: ../../addon/nsfw/Mod_Nsfw.php:58 +msgid "NSFW" +msgstr "NSFW" -#: ../../Zotlabs/Module/Settings/Channel.php:575 -msgid "System Registrations" -msgstr "Registros del sistema" +#: ../../addon/upload_limits/upload_limits.php:25 +msgid "Show Upload Limits" +msgstr "Mostrar los límites de subida" -#: ../../Zotlabs/Module/Settings/Channel.php:576 -msgid "Unseen shared files" -msgstr "Ficheros compartidos no vistos" +#: ../../addon/upload_limits/upload_limits.php:27 +msgid "Hubzilla configured maximum size: " +msgstr "Tamaño máximo configurado por Hubzilla: " -#: ../../Zotlabs/Module/Settings/Channel.php:577 -msgid "Unseen public stream activity" -msgstr "Actividad del stream público no vista" +#: ../../addon/upload_limits/upload_limits.php:28 +msgid "PHP upload_max_filesize: " +msgstr "PHP upload_max_filesize: " -#: ../../Zotlabs/Module/Settings/Channel.php:578 -msgid "Unseen likes and dislikes" -msgstr "Los \"me gusta\" y \"no me gusta\" no vistos" +#: ../../addon/upload_limits/upload_limits.php:29 +msgid "PHP post_max_size (must be larger than upload_max_filesize): " +msgstr "PHP post_max_size (debe ser mayor que upload_max_filesize): " -#: ../../Zotlabs/Module/Settings/Channel.php:579 -msgid "Unseen forum posts" -msgstr "Entradas no vistas en el foro" +#: ../../addon/tictac/tictac.php:21 +msgid "Three Dimensional Tic-Tac-Toe" +msgstr "Juego en 3D Tic-Tac-Toe" -#: ../../Zotlabs/Module/Settings/Channel.php:580 -msgid "Email notification hub (hostname)" -msgstr "Email de notificación del hub (nombre del host)" +#: ../../addon/tictac/tictac.php:54 +msgid "3D Tic-Tac-Toe" +msgstr "3D Tic-Tac-Toe" -#: ../../Zotlabs/Module/Settings/Channel.php:580 -#, php-format -msgid "" -"If your channel is mirrored to multiple hubs, set this to your preferred " -"location. This will prevent duplicate email notifications. Example: %s" -msgstr "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s" +#: ../../addon/tictac/tictac.php:59 +msgid "New game" +msgstr "Nuevo juego" -#: ../../Zotlabs/Module/Settings/Channel.php:581 -msgid "Show new wall posts, private messages and connections under Notices" -msgstr "Mostrar nuevos mensajes en el muro, mensajes privados y conexiones en Avisos" +#: ../../addon/tictac/tictac.php:60 +msgid "New game with handicap" +msgstr "Nuevo juego con hándicap" -#: ../../Zotlabs/Module/Settings/Channel.php:583 -msgid "Notify me of events this many days in advance" -msgstr "Avisarme de los eventos con algunos días de antelación" +#: ../../addon/tictac/tictac.php:61 +msgid "" +"Three dimensional tic-tac-toe is just like the traditional game except that " +"it is played on multiple levels simultaneously. " +msgstr "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente." -#: ../../Zotlabs/Module/Settings/Channel.php:583 -msgid "Must be greater than 0" -msgstr "Debe ser mayor que 0" +#: ../../addon/tictac/tictac.php:62 +msgid "" +"In this case there are three levels. You win by getting three in a row on " +"any level, as well as up, down, and diagonally across the different levels." +msgstr "En este caso hay tres niveles. Usted gana al conseguir tres en una fila en cualquier nivel, así como arriba, abajo, y en diagonal a través de los diferentes niveles." -#: ../../Zotlabs/Module/Settings/Channel.php:588 -msgid "Advanced Account/Page Type Settings" -msgstr "Ajustes avanzados de la cuenta y de los tipos de página" +#: ../../addon/tictac/tictac.php:64 +msgid "" +"The handicap game disables the center position on the middle level because " +"the player claiming this square often has an unfair advantage." +msgstr "El juego con hándicap deshabilita la posición central en el nivel medio porque el jugador que reclama este cuadrado a menudo tiene una ventaja injusta." -#: ../../Zotlabs/Module/Settings/Channel.php:589 -msgid "Change the behaviour of this account for special situations" -msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales" +#: ../../addon/tictac/tictac.php:183 +msgid "You go first..." +msgstr "Usted va primero..." -#: ../../Zotlabs/Module/Settings/Channel.php:591 -msgid "Miscellaneous Settings" -msgstr "Ajustes diversos" +#: ../../addon/tictac/tictac.php:188 +msgid "I'm going first this time..." +msgstr "Yo voy primero esta vez..." -#: ../../Zotlabs/Module/Settings/Channel.php:592 -msgid "Default photo upload folder" -msgstr "Carpeta por defecto de las fotos subidas" +#: ../../addon/tictac/tictac.php:194 +msgid "You won!" +msgstr "¡Usted ha ganado!" -#: ../../Zotlabs/Module/Settings/Channel.php:592 -#: ../../Zotlabs/Module/Settings/Channel.php:593 -msgid "%Y - current year, %m - current month" -msgstr "%Y - año en curso, %m - mes actual" +#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 +msgid "\"Cat\" game!" +msgstr "¡El juego del \"gato\"!" -#: ../../Zotlabs/Module/Settings/Channel.php:593 -msgid "Default file upload folder" -msgstr "Carpeta por defecto de los ficheros subidos" +#: ../../addon/tictac/tictac.php:223 +msgid "I won!" +msgstr "¡He ganado yo!" -#: ../../Zotlabs/Module/Settings/Channel.php:595 -msgid "Remove this channel." -msgstr "Eliminar este canal." +#: ../../addon/gnusoc/gnusoc.php:451 +msgid "Follow" +msgstr "Seguir" -#: ../../Zotlabs/Module/Settings/Features.php:43 -msgid "Additional Features" -msgstr "Funcionalidades" +#: ../../addon/gnusoc/gnusoc.php:454 +#, php-format +msgid "%1$s is now following %2$s" +msgstr "%1$s está siguiendo ahora a %2$s" -#: ../../Zotlabs/Module/Settings/Events.php:39 -msgid "Events Settings" -msgstr "Gestión de eventos" +#: ../../addon/gnusoc/Mod_Gnusoc.php:16 +msgid "" +"The GNU-Social protocol does not support location independence. Connections " +"you make within that network may be unreachable from alternate channel " +"locations." +msgstr "El protocolo de GNU-Social no admite la independencia de la ubicación. Las\n conexiones que realice dentro de esa red pueden ser inaccesibles desde \nubicaciones de canales alternativos." -#: ../../Zotlabs/Module/Settings/Calendar.php:39 -msgid "Calendar Settings" -msgstr "Ajustes del calendario" +#: ../../addon/gnusoc/Mod_Gnusoc.php:22 +msgid "GNU-Social Protocol App" +msgstr "App Protocolo GNU-Social" -#: ../../Zotlabs/Module/Settings/Conversation.php:22 -msgid "Settings saved." -msgstr "Configuración guardada." +#: ../../addon/gnusoc/Mod_Gnusoc.php:34 +msgid "GNU-Social Protocol" +msgstr "Protocolo GNU-Social" -#: ../../Zotlabs/Module/Settings/Conversation.php:24 -msgid "Settings saved. Reload page please." -msgstr "Ajustes guardados. Recargue la página, por favor." +#: ../../addon/mailtest/mailtest.php:19 +msgid "Send test email" +msgstr "Enviar un correo electrónico de prueba" -#: ../../Zotlabs/Module/Settings/Conversation.php:46 -msgid "Conversation Settings" -msgstr "Ajustes de conversación" +#: ../../addon/mailtest/mailtest.php:66 +msgid "Mail sent." +msgstr "El correo electrónico ha sido enviado." -#: ../../Zotlabs/Module/Settings/Connections.php:39 -msgid "Connections Settings" -msgstr "Gestión de las conexiones" +#: ../../addon/mailtest/mailtest.php:68 +msgid "Sending of mail failed." +msgstr "No se pudo enviar el correo." -#: ../../Zotlabs/Module/Settings/Photos.php:39 -msgid "Photos Settings" -msgstr "Gestión de las fotos" +#: ../../addon/mailtest/mailtest.php:77 +msgid "Mail Test" +msgstr "Prueba de correo" -#: ../../Zotlabs/Module/Settings/Account.php:19 -msgid "Not valid email." -msgstr "Correo electrónico no válido." +#: ../../addon/ljpost/Mod_Ljpost.php:37 +msgid "Livejournal Crosspost Connector App" +msgstr "App Livejournal Crosspost Connector" -#: ../../Zotlabs/Module/Settings/Account.php:22 -msgid "Protected email address. Cannot change to that email." -msgstr "Dirección de correo electrónico protegida. No se puede cambiar a ella." +#: ../../addon/ljpost/Mod_Ljpost.php:38 +msgid "Relay public posts to Livejournal" +msgstr "Retransmisión de entradas públicas a Livejournal" -#: ../../Zotlabs/Module/Settings/Account.php:31 -msgid "System failure storing new email. Please try again." -msgstr "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo." +#: ../../addon/ljpost/Mod_Ljpost.php:54 +msgid "Livejournal username" +msgstr "Nombre de usuario en Livejournal" -#: ../../Zotlabs/Module/Settings/Account.php:48 -msgid "Password verification failed." -msgstr "La comprobación de la contraseña ha fallado." +#: ../../addon/ljpost/Mod_Ljpost.php:58 +msgid "Livejournal password" +msgstr "Contraseña en Livejournal" -#: ../../Zotlabs/Module/Settings/Account.php:55 -msgid "Passwords do not match. Password unchanged." -msgstr "Las contraseñas no coinciden. La contraseña no se ha cambiado." +#: ../../addon/ljpost/Mod_Ljpost.php:62 +msgid "Post to Livejournal by default" +msgstr "Publicar en Livejournal por defecto" -#: ../../Zotlabs/Module/Settings/Account.php:59 -msgid "Empty passwords are not allowed. Password unchanged." -msgstr "No se permiten contraseñas vacías. La contraseña no se ha cambiado." +#: ../../addon/ljpost/Mod_Ljpost.php:66 +msgid "Send wall-to-wall posts to Livejournal" +msgstr "Enviar entradas de Muro-Muro a Livejournal" -#: ../../Zotlabs/Module/Settings/Account.php:73 -msgid "Password changed." -msgstr "Contraseña cambiada." +#: ../../addon/ljpost/Mod_Ljpost.php:75 +msgid "Livejournal Crosspost Connector" +msgstr "Livejournal Crosspost Connector" -#: ../../Zotlabs/Module/Settings/Account.php:75 -msgid "Password update failed. Please try again." -msgstr "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo." +#: ../../addon/ljpost/ljpost.php:49 +msgid "Post to Livejournal" +msgstr "Publicar en Livejournal" -#: ../../Zotlabs/Module/Settings/Account.php:99 -msgid "Account Settings" -msgstr "Configuración de la cuenta" +#: ../../addon/ljpost/ljpost.php:125 +msgid "Posted by" +msgstr "Publicado por " -#: ../../Zotlabs/Module/Settings/Account.php:100 -msgid "Current Password" -msgstr "Contraseña actual" +#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 +msgid "Invalid game." +msgstr "Juego no válido." -#: ../../Zotlabs/Module/Settings/Account.php:101 -msgid "Enter New Password" -msgstr "Escribir una nueva contraseña" +#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417 +msgid "You are not a player in this game." +msgstr "Usted no participa en este juego." -#: ../../Zotlabs/Module/Settings/Account.php:102 -msgid "Confirm New Password" -msgstr "Confirmar la nueva contraseña" +#: ../../addon/chess/Mod_Chess.php:242 +msgid "You must be a local channel to create a game." +msgstr "Debe ser un canal local para crear un juego" -#: ../../Zotlabs/Module/Settings/Account.php:102 -msgid "Leave password fields blank unless changing" -msgstr "Dejar en blanco la contraseña a menos que desee cambiarla." +#: ../../addon/chess/Mod_Chess.php:260 +msgid "You must select one opponent that is not yourself." +msgstr "Debe seleccionar un oponente que no sea usted mismo." -#: ../../Zotlabs/Module/Settings/Account.php:105 -#: ../../Zotlabs/Module/Removeaccount.php:61 -msgid "Remove Account" -msgstr "Eliminar cuenta" +#: ../../addon/chess/Mod_Chess.php:271 +msgid "Random color chosen." +msgstr "Elegido un color aleatorio." -#: ../../Zotlabs/Module/Settings/Account.php:106 -msgid "Remove this account including all its channels" -msgstr "Eliminar esta cuenta incluyendo todos sus canales" +#: ../../addon/chess/Mod_Chess.php:279 +msgid "Error creating new game." +msgstr "Error al crear un nuevo juego." -#: ../../Zotlabs/Module/Settings/Profiles.php:47 -msgid "Profiles Settings" -msgstr "Gestión de los perfiles" +#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 +msgid "Requested channel is not available." +msgstr "El canal solicitado no está disponible." -#: ../../Zotlabs/Module/Settings/Manage.php:39 -msgid "Channel Manager Settings" -msgstr "Ajustes del administrador de canales" +#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 +msgid "Chess not installed." +msgstr "Chess no está instalado." -#: ../../Zotlabs/Module/Settings/Featured.php:24 -msgid "No feature settings configured" -msgstr "No se ha establecido la configuración de los complementos" +#: ../../addon/chess/Mod_Chess.php:326 +msgid "You must select a local channel /chess/channelname" +msgstr "Debe seleccionar un canal local /chess/nombredelcanal" -#: ../../Zotlabs/Module/Settings/Featured.php:33 -msgid "Addon Settings" -msgstr "Ajustes de los complementos" +#: ../../addon/chess/Mod_Chess.php:343 ../../Zotlabs/Module/Ochannel.php:32 +#: ../../Zotlabs/Module/Channel.php:42 ../../Zotlabs/Module/Chat.php:31 +msgid "You must be logged in to see this page." +msgstr "Debe haber iniciado sesión para poder ver esta página." -#: ../../Zotlabs/Module/Settings/Featured.php:34 -msgid "Please save/submit changes to any panel before opening another." -msgstr "Guarde o envíe los cambios a cualquier panel antes de abrir otro." +#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132 +#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157 +#: ../../Zotlabs/Module/Display.php:174 ../../Zotlabs/Module/Display.php:180 +#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77 +#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185 +msgid "Page not found." +msgstr "Página no encontrada." -#: ../../Zotlabs/Module/Settings/Channel_home.php:44 -#: ../../Zotlabs/Module/Settings/Network.php:41 -msgid "Max height of content (in pixels)" -msgstr "Altura máxima del contenido (en píxeles)" +#: ../../addon/chess/chess.php:645 +msgid "Enable notifications" +msgstr "Habilitar notificaciones" -#: ../../Zotlabs/Module/Settings/Channel_home.php:46 -#: ../../Zotlabs/Module/Settings/Network.php:43 -msgid "Click to expand content exceeding this height" -msgstr "Haga clic para expandir el contenido que exceda esta altura" +#: ../../addon/mdpost/mdpost.php:41 ../../include/text.php:1983 +#: ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 +#: ../../Zotlabs/Module/Wiki.php:371 +msgid "Markdown" +msgstr "Markdown" -#: ../../Zotlabs/Module/Settings/Channel_home.php:59 -msgid "Personal menu to display in your channel pages" -msgstr "Menú personal que debe mostrarse en las páginas de su canal" +#: ../../addon/mdpost/mdpost.php:42 +msgid "Use markdown for editing posts" +msgstr "Usar markdown para editar las entradas" -#: ../../Zotlabs/Module/Settings/Channel_home.php:86 -msgid "Channel Home Settings" -msgstr "Ajustes del canal" +#: ../../addon/hzfiles/hzfiles.php:81 +msgid "Hubzilla File Storage Import" +msgstr "Importar del depósito de ficheros de Hubzilla" -#: ../../Zotlabs/Module/Settings/Directory.php:39 -msgid "Directory Settings" -msgstr "Configuración del directorio" +#: ../../addon/hzfiles/hzfiles.php:82 +msgid "This will import all your cloud files from another server." +msgstr "Esto importará todos sus ficheros en la nube desde otro servidor." -#: ../../Zotlabs/Module/Settings/Editor.php:39 -msgid "Editor Settings" -msgstr "Ajustes del editor" +#: ../../addon/hzfiles/hzfiles.php:83 +msgid "Hubzilla Server base URL" +msgstr "URL base del servidor Hubzilla" -#: ../../Zotlabs/Module/Settings/Display.php:128 -#, php-format -msgid "%s - (Experimental)" -msgstr "%s - (Experimental)" +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 +msgid "Jappixmini App" +msgstr "App Jappixmini" -#: ../../Zotlabs/Module/Settings/Display.php:184 -msgid "Display Settings" -msgstr "Ajustes de visualización" +#: ../../addon/jappixmini/Mod_Jappixmini.php:97 +msgid "Provides a Facebook-like chat using Jappix Mini" +msgstr "Proporciona un chat similar al de Facebook utilizando Jappix Mini" -#: ../../Zotlabs/Module/Settings/Display.php:185 -msgid "Theme Settings" -msgstr "Ajustes del tema" +#: ../../addon/jappixmini/Mod_Jappixmini.php:157 +#: ../../include/channel.php:1526 ../../include/channel.php:1697 +msgid "Status:" +msgstr "Estado:" -#: ../../Zotlabs/Module/Settings/Display.php:186 -msgid "Custom Theme Settings" -msgstr "Ajustes personalizados del tema" +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +msgid "Hide Jappixmini Chat-Widget from the webinterface" +msgstr "Ocultar el widget de chat Jappixmini en la interfaz web" -#: ../../Zotlabs/Module/Settings/Display.php:187 -msgid "Content Settings" -msgstr "Ajustes del contenido" +#: ../../addon/jappixmini/Mod_Jappixmini.php:166 +msgid "Jabber username" +msgstr "Nombre de usuario en Jabber" -#: ../../Zotlabs/Module/Settings/Display.php:193 -msgid "Display Theme:" -msgstr "Tema gráfico del perfil:" +#: ../../addon/jappixmini/Mod_Jappixmini.php:172 +msgid "Jabber server" +msgstr "Servidor de Jabber" -#: ../../Zotlabs/Module/Settings/Display.php:194 -msgid "Select scheme" -msgstr "Elegir un esquema" +#: ../../addon/jappixmini/Mod_Jappixmini.php:178 +msgid "Jabber BOSH host URL" +msgstr "URL del host BOSH de Jabber" -#: ../../Zotlabs/Module/Settings/Display.php:196 -msgid "Preload images before rendering the page" -msgstr "Carga previa de las imágenes antes de generar la página" +#: ../../addon/jappixmini/Mod_Jappixmini.php:185 +msgid "Jabber password" +msgstr "Contraseña en Jabber" -#: ../../Zotlabs/Module/Settings/Display.php:196 -msgid "" -"The subjective page load time will be longer but the page will be ready when" -" displayed" -msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre." +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +msgid "Encrypt Jabber password with Hubzilla password" +msgstr "Cifrar la contraseña de Jabber con la contraseña de Hubzilla" -#: ../../Zotlabs/Module/Settings/Display.php:197 -msgid "Enable user zoom on mobile devices" -msgstr "Habilitar zoom de usuario en dispositivos móviles" +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +#: ../../Zotlabs/Module/Settings/Channel.php:567 +#: ../../Zotlabs/Module/Settings/Channel.php:572 +#: ../../Zotlabs/Module/Settings/Channel.php:573 +#: ../../Zotlabs/Module/Settings/Channel.php:574 +msgid "Recommended" +msgstr "Recomendado" -#: ../../Zotlabs/Module/Settings/Display.php:198 -msgid "Update browser every xx seconds" -msgstr "Actualizar navegador cada xx segundos" +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +msgid "Approve subscription requests from Hubzilla contacts automatically" +msgstr "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla" -#: ../../Zotlabs/Module/Settings/Display.php:198 -msgid "Minimum of 10 seconds, no maximum" -msgstr "Mínimo de 10 segundos, sin máximo" +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 +msgid "Purge internal list of jabber addresses of contacts" +msgstr "Purgar la lista interna de las direcciones de contactos de jabber" -#: ../../Zotlabs/Module/Settings/Display.php:199 -msgid "Maximum number of conversations to load at any time:" -msgstr "Máximo número de conversaciones a cargar en cualquier momento:" +#: ../../addon/jappixmini/Mod_Jappixmini.php:212 +msgid "Configuration Help" +msgstr "Ayuda para los ajustes" -#: ../../Zotlabs/Module/Settings/Display.php:199 -msgid "Maximum of 100 items" -msgstr "Máximo de 100 elementos" +#: ../../addon/jappixmini/Mod_Jappixmini.php:216 +#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Profiles.php:796 +#: ../../Zotlabs/Module/Connedit.php:936 +msgid "Add Contact" +msgstr "Añadir un contacto" -#: ../../Zotlabs/Module/Settings/Display.php:200 -msgid "Show emoticons (smilies) as images" -msgstr "Mostrar emoticonos (smilies) como imágenes" +#: ../../addon/jappixmini/Mod_Jappixmini.php:258 +msgid "Jappixmini Settings" +msgstr "Ajustes de Jappixmini" -#: ../../Zotlabs/Module/Settings/Display.php:201 -msgid "Provide channel menu in navigation bar" -msgstr "Proporcionar un menú de canales en la barra de navegación" +#: ../../addon/authchoose/Mod_Authchoose.php:22 +msgid "" +"Allow magic authentication only to websites of your immediate connections" +msgstr "Permitir la autenticación mágica sólo a los sitios web de sus conexiones próximas" -#: ../../Zotlabs/Module/Settings/Display.php:201 -msgid "Default: channel menu located in app menu" -msgstr "Predeterminado: menú de canales ubicado en el menú de aplicaciones" +#: ../../addon/authchoose/Mod_Authchoose.php:28 +#: ../../addon/authchoose/Mod_Authchoose.php:33 +msgid "Authchoose App" +msgstr "App Authchoose" -#: ../../Zotlabs/Module/Settings/Display.php:202 -msgid "Manual conversation updates" -msgstr "Actualizaciones manuales de la conversación" +#: ../../addon/authchoose/Mod_Authchoose.php:39 +msgid "Authchoose" +msgstr "Autoseleccionar" -#: ../../Zotlabs/Module/Settings/Display.php:202 -msgid "Default is on, turning this off may increase screen jumping" -msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla" +#: ../../addon/pageheader/Mod_Pageheader.php:22 +msgid "pageheader Settings saved." +msgstr "Se han guardado los ajustes del encabezado de página." -#: ../../Zotlabs/Module/Settings/Display.php:203 -msgid "Link post titles to source" -msgstr "Enlazar título de la publicación a la fuente original" +#: ../../addon/pageheader/Mod_Pageheader.php:34 +msgid "Page Header App" +msgstr "App Page Header" -#: ../../Zotlabs/Module/Settings/Display.php:205 -#: ../../Zotlabs/Widget/Newmember.php:75 -msgid "New Member Links" -msgstr "Enlaces para nuevos miembros" +#: ../../addon/pageheader/Mod_Pageheader.php:35 +msgid "Inserts a page header" +msgstr "Inserta un encabezado de página" -#: ../../Zotlabs/Module/Settings/Display.php:205 -msgid "Display new member quick links menu" -msgstr "Mostrar el menú de enlaces rápidos para nuevos miembros" +#: ../../addon/pageheader/Mod_Pageheader.php:43 +msgid "Message to display on every page on this server" +msgstr "Mensaje para mostrar en todas las páginas de este servidor" -#: ../../Zotlabs/Module/Settings/Network.php:58 -msgid "Stream Settings" -msgstr "Ajustes del stream" +#: ../../addon/pageheader/Mod_Pageheader.php:51 +msgid "Page Header" +msgstr "Page Header" -#: ../../Zotlabs/Module/Embedphotos.php:168 -#: ../../Zotlabs/Module/Photos.php:784 ../../Zotlabs/Module/Photos.php:1332 -#: ../../Zotlabs/Widget/Portfolio.php:87 ../../Zotlabs/Widget/Album.php:78 -msgid "View Photo" -msgstr "Ver foto" +#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 +msgid "Popular Channels" +msgstr "Canales populares" -#: ../../Zotlabs/Module/Embedphotos.php:184 -#: ../../Zotlabs/Module/Photos.php:815 ../../Zotlabs/Widget/Portfolio.php:108 -#: ../../Zotlabs/Widget/Album.php:95 -msgid "Edit Album" -msgstr "Editar álbum" +#: ../../addon/irc/irc.php:37 +msgid "Channels to auto connect" +msgstr "Canales para conexión automática" -#: ../../Zotlabs/Module/Embedphotos.php:186 -#: ../../Zotlabs/Module/Photos.php:685 -#: ../../Zotlabs/Module/Profile_photo.php:498 -#: ../../Zotlabs/Module/Cover_photo.php:429 -#: ../../Zotlabs/Storage/Browser.php:398 ../../Zotlabs/Widget/Cdav.php:146 -#: ../../Zotlabs/Widget/Cdav.php:182 ../../Zotlabs/Widget/Portfolio.php:110 -#: ../../Zotlabs/Widget/Album.php:97 -msgid "Upload" -msgstr "Subir" +#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 +msgid "Comma separated list" +msgstr "Lista separada por comas" -#: ../../Zotlabs/Module/Tokens.php:39 -#, php-format -msgid "This channel is limited to %d tokens" -msgstr "Este canal tiene un límite de %d tokens" +#: ../../addon/irc/irc.php:45 +msgid "IRC Settings" +msgstr "Ajustes de IRC" -#: ../../Zotlabs/Module/Tokens.php:45 -msgid "Name and Password are required." -msgstr "Se requiere el nombre y la contraseña." +#: ../../addon/irc/irc.php:54 +msgid "IRC settings saved." +msgstr "Se han guardado los ajustes de IRC." -#: ../../Zotlabs/Module/Tokens.php:85 -msgid "Token saved." -msgstr "Token salvado." +#: ../../addon/irc/irc.php:58 +msgid "IRC Chatroom" +msgstr "Sala de chat IRC" -#: ../../Zotlabs/Module/Tokens.php:99 -msgid "Guest Access App" -msgstr "App Acceso para invitados" +#: ../../addon/xmpp/xmpp.php:44 +msgid "Jabber BOSH host" +msgstr "BOSH de Jabber" -#: ../../Zotlabs/Module/Tokens.php:100 -msgid "Create access tokens so that non-members can access private content" -msgstr "Crear tokens de acceso para que los no miembros puedan acceder a contenido privado" +#: ../../addon/xmpp/xmpp.php:45 +msgid "Use central userbase" +msgstr "Usar la base de usuarios central" -#: ../../Zotlabs/Module/Tokens.php:133 +#: ../../addon/xmpp/xmpp.php:45 msgid "" -"Use this form to create temporary access identifiers to share things with " -"non-members. These identities may be used in Access Control Lists and " -"visitors may login using these credentials to access private content." -msgstr "Utilice este formulario para crear identificadores de acceso temporal para compartir cosas con los no miembros de Hubzilla. Estas identidades se pueden usar en las Listas de control de acceso (ACL) y así los visitantes pueden iniciar sesión, utilizando estas credenciales, para acceder a su contenido privado." +"If enabled, members will automatically login to an ejabberd server that has " +"to be installed on this machine with synchronized credentials via the " +"\"auth_ejabberd.php\" script." +msgstr "Si está habilitado, los miembros se conectarán automáticamente a un servidor ejabberd que debe instalarse en esta máquina con credenciales sincronizadas a través del script \"auth ejabberd.php\"." -#: ../../Zotlabs/Module/Tokens.php:135 -msgid "" -"You may also provide <em>dropbox</em> style access links to friends and " -"associates by adding the Login Password to any specific site URL as shown. " -"Examples:" -msgstr "También puede proporcionar, con el estilo <em>dropbox</em>, enlaces de acceso a sus amigos y asociados añadiendo la contraseña de inicio de sesión a cualquier dirección URL, como se muestra. Ejemplos: " +#: ../../addon/xmpp/Mod_Xmpp.php:23 +msgid "XMPP settings updated." +msgstr "Se han actualizado los ajustes de XMPP." -#: ../../Zotlabs/Module/Tokens.php:170 -msgid "Guest Access Tokens" -msgstr "Tokens de acceso para invitados" +#: ../../addon/xmpp/Mod_Xmpp.php:35 +msgid "XMPP App" +msgstr "App XMPP" -#: ../../Zotlabs/Module/Tokens.php:177 -msgid "Login Name" -msgstr "Nombre de inicio de sesión" +#: ../../addon/xmpp/Mod_Xmpp.php:36 +msgid "Embedded XMPP (Jabber) client" +msgstr "Cliente XMPP (Jabber) integrado" -#: ../../Zotlabs/Module/Tokens.php:178 -msgid "Login Password" -msgstr "Contraseña de inicio de sesión" +#: ../../addon/xmpp/Mod_Xmpp.php:52 +msgid "Individual credentials" +msgstr "Credenciales individuales" -#: ../../Zotlabs/Module/Tokens.php:179 -msgid "Expires (yyyy-mm-dd)" -msgstr "Expira (aaaa-mm-dd)" +#: ../../addon/xmpp/Mod_Xmpp.php:58 +msgid "Jabber BOSH server" +msgstr "Servidor BOSH de Jabber" -#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 -msgid "Their Settings" -msgstr "Sus ajustes" +#: ../../addon/xmpp/Mod_Xmpp.php:67 +msgid "XMPP Settings" +msgstr "Ajustes de XMPP" -#: ../../Zotlabs/Module/Achievements.php:38 -msgid "Some blurb about what to do when you're new here" -msgstr "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí" +#: ../../include/zot.php:774 +msgid "Invalid data packet" +msgstr "Paquete de datos no válido" -#: ../../Zotlabs/Module/Thing.php:120 -msgid "Thing updated" -msgstr "Elemento actualizado." +#: ../../include/zot.php:801 ../../Zotlabs/Lib/Libzot.php:652 +msgid "Unable to verify channel signature" +msgstr "No ha sido posible de verificar la firma del canal" -#: ../../Zotlabs/Module/Thing.php:172 -msgid "Object store: failed" -msgstr "Guardar objeto: ha fallado" +#: ../../include/zot.php:2628 ../../Zotlabs/Lib/Libsync.php:733 +#, php-format +msgid "Unable to verify site signature for %s" +msgstr "No ha sido posible de verificar la firma del sitio para %s" -#: ../../Zotlabs/Module/Thing.php:176 -msgid "Thing added" -msgstr "Elemento añadido" +#: ../../include/zot.php:4325 +msgid "invalid target signature" +msgstr "La firma recibida no es válida" -#: ../../Zotlabs/Module/Thing.php:202 -#, php-format -msgid "OBJ: %1$s %2$s %3$s" -msgstr "OBJ: %1$s %2$s %3$s" +#: ../../include/text.php:522 +msgid "prev" +msgstr "anterior" -#: ../../Zotlabs/Module/Thing.php:265 -msgid "Show Thing" -msgstr "Mostrar elemento" +#: ../../include/text.php:524 +msgid "first" +msgstr "primera" -#: ../../Zotlabs/Module/Thing.php:272 -msgid "item not found." -msgstr "elemento no encontrado." +#: ../../include/text.php:553 +msgid "last" +msgstr "última" -#: ../../Zotlabs/Module/Thing.php:305 -msgid "Edit Thing" -msgstr "Editar elemento" +#: ../../include/text.php:556 +msgid "next" +msgstr "próxima" -#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:364 -msgid "Select a profile" -msgstr "Seleccionar un perfil" +#: ../../include/text.php:574 +msgid "older" +msgstr "más antiguas" -#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 -msgid "Post an activity" -msgstr "Publicar una actividad" +#: ../../include/text.php:576 +msgid "newer" +msgstr "más recientes" -#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 -msgid "Only sends to viewers of the applicable profile" -msgstr "Sólo enviar a espectadores del perfil pertinente." +#: ../../include/text.php:1000 +msgid "No connections" +msgstr "Sin conexiones" -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 -msgid "Name of thing e.g. something" -msgstr "Nombre del elemento, p. ej.:. \"algo\"" +#: ../../include/text.php:1012 ../../include/features.php:133 +#: ../../Zotlabs/Module/Connections.php:351 ../../Zotlabs/Lib/Apps.php:332 +msgid "Connections" +msgstr "Conexiones" -#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:370 -msgid "URL of thing (optional)" -msgstr "Dirección del elemento (opcional)" +#: ../../include/text.php:1032 +#, php-format +msgid "View all %s connections" +msgstr "Ver todas las %s conexiones" -#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:371 -msgid "URL for photo of thing (optional)" -msgstr "Dirección para la foto o elemento (opcional)" +#: ../../include/text.php:1094 +#, php-format +msgid "Network: %s" +msgstr "Red %s" -#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:372 -#: ../../Zotlabs/Module/Photos.php:675 ../../Zotlabs/Module/Photos.php:1044 -#: ../../Zotlabs/Module/Connedit.php:690 ../../Zotlabs/Module/Chat.php:243 -#: ../../Zotlabs/Module/Filestorage.php:190 -#: ../../addon/flashcards/Mod_Flashcards.php:210 -#: ../../include/acl_selectors.php:123 -msgid "Permissions" -msgstr "Permisos" +#: ../../include/text.php:1105 ../../include/text.php:1117 +#: ../../include/nav.php:186 ../../include/acl_selectors.php:118 +#: ../../Zotlabs/Widget/Sitesearch.php:31 +#: ../../Zotlabs/Widget/Activity_filter.php:151 +#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:355 +#: ../../Zotlabs/Lib/Apps.php:352 +msgid "Search" +msgstr "Buscar" -#: ../../Zotlabs/Module/Thing.php:362 -msgid "Add Thing to your Profile" -msgstr "Añadir alguna cosa a su perfil" +#: ../../include/text.php:1197 ../../include/text.php:1201 +msgid "poke" +msgstr "un toque" -#: ../../Zotlabs/Module/Notify.php:61 -#: ../../Zotlabs/Module/Notifications.php:55 -msgid "No more system notifications." -msgstr "No hay más notificaciones del sistema" +#: ../../include/text.php:1197 ../../include/text.php:1201 +#: ../../include/conversation.php:251 +msgid "poked" +msgstr "ha dado un toque a" -#: ../../Zotlabs/Module/Notify.php:65 -#: ../../Zotlabs/Module/Notifications.php:59 -msgid "System Notifications" -msgstr "Notificaciones del sistema" +#: ../../include/text.php:1202 +msgid "ping" +msgstr "un \"ping\"" -#: ../../Zotlabs/Module/Follow.php:36 -msgid "Connection added." -msgstr "Se ha incorporado una conexión." +#: ../../include/text.php:1202 +msgid "pinged" +msgstr "ha enviado un \"ping\" a" -#: ../../Zotlabs/Module/Import.php:157 -#, php-format -msgid "Your service plan only allows %d channels." -msgstr "Su paquete de servicios solo permite %d canales." +#: ../../include/text.php:1203 +msgid "prod" +msgstr "una incitación " -#: ../../Zotlabs/Module/Import.php:184 -msgid "No channel. Import failed." -msgstr "No hay canal. La importación ha fallado" +#: ../../include/text.php:1203 +msgid "prodded" +msgstr "ha incitado a " -#: ../../Zotlabs/Module/Import.php:594 -#: ../../addon/diaspora/import_diaspora.php:141 -msgid "Import completed." -msgstr "Importación completada." +#: ../../include/text.php:1204 +msgid "slap" +msgstr "una bofetada " -#: ../../Zotlabs/Module/Import.php:622 -msgid "You must be logged in to use this feature." -msgstr "Debe estar registrado para poder usar esta funcionalidad." +#: ../../include/text.php:1204 +msgid "slapped" +msgstr "ha abofeteado a " -#: ../../Zotlabs/Module/Import.php:627 -msgid "Import Channel" -msgstr "Importar canal" +#: ../../include/text.php:1205 +msgid "finger" +msgstr "un \"finger\" " -#: ../../Zotlabs/Module/Import.php:628 -msgid "" -"Use this form to import an existing channel from a different server/hub. You" -" may retrieve the channel identity from the old server/hub via the network " -"or provide an export file." -msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación." +#: ../../include/text.php:1205 +msgid "fingered" +msgstr "envió un \"finger\" a" -#: ../../Zotlabs/Module/Import.php:630 -msgid "Or provide the old server/hub details" -msgstr "O proporcione los detalles de su antiguo servidor/hub" +#: ../../include/text.php:1206 +msgid "rebuff" +msgstr "un reproche" -#: ../../Zotlabs/Module/Import.php:632 -msgid "Your old identity address (xyz@example.com)" -msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" +#: ../../include/text.php:1206 +msgid "rebuffed" +msgstr "ha hecho un reproche a " -#: ../../Zotlabs/Module/Import.php:633 -msgid "Your old login email address" -msgstr "Su antigua dirección de correo electrónico" +#: ../../include/text.php:1229 +msgid "happy" +msgstr "feliz " -#: ../../Zotlabs/Module/Import.php:634 -msgid "Your old login password" -msgstr "Su antigua contraseña" +#: ../../include/text.php:1230 +msgid "sad" +msgstr "triste " -#: ../../Zotlabs/Module/Import.php:635 -msgid "Import a few months of posts if possible (limited by available memory" -msgstr "Importar unos meses de mensajes si es posible (limitado por la memoria disponible" +#: ../../include/text.php:1231 +msgid "mellow" +msgstr "tranquilo/a" -#: ../../Zotlabs/Module/Import.php:637 -msgid "" -"For either option, please choose whether to make this hub your new primary " -"address, or whether your old location should continue this role. You will be" -" able to post from either location, but only one can be marked as the " -"primary location for files, photos, and media." -msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos." +#: ../../include/text.php:1232 +msgid "tired" +msgstr "cansado/a " -#: ../../Zotlabs/Module/Import.php:639 -msgid "Make this hub my primary location" -msgstr "Convertir este servidor en mi ubicación primaria" +#: ../../include/text.php:1233 +msgid "perky" +msgstr "vivaz" -#: ../../Zotlabs/Module/Import.php:640 -msgid "Move this channel (disable all previous locations)" -msgstr "Mover este canal (desactivar todas las ubicaciones anteriores)" +#: ../../include/text.php:1234 +msgid "angry" +msgstr "enfadado/a" -#: ../../Zotlabs/Module/Import.php:641 -msgid "Use this channel nickname instead of the one provided" -msgstr "Usa este alias de canal en lugar del que se proporciona" +#: ../../include/text.php:1235 +msgid "stupefied" +msgstr "asombrado/a" -#: ../../Zotlabs/Module/Import.php:641 -msgid "" -"Leave blank to keep your existing channel nickname. You will be randomly " -"assigned a similar nickname if either name is already allocated on this " -"site." -msgstr "Dejar en blanco para mantener su alias de canal . Se le asignará aleatoriamente uno similar si cualquiera de los dos nombres ya está asignado en este sitio." +#: ../../include/text.php:1236 +msgid "puzzled" +msgstr "perplejo/a" -#: ../../Zotlabs/Module/Import.php:643 -msgid "" -"This process may take several minutes to complete. Please submit the form " -"only once and leave this page open until finished." -msgstr "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine." +#: ../../include/text.php:1237 +msgid "interested" +msgstr "interesado/a" -#: ../../Zotlabs/Module/Rmagic.php:44 -msgid "Authentication failed." -msgstr "Falló la autenticación." +#: ../../include/text.php:1238 +msgid "bitter" +msgstr "amargado/a" -#: ../../Zotlabs/Module/Rmagic.php:93 ../../boot.php:1677 -#: ../../include/channel.php:2475 -msgid "Remote Authentication" -msgstr "Acceso desde su servidor" +#: ../../include/text.php:1239 +msgid "cheerful" +msgstr "alegre" -#: ../../Zotlabs/Module/Rmagic.php:94 ../../include/channel.php:2476 -msgid "Enter your channel address (e.g. channel@example.com)" -msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)" +#: ../../include/text.php:1240 +msgid "alive" +msgstr "animado/a" -#: ../../Zotlabs/Module/Rmagic.php:95 ../../include/channel.php:2477 -msgid "Authenticate" -msgstr "Acceder" +#: ../../include/text.php:1241 +msgid "annoyed" +msgstr "molesto/a" -#: ../../Zotlabs/Module/Oauth2.php:54 -msgid "Name and Secret are required" -msgstr "\"Key\" y \"Secret\" son obligatorios" +#: ../../include/text.php:1242 +msgid "anxious" +msgstr "ansioso/a" -#: ../../Zotlabs/Module/Oauth2.php:106 -msgid "OAuth2 Apps Manager App" -msgstr "Aplicación del administrador de apps OAuth2" +#: ../../include/text.php:1243 +msgid "cranky" +msgstr "de mal humor" -#: ../../Zotlabs/Module/Oauth2.php:107 -msgid "OAuth2 authenticatication tokens for mobile and remote apps" -msgstr "Tokens de autenticación de OAuth2 para aplicaciones móviles y remotas" +#: ../../include/text.php:1244 +msgid "disturbed" +msgstr "perturbado/a" -#: ../../Zotlabs/Module/Oauth2.php:115 -msgid "Add OAuth2 application" -msgstr "Añadir aplicación OAuth2" +#: ../../include/text.php:1245 +msgid "frustrated" +msgstr "frustrado/a" -#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 -#: ../../Zotlabs/Module/Oauth.php:113 -msgid "Name of application" -msgstr "Nombre de la aplicación" +#: ../../include/text.php:1246 +msgid "depressed" +msgstr "deprimido/a" -#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 -#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141 -#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:615 -msgid "Consumer Secret" -msgstr "Consumer Secret" +#: ../../include/text.php:1247 +msgid "motivated" +msgstr "motivado/a" -#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 -#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:115 -msgid "Automatically generated - change if desired. Max length 20" -msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20" +#: ../../include/text.php:1248 +msgid "relaxed" +msgstr "relajado/a" -#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 -#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 -msgid "Redirect" -msgstr "Redirigir" +#: ../../include/text.php:1249 +msgid "surprised" +msgstr "sorprendido/a" -#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 -#: ../../Zotlabs/Module/Oauth.php:116 -msgid "" -"Redirect URI - leave blank unless your application specifically requires " -"this" -msgstr "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera" +#: ../../include/text.php:1437 ../../include/js_strings.php:96 +msgid "Monday" +msgstr "lunes" -#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 -msgid "Grant Types" -msgstr "Tipos de permisos" +#: ../../include/text.php:1437 ../../include/js_strings.php:97 +msgid "Tuesday" +msgstr "martes" -#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122 -msgid "leave blank unless your application sepcifically requires this" -msgstr "Dejar en blanco a menos que su aplicación lo requiera específicamente" +#: ../../include/text.php:1437 ../../include/js_strings.php:98 +msgid "Wednesday" +msgstr "miércoles" -#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 -msgid "Authorization scope" -msgstr "Alcance de la autorización" +#: ../../include/text.php:1437 ../../include/js_strings.php:99 +msgid "Thursday" +msgstr "jueves" -#: ../../Zotlabs/Module/Oauth2.php:134 -msgid "OAuth2 Application not found." -msgstr "No se ha encontrado la aplicación OAuth2." +#: ../../include/text.php:1437 ../../include/js_strings.php:100 +msgid "Friday" +msgstr "viernes" -#: ../../Zotlabs/Module/Oauth2.php:143 ../../Zotlabs/Module/Oauth2.php:193 -#: ../../Zotlabs/Module/Oauth.php:110 ../../Zotlabs/Module/Oauth.php:136 -#: ../../Zotlabs/Module/Oauth.php:172 -msgid "Add application" -msgstr "Añadir aplicación" +#: ../../include/text.php:1437 ../../include/js_strings.php:101 +msgid "Saturday" +msgstr "sábado" -#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150 -msgid "leave blank unless your application specifically requires this" -msgstr "dejar en blanco a menos que su aplicación lo requiera específicamente" +#: ../../include/text.php:1437 ../../include/js_strings.php:95 +msgid "Sunday" +msgstr "domingo" -#: ../../Zotlabs/Module/Oauth2.php:192 -msgid "Connected OAuth2 Apps" -msgstr "Aplicaciones OAuth2 conectadas" +#: ../../include/text.php:1441 ../../include/js_strings.php:71 +msgid "January" +msgstr "enero" -#: ../../Zotlabs/Module/Oauth2.php:196 ../../Zotlabs/Module/Oauth.php:175 -msgid "Client key starts with" -msgstr "La \"client key\" empieza por" +#: ../../include/text.php:1441 ../../include/js_strings.php:72 +msgid "February" +msgstr "febrero" -#: ../../Zotlabs/Module/Oauth2.php:197 ../../Zotlabs/Module/Oauth.php:176 -msgid "No name" -msgstr "Sin nombre" +#: ../../include/text.php:1441 ../../include/js_strings.php:73 +msgid "March" +msgstr "marzo" -#: ../../Zotlabs/Module/Oauth2.php:198 ../../Zotlabs/Module/Oauth.php:177 -msgid "Remove authorization" -msgstr "Eliminar autorización" +#: ../../include/text.php:1441 ../../include/js_strings.php:74 +msgid "April" +msgstr "abril" -#: ../../Zotlabs/Module/Cal.php:64 -msgid "Permissions denied." -msgstr "Permisos denegados." +#: ../../include/text.php:1441 +msgid "May" +msgstr "mayo" + +#: ../../include/text.php:1441 ../../include/js_strings.php:76 +msgid "June" +msgstr "junio" -#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 -msgid "Authorize application connection" -msgstr "Autorizar una conexión de aplicación" +#: ../../include/text.php:1441 ../../include/js_strings.php:77 +msgid "July" +msgstr "julio" -#: ../../Zotlabs/Module/Api.php:75 -msgid "Return to your app and insert this Security Code:" -msgstr "Vuelva a su aplicación e introduzca este código de seguridad: " +#: ../../include/text.php:1441 ../../include/js_strings.php:78 +msgid "August" +msgstr "agosto" -#: ../../Zotlabs/Module/Api.php:85 -msgid "Please login to continue." -msgstr "Por favor inicie sesión para continuar." +#: ../../include/text.php:1441 ../../include/js_strings.php:79 +msgid "September" +msgstr "septiembre" -#: ../../Zotlabs/Module/Api.php:97 -msgid "" -"Do you want to authorize this application to access your posts and contacts," -" and/or create new posts for you?" -msgstr "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?" +#: ../../include/text.php:1441 ../../include/js_strings.php:80 +msgid "October" +msgstr "octubre" -#: ../../Zotlabs/Module/Attach.php:13 -msgid "Item not available." -msgstr "Elemento no disponible" +#: ../../include/text.php:1441 ../../include/js_strings.php:81 +msgid "November" +msgstr "noviembre" -#: ../../Zotlabs/Module/Randprof.php:29 -msgid "Random Channel App" -msgstr "App Canal aleatorio" +#: ../../include/text.php:1441 ../../include/js_strings.php:82 +msgid "December" +msgstr "diciembre" -#: ../../Zotlabs/Module/Randprof.php:30 -msgid "Visit a random channel in the $Projectname network" -msgstr "Visitar un canal aleatorio en la red $Projectname" +#: ../../include/text.php:1515 +msgid "Unknown Attachment" +msgstr "Adjunto no reconocido" -#: ../../Zotlabs/Module/Editblock.php:138 -msgid "Edit Block" -msgstr "Modificar este bloque" +#: ../../include/text.php:1517 ../../Zotlabs/Module/Sharedwithme.php:106 +#: ../../Zotlabs/Storage/Browser.php:293 +msgid "Size" +msgstr "Tamaño" -#: ../../Zotlabs/Module/Profile.php:93 -msgid "vcard" -msgstr "vcard" +#: ../../include/text.php:1517 ../../include/feedutils.php:870 +msgid "unknown" +msgstr "desconocido" -#: ../../Zotlabs/Module/Apps.php:50 ../../Zotlabs/Widget/Appstore.php:14 -msgid "Available Apps" -msgstr "Aplicaciones disponibles" +#: ../../include/text.php:1553 +msgid "remove category" +msgstr "eliminar el tema" -#: ../../Zotlabs/Module/Apps.php:50 -msgid "Installed Apps" -msgstr "Apps instaladas" +#: ../../include/text.php:1629 +msgid "remove from file" +msgstr "eliminar del fichero" -#: ../../Zotlabs/Module/Apps.php:53 -msgid "Manage Apps" -msgstr "Administrar apps" +#: ../../include/text.php:1793 ../../include/message.php:13 +msgid "Download binary/encrypted content" +msgstr "Descargar contenido binario o cifrado" -#: ../../Zotlabs/Module/Apps.php:54 -msgid "Create Custom App" -msgstr "Crear una app personalizada" +#: ../../include/text.php:1941 ../../Zotlabs/Module/Events.php:669 +msgid "Link to Source" +msgstr "Enlazar con la entrada en su ubicación original" -#: ../../Zotlabs/Module/Mood.php:76 ../../include/conversation.php:268 -#, php-format -msgctxt "mood" -msgid "%1$s is %2$s" -msgstr "%1$s está %2$s" +#: ../../include/text.php:1963 ../../include/language.php:423 +msgid "default" +msgstr "por defecto" -#: ../../Zotlabs/Module/Mood.php:134 -msgid "Mood App" -msgstr "App Estados de ánimo" +#: ../../include/text.php:1971 +msgid "Page layout" +msgstr "Plantilla de la página" -#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155 -msgid "Set your current mood and tell your friends" -msgstr "Describir su estado de ánimo para comunicárselo a sus amigos" +#: ../../include/text.php:1971 +msgid "You can create your own with the layouts tool" +msgstr "Puede crear su propia disposición gráfica con la herramienta de plantillas" -#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 -msgid "Mood" -msgstr "Estado de ánimo" +#: ../../include/text.php:1981 ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 +#: ../../Zotlabs/Module/Wiki.php:371 +msgid "BBcode" +msgstr "BBcode" -#: ../../Zotlabs/Module/Connections.php:58 -#: ../../Zotlabs/Module/Connections.php:115 -#: ../../Zotlabs/Module/Connections.php:273 -msgid "Active" -msgstr "Activo/a" +#: ../../include/text.php:1982 +msgid "HTML" +msgstr "HTML" -#: ../../Zotlabs/Module/Connections.php:63 -#: ../../Zotlabs/Module/Connections.php:181 -#: ../../Zotlabs/Module/Connections.php:278 -msgid "Blocked" -msgstr "Bloqueadas" +#: ../../include/text.php:1984 ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 +msgid "Text" +msgstr "Texto" -#: ../../Zotlabs/Module/Connections.php:68 -#: ../../Zotlabs/Module/Connections.php:188 -#: ../../Zotlabs/Module/Connections.php:277 -msgid "Ignored" -msgstr "Ignoradas" +#: ../../include/text.php:1985 +msgid "Comanche Layout" +msgstr "Plantilla de Comanche" -#: ../../Zotlabs/Module/Connections.php:73 -#: ../../Zotlabs/Module/Connections.php:202 -#: ../../Zotlabs/Module/Connections.php:276 -msgid "Hidden" -msgstr "Ocultas" +#: ../../include/text.php:1990 +msgid "PHP" +msgstr "PHP" -#: ../../Zotlabs/Module/Connections.php:78 -#: ../../Zotlabs/Module/Connections.php:195 -msgid "Archived/Unreachable" -msgstr "Archivadas o inaccesibles" +#: ../../include/text.php:1999 +msgid "Page content type" +msgstr "Tipo de contenido de la página" -#: ../../Zotlabs/Module/Connections.php:83 -#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:179 -#: ../../Zotlabs/Module/Notifications.php:50 -msgid "New" -msgstr "Nuevas" +#: ../../include/text.php:2122 ../../include/event.php:1213 +#: ../../include/conversation.php:119 +#: ../../Zotlabs/Module/Channel_calendar.php:213 +#: ../../Zotlabs/Module/Like.php:394 ../../Zotlabs/Module/Tagger.php:73 +#: ../../Zotlabs/Module/Events.php:266 +msgid "event" +msgstr "el/su evento" -#: ../../Zotlabs/Module/Connections.php:97 -#: ../../Zotlabs/Module/Connections.php:111 -#: ../../Zotlabs/Module/Connedit.php:727 ../../Zotlabs/Widget/Affinity.php:34 -msgid "All" -msgstr "Todos/as" +#: ../../include/text.php:2127 ../../include/conversation.php:146 +#: ../../Zotlabs/Module/Tagger.php:79 +msgid "comment" +msgstr "el comentario" -#: ../../Zotlabs/Module/Connections.php:157 -msgid "Active Connections" -msgstr "Conexiones activas" +#: ../../include/text.php:2132 +msgid "activity" +msgstr "la/su actividad" -#: ../../Zotlabs/Module/Connections.php:160 -msgid "Show active connections" -msgstr "Mostrar las conexiones activas" +#: ../../include/text.php:2233 +msgid "a-z, 0-9, -, and _ only" +msgstr "a-z, 0-9, -, and _ only" -#: ../../Zotlabs/Module/Connections.php:164 -#: ../../Zotlabs/Widget/Notifications.php:84 -msgid "New Connections" -msgstr "Nuevas conexiones" +#: ../../include/text.php:2559 +msgid "Design Tools" +msgstr "Herramientas de diseño web" -#: ../../Zotlabs/Module/Connections.php:167 -msgid "Show pending (new) connections" -msgstr "Mostrar conexiones (nuevas) pendientes" +#: ../../include/text.php:2562 ../../Zotlabs/Module/Blocks.php:154 +msgid "Blocks" +msgstr "Bloques" -#: ../../Zotlabs/Module/Connections.php:184 -msgid "Only show blocked connections" -msgstr "Mostrar solo las conexiones bloqueadas" +#: ../../include/text.php:2563 ../../Zotlabs/Module/Menu.php:171 +msgid "Menus" +msgstr "Menús" -#: ../../Zotlabs/Module/Connections.php:191 -msgid "Only show ignored connections" -msgstr "Mostrar solo conexiones ignoradas" +#: ../../include/text.php:2564 ../../Zotlabs/Module/Layouts.php:184 +msgid "Layouts" +msgstr "Plantillas" -#: ../../Zotlabs/Module/Connections.php:198 -msgid "Only show archived/unreachable connections" -msgstr "Mostrar solo las conexiones archivadas o no localizables" +#: ../../include/text.php:2565 +msgid "Pages" +msgstr "Páginas" -#: ../../Zotlabs/Module/Connections.php:205 -msgid "Only show hidden connections" -msgstr "Mostrar solo las conexiones ocultas" +#: ../../include/text.php:2577 +msgid "Import" +msgstr "Importar" -#: ../../Zotlabs/Module/Connections.php:220 -msgid "Show all connections" -msgstr "Mostrar todas las conexiones" +#: ../../include/text.php:2578 +msgid "Import website..." +msgstr "Importar un sitio web..." -#: ../../Zotlabs/Module/Connections.php:274 -msgid "Pending approval" -msgstr "Pendiente de aprobación" +#: ../../include/text.php:2579 +msgid "Select folder to import" +msgstr "Seleccionar la carpeta que se va a importar" -#: ../../Zotlabs/Module/Connections.php:275 -msgid "Archived" -msgstr "Archivadas" +#: ../../include/text.php:2580 +msgid "Import from a zipped folder:" +msgstr "Importar desde una carpeta comprimida: " -#: ../../Zotlabs/Module/Connections.php:279 -msgid "Not connected at this location" -msgstr "No está conectado/a en esta ubicación" +#: ../../include/text.php:2581 +msgid "Import from cloud files:" +msgstr "Importar desde los ficheros en la nube: " -#: ../../Zotlabs/Module/Connections.php:296 -#, php-format -msgid "%1$s [%2$s]" -msgstr "%1$s [%2$s]" +#: ../../include/text.php:2582 +msgid "/cloud/channel/path/to/folder" +msgstr "/cloud/canal/ruta/a la/carpeta" -#: ../../Zotlabs/Module/Connections.php:297 -msgid "Edit connection" -msgstr "Editar conexión" +#: ../../include/text.php:2583 +msgid "Enter path to website files" +msgstr "Ruta a los ficheros del sitio web" -#: ../../Zotlabs/Module/Connections.php:299 -msgid "Delete connection" -msgstr "Eliminar conexión" +#: ../../include/text.php:2584 +msgid "Select folder" +msgstr "Seleccionar la carpeta" -#: ../../Zotlabs/Module/Connections.php:308 -msgid "Channel address" -msgstr "Dirección del canal" +#: ../../include/text.php:2585 +msgid "Export website..." +msgstr "Exportar un sitio web..." -#: ../../Zotlabs/Module/Connections.php:310 ../../include/features.php:299 -msgid "Network" -msgstr "Red" +#: ../../include/text.php:2586 +msgid "Export to a zip file" +msgstr "Exportar a un fichero comprimido .zip" -#: ../../Zotlabs/Module/Connections.php:313 -msgid "Call" -msgstr "Llamar" +#: ../../include/text.php:2587 +msgid "website.zip" +msgstr "sitio_web.zip" -#: ../../Zotlabs/Module/Connections.php:315 -msgid "Status" -msgstr "Estado" +#: ../../include/text.php:2588 +msgid "Enter a name for the zip file." +msgstr "Escriba un nombre para el fichero zip." -#: ../../Zotlabs/Module/Connections.php:317 -msgid "Connected" -msgstr "Conectado/a" +#: ../../include/text.php:2589 +msgid "Export to cloud files" +msgstr "Exportar a la nube de ficheros" -#: ../../Zotlabs/Module/Connections.php:319 -msgid "Approve connection" -msgstr "Aprobar esta conexión" +#: ../../include/text.php:2590 +msgid "/path/to/export/folder" +msgstr "/ruta/para/exportar/carpeta" -#: ../../Zotlabs/Module/Connections.php:321 -msgid "Ignore connection" -msgstr "Ignorar esta conexión" +#: ../../include/text.php:2591 +msgid "Enter a path to a cloud files destination." +msgstr "Escriba una ruta de destino a la nube de ficheros." -#: ../../Zotlabs/Module/Connections.php:322 -#: ../../Zotlabs/Module/Connedit.php:644 -msgid "Ignore" -msgstr "Ignorar" +#: ../../include/text.php:2592 +msgid "Specify folder" +msgstr "Especificar una carpeta" -#: ../../Zotlabs/Module/Connections.php:323 -msgid "Recent activity" -msgstr "Actividad reciente" +#: ../../include/text.php:2954 ../../Zotlabs/Storage/Browser.php:131 +msgid "Collection" +msgstr "Colección" -#: ../../Zotlabs/Module/Connections.php:348 ../../Zotlabs/Lib/Apps.php:332 -#: ../../include/text.php:1010 ../../include/features.php:133 -msgid "Connections" -msgstr "Conexiones" +#: ../../include/opengraph.php:58 +#, php-format +msgid "This is the home page of %s." +msgstr "Esta es la página personal de %s." -#: ../../Zotlabs/Module/Connections.php:353 -msgid "Search your connections" -msgstr "Buscar sus conexiones" +#: ../../include/event.php:32 ../../include/event.php:95 +msgid "l F d, Y \\@ g:i A" +msgstr "l d de F, Y \\@ G:i" -#: ../../Zotlabs/Module/Connections.php:354 -msgid "Connections search" -msgstr "Buscar conexiones" +#: ../../include/event.php:40 +msgid "Starts:" +msgstr "Comienza:" -#: ../../Zotlabs/Module/Connections.php:355 -#: ../../Zotlabs/Module/Directory.php:416 -#: ../../Zotlabs/Module/Directory.php:421 ../../include/contact_widgets.php:23 -msgid "Find" -msgstr "Encontrar" +#: ../../include/event.php:50 +msgid "Finishes:" +msgstr "Finaliza:" -#: ../../Zotlabs/Module/Viewsrc.php:43 -msgid "item" -msgstr "elemento" +#: ../../include/event.php:62 ../../include/event.php:112 +#: ../../include/channel.php:1521 ../../Zotlabs/Module/Directory.php:339 +msgid "Location:" +msgstr "Ubicación:" -#: ../../Zotlabs/Module/Bookmarks.php:62 -msgid "Bookmark added" -msgstr "Marcador añadido" +#: ../../include/event.php:95 +msgid "l F d, Y" +msgstr "l F d, Y" -#: ../../Zotlabs/Module/Bookmarks.php:78 -msgid "Bookmarks App" -msgstr "App Marcadores" +#: ../../include/event.php:99 +msgid "Start:" +msgstr "Iniciar: " -#: ../../Zotlabs/Module/Bookmarks.php:79 -msgid "Bookmark links from posts and manage them" -msgstr "Añadir enlaces de las entradas a Marcadores y administrarlos" +#: ../../include/event.php:103 +msgid "End:" +msgstr "Finalizar: " -#: ../../Zotlabs/Module/Bookmarks.php:92 -msgid "My Bookmarks" -msgstr "Mis marcadores" +#: ../../include/event.php:1064 +msgid "This event has been added to your calendar." +msgstr "Este evento ha sido añadido a su calendario." -#: ../../Zotlabs/Module/Bookmarks.php:103 -msgid "My Connections Bookmarks" -msgstr "Marcadores de mis conexiones" +#: ../../include/event.php:1290 +msgid "Not specified" +msgstr "Sin especificar" -#: ../../Zotlabs/Module/Removeaccount.php:35 -msgid "" -"Account removals are not allowed within 48 hours of changing the account " -"password." -msgstr "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña." +#: ../../include/event.php:1291 +msgid "Needs Action" +msgstr "Necesita de una intervención" -#: ../../Zotlabs/Module/Removeaccount.php:57 -msgid "Remove This Account" -msgstr "Eliminar esta cuenta" +#: ../../include/event.php:1292 +msgid "Completed" +msgstr "Completado/a" -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "" -"This account and all its channels will be completely removed from the " -"network. " -msgstr "Esta cuenta y todos sus canales van a ser eliminados de la red." +#: ../../include/event.php:1293 +msgid "In Process" +msgstr "En proceso" -#: ../../Zotlabs/Module/Removeaccount.php:60 -msgid "" -"Remove this account, all its channels and all its channel clones from the " -"network" -msgstr "Remover esta cuenta, todos sus canales y clones de la red" +#: ../../include/event.php:1294 +msgid "Cancelled" +msgstr "Cancelado/a" -#: ../../Zotlabs/Module/Removeaccount.php:60 -msgid "" -"By default only the instances of the channels located on this hub will be " -"removed from the network" -msgstr "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red" +#: ../../include/event.php:1375 ../../include/connections.php:728 +#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:792 +#: ../../Zotlabs/Module/Connedit.php:932 +msgid "Mobile" +msgstr "Móvil" -#: ../../Zotlabs/Module/Photos.php:78 -msgid "Page owner information could not be retrieved." -msgstr "La información del propietario de la página no pudo ser recuperada." +#: ../../include/event.php:1376 ../../include/connections.php:729 +#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Profiles.php:793 +#: ../../Zotlabs/Module/Connedit.php:933 +msgid "Home" +msgstr "Inicio" -#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 -msgid "Album not found." -msgstr "Álbum no encontrado." +#: ../../include/event.php:1377 ../../include/connections.php:730 +msgid "Home, Voice" +msgstr "Llamadas particulares" -#: ../../Zotlabs/Module/Photos.php:103 -msgid "Delete Album" -msgstr "Borrar álbum" +#: ../../include/event.php:1378 ../../include/connections.php:731 +msgid "Home, Fax" +msgstr "Fax particular" -#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 -msgid "Delete Photo" -msgstr "Borrar foto" +#: ../../include/event.php:1379 ../../include/connections.php:732 +#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Profiles.php:794 +#: ../../Zotlabs/Module/Connedit.php:934 +msgid "Work" +msgstr "Trabajo" -#: ../../Zotlabs/Module/Photos.php:527 -msgid "No photos selected" -msgstr "No hay fotos seleccionadas" +#: ../../include/event.php:1380 ../../include/connections.php:733 +msgid "Work, Voice" +msgstr "Llamadas de trabajo" -#: ../../Zotlabs/Module/Photos.php:576 -msgid "Access to this item is restricted." -msgstr "El acceso a este elemento está restringido." +#: ../../include/event.php:1381 ../../include/connections.php:734 +msgid "Work, Fax" +msgstr "Fax de trabajo" -#: ../../Zotlabs/Module/Photos.php:619 -#, php-format -msgid "%1$.2f MB of %2$.2f MB photo storage used." -msgstr "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado." +#: ../../include/event.php:1382 ../../include/event.php:1389 +#: ../../include/selectors.php:60 ../../include/selectors.php:77 +#: ../../include/selectors.php:115 ../../include/selectors.php:151 +#: ../../include/connections.php:735 ../../include/connections.php:742 +#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Profiles.php:795 +#: ../../Zotlabs/Module/Connedit.php:935 +#: ../../Zotlabs/Access/PermissionRoles.php:306 +msgid "Other" +msgstr "Otro" -#: ../../Zotlabs/Module/Photos.php:622 -#, php-format -msgid "%1$.2f MB photo storage used." -msgstr "%1$.2f MB de almacenamiento de fotos utilizado." +#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../Zotlabs/Module/Admin/Features.php:56 +#: ../../Zotlabs/Module/Settings/Features.php:36 +msgid "Off" +msgstr "Desactivado" -#: ../../Zotlabs/Module/Photos.php:664 -msgid "Upload Photos" -msgstr "Subir fotos" +#: ../../include/features.php:55 ../../Zotlabs/Module/Admin/Features.php:55 +#: ../../Zotlabs/Module/Admin/Features.php:56 +#: ../../Zotlabs/Module/Settings/Features.php:36 +msgid "On" +msgstr "Activado" -#: ../../Zotlabs/Module/Photos.php:668 -msgid "Enter an album name" -msgstr "Introducir un nombre de álbum" +#: ../../include/features.php:82 ../../include/nav.php:465 +#: ../../include/nav.php:468 ../../Zotlabs/Lib/Apps.php:345 +#: ../../Zotlabs/Storage/Browser.php:140 +msgid "Calendar" +msgstr "Calendario" -#: ../../Zotlabs/Module/Photos.php:669 -msgid "or select an existing album (doubleclick)" -msgstr "o seleccionar un álbum (con un doble click)" +#: ../../include/features.php:86 +msgid "Start calendar week on Monday" +msgstr "Comenzar el calendario semanal por el lunes" -#: ../../Zotlabs/Module/Photos.php:670 -msgid "Create a status post for this upload" -msgstr "Crear un mensaje de estado para esta subida" +#: ../../include/features.php:87 +msgid "Default is Sunday" +msgstr "Por defecto es domingo" -#: ../../Zotlabs/Module/Photos.php:672 -msgid "Description (optional)" -msgstr "Descripción (opcional)" +#: ../../include/features.php:94 +msgid "Event Timezone Selection" +msgstr "Selección del huso horario del evento" -#: ../../Zotlabs/Module/Photos.php:758 -msgid "Show Newest First" -msgstr "Mostrar lo más reciente primero" +#: ../../include/features.php:95 +msgid "Allow event creation in timezones other than your own." +msgstr "Permitir la creación de eventos en husos horarios distintos del suyo." -#: ../../Zotlabs/Module/Photos.php:760 -msgid "Show Oldest First" -msgstr "Mostrar lo más antiguo primero" +#: ../../include/features.php:104 ../../Zotlabs/Lib/Apps.php:342 +msgid "Channel Home" +msgstr "Mi canal" -#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 -msgid "Add Photos" -msgstr "Añadir fotos" +#: ../../include/features.php:108 +msgid "Search by Date" +msgstr "Buscar por fecha" -#: ../../Zotlabs/Module/Photos.php:865 -msgid "Permission denied. Access to this item may be restricted." -msgstr "Permiso denegado. El acceso a este elemento puede estar restringido." +#: ../../include/features.php:109 +msgid "Ability to select posts by date ranges" +msgstr "Capacidad de seleccionar entradas por rango de fechas" -#: ../../Zotlabs/Module/Photos.php:867 -msgid "Photo not available" -msgstr "Foto no disponible" +#: ../../include/features.php:116 +msgid "Tag Cloud" +msgstr "Nube de etiquetas" -#: ../../Zotlabs/Module/Photos.php:925 -msgid "Use as profile photo" -msgstr "Usar como foto del perfil" +#: ../../include/features.php:117 +msgid "Provide a personal tag cloud on your channel page" +msgstr "Proveer nube de etiquetas personal en su página de canal" -#: ../../Zotlabs/Module/Photos.php:926 -msgid "Use as cover photo" -msgstr "Usar como imagen de portada del perfil" +#: ../../include/features.php:124 ../../include/features.php:351 +msgid "Use blog/list mode" +msgstr "Usar el modo blog/lista" -#: ../../Zotlabs/Module/Photos.php:933 -msgid "Private Photo" -msgstr "Foto privada" +#: ../../include/features.php:125 ../../include/features.php:352 +msgid "Comments will be displayed separately" +msgstr "Los comentarios se mostrarán por separado" -#: ../../Zotlabs/Module/Photos.php:948 -msgid "View Full Size" -msgstr "Ver tamaño completo" +#: ../../include/features.php:137 +msgid "Connection Filtering" +msgstr "Filtrado de conexiones" -#: ../../Zotlabs/Module/Photos.php:1030 -msgid "Edit photo" -msgstr "Editar foto" +#: ../../include/features.php:138 +msgid "Filter incoming posts from connections based on keywords/content" +msgstr "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido" -#: ../../Zotlabs/Module/Photos.php:1032 -msgid "Rotate CW (right)" -msgstr "Girar CW (a la derecha)" +#: ../../include/features.php:146 +msgid "Conversation" +msgstr "Conversación" -#: ../../Zotlabs/Module/Photos.php:1033 -msgid "Rotate CCW (left)" -msgstr "Girar CCW (a la izquierda)" +#: ../../include/features.php:150 +msgid "Community Tagging" +msgstr "Etiquetas de la comunidad" -#: ../../Zotlabs/Module/Photos.php:1036 -msgid "Move photo to album" -msgstr "Mover la foto a un álbum" +#: ../../include/features.php:151 +msgid "Ability to tag existing posts" +msgstr "Capacidad de etiquetar entradas" + +#: ../../include/features.php:158 +msgid "Emoji Reactions" +msgstr "Emoticonos \"emoji\"" -#: ../../Zotlabs/Module/Photos.php:1037 -msgid "Enter a new album name" -msgstr "Introducir un nuevo nombre de álbum" +#: ../../include/features.php:159 +msgid "Add emoji reaction ability to posts" +msgstr "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas" -#: ../../Zotlabs/Module/Photos.php:1038 -msgid "or select an existing one (doubleclick)" -msgstr "o seleccionar un álbum (con un doble click)" +#: ../../include/features.php:166 +msgid "Dislike Posts" +msgstr "Desagrado de publicaciones" -#: ../../Zotlabs/Module/Photos.php:1043 -msgid "Add a Tag" -msgstr "Añadir una etiqueta" +#: ../../include/features.php:167 +msgid "Ability to dislike posts/comments" +msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios" -#: ../../Zotlabs/Module/Photos.php:1051 -msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" -msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" +#: ../../include/features.php:174 +msgid "Star Posts" +msgstr "Entradas destacadas" -#: ../../Zotlabs/Module/Photos.php:1054 -msgid "Flag as adult in album view" -msgstr "Marcar como \"solo para adultos\" en el álbum" +#: ../../include/features.php:175 +msgid "Ability to mark special posts with a star indicator" +msgstr "Capacidad de marcar entradas destacadas con un indicador de estrella" -#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 -msgid "I like this (toggle)" -msgstr "Me gusta (cambiar)" +#: ../../include/features.php:182 +msgid "Reply on comment" +msgstr "Responder a los comentarios" -#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 -msgid "I don't like this (toggle)" -msgstr "No me gusta esto (cambiar)" +#: ../../include/features.php:183 +msgid "Ability to reply on selected comment" +msgstr "Posibilidad de responder a los comentarios seleccionados" -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:469 -#: ../../include/conversation.php:787 -msgid "Please wait" -msgstr "Espere por favor" +#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:346 +msgid "Directory" +msgstr "Directorio" -#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 -#: ../../Zotlabs/Lib/ThreadItem.php:793 -msgid "This is you" -msgstr "Este es usted" +#: ../../include/features.php:196 +msgid "Advanced Directory Search" +msgstr "Búsqueda avanzada en el directorio" -#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1214 -#: ../../Zotlabs/Lib/ThreadItem.php:795 ../../include/js_strings.php:6 -msgid "Comment" -msgstr "Comentar" +#: ../../include/features.php:197 +msgid "Allows creation of complex directory search queries" +msgstr "Permitir la creación de consultas complejas en las búsquedas en el directorio" -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Likes" -msgstr "Me gusta" +#: ../../include/features.php:206 +msgid "Editor" +msgstr "Editor" -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Dislikes" -msgstr "No me gusta" +#: ../../include/features.php:210 +msgid "Post Categories" +msgstr "Temas de las entradas" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Agree" -msgstr "De acuerdo" +#: ../../include/features.php:211 +msgid "Add categories to your posts" +msgstr "Añadir temas a sus publicaciones" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Disagree" -msgstr "En desacuerdo" +#: ../../include/features.php:219 +msgid "Large Photos" +msgstr "Fotos de gran tamaño" -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Abstain" -msgstr "Abstención" +#: ../../include/features.php:220 +msgid "" +"Include large (1024px) photo thumbnails in posts. If not enabled, use small " +"(640px) photo thumbnails" +msgstr "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Attending" -msgstr "Participaré" +#: ../../include/features.php:227 +msgid "Even More Encryption" +msgstr "Más cifrado todavía" -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Not attending" -msgstr "No participaré" +#: ../../include/features.php:228 +msgid "" +"Allow optional encryption of content end-to-end with a shared secret key" +msgstr "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida." -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Might attend" -msgstr "Quizá participe" +#: ../../include/features.php:235 +msgid "Enable Voting Tools" +msgstr "Permitir entradas con votación" -#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 -#: ../../Zotlabs/Lib/ThreadItem.php:232 ../../Zotlabs/Lib/ThreadItem.php:244 -msgid "View all" -msgstr "Ver todo" +#: ../../include/features.php:236 +msgid "Provide a class of post which others can vote on" +msgstr "Proveer una clase de publicación en la que otros puedan votar" -#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:236 -#: ../../include/conversation.php:1702 ../../include/channel.php:1661 -#: ../../include/taxonomy.php:659 -msgctxt "noun" -msgid "Like" -msgid_plural "Likes" -msgstr[0] "Me gusta" -msgstr[1] "Me gusta" +#: ../../include/features.php:243 +msgid "Disable Comments" +msgstr "Deshabilitar comentarios" -#: ../../Zotlabs/Module/Photos.php:1140 ../../Zotlabs/Lib/ThreadItem.php:241 -#: ../../include/conversation.php:1705 -msgctxt "noun" -msgid "Dislike" -msgid_plural "Dislikes" -msgstr[0] "No me gusta" -msgstr[1] "No me gusta" +#: ../../include/features.php:244 +msgid "Provide the option to disable comments for a post" +msgstr "Proporcionar la opción de desactivar los comentarios para una entrada" -#: ../../Zotlabs/Module/Photos.php:1246 -msgid "Photo Tools" -msgstr "Gestión de las fotos" +#: ../../include/features.php:251 +msgid "Delayed Posting" +msgstr "Publicación aplazada" -#: ../../Zotlabs/Module/Photos.php:1255 -msgid "In This Photo:" -msgstr "En esta foto:" +#: ../../include/features.php:252 +msgid "Allow posts to be published at a later date" +msgstr "Permitir mensajes que se publicarán en una fecha posterior" -#: ../../Zotlabs/Module/Photos.php:1260 -msgid "Map" -msgstr "Mapa" +#: ../../include/features.php:259 +msgid "Content Expiration" +msgstr "Caducidad del contenido" -#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 -msgctxt "noun" -msgid "Likes" -msgstr "Me gusta" +#: ../../include/features.php:260 +msgid "Remove posts/comments and/or private messages at a future time" +msgstr "Eliminar publicaciones/comentarios y/o mensajes privados más adelante" -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 -msgctxt "noun" -msgid "Dislikes" -msgstr "No me gusta" +#: ../../include/features.php:267 +msgid "Suppress Duplicate Posts/Comments" +msgstr "Prevenir entradas o comentarios duplicados" -#: ../../Zotlabs/Module/Photos.php:1274 ../../Zotlabs/Lib/ThreadItem.php:463 -#: ../../addon/channelreputation/channelreputation.php:230 -#: ../../include/acl_selectors.php:125 -msgid "Close" -msgstr "Cerrar" +#: ../../include/features.php:268 +msgid "" +"Prevent posts with identical content to be published with less than two " +"minutes in between submissions." +msgstr "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo." -#: ../../Zotlabs/Module/Photos.php:1347 ../../Zotlabs/Module/Photos.php:1360 -#: ../../Zotlabs/Module/Photos.php:1361 ../../include/photos.php:667 -msgid "Recent Photos" -msgstr "Fotos recientes" +#: ../../include/features.php:275 +msgid "Auto-save drafts of posts and comments" +msgstr "Guardar automáticamente borradores de entradas y comentarios" -#: ../../Zotlabs/Module/Wiki.php:35 -#: ../../addon/flashcards/Mod_Flashcards.php:35 ../../addon/cart/cart.php:1298 -msgid "Profile Unavailable." -msgstr "Perfil no disponible" +#: ../../include/features.php:276 +msgid "" +"Automatically saves post and comment drafts in local browser storage to help" +" prevent accidental loss of compositions" +msgstr "Guarda automáticamente los borradores de comentarios y publicaciones en el almacenamiento del navegador local para ayudar a evitar la pérdida accidental de composiciones." -#: ../../Zotlabs/Module/Wiki.php:52 -msgid "Wiki App" -msgstr "App Wiki" +#: ../../include/features.php:285 +msgid "Manage" +msgstr "Gestionar" -#: ../../Zotlabs/Module/Wiki.php:53 -msgid "Provide a wiki for your channel" -msgstr "Proporcionar un wiki para su canal" +#: ../../include/features.php:289 +msgid "Navigation Channel Select" +msgstr "Navegación por el selector de canales" -#: ../../Zotlabs/Module/Wiki.php:77 ../../addon/cart/myshop.php:37 -#: ../../addon/cart/cart.php:1444 -#: ../../addon/cart/submodules/paypalbutton.php:456 -#: ../../addon/cart/manual_payments.php:93 -msgid "Invalid channel" -msgstr "Canal no válido" +#: ../../include/features.php:290 +msgid "Change channels directly from within the navigation dropdown menu" +msgstr "Cambiar de canales directamente desde el menú de navegación desplegable" -#: ../../Zotlabs/Module/Wiki.php:133 -msgid "Error retrieving wiki" -msgstr "Error al recuperar el wiki" +#: ../../include/features.php:299 ../../Zotlabs/Module/Connections.php:310 +msgid "Network" +msgstr "Red" -#: ../../Zotlabs/Module/Wiki.php:140 -msgid "Error creating zip file export folder" -msgstr "Error al crear el fichero comprimido zip de la carpeta a exportar" +#: ../../include/features.php:303 ../../Zotlabs/Widget/Savedsearch.php:83 +msgid "Saved Searches" +msgstr "Búsquedas guardadas" -#: ../../Zotlabs/Module/Wiki.php:191 -msgid "Error downloading wiki: " -msgstr "Error al descargar el wiki: " +#: ../../include/features.php:304 +msgid "Save search terms for re-use" +msgstr "Guardar términos de búsqueda para su reutilización" -#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:15 -#: ../../include/nav.php:538 -msgid "Wikis" -msgstr "Wikis" +#: ../../include/features.php:311 ../../include/contact_widgets.php:53 +#: ../../Zotlabs/Widget/Activity_filter.php:137 +#: ../../Zotlabs/Widget/Filer.php:28 +msgid "Saved Folders" +msgstr "Carpetas guardadas" -#: ../../Zotlabs/Module/Wiki.php:212 -msgid "Download" -msgstr "Descargar" +#: ../../include/features.php:312 +msgid "Ability to file posts under folders" +msgstr "Capacidad de archivar entradas en carpetas" -#: ../../Zotlabs/Module/Wiki.php:214 ../../Zotlabs/Module/Chat.php:264 -#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Manage.php:145 -msgid "Create New" -msgstr "Crear" +#: ../../include/features.php:319 +msgid "Alternate Stream Order" +msgstr "Orden de stream alternativo" -#: ../../Zotlabs/Module/Wiki.php:216 -msgid "Wiki name" -msgstr "Nombre del wiki" +#: ../../include/features.php:320 +msgid "" +"Ability to order the stream by last post date, last comment date or " +"unthreaded activities" +msgstr "Posibilidad de ordenar el stream por última fecha de publicación, última fecha de comentario o actividades sin hilo" -#: ../../Zotlabs/Module/Wiki.php:217 -msgid "Content type" -msgstr "Tipo de contenido" +#: ../../include/features.php:327 +msgid "Contact Filter" +msgstr "Filtro de contactos" -#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371 -#: ../../Zotlabs/Widget/Wiki_pages.php:38 -#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../addon/mdpost/mdpost.php:41 -#: ../../include/text.php:1981 -msgid "Markdown" -msgstr "Markdown" +#: ../../include/features.php:328 +msgid "Ability to display only posts of a selected contact" +msgstr "Posibilidad de mostrar sólo los mensajes de un contacto seleccionado" -#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371 -#: ../../Zotlabs/Widget/Wiki_pages.php:38 -#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1979 -msgid "BBcode" -msgstr "BBcode" +#: ../../include/features.php:335 +msgid "Forum Filter" +msgstr "Filtro de foro" -#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Widget/Wiki_pages.php:38 -#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1982 -msgid "Text" -msgstr "Texto" +#: ../../include/features.php:336 +msgid "Ability to display only posts of a specific forum" +msgstr "Posibilidad de mostrar sólo los mensajes de un foro específico" -#: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:292 -msgid "Type" -msgstr "Tipo" +#: ../../include/features.php:343 +msgid "Personal Posts Filter" +msgstr "Filtro de entradas personales" -#: ../../Zotlabs/Module/Wiki.php:220 -msgid "Any type" -msgstr "Cualquier tipo" +#: ../../include/features.php:344 +msgid "Ability to display only posts that you've interacted on" +msgstr "Posibilidad de mostrar sólo los mensajes en los que usted haya interactuado" -#: ../../Zotlabs/Module/Wiki.php:227 -msgid "Lock content type" -msgstr "Tipo de contenido bloqueado" +#: ../../include/features.php:361 ../../include/nav.php:446 +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 +msgid "Photos" +msgstr "Fotos" -#: ../../Zotlabs/Module/Wiki.php:228 -msgid "Create a status post for this wiki" -msgstr "Crear un mensaje de estado para este wiki" +#: ../../include/features.php:365 +msgid "Photo Location" +msgstr "Ubicación de las fotos" -#: ../../Zotlabs/Module/Wiki.php:229 -msgid "Edit Wiki Name" -msgstr "Editar el nombre del wiki" +#: ../../include/features.php:366 +msgid "If location data is available on uploaded photos, link this to a map." +msgstr "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa." -#: ../../Zotlabs/Module/Wiki.php:274 -msgid "Wiki not found" -msgstr "Wiki no encontrado" +#: ../../include/features.php:375 ../../Zotlabs/Lib/Apps.php:362 +msgid "Profiles" +msgstr "Perfiles" -#: ../../Zotlabs/Module/Wiki.php:300 -msgid "Rename page" -msgstr "Renombrar la página" +#: ../../include/features.php:379 +msgid "Advanced Profiles" +msgstr "Perfiles avanzados" -#: ../../Zotlabs/Module/Wiki.php:321 -msgid "Error retrieving page content" -msgstr "Error al recuperar el contenido de la página" +#: ../../include/features.php:380 +msgid "Additional profile sections and selections" +msgstr "Secciones y selecciones de perfil adicionales" -#: ../../Zotlabs/Module/Wiki.php:329 ../../Zotlabs/Module/Wiki.php:331 -msgid "New page" -msgstr "Nueva página" +#: ../../include/features.php:387 +msgid "Profile Import/Export" +msgstr "Importar/Exportar perfil" -#: ../../Zotlabs/Module/Wiki.php:366 -msgid "Revision Comparison" -msgstr "Comparación de revisiones" +#: ../../include/features.php:388 +msgid "Save and load profile details across sites/channels" +msgstr "Guardar y cargar detalles del perfil a través de sitios/canales" -#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 -#: ../../Zotlabs/Widget/Wiki_page_history.php:25 -msgid "Revert" -msgstr "Revertir" +#: ../../include/features.php:395 +msgid "Multiple Profiles" +msgstr "Múltiples perfiles" -#: ../../Zotlabs/Module/Wiki.php:374 -msgid "Short description of your changes (optional)" -msgstr "Breve descripción de sus cambios (opcional)" +#: ../../include/features.php:396 +msgid "Ability to create multiple profiles" +msgstr "Capacidad de crear múltiples perfiles" -#: ../../Zotlabs/Module/Wiki.php:384 -msgid "Source" -msgstr "Fuente" +#: ../../include/security.php:607 +msgid "" +"The form security token was not correct. This probably happened because the " +"form has been opened for too long (>3 hours) before submitting it." +msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado" -#: ../../Zotlabs/Module/Wiki.php:394 -msgid "New page name" -msgstr "Nombre de la nueva página" +#: ../../include/js_strings.php:5 +msgid "Delete this item?" +msgstr "¿Borrar este elemento?" -#: ../../Zotlabs/Module/Wiki.php:399 -msgid "Embed image from photo albums" -msgstr "Incluir una imagen de los álbumes de fotos" +#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1095 +#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:795 +msgid "Comment" +msgstr "Comentar" -#: ../../Zotlabs/Module/Wiki.php:400 ../../addon/hsse/hsse.php:208 -#: ../../include/conversation.php:1414 -msgid "Embed an image from your albums" -msgstr "Incluir una imagen de sus álbumes" +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:502 +#, php-format +msgid "%s show all" +msgstr "%s mostrar todo" -#: ../../Zotlabs/Module/Wiki.php:402 -#: ../../Zotlabs/Module/Profile_photo.php:506 -#: ../../Zotlabs/Module/Cover_photo.php:435 ../../addon/hsse/hsse.php:210 -#: ../../addon/hsse/hsse.php:257 ../../include/conversation.php:1416 -#: ../../include/conversation.php:1463 -msgid "OK" -msgstr "OK" +#: ../../include/js_strings.php:8 +#, php-format +msgid "%s show less" +msgstr "%s mostrar menos" -#: ../../Zotlabs/Module/Wiki.php:403 -#: ../../Zotlabs/Module/Profile_photo.php:507 -#: ../../Zotlabs/Module/Cover_photo.php:436 ../../addon/hsse/hsse.php:139 -#: ../../include/conversation.php:1342 -msgid "Choose images to embed" -msgstr "Elegir imágenes para incluir" +#: ../../include/js_strings.php:9 +#, php-format +msgid "%s expand" +msgstr "%s expandir" -#: ../../Zotlabs/Module/Wiki.php:404 -#: ../../Zotlabs/Module/Profile_photo.php:508 -#: ../../Zotlabs/Module/Cover_photo.php:437 ../../addon/hsse/hsse.php:140 -#: ../../include/conversation.php:1343 -msgid "Choose an album" -msgstr "Elegir un álbum" +#: ../../include/js_strings.php:10 +#, php-format +msgid "%s collapse" +msgstr "%s contraer" -#: ../../Zotlabs/Module/Wiki.php:405 -#: ../../Zotlabs/Module/Profile_photo.php:509 -#: ../../Zotlabs/Module/Cover_photo.php:438 -msgid "Choose a different album" -msgstr "Elegir un álbum diferente..." +#: ../../include/js_strings.php:11 +msgid "Password too short" +msgstr "Contraseña demasiado corta" -#: ../../Zotlabs/Module/Wiki.php:406 -#: ../../Zotlabs/Module/Profile_photo.php:510 -#: ../../Zotlabs/Module/Cover_photo.php:439 ../../addon/hsse/hsse.php:142 -#: ../../include/conversation.php:1345 -msgid "Error getting album list" -msgstr "Error al obtener la lista de álbumes" +#: ../../include/js_strings.php:12 +msgid "Passwords do not match" +msgstr "Las contraseñas no coinciden" -#: ../../Zotlabs/Module/Wiki.php:407 -#: ../../Zotlabs/Module/Profile_photo.php:511 -#: ../../Zotlabs/Module/Cover_photo.php:440 ../../addon/hsse/hsse.php:143 -#: ../../include/conversation.php:1346 -msgid "Error getting photo link" -msgstr "Error al obtener el enlace de la foto" +#: ../../include/js_strings.php:13 +msgid "everybody" +msgstr "cualquiera" -#: ../../Zotlabs/Module/Wiki.php:408 -#: ../../Zotlabs/Module/Profile_photo.php:512 -#: ../../Zotlabs/Module/Cover_photo.php:441 ../../addon/hsse/hsse.php:144 -#: ../../include/conversation.php:1347 -msgid "Error getting album" -msgstr "Error al obtener el álbum" +#: ../../include/js_strings.php:14 +msgid "Secret Passphrase" +msgstr "Contraseña secreta" -#: ../../Zotlabs/Module/Wiki.php:410 -msgid "History" -msgstr "Historial" +#: ../../include/js_strings.php:15 +msgid "Passphrase hint" +msgstr "Pista de contraseña" -#: ../../Zotlabs/Module/Wiki.php:488 -msgid "Error creating wiki. Invalid name." -msgstr "Error al crear el wiki: el nombre no es válido." +#: ../../include/js_strings.php:16 +msgid "Notice: Permissions have changed but have not yet been submitted." +msgstr "Aviso: los permisos han cambiado pero aún no han sido enviados." -#: ../../Zotlabs/Module/Wiki.php:495 -msgid "A wiki with this name already exists." -msgstr "Ya hay un wiki con este nombre." +#: ../../include/js_strings.php:17 +msgid "close all" +msgstr "cerrar todo" -#: ../../Zotlabs/Module/Wiki.php:508 -msgid "Wiki created, but error creating Home page." -msgstr "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio." +#: ../../include/js_strings.php:18 +msgid "Nothing new here" +msgstr "Nada nuevo por aquí" -#: ../../Zotlabs/Module/Wiki.php:515 -msgid "Error creating wiki" -msgstr "Error al crear el wiki" +#: ../../include/js_strings.php:19 +msgid "Rate This Channel (this is public)" +msgstr "Valorar este canal (esto es público)" -#: ../../Zotlabs/Module/Wiki.php:539 -msgid "Error updating wiki. Invalid name." -msgstr "Error al actualizar el wiki. Nombre no válido." +#: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155 +#: ../../Zotlabs/Module/Connedit.php:887 +msgid "Rating" +msgstr "Valoración" -#: ../../Zotlabs/Module/Wiki.php:559 -msgid "Error updating wiki" -msgstr "Error al actualizar el wiki" +#: ../../include/js_strings.php:21 +msgid "Describe (optional)" +msgstr "Describir (opcional)" -#: ../../Zotlabs/Module/Wiki.php:574 -msgid "Wiki delete permission denied." -msgstr "Se ha denegado el permiso para eliminar el wiki." +#: ../../include/js_strings.php:23 +msgid "Please enter a link URL" +msgstr "Por favor, introduzca una dirección de enlace" -#: ../../Zotlabs/Module/Wiki.php:584 -msgid "Error deleting wiki" -msgstr "Se ha producido un error al eliminar el wiki" +#: ../../include/js_strings.php:24 +msgid "Unsaved changes. Are you sure you wish to leave this page?" +msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?" -#: ../../Zotlabs/Module/Wiki.php:617 -msgid "New page created" -msgstr "Se ha creado la nueva página" +#: ../../include/js_strings.php:25 ../../Zotlabs/Module/Pubsites.php:52 +#: ../../Zotlabs/Module/Cdav.php:1038 ../../Zotlabs/Module/Events.php:483 +#: ../../Zotlabs/Module/Profiles.php:509 ../../Zotlabs/Module/Profiles.php:734 +#: ../../Zotlabs/Module/Locs.php:117 +msgid "Location" +msgstr "Ubicación" -#: ../../Zotlabs/Module/Wiki.php:739 -msgid "Cannot delete Home" -msgstr "No se puede eliminar la página principal" +#: ../../include/js_strings.php:26 +msgid "lovely" +msgstr "encantador" -#: ../../Zotlabs/Module/Wiki.php:803 -msgid "Current Revision" -msgstr "Revisión actual" +#: ../../include/js_strings.php:27 +msgid "wonderful" +msgstr "fabuloso" -#: ../../Zotlabs/Module/Wiki.php:803 -msgid "Selected Revision" -msgstr "Revisión seleccionada" +#: ../../include/js_strings.php:28 +msgid "fantastic" +msgstr "fantástico" -#: ../../Zotlabs/Module/Wiki.php:853 -msgid "You must be authenticated." -msgstr "Debe estar autenticado." +#: ../../include/js_strings.php:29 +msgid "great" +msgstr "grandioso" -#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1574 -#, php-format -msgid "🔁 Repeated %1$s's %2$s" -msgstr "🔁 Repetidos %2$sde %1$s" +#: ../../include/js_strings.php:30 +msgid "" +"Your chosen nickname was either already taken or not valid. Please use our " +"suggestion (" +msgstr "El nombre de usuario elegido ya está en uso o no es válido. Por favor, utilice nuestra sugerencia (" -#: ../../Zotlabs/Module/Share.php:119 -msgid "Post repeated" -msgstr "Entrada repetida" +#: ../../include/js_strings.php:31 +msgid ") or enter a new one." +msgstr ") o introduzca uno nuevo." -#: ../../Zotlabs/Module/Chanview.php:139 -msgid "toggle full screen mode" -msgstr "cambiar al modo de pantalla completa" +#: ../../include/js_strings.php:32 +msgid "Thank you, this nickname is valid." +msgstr "Gracias, este alias es válido." -#: ../../Zotlabs/Module/Pdledit.php:26 -msgid "Layout updated." -msgstr "Plantilla actualizada." +#: ../../include/js_strings.php:33 +msgid "A channel name is required." +msgstr "Se requiere un nombre de canal" -#: ../../Zotlabs/Module/Pdledit.php:42 -msgid "PDL Editor App" -msgstr "App Editor PDL" +#: ../../include/js_strings.php:34 +msgid "This is a " +msgstr "Esto es un " -#: ../../Zotlabs/Module/Pdledit.php:43 -msgid "Provides the ability to edit system page layouts" -msgstr "Proporciona la capacidad de editar los diseños de página del sistema" +#: ../../include/js_strings.php:35 +msgid " channel name" +msgstr "nombre de canal" -#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99 -msgid "Edit System Page Description" -msgstr "Editor del Sistema de Descripción de Páginas" +#: ../../include/js_strings.php:36 +msgid "Back to reply" +msgstr "Volver a la respuesta" -#: ../../Zotlabs/Module/Pdledit.php:77 -msgid "(modified)" -msgstr "(modificado)" +#: ../../include/js_strings.php:42 +#, php-format +msgid "%d minutes" +msgid_plural "%d minutes" +msgstr[0] "%d minutos" +msgstr[1] "%d minutos" -#: ../../Zotlabs/Module/Pdledit.php:77 ../../Zotlabs/Module/Lostpass.php:133 -msgid "Reset" -msgstr "Reiniciar" +#: ../../include/js_strings.php:43 +#, php-format +msgid "about %d hours" +msgid_plural "about %d hours" +msgstr[0] "alrededor de %d horas" +msgstr[1] "alrededor de %d horas" -#: ../../Zotlabs/Module/Pdledit.php:94 -msgid "Layout not found." -msgstr "Plantilla no encontrada" +#: ../../include/js_strings.php:44 +#, php-format +msgid "%d days" +msgid_plural "%d days" +msgstr[0] "%d días" +msgstr[1] "%d días" -#: ../../Zotlabs/Module/Pdledit.php:100 -msgid "Module Name:" -msgstr "Nombre del módulo:" +#: ../../include/js_strings.php:45 +#, php-format +msgid "%d months" +msgid_plural "%d months" +msgstr[0] "%d meses" +msgstr[1] "%d meses" -#: ../../Zotlabs/Module/Pdledit.php:101 -msgid "Layout Help" -msgstr "Ayuda para el diseño de plantillas de página" +#: ../../include/js_strings.php:46 +#, php-format +msgid "%d years" +msgid_plural "%d years" +msgstr[0] "%d años" +msgstr[1] "%d años" -#: ../../Zotlabs/Module/Pdledit.php:102 -msgid "Edit another layout" -msgstr "Editar otro diseño" +#: ../../include/js_strings.php:51 +msgid "timeago.prefixAgo" +msgstr "hace " -#: ../../Zotlabs/Module/Pdledit.php:103 -msgid "System layout" -msgstr "Diseño del sistema" +#: ../../include/js_strings.php:52 +msgid "timeago.prefixFromNow" +msgstr "en " -#: ../../Zotlabs/Module/Poke.php:165 -msgid "Poke App" -msgstr "App Toques" +#: ../../include/js_strings.php:53 +msgid "timeago.suffixAgo" +msgstr "NONE" -#: ../../Zotlabs/Module/Poke.php:166 -msgid "Poke somebody in your addressbook" -msgstr "Dar un toque a alguien en su libreta de direcciones" +#: ../../include/js_strings.php:54 +msgid "timeago.suffixFromNow" +msgstr "NONE" -#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:350 -#: ../../include/conversation.php:1098 -msgid "Poke" -msgstr "Toques y otras cosas" +#: ../../include/js_strings.php:57 +msgid "less than a minute" +msgstr "menos de un minuto" -#: ../../Zotlabs/Module/Poke.php:200 -msgid "Poke somebody" -msgstr "Dar un toque a alguien" +#: ../../include/js_strings.php:58 +msgid "about a minute" +msgstr "alrededor de un minuto" -#: ../../Zotlabs/Module/Poke.php:203 -msgid "Poke/Prod" -msgstr "Toque/Incitación" +#: ../../include/js_strings.php:60 +msgid "about an hour" +msgstr "alrededor de una hora" -#: ../../Zotlabs/Module/Poke.php:204 -msgid "Poke, prod or do other things to somebody" -msgstr "Dar un toque, incitar o hacer otras cosas a alguien" +#: ../../include/js_strings.php:62 +msgid "a day" +msgstr "un día" -#: ../../Zotlabs/Module/Poke.php:211 -msgid "Recipient" -msgstr "Destinatario" +#: ../../include/js_strings.php:64 +msgid "about a month" +msgstr "alrededor de un mes" -#: ../../Zotlabs/Module/Poke.php:212 -msgid "Choose what you wish to do to recipient" -msgstr "Elegir qué desea enviar al destinatario" +#: ../../include/js_strings.php:66 +msgid "about a year" +msgstr "alrededor de un año" -#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 -msgid "Make this post private" -msgstr "Convertir en privado este envío" +#: ../../include/js_strings.php:68 +msgid " " +msgstr " " -#: ../../Zotlabs/Module/Profile_photo.php:91 -#: ../../Zotlabs/Module/Cover_photo.php:83 -msgid "Image uploaded but image cropping failed." -msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. " +#: ../../include/js_strings.php:69 +msgid "timeago.numbers" +msgstr "timeago.numbers" -#: ../../Zotlabs/Module/Profile_photo.php:145 -#: ../../Zotlabs/Module/Profile_photo.php:282 -#: ../../include/photo/photo_driver.php:367 -msgid "Profile Photos" -msgstr "Fotos del perfil" +#: ../../include/js_strings.php:75 +msgctxt "long" +msgid "May" +msgstr "mayo" -#: ../../Zotlabs/Module/Profile_photo.php:164 -#: ../../Zotlabs/Module/Cover_photo.php:210 -msgid "Image resize failed." -msgstr "El ajuste del tamaño de la imagen ha fallado." +#: ../../include/js_strings.php:83 +msgid "Jan" +msgstr "ene" -#: ../../Zotlabs/Module/Profile_photo.php:252 -#: ../../addon/openclipatar/openclipatar.php:298 -msgid "" -"Shift-reload the page or clear browser cache if the new photo does not " -"display immediately." -msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente." +#: ../../include/js_strings.php:84 +msgid "Feb" +msgstr "feb" -#: ../../Zotlabs/Module/Profile_photo.php:259 -#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/photos.php:196 -msgid "Unable to process image" -msgstr "No ha sido posible procesar la imagen" +#: ../../include/js_strings.php:85 +msgid "Mar" +msgstr "mar" -#: ../../Zotlabs/Module/Profile_photo.php:294 -#: ../../Zotlabs/Module/Cover_photo.php:263 -msgid "Image upload failed." -msgstr "La carga de la imagen ha fallado." +#: ../../include/js_strings.php:86 +msgid "Apr" +msgstr "abr" -#: ../../Zotlabs/Module/Profile_photo.php:313 -#: ../../Zotlabs/Module/Cover_photo.php:280 -msgid "Unable to process image." -msgstr "No ha sido posible procesar la imagen." +#: ../../include/js_strings.php:87 +msgctxt "short" +msgid "May" +msgstr "may" -#: ../../Zotlabs/Module/Profile_photo.php:377 -#: ../../Zotlabs/Module/Profile_photo.php:429 -#: ../../Zotlabs/Module/Cover_photo.php:373 -#: ../../Zotlabs/Module/Cover_photo.php:388 -msgid "Photo not available." -msgstr "Foto no disponible." +#: ../../include/js_strings.php:88 +msgid "Jun" +msgstr "jun" -#: ../../Zotlabs/Module/Profile_photo.php:493 -msgid "" -"Your default profile photo is visible to anybody on the internet. Profile " -"photos for alternate profiles will inherit the permissions of the profile" -msgstr "Su foto de perfil predeterminada es visible para cualquiera en Internet. Las fotos de perfil para perfiles alternativos heredarán los permisos del predeterminado." +#: ../../include/js_strings.php:89 +msgid "Jul" +msgstr "jul" -#: ../../Zotlabs/Module/Profile_photo.php:493 -msgid "" -"Your profile photo is visible to anybody on the internet and may be " -"distributed to other websites." -msgstr "La foto de su perfil es visible para cualquiera en Internet y puede ser distribuida en otros sitios web." +#: ../../include/js_strings.php:90 +msgid "Aug" +msgstr "ago" -#: ../../Zotlabs/Module/Profile_photo.php:495 -#: ../../Zotlabs/Module/Cover_photo.php:426 -msgid "Upload File:" -msgstr "Subir fichero:" +#: ../../include/js_strings.php:91 +msgid "Sep" +msgstr "sep" -#: ../../Zotlabs/Module/Profile_photo.php:496 -#: ../../Zotlabs/Module/Cover_photo.php:427 -msgid "Select a profile:" -msgstr "Seleccionar un perfil:" +#: ../../include/js_strings.php:92 +msgid "Oct" +msgstr "oct" -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Use Photo for Profile" -msgstr "Usar la fotografía para el perfil" +#: ../../include/js_strings.php:93 +msgid "Nov" +msgstr "nov" -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Change Profile Photo" -msgstr "Cambiar la foto del perfil" +#: ../../include/js_strings.php:94 +msgid "Dec" +msgstr "dic" -#: ../../Zotlabs/Module/Profile_photo.php:498 -msgid "Use" -msgstr "Usar" +#: ../../include/js_strings.php:102 +msgid "Sun" +msgstr "dom" -#: ../../Zotlabs/Module/Profile_photo.php:503 -#: ../../Zotlabs/Module/Profile_photo.php:504 -#: ../../Zotlabs/Module/Cover_photo.php:432 -#: ../../Zotlabs/Module/Cover_photo.php:433 -msgid "Use a photo from your albums" -msgstr "Usar una foto de sus álbumes" +#: ../../include/js_strings.php:103 +msgid "Mon" +msgstr "lun" -#: ../../Zotlabs/Module/Profile_photo.php:514 -#: ../../Zotlabs/Module/Cover_photo.php:444 -msgid "Select existing photo" -msgstr "Seleccionar una foto" +#: ../../include/js_strings.php:104 +msgid "Tue" +msgstr "mar" -#: ../../Zotlabs/Module/Profile_photo.php:533 -#: ../../Zotlabs/Module/Cover_photo.php:461 -msgid "Crop Image" -msgstr "Recortar imagen" +#: ../../include/js_strings.php:105 +msgid "Wed" +msgstr "mié" -#: ../../Zotlabs/Module/Profile_photo.php:534 -#: ../../Zotlabs/Module/Cover_photo.php:462 -msgid "Please adjust the image cropping for optimum viewing." -msgstr "Por favor ajuste el recorte de la imagen para una visión óptima." +#: ../../include/js_strings.php:106 +msgid "Thu" +msgstr "jue" -#: ../../Zotlabs/Module/Profile_photo.php:536 -#: ../../Zotlabs/Module/Cover_photo.php:464 -msgid "Done Editing" -msgstr "Edición completada" +#: ../../include/js_strings.php:107 +msgid "Fri" +msgstr "vie" -#: ../../Zotlabs/Module/Chatsvc.php:131 -msgid "Away" -msgstr "Ausente" +#: ../../include/js_strings.php:108 +msgid "Sat" +msgstr "sáb" -#: ../../Zotlabs/Module/Chatsvc.php:136 -msgid "Online" -msgstr "Conectado/a" +#: ../../include/js_strings.php:109 +msgctxt "calendar" +msgid "today" +msgstr "hoy" -#: ../../Zotlabs/Module/Item.php:382 -msgid "Unable to locate original post." -msgstr "No ha sido posible encontrar la entrada original." +#: ../../include/js_strings.php:110 +msgctxt "calendar" +msgid "month" +msgstr "mes" -#: ../../Zotlabs/Module/Item.php:668 -msgid "Empty post discarded." -msgstr "La entrada vacía ha sido desechada." +#: ../../include/js_strings.php:111 +msgctxt "calendar" +msgid "week" +msgstr "semana" -#: ../../Zotlabs/Module/Item.php:1082 -msgid "Duplicate post suppressed." -msgstr "Se ha suprimido la entrada duplicada." +#: ../../include/js_strings.php:112 +msgctxt "calendar" +msgid "day" +msgstr "día" -#: ../../Zotlabs/Module/Item.php:1227 -msgid "System error. Post not saved." -msgstr "Error del sistema. La entrada no se ha podido salvar." +#: ../../include/js_strings.php:113 +msgctxt "calendar" +msgid "All day" +msgstr "Todos los días" -#: ../../Zotlabs/Module/Item.php:1263 -msgid "Your comment is awaiting approval." -msgstr "Su comentario está pendiente de aprobación." +#: ../../include/help.php:80 +msgid "Help:" +msgstr "Ayuda:" -#: ../../Zotlabs/Module/Item.php:1380 -msgid "Unable to obtain post information from database." -msgstr "No ha sido posible obtener información de la entrada en la base de datos." +#: ../../include/help.php:117 ../../include/help.php:125 +#: ../../include/nav.php:172 ../../include/nav.php:322 +#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:347 +msgid "Help" +msgstr "Ayuda" -#: ../../Zotlabs/Module/Item.php:1387 -#, php-format -msgid "You have reached your limit of %1$.0f top level posts." -msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal." +#: ../../include/help.php:129 +msgid "Not Found" +msgstr "No encontrado" -#: ../../Zotlabs/Module/Item.php:1394 +#: ../../include/photos.php:151 #, php-format -msgid "You have reached your limit of %1$.0f webpages." -msgstr "Ha alcanzado su límite de %1$.0f páginas web." - -#: ../../Zotlabs/Module/Ping.php:337 -msgid "sent you a private message" -msgstr "le ha enviado un mensaje privado" +msgid "Image exceeds website size limit of %lu bytes" +msgstr "La imagen excede el límite de %lu bytes del sitio" -#: ../../Zotlabs/Module/Ping.php:393 -msgid "added your channel" -msgstr "añadió este canal a sus conexiones" +#: ../../include/photos.php:162 +msgid "Image file is empty." +msgstr "El fichero de imagen está vacío. " -#: ../../Zotlabs/Module/Ping.php:418 -msgid "requires approval" -msgstr "requiere aprobación" +#: ../../include/photos.php:196 ../../Zotlabs/Module/Profile_photo.php:259 +#: ../../Zotlabs/Module/Cover_photo.php:239 +msgid "Unable to process image" +msgstr "No ha sido posible procesar la imagen" -#: ../../Zotlabs/Module/Ping.php:428 -msgid "g A l F d" -msgstr "g A l d F" +#: ../../include/photos.php:324 +msgid "Photo storage failed." +msgstr "La foto no ha podido ser guardada." -#: ../../Zotlabs/Module/Ping.php:446 -msgid "[today]" -msgstr "[hoy]" +#: ../../include/photos.php:373 +msgid "a new photo" +msgstr "una nueva foto" -#: ../../Zotlabs/Module/Ping.php:456 -msgid "posted an event" -msgstr "publicó un evento" +#: ../../include/photos.php:377 +#, php-format +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" +msgstr "%1$s ha publicado %2$s en %3$s" -#: ../../Zotlabs/Module/Ping.php:490 -msgid "shared a file with you" -msgstr "compartió un archivo con usted" +#: ../../include/photos.php:666 ../../include/nav.php:449 +msgid "Photo Albums" +msgstr "Álbumes de fotos" -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Private forum" -msgstr "Foro privado" +#: ../../include/photos.php:667 ../../Zotlabs/Module/Photos.php:1347 +#: ../../Zotlabs/Module/Photos.php:1360 ../../Zotlabs/Module/Photos.php:1361 +msgid "Recent Photos" +msgstr "Fotos recientes" -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Public forum" -msgstr "Foro público" +#: ../../include/photos.php:671 +msgid "Upload New Photos" +msgstr "Subir nuevas fotos" -#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 -msgid "Invalid item." -msgstr "Elemento no válido." +#: ../../include/network.php:1726 ../../include/network.php:1727 +msgid "Friendica" +msgstr "Friendica" -#: ../../Zotlabs/Module/Page.php:136 ../../Zotlabs/Module/Block.php:77 -#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157 -#: ../../Zotlabs/Module/Display.php:174 ../../Zotlabs/Module/Display.php:180 -#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185 -#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132 -msgid "Page not found." -msgstr "Página no encontrada." +#: ../../include/network.php:1728 +msgid "OStatus" +msgstr "OStatus" -#: ../../Zotlabs/Module/Page.php:173 -msgid "" -"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " -"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam," -" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " -"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse " -"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " -"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." -msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +#: ../../include/network.php:1729 +msgid "GNU-Social" +msgstr "GNU Social" -#: ../../Zotlabs/Module/Connedit.php:81 ../../Zotlabs/Module/Defperms.php:67 -msgid "Could not access contact record." -msgstr "No se ha podido acceder al registro de contacto." +#: ../../include/network.php:1730 +msgid "RSS/Atom" +msgstr "RSS/Atom" -#: ../../Zotlabs/Module/Connedit.php:112 -msgid "Could not locate selected profile." -msgstr "No se ha podido localizar el perfil seleccionado." +#: ../../include/network.php:1733 +msgid "Diaspora" +msgstr "Diaspora" -#: ../../Zotlabs/Module/Connedit.php:256 -msgid "Connection updated." -msgstr "Conexión actualizada." +#: ../../include/network.php:1734 +msgid "Facebook" +msgstr "Facebook" -#: ../../Zotlabs/Module/Connedit.php:258 -msgid "Failed to update connection record." -msgstr "Error al actualizar el registro de la conexión." +#: ../../include/network.php:1735 +msgid "Zot" +msgstr "Zot" -#: ../../Zotlabs/Module/Connedit.php:312 -msgid "is now connected to" -msgstr "ahora está conectado/a" +#: ../../include/network.php:1736 +msgid "LinkedIn" +msgstr "LinkedIn" -#: ../../Zotlabs/Module/Connedit.php:437 -msgid "Could not access address book record." -msgstr "No se pudo acceder al registro en su libreta de direcciones." +#: ../../include/network.php:1737 +msgid "XMPP/IM" +msgstr "XMPP/IM" -#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489 -msgid "Refresh failed - channel is currently unavailable." -msgstr "Recarga fallida - no se puede encontrar el canal en este momento." +#: ../../include/network.php:1738 +msgid "MySpace" +msgstr "MySpace" -#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513 -#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531 -#: ../../Zotlabs/Module/Connedit.php:544 -msgid "Unable to set address book parameters." -msgstr "No ha sido posible establecer los parámetros de la libreta de direcciones." +#: ../../include/activities.php:42 +msgid " and " +msgstr " y " -#: ../../Zotlabs/Module/Connedit.php:568 -msgid "Connection has been removed." -msgstr "La conexión ha sido eliminada." +#: ../../include/activities.php:50 +msgid "public profile" +msgstr "el perfil público" -#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:343 -#: ../../addon/openclipatar/openclipatar.php:57 -#: ../../include/conversation.php:1038 ../../include/nav.php:110 -msgid "View Profile" -msgstr "Ver el perfil" +#: ../../include/activities.php:59 +#, php-format +msgid "%1$s changed %2$s to “%3$s”" +msgstr "%1$s ha cambiado %2$s a “%3$s”" -#: ../../Zotlabs/Module/Connedit.php:611 +#: ../../include/activities.php:60 #, php-format -msgid "View %s's profile" -msgstr "Ver el perfil de %s" +msgid "Visit %1$s's %2$s" +msgstr "Visitar %2$s de %1$s" -#: ../../Zotlabs/Module/Connedit.php:615 -msgid "Refresh Permissions" -msgstr "Recargar los permisos" +#: ../../include/activities.php:63 +#, php-format +msgid "%1$s has an updated %2$s, changing %3$s." +msgstr "%1$s ha actualizado %2$s, cambiando %3$s." -#: ../../Zotlabs/Module/Connedit.php:618 -msgid "Fetch updated permissions" -msgstr "Obtener los permisos actualizados" +#: ../../include/contact_widgets.php:11 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "%d invitación pendiente" +msgstr[1] "%d invitaciones disponibles" -#: ../../Zotlabs/Module/Connedit.php:622 -msgid "Refresh Photo" -msgstr "Actualizar la foto" +#: ../../include/contact_widgets.php:16 +#: ../../Zotlabs/Module/Admin/Site.php:293 +msgid "Advanced" +msgstr "Avanzado" -#: ../../Zotlabs/Module/Connedit.php:625 -msgid "Fetch updated photo" -msgstr "Obtener una foto actualizada" +#: ../../include/contact_widgets.php:19 +msgid "Find Channels" +msgstr "Encontrar canales" -#: ../../Zotlabs/Module/Connedit.php:629 ../../include/conversation.php:1048 -msgid "Recent Activity" -msgstr "Actividad reciente" +#: ../../include/contact_widgets.php:20 +msgid "Enter name or interest" +msgstr "Introducir nombre o interés" -#: ../../Zotlabs/Module/Connedit.php:632 -msgid "View recent posts and comments" -msgstr "Ver publicaciones y comentarios recientes" +#: ../../include/contact_widgets.php:21 +msgid "Connect/Follow" +msgstr "Conectar/Seguir" -#: ../../Zotlabs/Module/Connedit.php:639 -msgid "Block (or Unblock) all communications with this connection" -msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" +#: ../../include/contact_widgets.php:22 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "Ejemplos: José Fernández, Pesca" -#: ../../Zotlabs/Module/Connedit.php:640 -msgid "This connection is blocked!" -msgstr "¡Esta conexión está bloqueada!" +#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:416 +#: ../../Zotlabs/Module/Directory.php:421 +#: ../../Zotlabs/Module/Connections.php:358 +msgid "Find" +msgstr "Encontrar" -#: ../../Zotlabs/Module/Connedit.php:644 -msgid "Unignore" -msgstr "Dejar de ignorar" +#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Directory.php:420 +#: ../../Zotlabs/Module/Suggest.php:79 +msgid "Channel Suggestions" +msgstr "Sugerencias de canales" -#: ../../Zotlabs/Module/Connedit.php:647 -msgid "Ignore (or Unignore) all inbound communications from this connection" -msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" +#: ../../include/contact_widgets.php:26 +msgid "Random Profile" +msgstr "Perfil aleatorio" -#: ../../Zotlabs/Module/Connedit.php:648 -msgid "This connection is ignored!" -msgstr "¡Esta conexión es ignorada!" +#: ../../include/contact_widgets.php:27 +msgid "Invite Friends" +msgstr "Invitar a amigos" -#: ../../Zotlabs/Module/Connedit.php:652 -msgid "Unarchive" -msgstr "Desarchivar" +#: ../../include/contact_widgets.php:29 +msgid "Advanced example: name=fred and country=iceland" +msgstr "Ejemplo avanzado: nombre=juan y país=españa" -#: ../../Zotlabs/Module/Connedit.php:652 -msgid "Archive" -msgstr "Archivar" +#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:99 +#: ../../include/contact_widgets.php:142 ../../include/contact_widgets.php:187 +#: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31 +msgid "Everything" +msgstr "Todo" -#: ../../Zotlabs/Module/Connedit.php:655 -msgid "" -"Archive (or Unarchive) this connection - mark channel dead but keep content" -msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos" +#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139 +#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409 +#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511 +#: ../../include/taxonomy.php:532 ../../Zotlabs/Widget/Appcategories.php:43 +#: ../../Zotlabs/Module/Cdav.php:1093 +msgid "Categories" +msgstr "Temas" -#: ../../Zotlabs/Module/Connedit.php:656 -msgid "This connection is archived!" -msgstr "¡Esta conexión esta archivada!" +#: ../../include/contact_widgets.php:218 +msgid "Common Connections" +msgstr "Conexiones comunes" -#: ../../Zotlabs/Module/Connedit.php:660 -msgid "Unhide" -msgstr "Mostrar" +#: ../../include/contact_widgets.php:222 +#, php-format +msgid "View all %d common connections" +msgstr "Ver todas las %d conexiones comunes" -#: ../../Zotlabs/Module/Connedit.php:660 -msgid "Hide" -msgstr "Ocultar" +#: ../../include/language.php:436 +msgid "Select an alternate language" +msgstr "Seleccionar un idioma alternativo" -#: ../../Zotlabs/Module/Connedit.php:663 -msgid "Hide or Unhide this connection from your other connections" -msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" +#: ../../include/import.php:28 +msgid "Unable to import a removed channel." +msgstr "No se puede importar un canal eliminado." -#: ../../Zotlabs/Module/Connedit.php:664 -msgid "This connection is hidden!" -msgstr "¡Esta conexión está oculta!" +#: ../../include/import.php:54 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." +msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado." -#: ../../Zotlabs/Module/Connedit.php:671 -msgid "Delete this connection" -msgstr "Eliminar esta conexión" +#: ../../include/import.php:120 +msgid "Cloned channel not found. Import failed." +msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." -#: ../../Zotlabs/Module/Connedit.php:679 -msgid "Fetch Vcard" -msgstr "Obtener una vcard" +#: ../../include/nav.php:90 +msgid "Remote authentication" +msgstr "Acceder desde su servidor" -#: ../../Zotlabs/Module/Connedit.php:682 -msgid "Fetch electronic calling card for this connection" -msgstr "Obtener una tarjeta de llamada electrónica para esta conexión" +#: ../../include/nav.php:90 +msgid "Click to authenticate to your home hub" +msgstr "Pulsar para identificarse en su servidor de inicio" -#: ../../Zotlabs/Module/Connedit.php:693 -msgid "Open Individual Permissions section by default" -msgstr "Abrir la sección de permisos individuales por defecto" +#: ../../include/nav.php:96 ../../Zotlabs/Module/Manage.php:170 +#: ../../Zotlabs/Lib/Apps.php:336 +msgid "Channel Manager" +msgstr "Administración de canales" -#: ../../Zotlabs/Module/Connedit.php:716 -msgid "Affinity" -msgstr "Afinidad" +#: ../../include/nav.php:96 +msgid "Manage your channels" +msgstr "Gestionar sus canales" -#: ../../Zotlabs/Module/Connedit.php:719 -msgid "Open Set Affinity section by default" -msgstr "Abrir por defecto la sección para definir la afinidad" +#: ../../include/nav.php:99 ../../include/group.php:320 +#: ../../Zotlabs/Widget/Activity_filter.php:41 +#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153 +#: ../../Zotlabs/Lib/Group.php:324 ../../Zotlabs/Lib/Apps.php:363 +msgid "Privacy Groups" +msgstr "Grupos de canales" -#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:30 -msgid "Me" -msgstr "Yo" +#: ../../include/nav.php:99 +msgid "Manage your privacy groups" +msgstr "Gestionar sus grupos de canales" -#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:31 -msgid "Family" -msgstr "Familia" +#: ../../include/nav.php:101 ../../Zotlabs/Widget/Settings_menu.php:61 +#: ../../Zotlabs/Widget/Newmember.php:53 +#: ../../Zotlabs/Module/Admin/Themes.php:125 +#: ../../Zotlabs/Module/Admin/Addons.php:345 ../../Zotlabs/Lib/Apps.php:338 +msgid "Settings" +msgstr "Ajustes" -#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:33 -msgid "Acquaintances" -msgstr "Conocidos/as" +#: ../../include/nav.php:101 +msgid "Account/Channel Settings" +msgstr "Ajustes de cuenta/canales" -#: ../../Zotlabs/Module/Connedit.php:756 -msgid "Filter" -msgstr "Filtrar" +#: ../../include/nav.php:107 ../../include/nav.php:136 +#: ../../include/nav.php:155 ../../boot.php:1673 +msgid "Logout" +msgstr "Finalizar sesión" -#: ../../Zotlabs/Module/Connedit.php:759 -msgid "Open Custom Filter section by default" -msgstr "Abrir por defecto la sección de personalización de filtros" +#: ../../include/nav.php:107 ../../include/nav.php:136 +msgid "End this session" +msgstr "Finalizar esta sesión" -#: ../../Zotlabs/Module/Connedit.php:796 -msgid "Approve this connection" -msgstr "Aprobar esta conexión" +#: ../../include/nav.php:110 +msgid "Your profile page" +msgstr "Su página del perfil" -#: ../../Zotlabs/Module/Connedit.php:796 -msgid "Accept connection to allow communication" -msgstr "Aceptar la conexión para permitir la comunicación" +#: ../../include/nav.php:113 ../../include/channel.php:1426 +#: ../../Zotlabs/Module/Profiles.php:830 +msgid "Edit Profiles" +msgstr "Editar perfiles" -#: ../../Zotlabs/Module/Connedit.php:801 -msgid "Set Affinity" -msgstr "Ajustar la afinidad" +#: ../../include/nav.php:113 +msgid "Manage/Edit profiles" +msgstr "Administrar/editar perfiles" -#: ../../Zotlabs/Module/Connedit.php:804 -msgid "Set Profile" -msgstr "Ajustar el perfil" +#: ../../include/nav.php:115 ../../Zotlabs/Widget/Newmember.php:35 +msgid "Edit your profile" +msgstr "Editar su perfil" -#: ../../Zotlabs/Module/Connedit.php:807 -msgid "Set Affinity & Profile" -msgstr "Ajustar la afinidad y el perfil" +#: ../../include/nav.php:122 ../../include/nav.php:126 +#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1674 +msgid "Login" +msgstr "Iniciar sesión" -#: ../../Zotlabs/Module/Connedit.php:855 -msgid "This connection is unreachable from this location." -msgstr "No se puede acceder a la conexión desde este sitio." +#: ../../include/nav.php:122 ../../include/nav.php:126 +msgid "Sign in" +msgstr "Acceder" -#: ../../Zotlabs/Module/Connedit.php:856 -msgid "This connection may be unreachable from other channel locations." -msgstr "Esta conexión puede ser inaccesible desde otras ubicaciones del canal." +#: ../../include/nav.php:153 +msgid "Take me home" +msgstr "Volver a la página principal" -#: ../../Zotlabs/Module/Connedit.php:858 -msgid "Location independence is not supported by their network." -msgstr "La independencia de ubicación no es compatible con su red." +#: ../../include/nav.php:155 +msgid "Log me out of this site" +msgstr "Salir de este sitio" -#: ../../Zotlabs/Module/Connedit.php:864 -msgid "" -"This connection is unreachable from this location. Location independence is " -"not supported by their network." -msgstr "Esta conexión no es accesible desde este sitio. La independencia de ubicación no es compatible con su red." +#: ../../include/nav.php:160 ../../Zotlabs/Module/Register.php:293 +#: ../../boot.php:1654 +msgid "Register" +msgstr "Registrarse" -#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:254 -msgid "Connection Default Permissions" -msgstr "Permisos predeterminados de conexión" +#: ../../include/nav.php:160 +msgid "Create an account" +msgstr "Crear una cuenta" -#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4323 -#, php-format -msgid "Connection: %s" -msgstr "Conexión: %s" +#: ../../include/nav.php:172 +msgid "Help and documentation" +msgstr "Ayuda y documentación" -#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:255 -msgid "Apply these permissions automatically" -msgstr "Aplicar estos permisos automaticamente" +#: ../../include/nav.php:186 +msgid "Search site @name, !forum, #tag, ?docs, content" +msgstr "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido" -#: ../../Zotlabs/Module/Connedit.php:868 -msgid "Connection requests will be approved without your interaction" -msgstr "Las solicitudes de conexión serán aprobadas sin su intervención" +#: ../../include/nav.php:192 ../../Zotlabs/Widget/Admin.php:55 +msgid "Admin" +msgstr "Administrador" -#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256 -msgid "Permission role" -msgstr "Permisos de rol" +#: ../../include/nav.php:192 +msgid "Site Setup and Configuration" +msgstr "Ajustes y configuración del sitio" -#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:257 -msgid "Add permission role" -msgstr "Añadir permisos de rol" +#: ../../include/nav.php:326 ../../Zotlabs/Widget/Notifications.php:162 +#: ../../Zotlabs/Module/New_channel.php:157 +#: ../../Zotlabs/Module/New_channel.php:164 +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 +msgid "Loading" +msgstr "Cargando" -#: ../../Zotlabs/Module/Connedit.php:877 -msgid "This connection's primary address is" -msgstr "La dirección primaria de esta conexión es" +#: ../../include/nav.php:332 +msgid "@name, !forum, #tag, ?doc, content" +msgstr "@nombre, !foro, #tag, ?docs, contenido" -#: ../../Zotlabs/Module/Connedit.php:878 -msgid "Available locations:" -msgstr "Ubicaciones disponibles:" +#: ../../include/nav.php:333 +msgid "Please wait..." +msgstr "Espere por favor…" + +#: ../../include/nav.php:339 +msgid "Add Apps" +msgstr "Añadir aplicaciones" -#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:261 -msgid "" -"The permissions indicated on this page will be applied to all new " -"connections." -msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones." +#: ../../include/nav.php:340 +msgid "Arrange Apps" +msgstr "Organizar aplicaciones" -#: ../../Zotlabs/Module/Connedit.php:884 -msgid "Connection Tools" -msgstr "Gestión de las conexiones" +#: ../../include/nav.php:341 +msgid "Toggle System Apps" +msgstr "Alternar aplicaciones de sistema" -#: ../../Zotlabs/Module/Connedit.php:886 -msgid "Slide to adjust your degree of friendship" -msgstr "Deslizar para ajustar el grado de amistad" +#: ../../include/nav.php:423 ../../Zotlabs/Module/Admin/Channels.php:154 +msgid "Channel" +msgstr "Canal" -#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155 -#: ../../include/js_strings.php:20 -msgid "Rating" -msgstr "Valoración" +#: ../../include/nav.php:426 +msgid "Status Messages and Posts" +msgstr "Mensajes de estado y publicaciones" -#: ../../Zotlabs/Module/Connedit.php:888 -msgid "Slide to adjust your rating" -msgstr "Deslizar para ajustar su valoración" +#: ../../include/nav.php:436 ../../Zotlabs/Module/Help.php:80 +msgid "About" +msgstr "Mi perfil" -#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894 -msgid "Optionally explain your rating" -msgstr "Opcionalmente, puede explicar su valoración" +#: ../../include/nav.php:439 +msgid "Profile Details" +msgstr "Detalles del perfil" -#: ../../Zotlabs/Module/Connedit.php:891 -msgid "Custom Filter" -msgstr "Filtro personalizado" +#: ../../include/nav.php:454 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Storage/Browser.php:278 +msgid "Files" +msgstr "Ficheros" -#: ../../Zotlabs/Module/Connedit.php:892 -msgid "Only import posts with this text" -msgstr "Importar solo entradas que contengan este texto" +#: ../../include/nav.php:457 +msgid "Files and Storage" +msgstr "Ficheros y repositorio" -#: ../../Zotlabs/Module/Connedit.php:893 -msgid "Do not import posts with this text" -msgstr "No importar entradas que contengan este texto" +#: ../../include/nav.php:479 ../../include/nav.php:482 +#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:329 +msgid "Chatrooms" +msgstr "Salas de chat" -#: ../../Zotlabs/Module/Connedit.php:895 -msgid "This information is public!" -msgstr "¡Esta información es pública!" +#: ../../include/nav.php:492 ../../Zotlabs/Lib/Apps.php:328 +msgid "Bookmarks" +msgstr "Marcadores" -#: ../../Zotlabs/Module/Connedit.php:900 -msgid "Connection Pending Approval" -msgstr "Conexión pendiente de aprobación" +#: ../../include/nav.php:495 +msgid "Saved Bookmarks" +msgstr "Marcadores guardados" -#: ../../Zotlabs/Module/Connedit.php:905 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." -msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura." +#: ../../include/nav.php:503 ../../Zotlabs/Module/Cards.php:207 +#: ../../Zotlabs/Lib/Apps.php:325 +msgid "Cards" +msgstr "Fichas" -#: ../../Zotlabs/Module/Connedit.php:912 -msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can change those settings here but " -"they wont have any impact unless the inherited setting changes." -msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados." +#: ../../include/nav.php:506 +msgid "View Cards" +msgstr "Ver las fichas" -#: ../../Zotlabs/Module/Connedit.php:913 -msgid "Last update:" -msgstr "Última actualización:" +#: ../../include/nav.php:514 ../../Zotlabs/Module/Articles.php:226 +#: ../../Zotlabs/Lib/Apps.php:324 +msgid "Articles" +msgstr "Artículos" -#: ../../Zotlabs/Module/Connedit.php:921 -msgid "Details" -msgstr "Detalles" +#: ../../include/nav.php:517 +msgid "View Articles" +msgstr "Ver los artículos" -#: ../../Zotlabs/Module/Chat.php:102 -msgid "Chatrooms App" -msgstr "App Salas de chat" +#: ../../include/nav.php:526 ../../Zotlabs/Module/Webpages.php:252 +#: ../../Zotlabs/Lib/Apps.php:340 +msgid "Webpages" +msgstr "Páginas web" -#: ../../Zotlabs/Module/Chat.php:103 -msgid "Access Controlled Chatrooms" -msgstr "Salas de chat moderadas" +#: ../../include/nav.php:529 +msgid "View Webpages" +msgstr "Ver páginas web" -#: ../../Zotlabs/Module/Chat.php:196 -msgid "Room not found" -msgstr "Sala no encontrada" +#: ../../include/nav.php:538 ../../Zotlabs/Widget/Wiki_list.php:15 +#: ../../Zotlabs/Module/Wiki.php:206 +msgid "Wikis" +msgstr "Wikis" -#: ../../Zotlabs/Module/Chat.php:212 -msgid "Leave Room" -msgstr "Abandonar la sala" +#: ../../include/nav.php:541 ../../Zotlabs/Lib/Apps.php:341 +msgid "Wiki" +msgstr "Wiki" -#: ../../Zotlabs/Module/Chat.php:213 -msgid "Delete Room" -msgstr "Eliminar esta sala" +#: ../../include/auth.php:192 +msgid "Delegation session ended." +msgstr "Finalizó la sesión de la delegación." -#: ../../Zotlabs/Module/Chat.php:214 -msgid "I am away right now" -msgstr "Estoy ausente momentáneamente" +#: ../../include/auth.php:196 +msgid "Logged out." +msgstr "Desconectado/a." -#: ../../Zotlabs/Module/Chat.php:215 -msgid "I am online" -msgstr "Estoy conectado/a" +#: ../../include/auth.php:291 +msgid "Email validation is incomplete. Please check your email." +msgstr "La validación del correo electrónico está incompleta. Por favor, compruebe su correo electrónico." -#: ../../Zotlabs/Module/Chat.php:217 -msgid "Bookmark this room" -msgstr "Añadir esta sala a Marcadores" +#: ../../include/auth.php:307 +msgid "Failed authentication" +msgstr "Autenticación fallida." -#: ../../Zotlabs/Module/Chat.php:220 ../../Zotlabs/Module/Mail.php:245 -#: ../../Zotlabs/Module/Mail.php:366 ../../addon/hsse/hsse.php:134 -#: ../../include/conversation.php:1337 -msgid "Please enter a link URL:" -msgstr "Por favor, introduzca la dirección del enlace:" +#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:51 +#: ../../Zotlabs/Module/Profiles.php:736 +msgid "Miscellaneous" +msgstr "Varios" -#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:298 -#: ../../Zotlabs/Module/Mail.php:441 ../../Zotlabs/Lib/ThreadItem.php:810 -#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461 -msgid "Encrypt text" -msgstr "Cifrar texto" +#: ../../include/datetime.php:140 +msgid "Birthday" +msgstr "Cumpleaños" -#: ../../Zotlabs/Module/Chat.php:240 -msgid "New Chatroom" -msgstr "Nueva sala de chat" +#: ../../include/datetime.php:140 +msgid "Age: " +msgstr "Edad:" -#: ../../Zotlabs/Module/Chat.php:241 -msgid "Chatroom name" -msgstr "Nombre de la sala de chat" +#: ../../include/datetime.php:140 +msgid "YYYY-MM-DD or MM-DD" +msgstr "AAAA-MM-DD o MM-DD" -#: ../../Zotlabs/Module/Chat.php:242 -msgid "Expiration of chats (minutes)" -msgstr "Caducidad de los mensajes en los chats (en minutos)" +#: ../../include/datetime.php:211 ../../Zotlabs/Module/Events.php:468 +#: ../../Zotlabs/Module/Events.php:473 ../../Zotlabs/Module/Appman.php:143 +#: ../../Zotlabs/Module/Appman.php:144 ../../Zotlabs/Module/Profiles.php:745 +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Required" +msgstr "Obligatorio" -#: ../../Zotlabs/Module/Chat.php:258 -#, php-format -msgid "%1$s's Chatrooms" -msgstr "Salas de chat de %1$s" +#: ../../include/datetime.php:238 ../../boot.php:2605 +msgid "never" +msgstr "nunca" -#: ../../Zotlabs/Module/Chat.php:263 -msgid "No chatrooms available" -msgstr "No hay salas de chat disponibles" +#: ../../include/datetime.php:244 +msgid "less than a second ago" +msgstr "hace un instante" -#: ../../Zotlabs/Module/Chat.php:267 -msgid "Expiration" -msgstr "Caducidad" +#: ../../include/datetime.php:262 +#, php-format +msgctxt "e.g. 22 hours ago, 1 minute ago" +msgid "%1$d %2$s ago" +msgstr "hace %1$d %2$s" -#: ../../Zotlabs/Module/Chat.php:268 -msgid "min" -msgstr "min" +#: ../../include/datetime.php:273 +msgctxt "relative_date" +msgid "year" +msgid_plural "years" +msgstr[0] "año" +msgstr[1] "años" -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 -#: ../../include/features.php:361 ../../include/nav.php:446 -msgid "Photos" -msgstr "Fotos" +#: ../../include/datetime.php:276 +msgctxt "relative_date" +msgid "month" +msgid_plural "months" +msgstr[0] "mes" +msgstr[1] "meses" -#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:339 -#: ../../Zotlabs/Storage/Browser.php:278 ../../include/nav.php:454 -msgid "Files" -msgstr "Ficheros" +#: ../../include/datetime.php:279 +msgctxt "relative_date" +msgid "week" +msgid_plural "weeks" +msgstr[0] "semana" +msgstr[1] "semanas" -#: ../../Zotlabs/Module/Menu.php:67 -msgid "Unable to update menu." -msgstr "No se puede actualizar el menú." +#: ../../include/datetime.php:282 +msgctxt "relative_date" +msgid "day" +msgid_plural "days" +msgstr[0] "día" +msgstr[1] "días" -#: ../../Zotlabs/Module/Menu.php:78 -msgid "Unable to create menu." -msgstr "No se puede crear el menú." +#: ../../include/datetime.php:285 +msgctxt "relative_date" +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "horas" -#: ../../Zotlabs/Module/Menu.php:160 ../../Zotlabs/Module/Menu.php:173 -msgid "Menu Name" -msgstr "Nombre del menú" +#: ../../include/datetime.php:288 +msgctxt "relative_date" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuto" +msgstr[1] "minutos" -#: ../../Zotlabs/Module/Menu.php:160 -msgid "Unique name (not visible on webpage) - required" -msgstr "Nombre único (no será visible en la página web) - requerido" +#: ../../include/datetime.php:291 +msgctxt "relative_date" +msgid "second" +msgid_plural "seconds" +msgstr[0] "segundo" +msgstr[1] "segundos" -#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 -msgid "Menu Title" -msgstr "Título del menú" +#: ../../include/datetime.php:520 +#, php-format +msgid "%1$s's birthday" +msgstr "Cumpleaños de %1$s" -#: ../../Zotlabs/Module/Menu.php:161 -msgid "Visible on webpage - leave empty for no title" -msgstr "Visible en la página web - no ponga nada si no desea un título" +#: ../../include/datetime.php:521 +#, php-format +msgid "Happy Birthday %1$s" +msgstr "Feliz cumpleaños %1$s" -#: ../../Zotlabs/Module/Menu.php:162 -msgid "Allow Bookmarks" -msgstr "Permitir marcadores" +#: ../../include/follow.php:37 +msgid "Channel is blocked on this site." +msgstr "El canal está bloqueado en este sitio." -#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221 -msgid "Menu may be used to store saved bookmarks" -msgstr "El menú se puede usar para guardar marcadores" +#: ../../include/follow.php:42 +msgid "Channel location missing." +msgstr "Falta la dirección del canal." -#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:224 -msgid "Submit and proceed" -msgstr "Enviar y proceder" +#: ../../include/follow.php:84 +msgid "Response from remote channel was incomplete." +msgstr "Respuesta incompleta del canal." -#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2561 -msgid "Menus" -msgstr "Menús" +#: ../../include/follow.php:96 +msgid "Premium channel - please visit:" +msgstr "Canal Premium - por favor visite:" -#: ../../Zotlabs/Module/Menu.php:180 -msgid "Bookmarks allowed" -msgstr "Marcadores permitidos" +#: ../../include/follow.php:110 +msgid "Channel was deleted and no longer exists." +msgstr "El canal ha sido eliminado y ya no existe." -#: ../../Zotlabs/Module/Menu.php:182 -msgid "Delete this menu" -msgstr "Borrar este menú" +#: ../../include/follow.php:166 +msgid "Remote channel or protocol unavailable." +msgstr "Canal remoto o protocolo no disponible." -#: ../../Zotlabs/Module/Menu.php:183 ../../Zotlabs/Module/Menu.php:218 -msgid "Edit menu contents" -msgstr "Editar los contenidos del menú" +#: ../../include/follow.php:190 +msgid "Channel discovery failed." +msgstr "El intento de acceder al canal ha fallado." -#: ../../Zotlabs/Module/Menu.php:184 -msgid "Edit this menu" -msgstr "Modificar este menú" +#: ../../include/follow.php:202 +msgid "Protocol disabled." +msgstr "Protocolo deshabilitado." -#: ../../Zotlabs/Module/Menu.php:200 -msgid "Menu could not be deleted." -msgstr "El menú no puede ser eliminado." +#: ../../include/follow.php:213 +msgid "Cannot connect to yourself." +msgstr "No puede conectarse consigo mismo." -#: ../../Zotlabs/Module/Menu.php:213 -msgid "Edit Menu" -msgstr "Modificar el menú" +#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:123 +msgid "channel" +msgstr "el canal" -#: ../../Zotlabs/Module/Menu.php:217 -msgid "Add or remove entries to this menu" -msgstr "Añadir o quitar entradas en este menú" +#: ../../include/conversation.php:169 +#, php-format +msgid "likes %1$s's %2$s" +msgstr "gusta de %2$s de %1$s" -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Menu name" -msgstr "Nombre del menú" +#: ../../include/conversation.php:172 +#, php-format +msgid "doesn't like %1$s's %2$s" +msgstr "no gusta de %2$s de %1$s" -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Must be unique, only seen by you" -msgstr "Debe ser único, solo será visible para usted" +#: ../../include/conversation.php:212 +#, php-format +msgid "%1$s is now connected with %2$s" +msgstr "%1$s ahora está conectado/a con %2$s" -#: ../../Zotlabs/Module/Menu.php:220 -msgid "Menu title" -msgstr "Título del menú" +#: ../../include/conversation.php:247 +#, php-format +msgid "%1$s poked %2$s" +msgstr "%1$s ha dado un toque a %2$s" -#: ../../Zotlabs/Module/Menu.php:220 -msgid "Menu title as seen by others" -msgstr "El título del menú tal como será visto por los demás" +#: ../../include/conversation.php:268 ../../Zotlabs/Module/Mood.php:76 +#, php-format +msgctxt "mood" +msgid "%1$s is %2$s" +msgstr "%1$s está %2$s" -#: ../../Zotlabs/Module/Menu.php:221 -msgid "Allow bookmarks" -msgstr "Permitir marcadores" +#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:468 +msgid "This is an unsaved preview" +msgstr "Esta es una previsualización sin guardar" -#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2562 -msgid "Layouts" -msgstr "Plantillas" +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Likes" +msgstr "Me gusta" -#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:347 -#: ../../include/nav.php:172 ../../include/nav.php:322 -#: ../../include/help.php:117 ../../include/help.php:125 -msgid "Help" -msgstr "Ayuda" +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Dislikes" +msgstr "No me gusta" -#: ../../Zotlabs/Module/Layouts.php:186 -msgid "Comanche page description language help" -msgstr "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche" +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Agree" +msgstr "De acuerdo" -#: ../../Zotlabs/Module/Layouts.php:190 -msgid "Layout Description" -msgstr "Descripción de la plantilla" +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Disagree" +msgstr "En desacuerdo" -#: ../../Zotlabs/Module/Layouts.php:195 -msgid "Download PDL file" -msgstr "Descargar el fichero PDL" +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Abstain" +msgstr "Abstención" -#: ../../Zotlabs/Module/Notes.php:56 -msgid "Notes App" -msgstr "App Notas" +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Attending" +msgstr "Participaré" -#: ../../Zotlabs/Module/Notes.php:57 -msgid "A simple notes app with a widget (note: notes are not encrypted)" -msgstr "Una simple aplicación de notas con un widget (aviso: las notas no están encriptadas)" +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Not attending" +msgstr "No participaré" -#: ../../Zotlabs/Module/Cloud.php:123 -msgid "Not found" -msgstr "No encontrado" +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Might attend" +msgstr "Quizá participe" -#: ../../Zotlabs/Module/Cloud.php:129 -msgid "Please refresh page" -msgstr "Por favor, recargue la página" +#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:178 +msgid "Select" +msgstr "Seleccionar" -#: ../../Zotlabs/Module/Cloud.php:132 -msgid "Unknown error" -msgstr "Error desconocido" +#: ../../include/conversation.php:691 ../../include/conversation.php:736 +#: ../../Zotlabs/Module/Article_edit.php:128 +#: ../../Zotlabs/Module/Card_edit.php:129 ../../Zotlabs/Module/Oauth.php:174 +#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Cdav.php:1079 +#: ../../Zotlabs/Module/Cdav.php:1390 ../../Zotlabs/Module/Webpages.php:257 +#: ../../Zotlabs/Module/Admin/Accounts.php:175 +#: ../../Zotlabs/Module/Admin/Channels.php:149 +#: ../../Zotlabs/Module/Admin/Profs.php:176 +#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editblock.php:139 +#: ../../Zotlabs/Module/Editlayout.php:138 +#: ../../Zotlabs/Module/Connections.php:306 +#: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Profiles.php:800 +#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Thing.php:267 +#: ../../Zotlabs/Module/Connedit.php:668 ../../Zotlabs/Module/Connedit.php:940 +#: ../../Zotlabs/Lib/Apps.php:558 ../../Zotlabs/Lib/ThreadItem.php:168 +#: ../../Zotlabs/Storage/Browser.php:297 +msgid "Delete" +msgstr "Eliminar" -#: ../../Zotlabs/Module/Email_validation.php:24 -#: ../../Zotlabs/Module/Email_resend.php:12 -msgid "Token verification failed." -msgstr "Ha fallado el token de verificación." +#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:267 +msgid "Toggle Star Status" +msgstr "Activar o desactivar el estado de entrada preferida" -#: ../../Zotlabs/Module/Email_validation.php:36 -msgid "Email Verification Required" -msgstr "Verificación obligatoria del correo electrónico" +#: ../../include/conversation.php:700 ../../Zotlabs/Lib/ThreadItem.php:103 +msgid "Private Message" +msgstr "Mensaje Privado" -#: ../../Zotlabs/Module/Email_validation.php:37 -#, php-format -msgid "" -"A verification token was sent to your email address [%s]. Enter that token " -"here to complete the account verification step. Please allow a few minutes " -"for delivery, and check your spam folder if you do not see the message." -msgstr "Se ha enviado un token de verificación a su dirección de correo electrónico [%s]. Ingrese ese símbolo aquí para completar el paso de verificación de cuenta. Por favor, espere unos minutos para el envío, y revise su carpeta de spam si no ve el mensaje." +#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:278 +msgid "Message signature validated" +msgstr "Firma de mensaje validada" -#: ../../Zotlabs/Module/Email_validation.php:38 -msgid "Resend Email" -msgstr "Reenvío de correo electrónico" +#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:279 +msgid "Message signature incorrect" +msgstr "Firma de mensaje incorrecta" -#: ../../Zotlabs/Module/Email_validation.php:41 -msgid "Validation token" -msgstr "Token de validación" +#: ../../include/conversation.php:735 +#: ../../Zotlabs/Module/Admin/Accounts.php:173 +#: ../../Zotlabs/Module/Connections.php:320 +msgid "Approve" +msgstr "Aprobar" -#: ../../Zotlabs/Module/Tagger.php:48 -msgid "Post not found." -msgstr "Mensaje no encontrado." +#: ../../include/conversation.php:739 +#, php-format +msgid "View %s's profile @ %s" +msgstr "Ver el perfil @ %s de %s" -#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:204 -#: ../../include/bbcode.php:362 -msgid "post" -msgstr "la entrada" +#: ../../include/conversation.php:759 +msgid "Categories:" +msgstr "Temas:" -#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146 -#: ../../include/text.php:2125 -msgid "comment" -msgstr "el comentario" +#: ../../include/conversation.php:760 +msgid "Filed under:" +msgstr "Archivado bajo:" -#: ../../Zotlabs/Module/Tagger.php:119 +#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:401 #, php-format -msgid "%1$s tagged %2$s's %3$s with %4$s" -msgstr "%1$s ha etiquetado %3$s de %2$s con %4$s" - -#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68 -msgid "This setting requires special processing and editing has been blocked." -msgstr "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada." +msgid "from %s" +msgstr "desde %s" -#: ../../Zotlabs/Module/Pconfig.php:57 -msgid "Configuration Editor" -msgstr "Editor de configuración" +#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:404 +#, php-format +msgid "last edited: %s" +msgstr "último cambio: %s" -#: ../../Zotlabs/Module/Pconfig.php:58 -msgid "" -"Warning: Changing some settings could render your channel inoperable. Please" -" leave this page unless you are comfortable with and knowledgeable about how" -" to correctly use this feature." -msgstr "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica." +#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:405 +#, php-format +msgid "Expires: %s" +msgstr "Caduca: %s" -#: ../../Zotlabs/Module/Affinity.php:35 -msgid "Affinity Tool settings updated." -msgstr "Actualización de los ajustes de Affinity Tool." +#: ../../include/conversation.php:785 +msgid "View in context" +msgstr "Mostrar en su contexto" -#: ../../Zotlabs/Module/Affinity.php:47 -msgid "" -"This app presents a slider control in your connection editor and also on " -"your network page. The slider represents your degree of friendship " -"(affinity) with each connection. It allows you to zoom in or out and display" -" conversations from only your closest friends or everybody in your stream." -msgstr "Esta aplicación presenta un control deslizante en su editor de conexión y también en su página de red. El control deslizante representa su grado de amistad (afinidad) con cada conexión. Le permite acercar o alejar y mostrar conversaciones sólo de sus amigos más cercanos o de todo el mundo en su stream." +#: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1076 +#: ../../Zotlabs/Lib/ThreadItem.php:469 +msgid "Please wait" +msgstr "Espere por favor" -#: ../../Zotlabs/Module/Affinity.php:52 -msgid "Affinity Tool App" -msgstr "App Affinity Tool " +#: ../../include/conversation.php:886 +msgid "remove" +msgstr "eliminar" -#: ../../Zotlabs/Module/Affinity.php:57 -msgid "" -"The numbers below represent the minimum and maximum slider default positions" -" for your network/stream page as a percentage." -msgstr "Los números que aparecen a continuación representan las posiciones predeterminadas mínimas y máximas de los controles deslizantes para su red/stream en forma de porcentaje." +#: ../../include/conversation.php:890 +msgid "Loading..." +msgstr "Cargando..." -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "Default maximum affinity level" -msgstr "Nivel máximo de afinidad por defecto" +#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:291 +msgid "Conversation Tools" +msgstr "Herramientas de conversación" -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "0-99 default 99" -msgstr "0-99 por defecto 99" +#: ../../include/conversation.php:892 +msgid "Delete Selected Items" +msgstr "Eliminar elementos seleccionados" -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "Default minimum affinity level" -msgstr "Nivel mínimo de afinidad por defecto" +#: ../../include/conversation.php:935 +msgid "View Source" +msgstr "Ver el código fuente de la entrada" -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "0-99 - default 0" -msgstr "0-99 - por defecto 0" +#: ../../include/conversation.php:945 +msgid "Follow Thread" +msgstr "Seguir este hilo" -#: ../../Zotlabs/Module/Affinity.php:76 -msgid "Persistent affinity levels" -msgstr "Niveles de afinidad persistentes" +#: ../../include/conversation.php:954 +msgid "Unfollow Thread" +msgstr "Dejar de seguir este hilo" -#: ../../Zotlabs/Module/Affinity.php:76 -msgid "" -"If disabled the max and min levels will be reset to default after page " -"reload" -msgstr "Si está desactivado, los niveles máximo y mínimo se restablecerán a los valores predeterminados después de recargar la página." +#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:629 +msgid "Recent Activity" +msgstr "Actividad reciente" -#: ../../Zotlabs/Module/Affinity.php:84 -msgid "Affinity Tool Settings" -msgstr "Ajustes de Affinity Tool" +#: ../../include/conversation.php:1058 ../../include/connections.php:110 +#: ../../include/channel.php:1506 ../../Zotlabs/Widget/Suggestions.php:46 +#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Module/Directory.php:353 +#: ../../Zotlabs/Module/Connections.php:326 +#: ../../Zotlabs/Module/Suggest.php:71 +msgid "Connect" +msgstr "Conectar" -#: ../../Zotlabs/Module/Defperms.php:189 -msgid "Default Permissions App" -msgstr "App Permisos por defecto" +#: ../../include/conversation.php:1068 +msgid "Edit Connection" +msgstr "Editar conexión" -#: ../../Zotlabs/Module/Defperms.php:190 -msgid "Set custom default permissions for new connections" -msgstr "Establecer permisos predeterminados personalizados para nuevas conexiones" +#: ../../include/conversation.php:1078 +msgid "Message" +msgstr "Mensaje" -#: ../../Zotlabs/Module/Defperms.php:262 -msgid "Automatic approval settings" -msgstr "Opciones de autorización automática" +#: ../../include/conversation.php:1088 ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Ratings.php:97 +msgid "Ratings" +msgstr "Valoraciones" -#: ../../Zotlabs/Module/Defperms.php:270 -msgid "" -"Some individual permissions may have been preset or locked based on your " -"channel type and privacy settings." -msgstr "Es posible que se hayan preestablecido o bloqueado algunos permisos individuales según el tipo de canal y la configuración de privacidad." +#: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199 +#: ../../Zotlabs/Lib/Apps.php:350 +msgid "Poke" +msgstr "Toques y otras cosas" -#: ../../Zotlabs/Module/Authorize.php:17 -msgid "Unknown App" -msgstr "Aplicación desconocida" +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s likes this." +msgstr "A %s le gusta esto." -#: ../../Zotlabs/Module/Authorize.php:29 -msgid "Authorize" -msgstr "Autorizar" +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s doesn't like this." +msgstr "A %s no le gusta esto." -#: ../../Zotlabs/Module/Authorize.php:30 +#: ../../include/conversation.php:1216 #, php-format -msgid "Do you authorize the app %s to access your channel data?" -msgstr "¿Autoriza a la aplicación %s a acceder a los datos de su canal?" +msgid "<span %1$s>%2$d people</span> like this." +msgid_plural "<span %1$s>%2$d people</span> like this." +msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto." +msgstr[1] "A <span %1$s>%2$d personas</span> les gusta esto." -#: ../../Zotlabs/Module/Authorize.php:32 -msgid "Allow" -msgstr "Permitir" +#: ../../include/conversation.php:1218 +#, php-format +msgid "<span %1$s>%2$d people</span> don't like this." +msgid_plural "<span %1$s>%2$d people</span> don't like this." +msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto." +msgstr[1] "A <span %1$s>%2$d personas</span> no les gusta esto." -#: ../../Zotlabs/Module/Group.php:45 -msgid "Privacy group created." -msgstr "El grupo de canales ha sido creado." +#: ../../include/conversation.php:1224 +msgid "and" +msgstr "y" -#: ../../Zotlabs/Module/Group.php:48 -msgid "Could not create privacy group." -msgstr "No se puede crear el grupo de canales" +#: ../../include/conversation.php:1227 +#, php-format +msgid ", and %d other people" +msgid_plural ", and %d other people" +msgstr[0] ", y %d persona más" +msgstr[1] ", y %d personas más" -#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:213 -#: ../../include/items.php:4290 -msgid "Privacy group not found." -msgstr "Grupo de canales no encontrado." +#: ../../include/conversation.php:1228 +#, php-format +msgid "%s like this." +msgstr "A %s le gusta esto." -#: ../../Zotlabs/Module/Group.php:80 -msgid "Privacy group updated." -msgstr "Grupo de canales actualizado." +#: ../../include/conversation.php:1228 +#, php-format +msgid "%s don't like this." +msgstr "A %s no le gusta esto." -#: ../../Zotlabs/Module/Group.php:106 -msgid "Privacy Groups App" -msgstr "App Grupos de canales" +#: ../../include/conversation.php:1702 ../../include/taxonomy.php:659 +#: ../../include/channel.php:1669 ../../Zotlabs/Module/Photos.php:1135 +#: ../../Zotlabs/Lib/ThreadItem.php:236 +msgctxt "noun" +msgid "Like" +msgid_plural "Likes" +msgstr[0] "Me gusta" +msgstr[1] "Me gusta" -#: ../../Zotlabs/Module/Group.php:107 -msgid "Management of privacy groups" -msgstr "Gestión de grupos de canales" +#: ../../include/conversation.php:1705 ../../Zotlabs/Module/Photos.php:1140 +#: ../../Zotlabs/Lib/ThreadItem.php:241 +msgctxt "noun" +msgid "Dislike" +msgid_plural "Dislikes" +msgstr[0] "No me gusta" +msgstr[1] "No me gusta" -#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153 -#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Lib/Group.php:324 -#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../include/nav.php:99 -#: ../../include/group.php:320 -msgid "Privacy Groups" -msgstr "Grupos de canales" +#: ../../include/conversation.php:1708 +msgctxt "noun" +msgid "Attending" +msgid_plural "Attending" +msgstr[0] "Participaré" +msgstr[1] "Participaré" -#: ../../Zotlabs/Module/Group.php:142 -msgid "Add Group" -msgstr "Agregar un grupo" +#: ../../include/conversation.php:1711 +msgctxt "noun" +msgid "Not Attending" +msgid_plural "Not Attending" +msgstr[0] "No participaré" +msgstr[1] "No participaré" -#: ../../Zotlabs/Module/Group.php:146 -msgid "Privacy group name" -msgstr "Nombre del grupo" +#: ../../include/conversation.php:1714 +msgctxt "noun" +msgid "Undecided" +msgid_plural "Undecided" +msgstr[0] "Indeciso/a" +msgstr[1] "Indecisos/as" -#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256 -msgid "Members are visible to other channels" -msgstr "Los miembros son visibles para otros canales" +#: ../../include/conversation.php:1717 +msgctxt "noun" +msgid "Agree" +msgid_plural "Agrees" +msgstr[0] "De acuerdo" +msgstr[1] "De acuerdo" -#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 -msgid "Members" -msgstr "Miembros" +#: ../../include/conversation.php:1720 +msgctxt "noun" +msgid "Disagree" +msgid_plural "Disagrees" +msgstr[0] "En desacuerdo" +msgstr[1] "En desacuerdo" -#: ../../Zotlabs/Module/Group.php:182 -msgid "Privacy group removed." -msgstr "Grupo de canales eliminado." +#: ../../include/conversation.php:1723 +msgctxt "noun" +msgid "Abstain" +msgid_plural "Abstains" +msgstr[0] "se abstiene" +msgstr[1] "Se abstienen" -#: ../../Zotlabs/Module/Group.php:185 -msgid "Unable to remove privacy group." -msgstr "No se puede eliminar el grupo de canales." +#: ../../include/selectors.php:18 +msgid "Profile to assign new connections" +msgstr "Perfil para asignar a las nuevas conexiones" -#: ../../Zotlabs/Module/Group.php:251 -#, php-format -msgid "Privacy Group: %s" -msgstr "Grupo privado %s" +#: ../../include/selectors.php:41 +msgid "Frequently" +msgstr "Frecuentemente" -#: ../../Zotlabs/Module/Group.php:253 -msgid "Privacy group name: " -msgstr "Nombre del grupo de canales:" +#: ../../include/selectors.php:42 +msgid "Hourly" +msgstr "Cada hora" -#: ../../Zotlabs/Module/Group.php:258 -msgid "Delete Group" -msgstr "Eliminar grupo" +#: ../../include/selectors.php:43 +msgid "Twice daily" +msgstr "Dos veces al día" -#: ../../Zotlabs/Module/Group.php:269 -msgid "Group members" -msgstr "Miembros del grupo" +#: ../../include/selectors.php:44 +msgid "Daily" +msgstr "Diariamente" -#: ../../Zotlabs/Module/Group.php:271 -msgid "Not in this group" -msgstr "No en este grupo" +#: ../../include/selectors.php:45 +msgid "Weekly" +msgstr "Semanalmente" -#: ../../Zotlabs/Module/Group.php:303 -msgid "Click a channel to toggle membership" -msgstr "Haga clic en un canal para cambiar los miembros" +#: ../../include/selectors.php:46 +msgid "Monthly" +msgstr "Mensualmente" -#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184 -#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659 -msgid "Profile not found." -msgstr "Perfil no encontrado." +#: ../../include/selectors.php:60 +msgid "Currently Male" +msgstr "Actualmente hombre" -#: ../../Zotlabs/Module/Profiles.php:44 -msgid "Profile deleted." -msgstr "Perfil eliminado." +#: ../../include/selectors.php:60 +msgid "Currently Female" +msgstr "Actualmente mujer" -#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 -msgid "Profile-" -msgstr "Perfil-" +#: ../../include/selectors.php:60 +msgid "Mostly Male" +msgstr "Generalmente hombre" -#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 -msgid "New profile created." -msgstr "El nuevo perfil ha sido creado." +#: ../../include/selectors.php:60 +msgid "Mostly Female" +msgstr "Generalmente mujer" -#: ../../Zotlabs/Module/Profiles.php:111 -msgid "Profile unavailable to clone." -msgstr "Perfil no disponible para clonar." +#: ../../include/selectors.php:60 +msgid "Transgender" +msgstr "Transgénero" -#: ../../Zotlabs/Module/Profiles.php:146 -msgid "Profile unavailable to export." -msgstr "Perfil no disponible para exportar." +#: ../../include/selectors.php:60 +msgid "Intersex" +msgstr "Intersexual" -#: ../../Zotlabs/Module/Profiles.php:252 -msgid "Profile Name is required." -msgstr "Se necesita el nombre del perfil." +#: ../../include/selectors.php:60 +msgid "Transsexual" +msgstr "Transexual" -#: ../../Zotlabs/Module/Profiles.php:459 -msgid "Marital Status" -msgstr "Estado civil" +#: ../../include/selectors.php:60 +msgid "Hermaphrodite" +msgstr "Hermafrodita" -#: ../../Zotlabs/Module/Profiles.php:463 -msgid "Romantic Partner" -msgstr "Pareja sentimental" +#: ../../include/selectors.php:60 ../../include/channel.php:1614 +msgid "Neuter" +msgstr "Neutral" -#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 -msgid "Likes" -msgstr "Me gusta" +#: ../../include/selectors.php:60 ../../include/channel.php:1616 +msgid "Non-specific" +msgstr "No especificado" -#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 -msgid "Dislikes" -msgstr "No me gusta" +#: ../../include/selectors.php:60 +msgid "Undecided" +msgstr "Indeciso/a" -#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 -msgid "Work/Employment" -msgstr "Trabajo:" +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Males" +msgstr "Hombres" -#: ../../Zotlabs/Module/Profiles.php:478 -msgid "Religion" -msgstr "Religión" +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Females" +msgstr "Mujeres" -#: ../../Zotlabs/Module/Profiles.php:482 -msgid "Political Views" -msgstr "Ideas políticas" +#: ../../include/selectors.php:96 +msgid "Gay" +msgstr "Homosexual" -#: ../../Zotlabs/Module/Profiles.php:486 -#: ../../addon/openid/MysqlProvider.php:74 -msgid "Gender" -msgstr "Género" +#: ../../include/selectors.php:96 +msgid "Lesbian" +msgstr "Lesbiana" -#: ../../Zotlabs/Module/Profiles.php:490 -msgid "Sexual Preference" -msgstr "Preferencia sexual" +#: ../../include/selectors.php:96 +msgid "No Preference" +msgstr "Sin preferencias" -#: ../../Zotlabs/Module/Profiles.php:494 -msgid "Homepage" -msgstr "Página personal" +#: ../../include/selectors.php:96 +msgid "Bisexual" +msgstr "Bisexual" -#: ../../Zotlabs/Module/Profiles.php:498 -msgid "Interests" -msgstr "Intereses" +#: ../../include/selectors.php:96 +msgid "Autosexual" +msgstr "Autosexual" -#: ../../Zotlabs/Module/Profiles.php:594 -msgid "Profile updated." -msgstr "Perfil actualizado." +#: ../../include/selectors.php:96 +msgid "Abstinent" +msgstr "Casto/a" -#: ../../Zotlabs/Module/Profiles.php:678 -msgid "Hide your connections list from viewers of this profile" -msgstr "Ocultar la lista de conexiones a los visitantes del perfil" +#: ../../include/selectors.php:96 +msgid "Virgin" +msgstr "Virgen" -#: ../../Zotlabs/Module/Profiles.php:722 -msgid "Edit Profile Details" -msgstr "Modificar los detalles de este perfil" +#: ../../include/selectors.php:96 +msgid "Deviant" +msgstr "Fuera de lo común" -#: ../../Zotlabs/Module/Profiles.php:724 -msgid "View this profile" -msgstr "Ver este perfil" +#: ../../include/selectors.php:96 +msgid "Fetish" +msgstr "Fetichista" -#: ../../Zotlabs/Module/Profiles.php:725 ../../Zotlabs/Module/Profiles.php:824 -#: ../../include/channel.php:1441 -msgid "Edit visibility" -msgstr "Editar visibilidad" +#: ../../include/selectors.php:96 +msgid "Oodles" +msgstr "Orgías" -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Profile Tools" -msgstr "Gestión del perfil" +#: ../../include/selectors.php:96 +msgid "Nonsexual" +msgstr "Asexual" -#: ../../Zotlabs/Module/Profiles.php:727 -msgid "Change cover photo" -msgstr "Cambiar la imagen de portada del perfil" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Single" +msgstr "Soltero/a" -#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1411 -msgid "Change profile photo" -msgstr "Cambiar la foto del perfil" +#: ../../include/selectors.php:134 +msgid "Lonely" +msgstr "Solo/a" -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Create a new profile using these settings" -msgstr "Crear un nuevo perfil usando estos ajustes" +#: ../../include/selectors.php:134 +msgid "Available" +msgstr "Disponible" -#: ../../Zotlabs/Module/Profiles.php:730 -msgid "Clone this profile" -msgstr "Clonar este perfil" +#: ../../include/selectors.php:134 +msgid "Unavailable" +msgstr "No disponible" -#: ../../Zotlabs/Module/Profiles.php:731 -msgid "Delete this profile" -msgstr "Eliminar este perfil" +#: ../../include/selectors.php:134 +msgid "Has crush" +msgstr "Enamorado/a" -#: ../../Zotlabs/Module/Profiles.php:732 -msgid "Add profile things" -msgstr "Añadir cosas al perfil" +#: ../../include/selectors.php:134 +msgid "Infatuated" +msgstr "Apasionado/a" -#: ../../Zotlabs/Module/Profiles.php:733 -msgid "Personal" -msgstr "Personales" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Dating" +msgstr "Saliendo con alguien" -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Relationship" -msgstr "Relación" +#: ../../include/selectors.php:134 +msgid "Unfaithful" +msgstr "Infiel" -#: ../../Zotlabs/Module/Profiles.php:736 ../../Zotlabs/Widget/Newmember.php:51 -#: ../../include/datetime.php:58 -msgid "Miscellaneous" -msgstr "Varios" +#: ../../include/selectors.php:134 +msgid "Sex Addict" +msgstr "Con adicción al sexo" -#: ../../Zotlabs/Module/Profiles.php:738 -msgid "Import profile from file" -msgstr "Importar perfil desde un fichero" +#: ../../include/selectors.php:134 ../../include/channel.php:493 +#: ../../include/channel.php:494 ../../include/channel.php:501 +#: ../../Zotlabs/Widget/Affinity.php:32 +#: ../../Zotlabs/Module/Settings/Channel.php:70 +#: ../../Zotlabs/Module/Settings/Channel.php:74 +#: ../../Zotlabs/Module/Settings/Channel.php:75 +#: ../../Zotlabs/Module/Settings/Channel.php:78 +#: ../../Zotlabs/Module/Settings/Channel.php:89 +#: ../../Zotlabs/Module/Connedit.php:725 +msgid "Friends" +msgstr "Amigos/as" -#: ../../Zotlabs/Module/Profiles.php:739 -msgid "Export profile to file" -msgstr "Exportar perfil a un fichero" +#: ../../include/selectors.php:134 +msgid "Friends/Benefits" +msgstr "Amigos con algo extra" -#: ../../Zotlabs/Module/Profiles.php:740 -msgid "Your gender" -msgstr "Género" +#: ../../include/selectors.php:134 +msgid "Casual" +msgstr "Casual" -#: ../../Zotlabs/Module/Profiles.php:741 -msgid "Marital status" -msgstr "Estado civil" +#: ../../include/selectors.php:134 +msgid "Engaged" +msgstr "Prometido/a" -#: ../../Zotlabs/Module/Profiles.php:742 -msgid "Sexual preference" -msgstr "Preferencia sexual" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Married" +msgstr "Casado/a" -#: ../../Zotlabs/Module/Profiles.php:745 -msgid "Profile name" -msgstr "Nombre del perfil" +#: ../../include/selectors.php:134 +msgid "Imaginarily married" +msgstr "Casado/a en sueños" -#: ../../Zotlabs/Module/Profiles.php:747 -msgid "This is your default profile." -msgstr "Este es su perfil principal." +#: ../../include/selectors.php:134 +msgid "Partners" +msgstr "Pareja" -#: ../../Zotlabs/Module/Profiles.php:749 -msgid "Your full name" -msgstr "Nombre completo" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Cohabiting" +msgstr "Cohabitando" -#: ../../Zotlabs/Module/Profiles.php:750 -msgid "Title/Description" -msgstr "Título o descripción" +#: ../../include/selectors.php:134 +msgid "Common law" +msgstr "Matrimonio tradicional" -#: ../../Zotlabs/Module/Profiles.php:753 -msgid "Street address" -msgstr "Dirección" +#: ../../include/selectors.php:134 +msgid "Happy" +msgstr "Felíz" -#: ../../Zotlabs/Module/Profiles.php:754 -msgid "Locality/City" -msgstr "Ciudad" +#: ../../include/selectors.php:134 +msgid "Not looking" +msgstr "No estoy buscando" -#: ../../Zotlabs/Module/Profiles.php:755 -msgid "Region/State" -msgstr "Región o Estado" +#: ../../include/selectors.php:134 +msgid "Swinger" +msgstr "Libertino" + +#: ../../include/selectors.php:134 +msgid "Betrayed" +msgstr "Engañado/a" -#: ../../Zotlabs/Module/Profiles.php:756 -msgid "Postal/Zip code" -msgstr "Código postal" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Separated" +msgstr "Separado/a" -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Who (if applicable)" -msgstr "Quién (si es pertinente)" +#: ../../include/selectors.php:134 +msgid "Unstable" +msgstr "Inestable" -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" -msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Divorced" +msgstr "Divorciado/a" -#: ../../Zotlabs/Module/Profiles.php:763 -msgid "Since (date)" -msgstr "Desde (fecha)" +#: ../../include/selectors.php:134 +msgid "Imaginarily divorced" +msgstr "Divorciado/a en sueños" -#: ../../Zotlabs/Module/Profiles.php:766 -msgid "Tell us about yourself" -msgstr "Háblenos de usted" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Widowed" +msgstr "Viudo/a" -#: ../../Zotlabs/Module/Profiles.php:767 -#: ../../addon/openid/MysqlProvider.php:68 -msgid "Homepage URL" -msgstr "Dirección de la página personal" +#: ../../include/selectors.php:134 +msgid "Uncertain" +msgstr "Indeterminado" -#: ../../Zotlabs/Module/Profiles.php:768 -msgid "Hometown" -msgstr "Lugar de nacimiento" +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "It's complicated" +msgstr "Es complicado" -#: ../../Zotlabs/Module/Profiles.php:769 -msgid "Political views" -msgstr "Ideas políticas" +#: ../../include/selectors.php:134 +msgid "Don't care" +msgstr "No me importa" -#: ../../Zotlabs/Module/Profiles.php:770 -msgid "Religious views" -msgstr "Creencias religiosas" +#: ../../include/selectors.php:134 +msgid "Ask me" +msgstr "Pregúnteme" -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Keywords used in directory listings" -msgstr "Palabras clave utilizadas en los listados de directorios" +#: ../../include/connections.php:133 +msgid "New window" +msgstr "Nueva ventana" -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Example: fishing photography software" -msgstr "Por ejemplo: software de fotografía submarina" +#: ../../include/connections.php:134 +msgid "Open the selected location in a different window or browser tab" +msgstr "Abrir la dirección seleccionada en una ventana o pestaña aparte" -#: ../../Zotlabs/Module/Profiles.php:774 -msgid "Musical interests" -msgstr "Preferencias musicales" +#: ../../include/group.php:22 ../../Zotlabs/Lib/Group.php:28 +msgid "" +"A deleted group with this name was revived. Existing item permissions " +"<strong>may</strong> apply to this group and any future members. If this is " +"not what you intended, please create another group with a different name." +msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos que ya existen sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente." -#: ../../Zotlabs/Module/Profiles.php:775 -msgid "Books, literature" -msgstr "Libros, literatura" +#: ../../include/group.php:264 ../../Zotlabs/Lib/Group.php:270 +msgid "Add new connections to this privacy group" +msgstr "Añadir conexiones nuevas a este grupo de canales" -#: ../../Zotlabs/Module/Profiles.php:776 -msgid "Television" -msgstr "Televisión" +#: ../../include/group.php:298 ../../Zotlabs/Lib/Group.php:302 +msgid "edit" +msgstr "editar" -#: ../../Zotlabs/Module/Profiles.php:777 -msgid "Film/Dance/Culture/Entertainment" -msgstr "Cine, danza, cultura, entretenimiento" +#: ../../include/group.php:321 ../../Zotlabs/Lib/Group.php:325 +msgid "Edit group" +msgstr "Editar grupo" -#: ../../Zotlabs/Module/Profiles.php:778 -msgid "Hobbies/Interests" -msgstr "Aficiones o intereses" +#: ../../include/group.php:322 ../../Zotlabs/Lib/Group.php:326 +msgid "Add privacy group" +msgstr "Añadir un grupo de canales" -#: ../../Zotlabs/Module/Profiles.php:779 -msgid "Love/Romance" -msgstr "Vida sentimental o amorosa" +#: ../../include/group.php:323 ../../Zotlabs/Lib/Group.php:327 +msgid "Channels not in any privacy group" +msgstr "Sin canales en ningún grupo" -#: ../../Zotlabs/Module/Profiles.php:781 -msgid "School/Education" -msgstr "Estudios" +#: ../../include/group.php:325 ../../Zotlabs/Widget/Savedsearch.php:84 +#: ../../Zotlabs/Lib/Group.php:329 +msgid "add" +msgstr "añadir" -#: ../../Zotlabs/Module/Profiles.php:782 -msgid "Contact information and social networks" -msgstr "Información de contacto y redes sociales" +#: ../../include/taxonomy.php:320 +msgid "Trending" +msgstr "Etiquetas populares" -#: ../../Zotlabs/Module/Profiles.php:783 -msgid "My other channels" -msgstr "Mis otros canales" +#: ../../include/taxonomy.php:320 ../../include/taxonomy.php:449 +#: ../../include/taxonomy.php:470 ../../Zotlabs/Widget/Tagcloud.php:22 +msgid "Tags" +msgstr "Etiquetas" -#: ../../Zotlabs/Module/Profiles.php:785 -msgid "Communications" -msgstr "Comunicaciones" +#: ../../include/taxonomy.php:550 +msgid "Keywords" +msgstr "Palabras clave" -#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1437 -msgid "Profile Image" -msgstr "Imagen del perfil" +#: ../../include/taxonomy.php:571 +msgid "have" +msgstr "tener" -#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1418 -#: ../../include/nav.php:113 -msgid "Edit Profiles" -msgstr "Editar perfiles" +#: ../../include/taxonomy.php:571 +msgid "has" +msgstr "tiene" -#: ../../Zotlabs/Module/Go.php:21 -msgid "This page is available only to site members" -msgstr "Esta página está disponible sólo para los miembros del sitio" +#: ../../include/taxonomy.php:572 +msgid "want" +msgstr "quiero" -#: ../../Zotlabs/Module/Go.php:27 -msgid "Welcome" -msgstr "Bienvenido/a" +#: ../../include/taxonomy.php:572 +msgid "wants" +msgstr "quiere" -#: ../../Zotlabs/Module/Go.php:29 -msgid "What would you like to do?" -msgstr "¿Qué le gustaría hacer?" +#: ../../include/taxonomy.php:573 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "like" +msgstr "me gusta" -#: ../../Zotlabs/Module/Go.php:31 -msgid "" -"Please bookmark this page if you would like to return to it in the future" -msgstr "Por favor añada esta página a sus marcadores si desea volver a ella en el futuro." +#: ../../include/taxonomy.php:573 +msgid "likes" +msgstr "gusta de" -#: ../../Zotlabs/Module/Go.php:35 -msgid "Upload a profile photo" -msgstr "Subir una foto de perfil" +#: ../../include/taxonomy.php:574 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "dislike" +msgstr "no me gusta" -#: ../../Zotlabs/Module/Go.php:36 -msgid "Upload a cover photo" -msgstr "Subir una foto de portada del perfil" +#: ../../include/taxonomy.php:574 +msgid "dislikes" +msgstr "no gusta de" -#: ../../Zotlabs/Module/Go.php:37 -msgid "Edit your default profile" -msgstr "Editar su perfil por defecto" +#: ../../include/items.php:984 ../../include/items.php:1044 +msgid "(Unknown)" +msgstr "(Desconocido)" -#: ../../Zotlabs/Module/Go.php:38 ../../Zotlabs/Widget/Newmember.php:41 -msgid "View friend suggestions" -msgstr "Ver sugerencias de amistad" +#: ../../include/items.php:1232 +msgid "Visible to anybody on the internet." +msgstr "Visible para cualquiera en internet." -#: ../../Zotlabs/Module/Go.php:39 -msgid "View the channel directory" -msgstr "Ver el directorio de canales" +#: ../../include/items.php:1234 +msgid "Visible to you only." +msgstr "Visible sólo para usted." -#: ../../Zotlabs/Module/Go.php:40 -msgid "View/edit your channel settings" -msgstr "Ver o modificar los ajustes de su canal" +#: ../../include/items.php:1236 +msgid "Visible to anybody in this network." +msgstr "Visible para cualquiera en esta red." -#: ../../Zotlabs/Module/Go.php:41 -msgid "View the site or project documentation" -msgstr "Ver el sitio o la documentación del proyecto" +#: ../../include/items.php:1238 +msgid "Visible to anybody authenticated." +msgstr "Visible para cualquiera que esté autenticado." -#: ../../Zotlabs/Module/Go.php:42 -msgid "Visit your channel homepage" -msgstr "Visitar la página principal de su canal" +#: ../../include/items.php:1240 +#, php-format +msgid "Visible to anybody on %s." +msgstr "Visible para cualquiera en %s." -#: ../../Zotlabs/Module/Go.php:43 -msgid "" -"View your connections and/or add somebody whose address you already know" -msgstr "Vea sus conexiones y/o agregue a alguien cuya dirección ya conozca" +#: ../../include/items.php:1242 +msgid "Visible to all connections." +msgstr "Visible para todas las conexiones." -#: ../../Zotlabs/Module/Go.php:44 -msgid "" -"View your personal stream (this may be empty until you add some connections)" -msgstr "Ver su \"stream\" personal (puede que esté vacío hasta que agregue algunas conexiones)" +#: ../../include/items.php:1244 +msgid "Visible to approved connections." +msgstr "Visible para las conexiones permitidas." -#: ../../Zotlabs/Module/Go.php:52 -msgid "View the public stream. Warning: this content is not moderated" -msgstr "Ver el \"stream\" público. Advertencia: este contenido no está moderado" +#: ../../include/items.php:1246 +msgid "Visible to specific connections." +msgstr "Visible para conexiones específicas." -#: ../../Zotlabs/Module/Editwebpage.php:139 -msgid "Page link" -msgstr "Enlace de la página" +#: ../../include/items.php:4296 ../../Zotlabs/Module/Group.php:61 +#: ../../Zotlabs/Module/Group.php:213 +msgid "Privacy group not found." +msgstr "Grupo de canales no encontrado." -#: ../../Zotlabs/Module/Editwebpage.php:166 -msgid "Edit Webpage" -msgstr "Editar la página web" +#: ../../include/items.php:4312 +msgid "Privacy group is empty." +msgstr "El grupo de canales está vacío." -#: ../../Zotlabs/Module/Manage.php:145 -msgid "Create a new channel" -msgstr "Crear un nuevo canal" +#: ../../include/items.php:4319 +#, php-format +msgid "Privacy group: %s" +msgstr "Grupo de canales: %s" -#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:336 -#: ../../include/nav.php:96 -msgid "Channel Manager" -msgstr "Administración de canales" +#: ../../include/items.php:4329 ../../Zotlabs/Module/Connedit.php:867 +#, php-format +msgid "Connection: %s" +msgstr "Conexión: %s" -#: ../../Zotlabs/Module/Manage.php:171 -msgid "Current Channel" -msgstr "Canal actual" +#: ../../include/items.php:4331 +msgid "Connection not found." +msgstr "Conexión no encontrada" -#: ../../Zotlabs/Module/Manage.php:173 -msgid "Switch to one of your channels by selecting it." -msgstr "Cambiar a uno de sus canales seleccionándolo." +#: ../../include/items.php:4673 ../../Zotlabs/Module/Cover_photo.php:303 +msgid "female" +msgstr "mujer" -#: ../../Zotlabs/Module/Manage.php:174 -msgid "Default Channel" -msgstr "Canal principal" +#: ../../include/items.php:4674 ../../Zotlabs/Module/Cover_photo.php:304 +#, php-format +msgid "%1$s updated her %2$s" +msgstr "%1$s ha actualizado su %2$s" -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Make Default" -msgstr "Convertir en predeterminado" +#: ../../include/items.php:4675 ../../Zotlabs/Module/Cover_photo.php:305 +msgid "male" +msgstr "hombre" -#: ../../Zotlabs/Module/Manage.php:178 +#: ../../include/items.php:4676 ../../Zotlabs/Module/Cover_photo.php:306 #, php-format -msgid "%d new messages" -msgstr "%d mensajes nuevos" +msgid "%1$s updated his %2$s" +msgstr "%1$s ha actualizado su %2$s" -#: ../../Zotlabs/Module/Manage.php:179 +#: ../../include/items.php:4678 ../../Zotlabs/Module/Cover_photo.php:308 #, php-format -msgid "%d new introductions" -msgstr "%d nuevas solicitudes de conexión" +msgid "%1$s updated their %2$s" +msgstr "%1$s ha actualizado su %2$s" -#: ../../Zotlabs/Module/Manage.php:181 -msgid "Delegated Channel" -msgstr "Canal delegado" +#: ../../include/items.php:4680 +msgid "profile photo" +msgstr "foto del perfil" -#: ../../Zotlabs/Module/Cards.php:51 -msgid "Cards App" -msgstr "App de Fichas" +#: ../../include/items.php:4872 +#, php-format +msgid "[Edited %s]" +msgstr "[se ha editado %s]" -#: ../../Zotlabs/Module/Cards.php:52 -msgid "Create personal planning cards" -msgstr "Crear fichas de planificación personal" +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Post" +msgstr "Publicar" -#: ../../Zotlabs/Module/Cards.php:112 -msgid "Add Card" -msgstr "Añadir una ficha" +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Comment" +msgstr "Comentar" -#: ../../Zotlabs/Module/Cards.php:207 ../../Zotlabs/Lib/Apps.php:325 -#: ../../include/nav.php:503 -msgid "Cards" -msgstr "Fichas" +#: ../../include/account.php:36 +msgid "Not a valid email address" +msgstr "Dirección de correo no válida" -#: ../../Zotlabs/Module/Dirsearch.php:33 -msgid "This directory server requires an access token" -msgstr "El servidor de este directorio necesita un \"token\" de acceso" +#: ../../include/account.php:38 +msgid "Your email domain is not among those allowed on this site" +msgstr "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio." -#: ../../Zotlabs/Module/Siteinfo.php:21 -msgid "About this site" -msgstr "Acerca de este sitio" +#: ../../include/account.php:44 +msgid "Your email address is already registered at this site." +msgstr "Su dirección de correo está ya registrada en este sitio." -#: ../../Zotlabs/Module/Siteinfo.php:22 -msgid "Site Name" -msgstr "Nombre del sitio" +#: ../../include/account.php:76 +msgid "An invitation is required." +msgstr "Es obligatorio que le inviten." -#: ../../Zotlabs/Module/Siteinfo.php:26 -msgid "Administrator" -msgstr "Administrador" +#: ../../include/account.php:80 +msgid "Invitation could not be verified." +msgstr "No se ha podido verificar su invitación." -#: ../../Zotlabs/Module/Siteinfo.php:28 ../../Zotlabs/Module/Register.php:239 -msgid "Terms of Service" -msgstr "Términos del servicio" +#: ../../include/account.php:156 +msgid "Please enter the required information." +msgstr "Por favor introduzca la información requerida." -#: ../../Zotlabs/Module/Siteinfo.php:29 -msgid "Software and Project information" -msgstr "Información sobre el software y el proyecto" +#: ../../include/account.php:223 +msgid "Failed to store account information." +msgstr "La información de la cuenta no se ha podido guardar." -#: ../../Zotlabs/Module/Siteinfo.php:30 -msgid "This site is powered by $Projectname" -msgstr "Este sitio funciona con $Projectname" +#: ../../include/account.php:311 +#, php-format +msgid "Registration confirmation for %s" +msgstr "Confirmación de registro para %s" -#: ../../Zotlabs/Module/Siteinfo.php:31 -msgid "" -"Federated and decentralised networking and identity services provided by Zot" -msgstr "Servicios federados y descentralizados de identidad y redes proporcionados por Zot" +#: ../../include/account.php:380 +#, php-format +msgid "Registration request at %s" +msgstr "Solicitud de registro en %s" -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Additional federated transport protocols:" -msgstr "Protocolos adicionales de transporte federado: " +#: ../../include/account.php:402 +msgid "your registration password" +msgstr "su contraseña de registro" -#: ../../Zotlabs/Module/Siteinfo.php:36 +#: ../../include/account.php:408 ../../include/account.php:471 #, php-format -msgid "Version %s" -msgstr "Versión %s" +msgid "Registration details for %s" +msgstr "Detalles del registro de %s" -#: ../../Zotlabs/Module/Siteinfo.php:37 -msgid "Project homepage" -msgstr "Página principal del proyecto" +#: ../../include/account.php:482 +msgid "Account approved." +msgstr "Cuenta aprobada." -#: ../../Zotlabs/Module/Siteinfo.php:38 -msgid "Developer homepage" -msgstr "Página principal del desarrollador" +#: ../../include/account.php:522 +#, php-format +msgid "Registration revoked for %s" +msgstr "Registro revocado para %s" -#: ../../Zotlabs/Module/Ratings.php:70 -msgid "No ratings" -msgstr "Ninguna valoración" +#: ../../include/account.php:805 ../../include/account.php:807 +msgid "Click here to upgrade." +msgstr "Pulse aquí para actualizar" -#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35 -#: ../../include/conversation.php:1088 -msgid "Ratings" -msgstr "Valoraciones" +#: ../../include/account.php:813 +msgid "This action exceeds the limits set by your subscription plan." +msgstr "Esta acción supera los límites establecidos por su plan de suscripción " -#: ../../Zotlabs/Module/Ratings.php:98 -msgid "Rating: " -msgstr "Valoración:" +#: ../../include/account.php:818 +msgid "This action is not available under your subscription plan." +msgstr "Esta acción no está disponible en su plan de suscripción." -#: ../../Zotlabs/Module/Ratings.php:99 -msgid "Website: " -msgstr "Sitio web:" +#: ../../include/photo/photo_driver.php:367 +#: ../../Zotlabs/Module/Profile_photo.php:145 +#: ../../Zotlabs/Module/Profile_photo.php:282 +msgid "Profile Photos" +msgstr "Fotos del perfil" -#: ../../Zotlabs/Module/Ratings.php:101 -msgid "Description: " -msgstr "Descripción:" +#: ../../include/attach.php:267 ../../include/attach.php:375 +msgid "Item was not found." +msgstr "Elemento no encontrado." -#: ../../Zotlabs/Module/Webpages.php:48 -msgid "Webpages App" -msgstr "App de Páginas web" +#: ../../include/attach.php:284 +msgid "Unknown error." +msgstr "Error desconocido" -#: ../../Zotlabs/Module/Webpages.php:49 -msgid "Provide managed web pages on your channel" -msgstr "Proveer páginas web gestionadas en su canal" +#: ../../include/attach.php:568 +msgid "No source file." +msgstr "Ningún fichero de origen" -#: ../../Zotlabs/Module/Webpages.php:69 -msgid "Import Webpage Elements" -msgstr "Importar elementos de una página web" +#: ../../include/attach.php:590 +msgid "Cannot locate file to replace" +msgstr "No se puede localizar el fichero que va a ser sustituido." -#: ../../Zotlabs/Module/Webpages.php:70 -msgid "Import selected" -msgstr "Importar elementos seleccionados" +#: ../../include/attach.php:609 +msgid "Cannot locate file to revise/update" +msgstr "No se puede localizar el fichero para revisar/actualizar" -#: ../../Zotlabs/Module/Webpages.php:93 -msgid "Export Webpage Elements" -msgstr "Exportar elementos de una página web" +#: ../../include/attach.php:751 +#, php-format +msgid "File exceeds size limit of %d" +msgstr "El fichero supera el limite de tamaño de %d" -#: ../../Zotlabs/Module/Webpages.php:94 -msgid "Export selected" -msgstr "Exportar los elementos seleccionados" +#: ../../include/attach.php:772 +#, php-format +msgid "You have reached your limit of %1$.0f Mbytes attachment storage." +msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos." -#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:340 -#: ../../include/nav.php:526 -msgid "Webpages" -msgstr "Páginas web" +#: ../../include/attach.php:954 +msgid "File upload failed. Possible system limit or action terminated." +msgstr "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado." -#: ../../Zotlabs/Module/Webpages.php:263 -msgid "Actions" -msgstr "Acciones" +#: ../../include/attach.php:983 +msgid "Stored file could not be verified. Upload failed." +msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado." -#: ../../Zotlabs/Module/Webpages.php:264 -msgid "Page Link" -msgstr "Vínculo de la página" +#: ../../include/attach.php:1057 ../../include/attach.php:1073 +msgid "Path not available." +msgstr "Ruta no disponible." -#: ../../Zotlabs/Module/Webpages.php:265 -msgid "Page Title" -msgstr "Título de página" +#: ../../include/attach.php:1122 ../../include/attach.php:1285 +msgid "Empty pathname" +msgstr "Ruta vacía" -#: ../../Zotlabs/Module/Webpages.php:295 -msgid "Invalid file type." -msgstr "Tipo de fichero no válido." +#: ../../include/attach.php:1148 +msgid "duplicate filename or path" +msgstr "Nombre duplicado de ruta o fichero" -#: ../../Zotlabs/Module/Webpages.php:307 -msgid "Error opening zip file" -msgstr "Error al abrir el fichero comprimido zip" +#: ../../include/attach.php:1173 +msgid "Path not found." +msgstr "Ruta no encontrada" -#: ../../Zotlabs/Module/Webpages.php:318 -msgid "Invalid folder path." -msgstr "La ruta de la carpeta no es válida." +#: ../../include/attach.php:1241 +msgid "mkdir failed." +msgstr "mkdir ha fallado." -#: ../../Zotlabs/Module/Webpages.php:345 -msgid "No webpage elements detected." -msgstr "No se han detectado elementos de ninguna página web." +#: ../../include/attach.php:1245 +msgid "database storage failed." +msgstr "el almacenamiento en la base de datos ha fallado." -#: ../../Zotlabs/Module/Webpages.php:420 -msgid "Import complete." -msgstr "Importación completada." +#: ../../include/attach.php:1291 +msgid "Empty path" +msgstr "Ruta vacía" -#: ../../Zotlabs/Module/Changeaddr.php:35 -msgid "" -"Channel name changes are not allowed within 48 hours of changing the account" -" password." -msgstr "Los cambios en el nombre de un canal no está permitida hasta pasadas 48 horas desde el cambio de contraseña de la cuenta." +#: ../../include/bookmarks.php:34 +#, php-format +msgid "%1$s's bookmarks" +msgstr "Marcadores de %1$s" + +#: ../../include/menu.php:118 ../../include/channel.php:1426 +#: ../../include/channel.php:1430 ../../Zotlabs/Widget/Cdav.php:138 +#: ../../Zotlabs/Widget/Cdav.php:175 ../../Zotlabs/Module/Article_edit.php:98 +#: ../../Zotlabs/Module/Group.php:252 ../../Zotlabs/Module/Card_edit.php:99 +#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Module/Editwebpage.php:142 +#: ../../Zotlabs/Module/Webpages.php:255 +#: ../../Zotlabs/Module/Admin/Profs.php:175 +#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editblock.php:114 +#: ../../Zotlabs/Module/Editlayout.php:114 +#: ../../Zotlabs/Module/Connections.php:298 +#: ../../Zotlabs/Module/Connections.php:339 +#: ../../Zotlabs/Module/Connections.php:359 ../../Zotlabs/Module/Menu.php:176 +#: ../../Zotlabs/Module/Oauth2.php:194 ../../Zotlabs/Module/Thing.php:266 +#: ../../Zotlabs/Module/Wiki.php:211 ../../Zotlabs/Module/Wiki.php:384 +#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Lib/Apps.php:557 +#: ../../Zotlabs/Lib/ThreadItem.php:148 ../../Zotlabs/Storage/Browser.php:296 +msgid "Edit" +msgstr "Editar" + +#: ../../include/bbcode.php:221 ../../include/bbcode.php:1232 +#: ../../include/bbcode.php:1235 ../../include/bbcode.php:1240 +#: ../../include/bbcode.php:1243 ../../include/bbcode.php:1246 +#: ../../include/bbcode.php:1249 ../../include/bbcode.php:1254 +#: ../../include/bbcode.php:1257 ../../include/bbcode.php:1262 +#: ../../include/bbcode.php:1265 ../../include/bbcode.php:1268 +#: ../../include/bbcode.php:1271 +msgid "Image/photo" +msgstr "Imagen/foto" -#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:222 -#: ../../include/channel.php:655 -msgid "Reserved nickname. Please choose another." -msgstr "Sobrenombre en uso. Por favor, elija otro." +#: ../../include/bbcode.php:260 ../../include/bbcode.php:1282 +msgid "Encrypted content" +msgstr "Contenido cifrado" -#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:227 -#: ../../include/channel.php:660 -msgid "" -"Nickname has unsupported characters or is already being used on this site." -msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio." +#: ../../include/bbcode.php:292 +#, php-format +msgid "Install %1$s element %2$s" +msgstr "Instalar el elemento de%1$s%2$s" -#: ../../Zotlabs/Module/Changeaddr.php:77 -msgid "Change channel nickname/address" -msgstr "Cambiar el alias o la dirección del canal" +#: ../../include/bbcode.php:296 +#, php-format +msgid "" +"This post contains an installable %s element, however you lack permissions " +"to install it on this site." +msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio." -#: ../../Zotlabs/Module/Changeaddr.php:78 -msgid "Any/all connections on other networks will be lost!" -msgstr "¡Cualquier/todas las conexiones en otras redes se perderán!" +#: ../../include/bbcode.php:306 ../../Zotlabs/Module/Impel.php:43 +msgid "webpage" +msgstr "página web" -#: ../../Zotlabs/Module/Changeaddr.php:80 -msgid "New channel address" -msgstr "Nueva dirección del canal" +#: ../../include/bbcode.php:309 ../../Zotlabs/Module/Impel.php:53 +msgid "layout" +msgstr "plantilla" -#: ../../Zotlabs/Module/Changeaddr.php:81 -msgid "Rename Channel" -msgstr "Renombrar el canal" +#: ../../include/bbcode.php:312 ../../Zotlabs/Module/Impel.php:48 +msgid "block" +msgstr "bloque" -#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 -msgid "Item is not editable" -msgstr "El elemento no es editable" +#: ../../include/bbcode.php:315 ../../Zotlabs/Module/Impel.php:60 +msgid "menu" +msgstr "menú" -#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 -msgid "Edit post" -msgstr "Editar la entrada" +#: ../../include/bbcode.php:376 +msgid "card" +msgstr "ficha" -#: ../../Zotlabs/Module/Dreport.php:59 -msgid "Invalid message" -msgstr "Mensaje no válido" +#: ../../include/bbcode.php:378 +msgid "article" +msgstr "el artículo" -#: ../../Zotlabs/Module/Dreport.php:93 -msgid "no results" -msgstr "sin resultados" +#: ../../include/bbcode.php:380 ../../include/markdown.php:204 +#: ../../Zotlabs/Module/Tagger.php:77 +msgid "post" +msgstr "la entrada" -#: ../../Zotlabs/Module/Dreport.php:107 -msgid "channel sync processed" -msgstr "se ha realizado la sincronización del canal" +#: ../../include/bbcode.php:384 ../../include/markdown.php:202 +#, php-format +msgid "%1$s wrote the following %2$s %3$s" +msgstr "%1$s escribió %2$s siguiente %3$s" -#: ../../Zotlabs/Module/Dreport.php:111 -msgid "queued" -msgstr "encolado" +#: ../../include/bbcode.php:461 ../../include/bbcode.php:469 +msgid "Click to open/close" +msgstr "Pulsar para abrir/cerrar" -#: ../../Zotlabs/Module/Dreport.php:115 -msgid "posted" -msgstr "enviado" +#: ../../include/bbcode.php:469 ../../include/markdown.php:251 +msgid "spoiler" +msgstr "spoiler" -#: ../../Zotlabs/Module/Dreport.php:119 -msgid "accepted for delivery" -msgstr "aceptado para el envío" +#: ../../include/bbcode.php:482 +msgid "View article" +msgstr "Ver el artículo" -#: ../../Zotlabs/Module/Dreport.php:123 -msgid "updated" -msgstr "actualizado" +#: ../../include/bbcode.php:482 +msgid "View summary" +msgstr "Ver sumario" -#: ../../Zotlabs/Module/Dreport.php:126 -msgid "update ignored" -msgstr "actualización ignorada" +#: ../../include/bbcode.php:772 ../../include/bbcode.php:942 +#: ../../Zotlabs/Lib/NativeWikiPage.php:603 +msgid "Different viewers will see this text differently" +msgstr "Visitantes diferentes verán este texto de forma distinta" -#: ../../Zotlabs/Module/Dreport.php:129 -msgid "permission denied" -msgstr "permiso denegado" +#: ../../include/bbcode.php:1220 +msgid "$1 wrote:" +msgstr "$1 escribió:" -#: ../../Zotlabs/Module/Dreport.php:133 -msgid "recipient not found" -msgstr "destinatario no encontrado" +#: ../../include/channel.php:43 +msgid "Unable to obtain identity information from database" +msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos" -#: ../../Zotlabs/Module/Dreport.php:136 -msgid "mail recalled" -msgstr "mensaje de correo revocado" +#: ../../include/channel.php:76 +msgid "Empty name" +msgstr "Nombre vacío" -#: ../../Zotlabs/Module/Dreport.php:139 -msgid "duplicate mail received" -msgstr "se ha recibido mensaje duplicado" +#: ../../include/channel.php:79 +msgid "Name too long" +msgstr "Nombre demasiado largo" -#: ../../Zotlabs/Module/Dreport.php:142 -msgid "mail delivered" -msgstr "correo enviado" +#: ../../include/channel.php:196 +msgid "No account identifier" +msgstr "Ningún identificador de la cuenta" -#: ../../Zotlabs/Module/Dreport.php:162 -#, php-format -msgid "Delivery report for %1$s" -msgstr "Informe de entrega para %1$s" +#: ../../include/channel.php:208 +msgid "Nickname is required." +msgstr "Se requiere un sobrenombre (alias)." -#: ../../Zotlabs/Module/Dreport.php:166 ../../Zotlabs/Widget/Wiki_pages.php:41 -#: ../../Zotlabs/Widget/Wiki_pages.php:98 -msgid "Options" -msgstr "Opciones" +#: ../../include/channel.php:222 ../../include/channel.php:655 +#: ../../Zotlabs/Module/Changeaddr.php:46 +msgid "Reserved nickname. Please choose another." +msgstr "Sobrenombre en uso. Por favor, elija otro." -#: ../../Zotlabs/Module/Dreport.php:167 -msgid "Redeliver" -msgstr "Volver a enviar" +#: ../../include/channel.php:227 ../../include/channel.php:660 +#: ../../Zotlabs/Module/Changeaddr.php:51 +msgid "" +"Nickname has unsupported characters or is already being used on this site." +msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio." -#: ../../Zotlabs/Module/Sources.php:41 -msgid "Failed to create source. No channel selected." -msgstr "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal." +#: ../../include/channel.php:287 +msgid "Unable to retrieve created identity" +msgstr "No ha sido posible recuperar la identidad creada" -#: ../../Zotlabs/Module/Sources.php:57 -msgid "Source created." -msgstr "Fuente creada." +#: ../../include/channel.php:429 +msgid "Default Profile" +msgstr "Perfil principal" -#: ../../Zotlabs/Module/Sources.php:70 -msgid "Source updated." -msgstr "Fuente actualizada." +#: ../../include/channel.php:588 ../../include/channel.php:677 +msgid "Unable to retrieve modified identity" +msgstr "No se puede recuperar la identidad modficada" -#: ../../Zotlabs/Module/Sources.php:88 -msgid "Sources App" -msgstr "App de Fuentes" +#: ../../include/channel.php:1419 ../../Zotlabs/Module/Profiles.php:728 +msgid "Change profile photo" +msgstr "Cambiar la foto del perfil" -#: ../../Zotlabs/Module/Sources.php:89 -msgid "Automatically import channel content from other channels or feeds" -msgstr "Importar automáticamente contenido de otros canales o \"feeds\"" +#: ../../include/channel.php:1427 +msgid "Create New Profile" +msgstr "Crear un nuevo perfil" -#: ../../Zotlabs/Module/Sources.php:101 -msgid "*" -msgstr "*" +#: ../../include/channel.php:1445 ../../Zotlabs/Module/Profiles.php:820 +msgid "Profile Image" +msgstr "Imagen del perfil" -#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:367 -msgid "Channel Sources" -msgstr "Orígenes de los contenidos del canal" +#: ../../include/channel.php:1448 +msgid "Visible to everybody" +msgstr "Visible para todos" -#: ../../Zotlabs/Module/Sources.php:108 -msgid "Manage remote sources of content for your channel." -msgstr "Gestionar contenido de origen remoto para su canal." +#: ../../include/channel.php:1449 ../../Zotlabs/Module/Profiles.php:725 +#: ../../Zotlabs/Module/Profiles.php:824 +msgid "Edit visibility" +msgstr "Editar visibilidad" -#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:119 -msgid "New Source" -msgstr "Nueva fuente" +#: ../../include/channel.php:1525 ../../include/channel.php:1653 +msgid "Gender:" +msgstr "Género:" -#: ../../Zotlabs/Module/Sources.php:120 ../../Zotlabs/Module/Sources.php:154 -msgid "" -"Import all or selected content from the following channel into this channel " -"and distribute it according to your channel settings." -msgstr "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes." +#: ../../include/channel.php:1527 ../../include/channel.php:1721 +msgid "Homepage:" +msgstr "Página personal:" -#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 -msgid "Only import content with these words (one per line)" -msgstr "Importar solo contenido que contenga estas palabras (una por línea)" +#: ../../include/channel.php:1528 +msgid "Online Now" +msgstr "Ahora en línea" -#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 -msgid "Leave blank to import all public content" -msgstr "Dejar en blanco para importar todo el contenido público" +#: ../../include/channel.php:1581 +msgid "Change your profile photo" +msgstr "Cambiar su foto del perfil" -#: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:161 -msgid "Channel Name" -msgstr "Nombre del canal" +#: ../../include/channel.php:1612 +msgid "Trans" +msgstr "Trans" -#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 -msgid "" -"Add the following categories to posts imported from this source (comma " -"separated)" -msgstr "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)" +#: ../../include/channel.php:1651 +#: ../../Zotlabs/Module/Settings/Channel.php:499 +msgid "Full Name:" +msgstr "Nombre completo:" -#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 -#: ../../Zotlabs/Module/Oauth.php:117 -msgid "Optional" -msgstr "Opcional" +#: ../../include/channel.php:1658 +msgid "Like this channel" +msgstr "Me gusta este canal" -#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 -msgid "Resend posts with this channel as author" -msgstr "Reenviar mensajes con este canal como autor" +#: ../../include/channel.php:1682 +msgid "j F, Y" +msgstr "j F Y" -#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 -msgid "Copyrights may apply" -msgstr "Se pueden aplicar los derechos de autor" +#: ../../include/channel.php:1683 +msgid "j F" +msgstr "j F" -#: ../../Zotlabs/Module/Sources.php:144 ../../Zotlabs/Module/Sources.php:174 -msgid "Source not found." -msgstr "Fuente no encontrada" +#: ../../include/channel.php:1690 +msgid "Birthday:" +msgstr "Cumpleaños:" -#: ../../Zotlabs/Module/Sources.php:151 -msgid "Edit Source" -msgstr "Editar fuente" +#: ../../include/channel.php:1694 ../../Zotlabs/Module/Directory.php:334 +msgid "Age:" +msgstr "Edad:" -#: ../../Zotlabs/Module/Sources.php:152 -msgid "Delete Source" -msgstr "Eliminar fuente" +#: ../../include/channel.php:1703 +#, php-format +msgid "for %1$d %2$s" +msgstr "por %1$d %2$s" -#: ../../Zotlabs/Module/Sources.php:182 -msgid "Source removed" -msgstr "Fuente eliminada" +#: ../../include/channel.php:1715 +msgid "Tags:" +msgstr "Etiquetas:" -#: ../../Zotlabs/Module/Sources.php:184 -msgid "Unable to remove source." -msgstr "No se puede eliminar la fuente." +#: ../../include/channel.php:1719 +msgid "Sexual Preference:" +msgstr "Orientación sexual:" -#: ../../Zotlabs/Module/Like.php:56 -msgid "Like/Dislike" -msgstr "Me gusta/No me gusta" +#: ../../include/channel.php:1723 ../../Zotlabs/Module/Directory.php:350 +msgid "Hometown:" +msgstr "Lugar de nacimiento:" -#: ../../Zotlabs/Module/Like.php:61 -msgid "This action is restricted to members." -msgstr "Esta acción está restringida solo para miembros." +#: ../../include/channel.php:1725 +msgid "Political Views:" +msgstr "Posición política:" -#: ../../Zotlabs/Module/Like.php:62 -msgid "" -"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a " -"href=\"register\">register as a new $Projectname member</a> to continue." -msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar." +#: ../../include/channel.php:1727 +msgid "Religion:" +msgstr "Religión:" -#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 -#: ../../Zotlabs/Module/Like.php:175 -msgid "Invalid request." -msgstr "Solicitud incorrecta." +#: ../../include/channel.php:1729 ../../Zotlabs/Module/Directory.php:352 +msgid "About:" +msgstr "Sobre mí:" -#: ../../Zotlabs/Module/Like.php:123 ../../include/conversation.php:122 -msgid "channel" -msgstr "el canal" +#: ../../include/channel.php:1731 +msgid "Hobbies/Interests:" +msgstr "Aficciones o intereses:" -#: ../../Zotlabs/Module/Like.php:152 -msgid "thing" -msgstr "elemento" +#: ../../include/channel.php:1733 +msgid "Likes:" +msgstr "Me gusta:" -#: ../../Zotlabs/Module/Like.php:198 -msgid "Channel unavailable." -msgstr "Canal no disponible." +#: ../../include/channel.php:1735 +msgid "Dislikes:" +msgstr "No me gusta:" -#: ../../Zotlabs/Module/Like.php:246 -msgid "Previous action reversed." -msgstr "Acción anterior revocada." +#: ../../include/channel.php:1737 +msgid "Contact information and Social Networks:" +msgstr "Información de contacto y redes sociales:" -#: ../../Zotlabs/Module/Like.php:447 ../../Zotlabs/Lib/Activity.php:2355 -#: ../../addon/diaspora/Receiver.php:1532 ../../addon/pubcrawl/as.php:1727 -#: ../../include/conversation.php:160 -#, php-format -msgid "%1$s likes %2$s's %3$s" -msgstr "A %1$s le gusta %3$s de %2$s" +#: ../../include/channel.php:1739 +msgid "My other channels:" +msgstr "Mis otros canales:" -#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:2357 -#: ../../addon/pubcrawl/as.php:1729 ../../include/conversation.php:163 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "A %1$s no le gusta %3$s de %2$s" +#: ../../include/channel.php:1741 +msgid "Musical interests:" +msgstr "Preferencias musicales:" -#: ../../Zotlabs/Module/Like.php:451 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s está de acuerdo" +#: ../../include/channel.php:1743 +msgid "Books, literature:" +msgstr "Libros, literatura:" -#: ../../Zotlabs/Module/Like.php:453 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s no está de acuerdo" +#: ../../include/channel.php:1745 +msgid "Television:" +msgstr "Televisión:" -#: ../../Zotlabs/Module/Like.php:455 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s se abstiene" +#: ../../include/channel.php:1747 +msgid "Film/dance/culture/entertainment:" +msgstr "Cine, danza, cultura, entretenimiento:" -#: ../../Zotlabs/Module/Like.php:457 ../../addon/diaspora/Receiver.php:2178 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s participa" +#: ../../include/channel.php:1749 +msgid "Love/Romance:" +msgstr "Vida sentimental o amorosa:" -#: ../../Zotlabs/Module/Like.php:459 ../../addon/diaspora/Receiver.php:2180 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s no participa" +#: ../../include/channel.php:1751 +msgid "Work/employment:" +msgstr "Trabajo:" -#: ../../Zotlabs/Module/Like.php:461 ../../addon/diaspora/Receiver.php:2182 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s quizá participe" +#: ../../include/channel.php:1753 +msgid "School/education:" +msgstr "Estudios:" -#: ../../Zotlabs/Module/Like.php:572 -msgid "Action completed." -msgstr "Acción completada." +#: ../../include/channel.php:1774 ../../Zotlabs/Module/Profperm.php:113 +#: ../../Zotlabs/Lib/Apps.php:361 +msgid "Profile" +msgstr "Perfil" -#: ../../Zotlabs/Module/Like.php:573 -msgid "Thank you." -msgstr "Gracias." +#: ../../include/channel.php:1776 +msgid "Like this thing" +msgstr "Me gusta esto" -#: ../../Zotlabs/Module/Directory.php:116 -msgid "No default suggestions were found." -msgstr "No se encontraron sugerencias por defecto." +#: ../../include/channel.php:1777 ../../Zotlabs/Module/Events.php:699 +msgid "Export" +msgstr "Exportar" -#: ../../Zotlabs/Module/Directory.php:270 -#, php-format -msgid "%d rating" -msgid_plural "%d ratings" -msgstr[0] "%d valoración" -msgstr[1] "%d valoraciones" +#: ../../include/channel.php:2215 ../../Zotlabs/Module/Cover_photo.php:310 +msgid "cover photo" +msgstr "Imagen de portada del perfil" -#: ../../Zotlabs/Module/Directory.php:281 -msgid "Gender: " -msgstr "Género:" +#: ../../include/channel.php:2483 ../../Zotlabs/Module/Rmagic.php:93 +#: ../../boot.php:1675 +msgid "Remote Authentication" +msgstr "Acceso desde su servidor" -#: ../../Zotlabs/Module/Directory.php:283 -msgid "Status: " -msgstr "Estado:" +#: ../../include/channel.php:2484 ../../Zotlabs/Module/Rmagic.php:94 +msgid "Enter your channel address (e.g. channel@example.com)" +msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)" -#: ../../Zotlabs/Module/Directory.php:285 -msgid "Homepage: " -msgstr "Página personal:" +#: ../../include/channel.php:2485 ../../Zotlabs/Module/Rmagic.php:95 +msgid "Authenticate" +msgstr "Acceder" -#: ../../Zotlabs/Module/Directory.php:334 ../../include/channel.php:1686 -msgid "Age:" -msgstr "Edad:" +#: ../../include/channel.php:2640 ../../Zotlabs/Module/Admin/Accounts.php:91 +#, php-format +msgid "Account '%s' deleted" +msgstr "La cuenta '%s' ha sido eliminada" -#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1513 -#: ../../include/event.php:62 ../../include/event.php:112 -msgid "Location:" -msgstr "Ubicación:" +#: ../../include/acl_selectors.php:33 +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +msgid "Visible to your default audience" +msgstr "Visible para su público predeterminado." -#: ../../Zotlabs/Module/Directory.php:345 -msgid "Description:" -msgstr "Descripción:" +#: ../../include/acl_selectors.php:88 ../../Zotlabs/Module/Lockview.php:117 +#: ../../Zotlabs/Module/Lockview.php:153 ../../Zotlabs/Module/Acl.php:121 +msgctxt "acl" +msgid "Profile" +msgstr "Perfil" -#: ../../Zotlabs/Module/Directory.php:350 ../../include/channel.php:1715 -msgid "Hometown:" -msgstr "Lugar de nacimiento:" +#: ../../include/acl_selectors.php:106 +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +msgid "Only me" +msgstr "Sólo yo" -#: ../../Zotlabs/Module/Directory.php:352 ../../include/channel.php:1721 -msgid "About:" -msgstr "Sobre mí:" +#: ../../include/acl_selectors.php:113 +msgid "Who can see this?" +msgstr "¿Quién puede ver esto?" -#: ../../Zotlabs/Module/Directory.php:353 ../../Zotlabs/Module/Suggest.php:71 -#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:46 -#: ../../include/conversation.php:1058 ../../include/channel.php:1498 -#: ../../include/connections.php:110 -msgid "Connect" -msgstr "Conectar" +#: ../../include/acl_selectors.php:114 +msgid "Custom selection" +msgstr "Selección personalizada" -#: ../../Zotlabs/Module/Directory.php:354 -msgid "Public Forum:" -msgstr "Foro público:" +#: ../../include/acl_selectors.php:115 +msgid "" +"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" +" the scope of \"Show\"." +msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"." -#: ../../Zotlabs/Module/Directory.php:357 -msgid "Keywords: " -msgstr "Palabras clave:" +#: ../../include/acl_selectors.php:116 +msgid "Show" +msgstr "Mostrar" -#: ../../Zotlabs/Module/Directory.php:360 -msgid "Don't suggest" -msgstr "No sugerir:" +#: ../../include/acl_selectors.php:117 +msgid "Don't show" +msgstr "No mostrar" -#: ../../Zotlabs/Module/Directory.php:362 -msgid "Common connections (estimated):" -msgstr "Conexiones comunes (estimadas): " +#: ../../include/acl_selectors.php:150 +#, php-format +msgid "" +"Post permissions %s cannot be changed %s after a post is shared.</br />These" +" permissions set who is allowed to view the post." +msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje." -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Global Directory" -msgstr "Directorio global:" +#: ../../include/oembed.php:153 +msgid "View PDF" +msgstr "Ver PDF" -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Local Directory" -msgstr "Directorio local:" +#: ../../include/oembed.php:357 +msgid " by " +msgstr "por" -#: ../../Zotlabs/Module/Directory.php:417 -msgid "Finding:" -msgstr "Encontrar:" +#: ../../include/oembed.php:358 +msgid " on " +msgstr "en" -#: ../../Zotlabs/Module/Directory.php:420 ../../Zotlabs/Module/Suggest.php:79 -#: ../../include/contact_widgets.php:24 -msgid "Channel Suggestions" -msgstr "Sugerencias de canales" +#: ../../include/oembed.php:387 +msgid "Embedded content" +msgstr "Contenido incorporado" -#: ../../Zotlabs/Module/Directory.php:422 -msgid "next page" -msgstr "siguiente página" +#: ../../include/oembed.php:396 +msgid "Embedding disabled" +msgstr "Incrustación deshabilitada" -#: ../../Zotlabs/Module/Directory.php:422 -msgid "previous page" -msgstr "página anterior" +#: ../../include/dir_fns.php:141 ../../Zotlabs/Lib/Libzotdir.php:160 +msgid "Directory Options" +msgstr "Opciones del directorio" -#: ../../Zotlabs/Module/Directory.php:423 -msgid "Sort options" -msgstr "Ordenar opciones" +#: ../../include/dir_fns.php:143 ../../Zotlabs/Lib/Libzotdir.php:162 +msgid "Safe Mode" +msgstr "Modo seguro" -#: ../../Zotlabs/Module/Directory.php:424 -msgid "Alphabetic" -msgstr "Alfabético" +#: ../../include/dir_fns.php:144 ../../Zotlabs/Lib/Libzotdir.php:163 +msgid "Public Forums Only" +msgstr "Solo foros públicos" -#: ../../Zotlabs/Module/Directory.php:425 -msgid "Reverse Alphabetic" -msgstr "Alfabético inverso" +#: ../../include/dir_fns.php:145 ../../Zotlabs/Lib/Libzotdir.php:165 +msgid "This Website Only" +msgstr "Solo este sitio web" -#: ../../Zotlabs/Module/Directory.php:426 -msgid "Newest to Oldest" -msgstr "De más nuevo a más antiguo" +#: ../../include/zid.php:368 +#, php-format +msgid "OpenWebAuth: %1$s welcomes %2$s" +msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s" -#: ../../Zotlabs/Module/Directory.php:427 -msgid "Oldest to Newest" -msgstr "De más antiguo a más nuevo" +#: ../../include/message.php:41 +msgid "Unable to determine sender." +msgstr "No ha sido posible determinar el remitente. " -#: ../../Zotlabs/Module/Directory.php:444 -msgid "No entries (some entries may be hidden)." -msgstr "Sin entradas (algunas entradas pueden estar ocultas)." +#: ../../include/message.php:80 +msgid "No recipient provided." +msgstr "No se ha especificado ningún destinatario." -#: ../../Zotlabs/Module/Xchan.php:10 -msgid "Xchan Lookup" -msgstr "Búsqueda de canales" +#: ../../include/message.php:85 +msgid "[no subject]" +msgstr "[sin asunto]" -#: ../../Zotlabs/Module/Xchan.php:13 -msgid "Lookup xchan beginning with (or webbie): " -msgstr "Buscar un canal (o un \"webbie\") que comience por:" +#: ../../include/message.php:214 +msgid "Stored post could not be verified." +msgstr "No se han podido verificar las publicaciones guardadas." -#: ../../Zotlabs/Module/Suggest.php:40 -msgid "Suggest Channels App" -msgstr "App Sugerencia de canales" +#: ../../Zotlabs/Widget/Activity_order.php:90 +msgid "Commented Date" +msgstr "Fecha de los comentarios" -#: ../../Zotlabs/Module/Suggest.php:41 -msgid "" -"Suggestions for channels in the $Projectname network you might be interested" -" in" -msgstr "Sugerencias de los canales de la red $Projectname en los que puede estar interesado" +#: ../../Zotlabs/Widget/Activity_order.php:94 +msgid "Order by last commented date" +msgstr "Ordenar por la última fecha de los comentarios" -#: ../../Zotlabs/Module/Suggest.php:54 -msgid "" -"No suggestions available. If this is a new site, please try again in 24 " -"hours." -msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo." +#: ../../Zotlabs/Widget/Activity_order.php:97 +msgid "Posted Date" +msgstr "Fecha de publicación" -#: ../../Zotlabs/Module/Suggest.php:73 ../../Zotlabs/Widget/Suggestions.php:48 -msgid "Ignore/Hide" -msgstr "Ignorar/Ocultar" +#: ../../Zotlabs/Widget/Activity_order.php:101 +msgid "Order by last posted date" +msgstr "Ordenar por la ultima fecha de publicación" -#: ../../Zotlabs/Module/Oexchange.php:27 -msgid "Unable to find your hub." -msgstr "No se puede encontrar su servidor." +#: ../../Zotlabs/Widget/Activity_order.php:104 +msgid "Date Unthreaded" +msgstr "Sin enhebrar por fecha" -#: ../../Zotlabs/Module/Oexchange.php:41 -msgid "Post successful." -msgstr "Enviado con éxito." +#: ../../Zotlabs/Widget/Activity_order.php:108 +msgid "Order unthreaded by date" +msgstr "Ordenar sin enhebrar por fecha" -#: ../../Zotlabs/Module/Mail.php:77 -msgid "Unable to lookup recipient." -msgstr "No se puede asociar a un destinatario." +#: ../../Zotlabs/Widget/Activity_order.php:123 +msgid "Stream Order" +msgstr "Orden del stream" -#: ../../Zotlabs/Module/Mail.php:84 -msgid "Unable to communicate with requested channel." -msgstr "No se puede establecer la comunicación con el canal solicitado." +#: ../../Zotlabs/Widget/Archive.php:43 +msgid "Archives" +msgstr "Hemeroteca" -#: ../../Zotlabs/Module/Mail.php:91 -msgid "Cannot verify requested channel." -msgstr "No se puede verificar el canal solicitado." +#: ../../Zotlabs/Widget/Wiki_pages.php:34 +#: ../../Zotlabs/Widget/Wiki_pages.php:91 +msgid "Add new page" +msgstr "Añadir una nueva página" -#: ../../Zotlabs/Module/Mail.php:109 -msgid "Selected channel has private message restrictions. Send failed." -msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló." +#: ../../Zotlabs/Widget/Wiki_pages.php:41 +#: ../../Zotlabs/Widget/Wiki_pages.php:98 ../../Zotlabs/Module/Dreport.php:166 +msgid "Options" +msgstr "Opciones" -#: ../../Zotlabs/Module/Mail.php:164 -msgid "Messages" -msgstr "Mensajes" +#: ../../Zotlabs/Widget/Wiki_pages.php:85 +msgid "Wiki Pages" +msgstr "Páginas del wiki" -#: ../../Zotlabs/Module/Mail.php:177 -msgid "message" -msgstr "mensaje" +#: ../../Zotlabs/Widget/Wiki_pages.php:96 +msgid "Page name" +msgstr "Nombre de la página" -#: ../../Zotlabs/Module/Mail.php:218 -msgid "Message recalled." -msgstr "Mensaje revocado." +#: ../../Zotlabs/Widget/Album.php:78 ../../Zotlabs/Widget/Portfolio.php:87 +#: ../../Zotlabs/Module/Embedphotos.php:168 +#: ../../Zotlabs/Module/Photos.php:784 ../../Zotlabs/Module/Photos.php:1332 +msgid "View Photo" +msgstr "Ver foto" -#: ../../Zotlabs/Module/Mail.php:231 -msgid "Conversation removed." -msgstr "Conversación eliminada." +#: ../../Zotlabs/Widget/Album.php:95 ../../Zotlabs/Widget/Portfolio.php:108 +#: ../../Zotlabs/Module/Embedphotos.php:184 +#: ../../Zotlabs/Module/Photos.php:815 +msgid "Edit Album" +msgstr "Editar álbum" -#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:367 -msgid "Expires YYYY-MM-DD HH:MM" -msgstr "Caduca YYYY-MM-DD HH:MM" +#: ../../Zotlabs/Widget/Album.php:97 ../../Zotlabs/Widget/Cdav.php:146 +#: ../../Zotlabs/Widget/Cdav.php:182 ../../Zotlabs/Widget/Portfolio.php:110 +#: ../../Zotlabs/Module/Embedphotos.php:186 +#: ../../Zotlabs/Module/Profile_photo.php:498 +#: ../../Zotlabs/Module/Cover_photo.php:429 +#: ../../Zotlabs/Module/Photos.php:685 ../../Zotlabs/Storage/Browser.php:398 +msgid "Upload" +msgstr "Subir" -#: ../../Zotlabs/Module/Mail.php:274 -msgid "Requested channel is not in this network" -msgstr "El canal solicitado no existe en esta red" +#: ../../Zotlabs/Widget/Tasklist.php:23 +msgid "Tasks" +msgstr "Tareas" -#: ../../Zotlabs/Module/Mail.php:282 -msgid "Send Private Message" -msgstr "Enviar un mensaje privado" +#: ../../Zotlabs/Widget/Pubsites.php:12 ../../Zotlabs/Module/Pubsites.php:24 +msgid "Public Hubs" +msgstr "Servidores públicos" -#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 -msgid "To:" -msgstr "Para:" +#: ../../Zotlabs/Widget/Conversations.php:17 +msgid "Received Messages" +msgstr "Mensajes recibidos" -#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 -msgid "Subject:" -msgstr "Asunto:" +#: ../../Zotlabs/Widget/Conversations.php:21 +msgid "Sent Messages" +msgstr "Enviar mensajes" -#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:434 -msgid "Attach file" -msgstr "Adjuntar fichero" +#: ../../Zotlabs/Widget/Conversations.php:25 +msgid "Conversations" +msgstr "Conversaciones" -#: ../../Zotlabs/Module/Mail.php:293 -msgid "Send" -msgstr "Enviar" +#: ../../Zotlabs/Widget/Conversations.php:37 +msgid "No messages." +msgstr "Sin mensajes." -#: ../../Zotlabs/Module/Mail.php:296 ../../Zotlabs/Module/Mail.php:439 -#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456 -msgid "Set expiration date" -msgstr "Configurar fecha de caducidad" +#: ../../Zotlabs/Widget/Conversations.php:57 +msgid "Delete conversation" +msgstr "Eliminar conversación" -#: ../../Zotlabs/Module/Mail.php:397 -msgid "Delete message" -msgstr "Borrar mensaje" +#: ../../Zotlabs/Widget/Chatroom_members.php:11 +msgid "Chat Members" +msgstr "Miembros del chat" -#: ../../Zotlabs/Module/Mail.php:398 -msgid "Delivery report" -msgstr "Informe de transmisión" +#: ../../Zotlabs/Widget/Activity.php:50 +msgctxt "widget" +msgid "Activity" +msgstr "Actividad" -#: ../../Zotlabs/Module/Mail.php:399 -msgid "Recall message" -msgstr "Revocar el mensaje" +#: ../../Zotlabs/Widget/Cdav.php:37 +msgid "Select Channel" +msgstr "Seleccionar un canal" -#: ../../Zotlabs/Module/Mail.php:401 -msgid "Message has been recalled." -msgstr "El mensaje ha sido revocado." +#: ../../Zotlabs/Widget/Cdav.php:42 +msgid "Read-write" +msgstr "Lectura y escritura" -#: ../../Zotlabs/Module/Mail.php:419 -msgid "Delete Conversation" -msgstr "Eliminar conversación" +#: ../../Zotlabs/Widget/Cdav.php:43 +msgid "Read-only" +msgstr "Sólo lectura" -#: ../../Zotlabs/Module/Mail.php:421 -msgid "" -"No secure communications available. You <strong>may</strong> be able to " -"respond from the sender's profile page." -msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente." +#: ../../Zotlabs/Widget/Cdav.php:127 +msgid "Channel Calendar" +msgstr "Calendario del canal" -#: ../../Zotlabs/Module/Mail.php:425 -msgid "Send Reply" -msgstr "Responder" +#: ../../Zotlabs/Widget/Cdav.php:129 ../../Zotlabs/Widget/Cdav.php:143 +#: ../../Zotlabs/Module/Cdav.php:1078 +msgid "CalDAV Calendars" +msgstr "Calendarios CalDAV" -#: ../../Zotlabs/Module/Mail.php:430 -#, php-format -msgid "Your message for %s (%s):" -msgstr "Su mensaje para %s (%s):" +#: ../../Zotlabs/Widget/Cdav.php:131 +msgid "Shared CalDAV Calendars" +msgstr "Calendarios CalDAV compartidos" -#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12 -msgid "Public Hubs" -msgstr "Servidores públicos" +#: ../../Zotlabs/Widget/Cdav.php:135 +msgid "Share this calendar" +msgstr "Compartir este calendario" -#: ../../Zotlabs/Module/Pubsites.php:27 -msgid "" -"The listed hubs allow public registration for the $Projectname network. All " -"hubs in the network are interlinked so membership on any of them conveys " -"membership in the network as a whole. Some hubs may require subscription or " -"provide tiered service plans. The hub itself <strong>may</strong> provide " -"additional details." -msgstr "Los sitios listados permiten el registro público en la red $Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales." +#: ../../Zotlabs/Widget/Cdav.php:137 +msgid "Calendar name and color" +msgstr "Nombre y color del calendario" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Hub URL" -msgstr "Dirección del hub" +#: ../../Zotlabs/Widget/Cdav.php:139 +msgid "Create new CalDAV calendar" +msgstr "Crear un nuevo calendario CalDAV" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Access Type" -msgstr "Tipo de acceso" +#: ../../Zotlabs/Widget/Cdav.php:140 ../../Zotlabs/Widget/Cdav.php:178 +#: ../../Zotlabs/Module/Cdav.php:1082 ../../Zotlabs/Module/Cdav.php:1388 +#: ../../Zotlabs/Module/Webpages.php:254 +#: ../../Zotlabs/Module/New_channel.php:189 ../../Zotlabs/Module/Cards.php:113 +#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Profiles.php:798 +#: ../../Zotlabs/Module/Articles.php:117 ../../Zotlabs/Module/Menu.php:182 +#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Layouts.php:185 +#: ../../Zotlabs/Storage/Browser.php:282 ../../Zotlabs/Storage/Browser.php:396 +msgid "Create" +msgstr "Crear" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Registration Policy" -msgstr "Normas de registro" +#: ../../Zotlabs/Widget/Cdav.php:141 +msgid "Calendar Name" +msgstr "Nombre del calendario" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Stats" -msgstr "Estadísticas" +#: ../../Zotlabs/Widget/Cdav.php:142 +msgid "Calendar Tools" +msgstr "Gestión de calendarios" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Software" -msgstr "Software" +#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1078 +msgid "Channel Calendars" +msgstr "Calendarios del canal" -#: ../../Zotlabs/Module/Pubsites.php:49 -msgid "Rate" -msgstr "Valorar" +#: ../../Zotlabs/Widget/Cdav.php:144 +msgid "Import calendar" +msgstr "Importar un calendario" -#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:288 -msgid "webpage" -msgstr "página web" +#: ../../Zotlabs/Widget/Cdav.php:145 +msgid "Select a calendar to import to" +msgstr "Seleccionar un calendario para importarlo" -#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:294 -msgid "block" -msgstr "bloque" +#: ../../Zotlabs/Widget/Cdav.php:172 +msgid "Addressbooks" +msgstr "Agenda de direcciones" -#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:291 -msgid "layout" -msgstr "plantilla" +#: ../../Zotlabs/Widget/Cdav.php:174 +msgid "Addressbook name" +msgstr "Nombre de la agenda" -#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:297 -msgid "menu" -msgstr "menú" +#: ../../Zotlabs/Widget/Cdav.php:176 +msgid "Create new addressbook" +msgstr "Crear una nueva agenda de direcciones" -#: ../../Zotlabs/Module/Impel.php:185 -#, php-format -msgid "%s element installed" -msgstr "%s elemento instalado" +#: ../../Zotlabs/Widget/Cdav.php:177 +msgid "Addressbook Name" +msgstr "Nombre de la agenda" -#: ../../Zotlabs/Module/Impel.php:188 -#, php-format -msgid "%s element installation failed" -msgstr "Elemento con instalación fallida: %s" +#: ../../Zotlabs/Widget/Cdav.php:179 +msgid "Addressbook Tools" +msgstr "Gestión de agendas de direcciones" -#: ../../Zotlabs/Module/Rbmark.php:94 -msgid "Select a bookmark folder" -msgstr "Seleccionar una carpeta de marcadores" +#: ../../Zotlabs/Widget/Cdav.php:180 +msgid "Import addressbook" +msgstr "Importar una agenda de direcciones" -#: ../../Zotlabs/Module/Rbmark.php:99 -msgid "Save Bookmark" -msgstr "Guardar marcador" +#: ../../Zotlabs/Widget/Cdav.php:181 +msgid "Select an addressbook to import to" +msgstr "Seleccionar una agenda para importarla" -#: ../../Zotlabs/Module/Rbmark.php:100 -msgid "URL of bookmark" -msgstr "Dirección del marcador" +#: ../../Zotlabs/Widget/Savedsearch.php:75 +msgid "Remove term" +msgstr "Eliminar término" -#: ../../Zotlabs/Module/Rbmark.php:105 -msgid "Or enter new bookmark folder name" -msgstr "O introduzca un nuevo nombre para la carpeta de marcadores" +#: ../../Zotlabs/Widget/Suggestedchats.php:32 +msgid "Suggested Chatrooms" +msgstr "Salas de chat sugeridas" -#: ../../Zotlabs/Module/Filer.php:52 -msgid "Enter a folder name" -msgstr "Escriba un nombre de carpeta" +#: ../../Zotlabs/Widget/Settings_menu.php:32 +msgid "Account settings" +msgstr "Configuración de la cuenta" -#: ../../Zotlabs/Module/Filer.php:52 -msgid "or select an existing folder (doubleclick)" -msgstr "o seleccione una (con un doble click)" +#: ../../Zotlabs/Widget/Settings_menu.php:38 +msgid "Channel settings" +msgstr "Configuración del canal" -#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 -msgid "Save to Folder" -msgstr "Guardar en carpeta" +#: ../../Zotlabs/Widget/Settings_menu.php:46 +msgid "Display settings" +msgstr "Ajustes de visualización" -#: ../../Zotlabs/Module/Probe.php:18 -msgid "Remote Diagnostics App" -msgstr "App Diagnósticos remotos" +#: ../../Zotlabs/Widget/Settings_menu.php:53 +msgid "Manage locations" +msgstr "Gestión de ubicaciones (clones) del canal" -#: ../../Zotlabs/Module/Probe.php:19 -msgid "Perform diagnostics on remote channels" -msgstr "Realizar diagnósticos en canales remotos" +#: ../../Zotlabs/Widget/Chatroom_list.php:20 +msgid "Overview" +msgstr "Resumen" -#: ../../Zotlabs/Module/Register.php:52 -msgid "Maximum daily site registrations exceeded. Please try again tomorrow." -msgstr "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana." +#: ../../Zotlabs/Widget/Suggestions.php:48 ../../Zotlabs/Module/Suggest.php:73 +msgid "Ignore/Hide" +msgstr "Ignorar/Ocultar" -#: ../../Zotlabs/Module/Register.php:58 -msgid "" -"Please indicate acceptance of the Terms of Service. Registration failed." -msgstr "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado." +#: ../../Zotlabs/Widget/Suggestions.php:53 +msgid "Suggestions" +msgstr "Sugerencias" -#: ../../Zotlabs/Module/Register.php:92 -msgid "Passwords do not match." -msgstr "Las contraseñas no coinciden." +#: ../../Zotlabs/Widget/Suggestions.php:54 +msgid "See more..." +msgstr "Ver más..." -#: ../../Zotlabs/Module/Register.php:135 -msgid "Registration successful. Continue to create your first channel..." -msgstr "Registro exitoso. Continúe creando tu primer canal..." +#: ../../Zotlabs/Widget/Forums.php:100 +#: ../../Zotlabs/Widget/Activity_filter.php:73 +#: ../../Zotlabs/Widget/Notifications.php:119 +#: ../../Zotlabs/Widget/Notifications.php:120 +msgid "Forums" +msgstr "Foros" -#: ../../Zotlabs/Module/Register.php:138 -msgid "" -"Registration successful. Please check your email for validation " -"instructions." -msgstr "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo." +#: ../../Zotlabs/Widget/Bookmarkedchats.php:24 +msgid "Bookmarked Chatrooms" +msgstr "Salas de chat preferidas" -#: ../../Zotlabs/Module/Register.php:145 -msgid "Your registration is pending approval by the site owner." -msgstr "Su registro está pendiente de aprobación por el propietario del sitio." +#: ../../Zotlabs/Widget/Wiki_page_history.php:23 +#: ../../Zotlabs/Lib/NativeWikiPage.php:562 +msgctxt "wiki_history" +msgid "Message" +msgstr "Mensaje" -#: ../../Zotlabs/Module/Register.php:148 -msgid "Your registration can not be processed." -msgstr "Su registro no puede ser procesado." +#: ../../Zotlabs/Widget/Wiki_page_history.php:24 +#: ../../Zotlabs/Lib/NativeWikiPage.php:563 +msgid "Date" +msgstr "Fecha" -#: ../../Zotlabs/Module/Register.php:195 -msgid "Registration on this hub is disabled." -msgstr "El registro está deshabilitado en este sitio." +#: ../../Zotlabs/Widget/Wiki_page_history.php:25 +#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 +msgid "Revert" +msgstr "Revertir" -#: ../../Zotlabs/Module/Register.php:204 -msgid "Registration on this hub is by approval only." -msgstr "El registro en este hub está sometido a aprobación previa." +#: ../../Zotlabs/Widget/Wiki_page_history.php:26 +#: ../../Zotlabs/Lib/NativeWikiPage.php:565 +msgid "Compare" +msgstr "Comparar" -#: ../../Zotlabs/Module/Register.php:205 ../../Zotlabs/Module/Register.php:214 -msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" -msgstr "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>" +#: ../../Zotlabs/Widget/Hq_controls.php:14 +msgid "HQ Control Panel" +msgstr "Panel de control de HQ" -#: ../../Zotlabs/Module/Register.php:213 -msgid "Registration on this hub is by invitation only." -msgstr "La inscripción en este hub es sólo posible por invitación." +#: ../../Zotlabs/Widget/Hq_controls.php:17 +msgid "Create a new post" +msgstr "Crear una nueva entrada" -#: ../../Zotlabs/Module/Register.php:224 -msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." -msgstr "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana." +#: ../../Zotlabs/Widget/Mailmenu.php:13 +msgid "Private Mail Menu" +msgstr "Menú de correo privado" -#: ../../Zotlabs/Module/Register.php:245 -#, php-format -msgid "I accept the %s for this website" -msgstr "Acepto los %s de este sitio" +#: ../../Zotlabs/Widget/Mailmenu.php:15 +msgid "Combined View" +msgstr "Vista combinada" -#: ../../Zotlabs/Module/Register.php:252 -#, php-format -msgid "I am over %s years of age and accept the %s for this website" -msgstr "Tengo más de %s años de edad y acepto los %s de este sitio web" +#: ../../Zotlabs/Widget/Mailmenu.php:20 +msgid "Inbox" +msgstr "Bandeja de entrada" -#: ../../Zotlabs/Module/Register.php:257 -msgid "Your email address" -msgstr "Su dirección de correo electrónico" +#: ../../Zotlabs/Widget/Mailmenu.php:25 +msgid "Outbox" +msgstr "Bandeja de salida" -#: ../../Zotlabs/Module/Register.php:258 -msgid "Choose a password" -msgstr "Elija una contraseña" +#: ../../Zotlabs/Widget/Mailmenu.php:30 +msgid "New Message" +msgstr "Nuevo mensaje" -#: ../../Zotlabs/Module/Register.php:259 -msgid "Please re-enter your password" -msgstr "Por favor, vuelva a escribir su contraseña" +#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 +msgid "photo/image" +msgstr "foto/imagen" -#: ../../Zotlabs/Module/Register.php:260 -msgid "Please enter your invitation code" -msgstr "Por favor, introduzca el código de su invitación" +#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:288 +msgid "Site" +msgstr "Sitio" -#: ../../Zotlabs/Module/Register.php:261 -msgid "Your Name" -msgstr "Su nombre" +#: ../../Zotlabs/Widget/Admin.php:23 +#: ../../Zotlabs/Module/Admin/Accounts.php:167 +#: ../../Zotlabs/Module/Admin/Accounts.php:180 +#: ../../Zotlabs/Module/Admin.php:96 +msgid "Accounts" +msgstr "Cuentas" -#: ../../Zotlabs/Module/Register.php:261 -msgid "Real names are preferred." -msgstr "Se prefieren los nombres reales" +#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60 +msgid "Member registrations waiting for confirmation" +msgstr "Inscripciones de nuevos miembros pendientes de aprobación" -#: ../../Zotlabs/Module/Register.php:263 -#, php-format -msgid "" -"Your nickname will be used to create an easy to remember channel address " -"e.g. nickname%s" -msgstr "Su alias se usará para crear una dirección de canal fácil de recordar, p. ej.: alias%s" +#: ../../Zotlabs/Widget/Admin.php:24 +#: ../../Zotlabs/Module/Admin/Channels.php:146 +#: ../../Zotlabs/Module/Admin.php:114 +msgid "Channels" +msgstr "Canales" -#: ../../Zotlabs/Module/Register.php:264 -msgid "" -"Select a channel permission role for your usage needs and privacy " -"requirements." -msgstr "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad." +#: ../../Zotlabs/Widget/Admin.php:25 +#: ../../Zotlabs/Module/Admin/Security.php:93 +msgid "Security" +msgstr "Seguridad" -#: ../../Zotlabs/Module/Register.php:265 -msgid "no" -msgstr "no" +#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:357 +msgid "Features" +msgstr "Funcionalidades" -#: ../../Zotlabs/Module/Register.php:265 -msgid "yes" -msgstr "sí" +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Addons.php:343 +#: ../../Zotlabs/Module/Admin/Addons.php:441 +msgid "Addons" +msgstr "Addons" -#: ../../Zotlabs/Module/Register.php:293 ../../boot.php:1656 -#: ../../include/nav.php:160 -msgid "Register" -msgstr "Registrarse" +#: ../../Zotlabs/Widget/Admin.php:28 ../../Zotlabs/Module/Admin/Themes.php:123 +#: ../../Zotlabs/Module/Admin/Themes.php:157 +msgid "Themes" +msgstr "Temas" -#: ../../Zotlabs/Module/Register.php:294 -msgid "" -"This site requires email verification. After completing this form, please " -"check your email for further instructions." -msgstr "Este sitio requiere verificación por correo electrónico. Después de completar este formulario, por favor revise su correo electrónico para más instrucciones." +#: ../../Zotlabs/Widget/Admin.php:29 +msgid "Inspect queue" +msgstr "Examinar la cola" -#: ../../Zotlabs/Module/Cover_photo.php:194 -#: ../../Zotlabs/Module/Cover_photo.php:252 -msgid "Cover Photos" -msgstr "Imágenes de portada del perfil" +#: ../../Zotlabs/Widget/Admin.php:30 ../../Zotlabs/Module/Admin/Profs.php:168 +msgid "Profile Fields" +msgstr "Campos del perfil" -#: ../../Zotlabs/Module/Cover_photo.php:303 ../../include/items.php:4667 -msgid "female" -msgstr "mujer" +#: ../../Zotlabs/Widget/Admin.php:31 +msgid "DB updates" +msgstr "Actualizaciones de la base de datos" -#: ../../Zotlabs/Module/Cover_photo.php:304 ../../include/items.php:4668 -#, php-format -msgid "%1$s updated her %2$s" -msgstr "%1$s ha actualizado su %2$s" +#: ../../Zotlabs/Widget/Admin.php:48 ../../Zotlabs/Widget/Admin.php:58 +#: ../../Zotlabs/Module/Admin/Logs.php:83 +msgid "Logs" +msgstr "Informes" -#: ../../Zotlabs/Module/Cover_photo.php:305 ../../include/items.php:4669 -msgid "male" -msgstr "hombre" +#: ../../Zotlabs/Widget/Admin.php:56 +msgid "Addon Features" +msgstr "Características del addon" -#: ../../Zotlabs/Module/Cover_photo.php:306 ../../include/items.php:4670 +#: ../../Zotlabs/Widget/Activity_filter.php:36 #, php-format -msgid "%1$s updated his %2$s" -msgstr "%1$s ha actualizado su %2$s" +msgid "Show posts related to the %s privacy group" +msgstr "Mostrar entradas relacionadas con el grupo %s" -#: ../../Zotlabs/Module/Cover_photo.php:308 ../../include/items.php:4672 -#, php-format -msgid "%1$s updated their %2$s" -msgstr "%1$s ha actualizado su %2$s" +#: ../../Zotlabs/Widget/Activity_filter.php:45 +msgid "Show my privacy groups" +msgstr "Mostrar mis grupos de canales" -#: ../../Zotlabs/Module/Cover_photo.php:310 ../../include/channel.php:2207 -msgid "cover photo" -msgstr "Imagen de portada del perfil" +#: ../../Zotlabs/Widget/Activity_filter.php:66 +msgid "Show posts to this forum" +msgstr "Mostrar las entradas en este foro" -#: ../../Zotlabs/Module/Cover_photo.php:424 -msgid "Your cover photo may be visible to anybody on the internet" -msgstr "La foto de la portada puede ser visible para cualquiera en Internet" +#: ../../Zotlabs/Widget/Activity_filter.php:77 +msgid "Show forums" +msgstr "Mostrar los foros" -#: ../../Zotlabs/Module/Cover_photo.php:428 -msgid "Change Cover Photo" -msgstr "Cambiar la foto de portada del perfil" +#: ../../Zotlabs/Widget/Activity_filter.php:91 +msgid "Starred Posts" +msgstr "Entradas preferidas" -#: ../../Zotlabs/Module/Help.php:23 -msgid "Documentation Search" -msgstr "Búsqueda de Documentación" +#: ../../Zotlabs/Widget/Activity_filter.php:95 +msgid "Show posts that I have starred" +msgstr "Mostrar entradas que he señalado como preferidas" -#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:436 -msgid "About" -msgstr "Mi perfil" +#: ../../Zotlabs/Widget/Activity_filter.php:106 +msgid "Personal Posts" +msgstr "Entradas personales" -#: ../../Zotlabs/Module/Help.php:82 -msgid "Administrators" -msgstr "Administradores" +#: ../../Zotlabs/Widget/Activity_filter.php:110 +msgid "Show posts that mention or involve me" +msgstr "Mostrar entradas que me mencionen o involucren" -#: ../../Zotlabs/Module/Help.php:83 -msgid "Developers" -msgstr "Desarrolladores" +#: ../../Zotlabs/Widget/Activity_filter.php:131 +#, php-format +msgid "Show posts that I have filed to %s" +msgstr "Mostrar las entradas que he enviado a %s" -#: ../../Zotlabs/Module/Help.php:84 -msgid "Tutorials" -msgstr "Tutoriales" +#: ../../Zotlabs/Widget/Activity_filter.php:141 +msgid "Show filed post categories" +msgstr "Mostrar los temas de las entradas archivadas" -#: ../../Zotlabs/Module/Help.php:95 -msgid "$Projectname Documentation" -msgstr "Documentación de $Projectname" +#: ../../Zotlabs/Widget/Activity_filter.php:155 +msgid "Panel search" +msgstr "Panel de búsqueda" -#: ../../Zotlabs/Module/Help.php:96 -msgid "Contents" -msgstr "Contenidos" +#: ../../Zotlabs/Widget/Activity_filter.php:165 +msgid "Filter by name" +msgstr "Filtrar por nombre" -#: ../../Zotlabs/Module/Display.php:396 -msgid "Article" -msgstr "Artículo" +#: ../../Zotlabs/Widget/Activity_filter.php:180 +msgid "Remove active filter" +msgstr "Eliminar el filtro activo" -#: ../../Zotlabs/Module/Display.php:448 -msgid "Item has been removed." -msgstr "Se ha eliminado el elemento." +#: ../../Zotlabs/Widget/Activity_filter.php:196 +msgid "Stream Filters" +msgstr "Filtros del stream" -#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 -msgid "Tag removed" -msgstr "Etiqueta eliminada." +#: ../../Zotlabs/Widget/Appstore.php:11 +msgid "App Collections" +msgstr "Colección de aplicaciones" -#: ../../Zotlabs/Module/Tagrm.php:123 -msgid "Remove Item Tag" -msgstr "Eliminar etiqueta del elemento." +#: ../../Zotlabs/Widget/Appstore.php:13 +msgid "Installed apps" +msgstr "Aplicaciones instaladas" -#: ../../Zotlabs/Module/Tagrm.php:125 -msgid "Select a tag to remove: " -msgstr "Seleccionar una etiqueta para eliminar:" +#: ../../Zotlabs/Widget/Appstore.php:14 ../../Zotlabs/Module/Apps.php:50 +msgid "Available Apps" +msgstr "Aplicaciones disponibles" -#: ../../Zotlabs/Module/Network.php:109 -msgid "No such group" -msgstr "No se encuentra el grupo" +#: ../../Zotlabs/Widget/Eventstools.php:13 +msgid "Events Tools" +msgstr "Gestión de eventos" -#: ../../Zotlabs/Module/Network.php:158 -msgid "No such channel" -msgstr "No se encuentra el canal" +#: ../../Zotlabs/Widget/Eventstools.php:14 +msgid "Export Calendar" +msgstr "Exportar el calendario" -#: ../../Zotlabs/Module/Network.php:242 -msgid "Privacy group is empty" -msgstr "El grupo de canales está vacío" +#: ../../Zotlabs/Widget/Eventstools.php:15 +msgid "Import Calendar" +msgstr "Importar un calendario" -#: ../../Zotlabs/Module/Network.php:252 -msgid "Privacy group: " -msgstr "Grupo de canales: " +#: ../../Zotlabs/Widget/Rating.php:51 +msgid "Rating Tools" +msgstr "Valoraciones" -#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29 -msgid "Invalid channel." -msgstr "El canal no es válido." +#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 +msgid "Rate Me" +msgstr "Valorar este canal" -#: ../../Zotlabs/Module/Acl.php:360 -msgid "network" -msgstr "red" +#: ../../Zotlabs/Widget/Rating.php:60 +msgid "View Ratings" +msgstr "Mostrar las valoraciones" -#: ../../Zotlabs/Module/Home.php:72 ../../Zotlabs/Module/Home.php:80 -#: ../../Zotlabs/Lib/Enotify.php:66 ../../addon/opensearch/opensearch.php:42 -msgid "$Projectname" -msgstr "$Projectname" +#: ../../Zotlabs/Widget/Cover_photo.php:65 +msgid "Click to show more" +msgstr "Hacer clic para ver más" -#: ../../Zotlabs/Module/Home.php:90 +#: ../../Zotlabs/Widget/Follow.php:22 #, php-format -msgid "Welcome to %s" -msgstr "Bienvenido a %s" - -#: ../../Zotlabs/Module/Filestorage.php:103 -msgid "File not found." -msgstr "Fichero no encontrado." +msgid "You have %1$.0f of %2$.0f allowed connections." +msgstr "Tiene %1$.0f de %2$.0f conexiones permitidas." -#: ../../Zotlabs/Module/Filestorage.php:152 -msgid "Permission Denied." -msgstr "Permiso denegado" +#: ../../Zotlabs/Widget/Follow.php:29 +msgid "Add New Connection" +msgstr "Añadir nueva conexión" -#: ../../Zotlabs/Module/Filestorage.php:185 -msgid "Edit file permissions" -msgstr "Modificar los permisos del fichero" +#: ../../Zotlabs/Widget/Follow.php:30 +msgid "Enter channel address" +msgstr "Dirección del canal" -#: ../../Zotlabs/Module/Filestorage.php:197 -#: ../../addon/flashcards/Mod_Flashcards.php:217 -msgid "Set/edit permissions" -msgstr "Establecer/editar los permisos" +#: ../../Zotlabs/Widget/Follow.php:31 +msgid "Examples: bob@example.com, https://example.com/barbara" +msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen" -#: ../../Zotlabs/Module/Filestorage.php:198 -msgid "Include all files and sub folders" -msgstr "Incluir todos los ficheros y subcarpetas" +#: ../../Zotlabs/Widget/Newmember.php:31 +msgid "Profile Creation" +msgstr "Creación de perfiles" -#: ../../Zotlabs/Module/Filestorage.php:199 -msgid "Return to file list" -msgstr "Volver a la lista de ficheros" +#: ../../Zotlabs/Widget/Newmember.php:33 +msgid "Upload profile photo" +msgstr "Cargar la foto del perfil" -#: ../../Zotlabs/Module/Filestorage.php:201 -msgid "Copy/paste this code to attach file to a post" -msgstr "Copiar/pegar este código para adjuntar el fichero al envío" +#: ../../Zotlabs/Widget/Newmember.php:34 +msgid "Upload cover photo" +msgstr "Cargar la foto de portada del perfil" -#: ../../Zotlabs/Module/Filestorage.php:202 -msgid "Copy/paste this URL to link file from a web page" -msgstr "Copiar/pegar esta dirección para enlazar el fichero desde una página web" +#: ../../Zotlabs/Widget/Newmember.php:38 +msgid "Find and Connect with others" +msgstr "Encontrar y conectarse con otros" -#: ../../Zotlabs/Module/Filestorage.php:204 -msgid "Share this file" -msgstr "Compartir este fichero" +#: ../../Zotlabs/Widget/Newmember.php:40 +msgid "View the directory" +msgstr "Ver el directorio" -#: ../../Zotlabs/Module/Filestorage.php:205 -msgid "Show URL to this file" -msgstr "Mostrar la dirección de este fichero" +#: ../../Zotlabs/Widget/Newmember.php:41 ../../Zotlabs/Module/Go.php:38 +msgid "View friend suggestions" +msgstr "Ver sugerencias de amistad" -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Storage/Browser.php:411 -msgid "Show in your contacts shared folder" -msgstr "Mostrar en la carpeta compartida con sus contactos" +#: ../../Zotlabs/Widget/Newmember.php:42 +msgid "Manage your connections" +msgstr "Gestionar sus conexiones" -#: ../../Zotlabs/Module/Common.php:14 -msgid "No channel." -msgstr "Ningún canal." +#: ../../Zotlabs/Widget/Newmember.php:45 +msgid "Communicate" +msgstr "Comunicarse" -#: ../../Zotlabs/Module/Common.php:45 -msgid "No connections in common." -msgstr "Ninguna conexión en común." +#: ../../Zotlabs/Widget/Newmember.php:47 +msgid "View your channel homepage" +msgstr "Ver la página principal de su canal" -#: ../../Zotlabs/Module/Common.php:65 -msgid "View Common Connections" -msgstr "Ver las conexiones comunes" +#: ../../Zotlabs/Widget/Newmember.php:48 +msgid "View your network stream" +msgstr "Ver el \"stream\" de su red" -#: ../../Zotlabs/Module/Email_resend.php:30 -msgid "Email verification resent" -msgstr "Reenvío del email de verificación" +#: ../../Zotlabs/Widget/Newmember.php:54 +msgid "Documentation" +msgstr "Documentación" -#: ../../Zotlabs/Module/Email_resend.php:33 -msgid "Unable to resend email verification message." -msgstr "No se puede reenviar el mensaje de verificación por correo electrónico." +#: ../../Zotlabs/Widget/Newmember.php:57 +msgid "Missing Features?" +msgstr "¿Faltan Características?" -#: ../../Zotlabs/Module/Viewconnections.php:65 -msgid "No connections." -msgstr "Sin conexiones." +#: ../../Zotlabs/Widget/Newmember.php:59 +msgid "Pin apps to navigation bar" +msgstr "Fijar apps a la barra de navegación" -#: ../../Zotlabs/Module/Viewconnections.php:83 -#, php-format -msgid "Visit %s's profile [%s]" -msgstr "Visitar el perfil de %s [%s]" +#: ../../Zotlabs/Widget/Newmember.php:60 +msgid "Install more apps" +msgstr "Instalar más apps" -#: ../../Zotlabs/Module/Viewconnections.php:113 -msgid "View Connections" -msgstr "Ver conexiones" +#: ../../Zotlabs/Widget/Newmember.php:71 +msgid "View public stream" +msgstr "Ver el \"stream\" público" -#: ../../Zotlabs/Module/Admin.php:97 -msgid "Blocked accounts" -msgstr "Cuentas bloqueadas" +#: ../../Zotlabs/Widget/Newmember.php:75 +#: ../../Zotlabs/Module/Settings/Display.php:205 +msgid "New Member Links" +msgstr "Enlaces para nuevos miembros" -#: ../../Zotlabs/Module/Admin.php:98 -msgid "Expired accounts" -msgstr "Cuentas caducadas" +#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:723 +msgid "Me" +msgstr "Yo" -#: ../../Zotlabs/Module/Admin.php:99 -msgid "Expiring accounts" -msgstr "Cuentas que caducan" +#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:724 +msgid "Family" +msgstr "Familia" -#: ../../Zotlabs/Module/Admin.php:120 -msgid "Message queues" -msgstr "Mensajes en cola" +#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:726 +msgid "Acquaintances" +msgstr "Conocidos/as" -#: ../../Zotlabs/Module/Admin.php:134 -msgid "Your software should be updated" -msgstr "Debe actualizar su software" +#: ../../Zotlabs/Widget/Affinity.php:34 +#: ../../Zotlabs/Module/Connections.php:97 +#: ../../Zotlabs/Module/Connections.php:111 +#: ../../Zotlabs/Module/Connedit.php:727 +msgid "All" +msgstr "Todos/as" -#: ../../Zotlabs/Module/Admin.php:139 -msgid "Summary" -msgstr "Sumario" +#: ../../Zotlabs/Widget/Affinity.php:54 +msgid "Refresh" +msgstr "Recargar" -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Registered accounts" -msgstr "Cuentas registradas" +#: ../../Zotlabs/Widget/Notifications.php:16 +msgid "New Network Activity" +msgstr "Nueva actividad en la red" -#: ../../Zotlabs/Module/Admin.php:143 -msgid "Pending registrations" -msgstr "Registros pendientes" +#: ../../Zotlabs/Widget/Notifications.php:17 +msgid "New Network Activity Notifications" +msgstr "Avisos de nueva actividad en la red" -#: ../../Zotlabs/Module/Admin.php:144 -msgid "Registered channels" -msgstr "Canales registrados" +#: ../../Zotlabs/Widget/Notifications.php:20 +msgid "View your network activity" +msgstr "Ver la actividad de su red" -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Active addons" -msgstr "Addons acivos" +#: ../../Zotlabs/Widget/Notifications.php:23 +msgid "Mark all notifications read" +msgstr "Marcar todas las notificaciones como leídas" -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Version" -msgstr "Versión" +#: ../../Zotlabs/Widget/Notifications.php:26 +#: ../../Zotlabs/Widget/Notifications.php:45 +#: ../../Zotlabs/Widget/Notifications.php:152 +msgid "Show new posts only" +msgstr "Mostrar solo las entradas nuevas" -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Repository version (master)" -msgstr "Versión del repositorio (master)" +#: ../../Zotlabs/Widget/Notifications.php:27 +#: ../../Zotlabs/Widget/Notifications.php:46 +#: ../../Zotlabs/Widget/Notifications.php:122 +#: ../../Zotlabs/Widget/Notifications.php:153 +msgid "Filter by name or address" +msgstr "Filtrar por nombre o dirección" -#: ../../Zotlabs/Module/Admin.php:148 -msgid "Repository version (dev)" -msgstr "Versión del repositorio (dev)" +#: ../../Zotlabs/Widget/Notifications.php:35 +msgid "New Home Activity" +msgstr "Nueva actividad en su página principal" -#: ../../Zotlabs/Module/Service_limits.php:23 -msgid "No service class restrictions found." -msgstr "No se han encontrado restricciones sobre esta clase de servicio." +#: ../../Zotlabs/Widget/Notifications.php:36 +msgid "New Home Activity Notifications" +msgstr "Avisos de nueva actividad en su página principal" -#: ../../Zotlabs/Module/Rate.php:156 -msgid "Website:" -msgstr "Sitio web:" +#: ../../Zotlabs/Widget/Notifications.php:39 +msgid "View your home activity" +msgstr "Ver la actividad de su página principal" -#: ../../Zotlabs/Module/Rate.php:159 -#, php-format -msgid "Remote Channel [%s] (not yet known on this site)" -msgstr "Canal remoto [%s] (aún no es conocido en este sitio)" +#: ../../Zotlabs/Widget/Notifications.php:42 +#: ../../Zotlabs/Widget/Notifications.php:149 +msgid "Mark all notifications seen" +msgstr "Marcar todas las notificaciones como vistas" -#: ../../Zotlabs/Module/Rate.php:160 -msgid "Rating (this information is public)" -msgstr "Valoración (esta información es pública)" +#: ../../Zotlabs/Widget/Notifications.php:54 +msgid "New Mails" +msgstr "Nuevos mensajes de correo" -#: ../../Zotlabs/Module/Rate.php:161 -msgid "Optionally explain your rating (this information is public)" -msgstr "Opcionalmente puede explicar su valoración (esta información es pública)" +#: ../../Zotlabs/Widget/Notifications.php:55 +msgid "New Mails Notifications" +msgstr "Avisos de nuevos mensajes de correo" -#: ../../Zotlabs/Module/Card_edit.php:128 -msgid "Edit Card" -msgstr "Editar la ficha" +#: ../../Zotlabs/Widget/Notifications.php:58 +msgid "View your private mails" +msgstr "Ver sus correos privados" -#: ../../Zotlabs/Module/Lostpass.php:19 -msgid "No valid account found." -msgstr "No se ha encontrado una cuenta válida." +#: ../../Zotlabs/Widget/Notifications.php:61 +msgid "Mark all messages seen" +msgstr "Marcar todos los mensajes como vistos" -#: ../../Zotlabs/Module/Lostpass.php:33 -msgid "Password reset request issued. Check your email." -msgstr "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico." +#: ../../Zotlabs/Widget/Notifications.php:69 +msgid "New Events" +msgstr "Eventos nuevos" -#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 -#, php-format -msgid "Site Member (%s)" -msgstr "Usuario del sitio (%s)" +#: ../../Zotlabs/Widget/Notifications.php:70 +msgid "New Events Notifications" +msgstr "Avisos de nuevos eventos" -#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 -#, php-format -msgid "Password reset requested at %s" -msgstr "Se ha solicitado restablecer la contraseña en %s" +#: ../../Zotlabs/Widget/Notifications.php:73 +msgid "View events" +msgstr "Ver los eventos" -#: ../../Zotlabs/Module/Lostpass.php:68 -msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." -msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado." +#: ../../Zotlabs/Widget/Notifications.php:76 +msgid "Mark all events seen" +msgstr "Marcar todos los eventos como leidos" -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1685 -msgid "Password Reset" -msgstr "Restablecer la contraseña" +#: ../../Zotlabs/Widget/Notifications.php:84 +#: ../../Zotlabs/Module/Connections.php:164 +msgid "New Connections" +msgstr "Nuevas conexiones" -#: ../../Zotlabs/Module/Lostpass.php:92 -msgid "Your password has been reset as requested." -msgstr "Su contraseña ha sido restablecida según lo solicitó." +#: ../../Zotlabs/Widget/Notifications.php:85 +msgid "New Connections Notifications" +msgstr "Avisos de nuevas conexiones" -#: ../../Zotlabs/Module/Lostpass.php:93 -msgid "Your new password is" -msgstr "Su nueva contraseña es" +#: ../../Zotlabs/Widget/Notifications.php:88 +msgid "View all connections" +msgstr "Ver todas las conexiones" -#: ../../Zotlabs/Module/Lostpass.php:94 -msgid "Save or copy your new password - and then" -msgstr "Guarde o copie su nueva contraseña - y después" +#: ../../Zotlabs/Widget/Notifications.php:96 +msgid "New Files" +msgstr "Ficheros nuevos" -#: ../../Zotlabs/Module/Lostpass.php:95 -msgid "click here to login" -msgstr "pulse aquí para conectarse" +#: ../../Zotlabs/Widget/Notifications.php:97 +msgid "New Files Notifications" +msgstr "Avisos de nuevos ficheros" -#: ../../Zotlabs/Module/Lostpass.php:96 -msgid "" -"Your password may be changed from the <em>Settings</em> page after " -"successful login." -msgstr "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión." +#: ../../Zotlabs/Widget/Notifications.php:104 +#: ../../Zotlabs/Widget/Notifications.php:105 +msgid "Notices" +msgstr "Avisos" -#: ../../Zotlabs/Module/Lostpass.php:117 -#, php-format -msgid "Your password has changed at %s" -msgstr "Su contraseña en %s ha sido cambiada" +#: ../../Zotlabs/Widget/Notifications.php:108 +msgid "View all notices" +msgstr "Ver todos los avisos" -#: ../../Zotlabs/Module/Lostpass.php:130 -msgid "Forgot your Password?" -msgstr "¿Ha olvidado su contraseña?" +#: ../../Zotlabs/Widget/Notifications.php:111 +msgid "Mark all notices seen" +msgstr "Marcar como leídos todos los avisos" -#: ../../Zotlabs/Module/Lostpass.php:131 -msgid "" -"Enter your email address and submit to have your password reset. Then check " -"your email for further instructions." -msgstr "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones." +#: ../../Zotlabs/Widget/Notifications.php:132 +msgid "New Registrations" +msgstr "Registros nuevos" -#: ../../Zotlabs/Module/Lostpass.php:132 -msgid "Email Address" -msgstr "Dirección de correo electrónico" +#: ../../Zotlabs/Widget/Notifications.php:133 +msgid "New Registrations Notifications" +msgstr "Notificaciones de nuevos registros" -#: ../../Zotlabs/Module/Oauth.php:45 -msgid "Name is required" -msgstr "El nombre es obligatorio" +#: ../../Zotlabs/Widget/Notifications.php:142 +#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 +msgid "Public Stream" +msgstr "\"Stream\" público" -#: ../../Zotlabs/Module/Oauth.php:49 -msgid "Key and Secret are required" -msgstr "\"Key\" y \"Secret\" son obligatorios" +#: ../../Zotlabs/Widget/Notifications.php:143 +msgid "Public Stream Notifications" +msgstr "Avisos del \"stream\" público" -#: ../../Zotlabs/Module/Oauth.php:100 -msgid "OAuth Apps Manager App" -msgstr "App Gestión de apps OAuth" +#: ../../Zotlabs/Widget/Notifications.php:146 +msgid "View the public stream" +msgstr "Ver el \"stream\" público" -#: ../../Zotlabs/Module/Oauth.php:101 -msgid "OAuth authentication tokens for mobile and remote apps" -msgstr "Tokens de autenticación de OAuth para aplicaciones móviles y remotas" +#: ../../Zotlabs/Widget/Notifications.php:161 +msgid "Sorry, you have got no notifications at the moment" +msgstr "Lo sentimos, por el momento no ha recibido ninguna notificación" -#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140 -#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:614 -msgid "Consumer Key" -msgstr "Consumer Key" +#: ../../Zotlabs/Module/Tokens.php:39 +#, php-format +msgid "This channel is limited to %d tokens" +msgstr "Este canal tiene un límite de %d tokens" -#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 -msgid "Icon url" -msgstr "Dirección del icono" +#: ../../Zotlabs/Module/Tokens.php:45 +msgid "Name and Password are required." +msgstr "Se requiere el nombre y la contraseña." -#: ../../Zotlabs/Module/Oauth.php:128 -msgid "Application not found." -msgstr "Aplicación no encontrada." +#: ../../Zotlabs/Module/Tokens.php:85 +msgid "Token saved." +msgstr "Token salvado." -#: ../../Zotlabs/Module/Oauth.php:171 -msgid "Connected OAuth Apps" -msgstr "Apps OAuth conectadas" +#: ../../Zotlabs/Module/Tokens.php:99 +msgid "Guest Access App" +msgstr "App Acceso para invitados" -#: ../../Zotlabs/Module/Notifications.php:60 -#: ../../Zotlabs/Lib/ThreadItem.php:450 -msgid "Mark all seen" -msgstr "Marcar todo como visto" +#: ../../Zotlabs/Module/Tokens.php:100 +msgid "Create access tokens so that non-members can access private content" +msgstr "Crear tokens de acceso para que los no miembros puedan acceder a contenido privado" -#: ../../Zotlabs/Lib/Activity.php:1559 -#, php-format -msgid "Likes %1$s's %2$s" -msgstr "Gusta de %2$sde %1$s" +#: ../../Zotlabs/Module/Tokens.php:133 +msgid "" +"Use this form to create temporary access identifiers to share things with " +"non-members. These identities may be used in Access Control Lists and " +"visitors may login using these credentials to access private content." +msgstr "Utilice este formulario para crear identificadores de acceso temporal para compartir cosas con los no miembros de Hubzilla. Estas identidades se pueden usar en las Listas de control de acceso (ACL) y así los visitantes pueden iniciar sesión, utilizando estas credenciales, para acceder a su contenido privado." -#: ../../Zotlabs/Lib/Activity.php:1562 -#, php-format -msgid "Doesn't like %1$s's %2$s" -msgstr "No le gusta %2$sde %1$s" +#: ../../Zotlabs/Module/Tokens.php:135 +msgid "" +"You may also provide <em>dropbox</em> style access links to friends and " +"associates by adding the Login Password to any specific site URL as shown. " +"Examples:" +msgstr "También puede proporcionar, con el estilo <em>dropbox</em>, enlaces de acceso a sus amigos y asociados añadiendo la contraseña de inicio de sesión a cualquier dirección URL, como se muestra. Ejemplos: " -#: ../../Zotlabs/Lib/Activity.php:1565 -#, php-format -msgid "Will attend %1$s's %2$s" -msgstr "Asistirá %2$sde %1$s" +#: ../../Zotlabs/Module/Tokens.php:170 +msgid "Guest Access Tokens" +msgstr "Tokens de acceso para invitados" -#: ../../Zotlabs/Lib/Activity.php:1568 -#, php-format -msgid "Will not attend %1$s's %2$s" -msgstr "No asistirá %2$sde %1$s" +#: ../../Zotlabs/Module/Tokens.php:177 +msgid "Login Name" +msgstr "Nombre de inicio de sesión" -#: ../../Zotlabs/Lib/Activity.php:1571 -#, php-format -msgid "May attend %1$s's %2$s" -msgstr "Puede asistir %2$sde %1$s" +#: ../../Zotlabs/Module/Tokens.php:178 +msgid "Login Password" +msgstr "Contraseña de inicio de sesión" -#: ../../Zotlabs/Lib/Activity.php:2170 ../../Zotlabs/Lib/Activity.php:2364 -#: ../../widget/Netselect/Netselect.php:42 ../../addon/pubcrawl/as.php:1341 -#: ../../addon/pubcrawl/as.php:1542 ../../addon/pubcrawl/as.php:1736 -#: ../../include/network.php:1731 -msgid "ActivityPub" -msgstr "ActivityPub" +#: ../../Zotlabs/Module/Tokens.php:179 +msgid "Expires (yyyy-mm-dd)" +msgstr "Expira (aaaa-mm-dd)" -#: ../../Zotlabs/Lib/Techlevels.php:10 -msgid "0. Beginner/Basic" -msgstr "0. Principiante/Básico" +#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 +msgid "Their Settings" +msgstr "Sus ajustes" -#: ../../Zotlabs/Lib/Techlevels.php:11 -msgid "1. Novice - not skilled but willing to learn" -msgstr "1. Novato: no cualificado, pero dispuesto a aprender" +#: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Permcats.php:121 +#: ../../Zotlabs/Module/Defperms.php:266 ../../Zotlabs/Module/Connedit.php:908 +msgid "My Settings" +msgstr "Mis ajustes" -#: ../../Zotlabs/Lib/Techlevels.php:12 -msgid "2. Intermediate - somewhat comfortable" -msgstr "2. Intermedio - algo cómodo" +#: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Permcats.php:123 +#: ../../Zotlabs/Module/Defperms.php:264 ../../Zotlabs/Module/Connedit.php:903 +msgid "inherited" +msgstr "heredado" -#: ../../Zotlabs/Lib/Techlevels.php:13 -msgid "3. Advanced - very comfortable" -msgstr "3. Avanzado - muy cómodo" +#: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Permcats.php:126 +#: ../../Zotlabs/Module/Defperms.php:269 ../../Zotlabs/Module/Connedit.php:910 +msgid "Individual Permissions" +msgstr "Permisos individuales" -#: ../../Zotlabs/Lib/Techlevels.php:14 -msgid "4. Expert - I can write computer code" -msgstr "4. Experto - Puedo escribir código informático" +#: ../../Zotlabs/Module/Tokens.php:187 ../../Zotlabs/Module/Permcats.php:127 +#: ../../Zotlabs/Module/Connedit.php:911 +msgid "" +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can <strong>not</strong> change those" +" settings here." +msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí." -#: ../../Zotlabs/Lib/Techlevels.php:15 -msgid "5. Wizard - I probably know more than you do" -msgstr "5. Colaborador - probablemente sé más que tú" +#: ../../Zotlabs/Module/Article_edit.php:17 +#: ../../Zotlabs/Module/Article_edit.php:33 +#: ../../Zotlabs/Module/Card_edit.php:17 ../../Zotlabs/Module/Card_edit.php:33 +#: ../../Zotlabs/Module/Editwebpage.php:80 +#: ../../Zotlabs/Module/Editpost.php:24 ../../Zotlabs/Module/Editblock.php:79 +#: ../../Zotlabs/Module/Editblock.php:95 +#: ../../Zotlabs/Module/Editlayout.php:79 +msgid "Item not found" +msgstr "Elemento no encontrado" -#: ../../Zotlabs/Lib/Libzot.php:652 ../../include/zot.php:801 -msgid "Unable to verify channel signature" -msgstr "No ha sido posible de verificar la firma del canal" +#: ../../Zotlabs/Module/Article_edit.php:44 +#: ../../Zotlabs/Module/Wall_upload.php:31 +#: ../../Zotlabs/Module/Card_edit.php:44 ../../Zotlabs/Module/Chanview.php:96 +#: ../../Zotlabs/Module/Cal.php:31 ../../Zotlabs/Module/Page.php:75 +#: ../../Zotlabs/Module/Block.php:41 +msgid "Channel not found." +msgstr "Canal no encontrado." -#: ../../Zotlabs/Lib/Apps.php:322 -msgid "Apps" -msgstr "Aplicaciones (apps)" +#: ../../Zotlabs/Module/Article_edit.php:127 +msgid "Edit Article" +msgstr "Editar el artículo" -#: ../../Zotlabs/Lib/Apps.php:323 -msgid "Affinity Tool" -msgstr "Herramienta de afinidad" +#: ../../Zotlabs/Module/Network.php:109 +msgid "No such group" +msgstr "No se encuentra el grupo" -#: ../../Zotlabs/Lib/Apps.php:326 -msgid "Site Admin" -msgstr "Administrador del sitio" +#: ../../Zotlabs/Module/Network.php:158 +msgid "No such channel" +msgstr "No se encuentra el canal" -#: ../../Zotlabs/Lib/Apps.php:327 ../../addon/buglink/buglink.php:16 -msgid "Report Bug" -msgstr "Informe de errores" +#: ../../Zotlabs/Module/Network.php:173 ../../Zotlabs/Module/Channel.php:183 +msgid "Search Results For:" +msgstr "Buscar resultados para:" -#: ../../Zotlabs/Lib/Apps.php:328 ../../include/nav.php:492 -msgid "Bookmarks" -msgstr "Marcadores" +#: ../../Zotlabs/Module/Network.php:203 ../../Zotlabs/Module/Channel.php:218 +#: ../../Zotlabs/Module/Hq.php:134 ../../Zotlabs/Module/Pubstream.php:94 +#: ../../Zotlabs/Module/Display.php:80 +msgid "Reset form" +msgstr "Reiniciar el formulario" -#: ../../Zotlabs/Lib/Apps.php:329 ../../Zotlabs/Widget/Chatroom_list.php:16 -#: ../../include/nav.php:479 ../../include/nav.php:482 -msgid "Chatrooms" -msgstr "Salas de chat" +#: ../../Zotlabs/Module/Network.php:242 +msgid "Privacy group is empty" +msgstr "El grupo de canales está vacío" -#: ../../Zotlabs/Lib/Apps.php:330 -msgid "Content Filter" -msgstr "Filtro de contenido" +#: ../../Zotlabs/Module/Network.php:252 +msgid "Privacy group: " +msgstr "Grupo de canales: " -#: ../../Zotlabs/Lib/Apps.php:331 -#: ../../addon/content_import/Mod_content_import.php:135 -msgid "Content Import" -msgstr "Importación de contenidos" +#: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:68 +msgid "Nothing to import." +msgstr "No hay nada para importar." -#: ../../Zotlabs/Lib/Apps.php:333 -msgid "Remote Diagnostics" -msgstr "Diagnóstico remoto" +#: ../../Zotlabs/Module/Import_items.php:72 ../../Zotlabs/Module/Import.php:83 +#: ../../Zotlabs/Module/Import.php:99 +msgid "Unable to download data from old server" +msgstr "No se han podido descargar datos de su antiguo servidor" -#: ../../Zotlabs/Lib/Apps.php:334 -msgid "Suggest Channels" -msgstr "Sugerir canales" +#: ../../Zotlabs/Module/Import_items.php:77 +#: ../../Zotlabs/Module/Import.php:106 +msgid "Imported file is empty." +msgstr "El fichero importado está vacío." -#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1676 -#: ../../include/nav.php:122 ../../include/nav.php:126 -msgid "Login" -msgstr "Iniciar sesión" +#: ../../Zotlabs/Module/Import_items.php:93 +#, php-format +msgid "Warning: Database versions differ by %1$d updates." +msgstr "Atención: Las versiones de la base de datos difieren en %1$d actualizaciones." -#: ../../Zotlabs/Lib/Apps.php:337 -msgid "Stream" -msgstr "Stream" +#: ../../Zotlabs/Module/Import_items.php:108 +msgid "Import completed" +msgstr "Importación completada" -#: ../../Zotlabs/Lib/Apps.php:341 ../../include/nav.php:541 -msgid "Wiki" -msgstr "Wiki" +#: ../../Zotlabs/Module/Import_items.php:125 +msgid "Import Items" +msgstr "Importar elementos" -#: ../../Zotlabs/Lib/Apps.php:342 ../../include/features.php:104 -msgid "Channel Home" -msgstr "Mi canal" +#: ../../Zotlabs/Module/Import_items.php:126 +msgid "" +"Use this form to import existing posts and content from an export file." +msgstr "Utilice este formulario para importar entradas y contenido desde un archivo de exportación." -#: ../../Zotlabs/Lib/Apps.php:345 ../../Zotlabs/Storage/Browser.php:140 -#: ../../include/features.php:82 ../../include/nav.php:465 -#: ../../include/nav.php:468 -msgid "Calendar" -msgstr "Calendario" +#: ../../Zotlabs/Module/Import_items.php:127 +#: ../../Zotlabs/Module/Import.php:629 +msgid "File to Upload" +msgstr "Fichero para subir" -#: ../../Zotlabs/Lib/Apps.php:346 ../../include/features.php:192 -msgid "Directory" -msgstr "Directorio" +#: ../../Zotlabs/Module/Import.php:157 +#, php-format +msgid "Your service plan only allows %d channels." +msgstr "Su paquete de servicios solo permite %d canales." -#: ../../Zotlabs/Lib/Apps.php:348 -msgid "Mail" -msgstr "Correo" +#: ../../Zotlabs/Module/Import.php:184 +msgid "No channel. Import failed." +msgstr "No hay canal. La importación ha fallado" -#: ../../Zotlabs/Lib/Apps.php:351 -msgid "Chat" -msgstr "Chat" +#: ../../Zotlabs/Module/Import.php:622 +msgid "You must be logged in to use this feature." +msgstr "Debe estar registrado para poder usar esta funcionalidad." -#: ../../Zotlabs/Lib/Apps.php:353 -msgid "Probe" -msgstr "Probar" +#: ../../Zotlabs/Module/Import.php:627 +msgid "Import Channel" +msgstr "Importar canal" + +#: ../../Zotlabs/Module/Import.php:628 +msgid "" +"Use this form to import an existing channel from a different server/hub. You" +" may retrieve the channel identity from the old server/hub via the network " +"or provide an export file." +msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación." -#: ../../Zotlabs/Lib/Apps.php:354 -msgid "Suggest" -msgstr "Sugerir" +#: ../../Zotlabs/Module/Import.php:630 +msgid "Or provide the old server/hub details" +msgstr "O proporcione los detalles de su antiguo servidor/hub" -#: ../../Zotlabs/Lib/Apps.php:355 -msgid "Random Channel" -msgstr "Canal aleatorio" +#: ../../Zotlabs/Module/Import.php:632 +msgid "Your old identity address (xyz@example.com)" +msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" -#: ../../Zotlabs/Lib/Apps.php:356 -msgid "Invite" -msgstr "Invitar" +#: ../../Zotlabs/Module/Import.php:633 +msgid "Your old login email address" +msgstr "Su antigua dirección de correo electrónico" -#: ../../Zotlabs/Lib/Apps.php:357 ../../Zotlabs/Widget/Admin.php:26 -msgid "Features" -msgstr "Funcionalidades" +#: ../../Zotlabs/Module/Import.php:634 +msgid "Your old login password" +msgstr "Su antigua contraseña" -#: ../../Zotlabs/Lib/Apps.php:358 ../../addon/openid/MysqlProvider.php:69 -msgid "Language" -msgstr "Idioma" +#: ../../Zotlabs/Module/Import.php:635 +msgid "Import a few months of posts if possible (limited by available memory" +msgstr "Importar unos meses de mensajes si es posible (limitado por la memoria disponible" -#: ../../Zotlabs/Lib/Apps.php:359 -msgid "Post" -msgstr "Publicación" +#: ../../Zotlabs/Module/Import.php:637 +msgid "" +"For either option, please choose whether to make this hub your new primary " +"address, or whether your old location should continue this role. You will be" +" able to post from either location, but only one can be marked as the " +"primary location for files, photos, and media." +msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos." -#: ../../Zotlabs/Lib/Apps.php:360 ../../addon/openid/MysqlProvider.php:58 -#: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 -msgid "Profile Photo" -msgstr "Foto del perfil" +#: ../../Zotlabs/Module/Import.php:639 +msgid "Make this hub my primary location" +msgstr "Convertir este servidor en mi ubicación primaria" -#: ../../Zotlabs/Lib/Apps.php:362 ../../include/features.php:375 -msgid "Profiles" -msgstr "Perfiles" +#: ../../Zotlabs/Module/Import.php:640 +msgid "Move this channel (disable all previous locations)" +msgstr "Mover este canal (desactivar todas las ubicaciones anteriores)" -#: ../../Zotlabs/Lib/Apps.php:364 -msgid "Notifications" -msgstr "Notificaciones" +#: ../../Zotlabs/Module/Import.php:641 +msgid "Use this channel nickname instead of the one provided" +msgstr "Usa este alias de canal en lugar del que se proporciona" -#: ../../Zotlabs/Lib/Apps.php:365 -msgid "Order Apps" -msgstr "Ordenar las apps" +#: ../../Zotlabs/Module/Import.php:641 +msgid "" +"Leave blank to keep your existing channel nickname. You will be randomly " +"assigned a similar nickname if either name is already allocated on this " +"site." +msgstr "Dejar en blanco para mantener su alias de canal . Se le asignará aleatoriamente uno similar si cualquiera de los dos nombres ya está asignado en este sitio." -#: ../../Zotlabs/Lib/Apps.php:366 -msgid "CardDAV" -msgstr "CardDAV" +#: ../../Zotlabs/Module/Import.php:643 +msgid "" +"This process may take several minutes to complete. Please submit the form " +"only once and leave this page open until finished." +msgstr "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine." -#: ../../Zotlabs/Lib/Apps.php:368 -msgid "Guest Access" -msgstr "Acceso para invitados" +#: ../../Zotlabs/Module/Register.php:52 +msgid "Maximum daily site registrations exceeded. Please try again tomorrow." +msgstr "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana." -#: ../../Zotlabs/Lib/Apps.php:369 ../../Zotlabs/Widget/Notes.php:21 -msgid "Notes" -msgstr "Notas" +#: ../../Zotlabs/Module/Register.php:58 +msgid "" +"Please indicate acceptance of the Terms of Service. Registration failed." +msgstr "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado." -#: ../../Zotlabs/Lib/Apps.php:370 -msgid "OAuth Apps Manager" -msgstr "Administrador de apps OAuth" +#: ../../Zotlabs/Module/Register.php:92 +msgid "Passwords do not match." +msgstr "Las contraseñas no coinciden." -#: ../../Zotlabs/Lib/Apps.php:371 -msgid "OAuth2 Apps Manager" -msgstr "Administrador de apps OAuth2" +#: ../../Zotlabs/Module/Register.php:135 +msgid "Registration successful. Continue to create your first channel..." +msgstr "Registro exitoso. Continúe creando tu primer canal..." -#: ../../Zotlabs/Lib/Apps.php:372 -msgid "PDL Editor" -msgstr "Editor PDL" +#: ../../Zotlabs/Module/Register.php:138 +msgid "" +"Registration successful. Please check your email for validation " +"instructions." +msgstr "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo." -#: ../../Zotlabs/Lib/Apps.php:374 -msgid "Premium Channel" -msgstr "Canal premium" +#: ../../Zotlabs/Module/Register.php:145 +msgid "Your registration is pending approval by the site owner." +msgstr "Su registro está pendiente de aprobación por el propietario del sitio." -#: ../../Zotlabs/Lib/Apps.php:376 -msgid "My Chatrooms" -msgstr "Mis salas de chat" +#: ../../Zotlabs/Module/Register.php:148 +msgid "Your registration can not be processed." +msgstr "Su registro no puede ser procesado." -#: ../../Zotlabs/Lib/Apps.php:377 -msgid "Channel Export" -msgstr "Exportar canal" +#: ../../Zotlabs/Module/Register.php:195 +msgid "Registration on this hub is disabled." +msgstr "El registro está deshabilitado en este sitio." -#: ../../Zotlabs/Lib/Apps.php:554 -msgid "Purchase" -msgstr "Comprar" +#: ../../Zotlabs/Module/Register.php:204 +msgid "Registration on this hub is by approval only." +msgstr "El registro en este hub está sometido a aprobación previa." -#: ../../Zotlabs/Lib/Apps.php:559 -msgid "Undelete" -msgstr "Recuperar" +#: ../../Zotlabs/Module/Register.php:205 ../../Zotlabs/Module/Register.php:214 +msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" +msgstr "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>" -#: ../../Zotlabs/Lib/Apps.php:568 -msgid "Add to app-tray" -msgstr "Añadir a la bandeja de aplicaciones" +#: ../../Zotlabs/Module/Register.php:213 +msgid "Registration on this hub is by invitation only." +msgstr "La inscripción en este hub es sólo posible por invitación." -#: ../../Zotlabs/Lib/Apps.php:569 -msgid "Remove from app-tray" -msgstr "Quitar de la bandeja de aplicaciones" +#: ../../Zotlabs/Module/Register.php:224 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." +msgstr "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana." -#: ../../Zotlabs/Lib/Apps.php:570 -msgid "Pin to navbar" -msgstr "Fijar en la barra de navegación" +#: ../../Zotlabs/Module/Register.php:239 ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Terms of Service" +msgstr "Términos del servicio" -#: ../../Zotlabs/Lib/Apps.php:571 -msgid "Unpin from navbar" -msgstr "Quitar de la barra de navegación" +#: ../../Zotlabs/Module/Register.php:245 +#, php-format +msgid "I accept the %s for this website" +msgstr "Acepto los %s de este sitio" -#: ../../Zotlabs/Lib/Permcat.php:82 -msgctxt "permcat" -msgid "default" -msgstr "por defecto" +#: ../../Zotlabs/Module/Register.php:252 +#, php-format +msgid "I am over %s years of age and accept the %s for this website" +msgstr "Tengo más de %s años de edad y acepto los %s de este sitio web" -#: ../../Zotlabs/Lib/Permcat.php:133 -msgctxt "permcat" -msgid "follower" -msgstr "seguidor" +#: ../../Zotlabs/Module/Register.php:257 +msgid "Your email address" +msgstr "Su dirección de correo electrónico" -#: ../../Zotlabs/Lib/Permcat.php:137 -msgctxt "permcat" -msgid "contributor" -msgstr "contribuidor" +#: ../../Zotlabs/Module/Register.php:258 +msgid "Choose a password" +msgstr "Elija una contraseña" -#: ../../Zotlabs/Lib/Permcat.php:141 -msgctxt "permcat" -msgid "publisher" -msgstr "editor" +#: ../../Zotlabs/Module/Register.php:259 +msgid "Please re-enter your password" +msgstr "Por favor, vuelva a escribir su contraseña" -#: ../../Zotlabs/Lib/NativeWikiPage.php:42 -#: ../../Zotlabs/Lib/NativeWikiPage.php:94 -msgid "(No Title)" -msgstr "(Sin título)" +#: ../../Zotlabs/Module/Register.php:260 +msgid "Please enter your invitation code" +msgstr "Por favor, introduzca el código de su invitación" -#: ../../Zotlabs/Lib/NativeWikiPage.php:109 -msgid "Wiki page create failed." -msgstr "Se ha producido un error en la creación de la página wiki." +#: ../../Zotlabs/Module/Register.php:261 +msgid "Your Name" +msgstr "Su nombre" -#: ../../Zotlabs/Lib/NativeWikiPage.php:122 -msgid "Wiki not found." -msgstr "No se ha encontrado el wiki." +#: ../../Zotlabs/Module/Register.php:261 +msgid "Real names are preferred." +msgstr "Se prefieren los nombres reales" -#: ../../Zotlabs/Lib/NativeWikiPage.php:133 -msgid "Destination name already exists" -msgstr "El nombre de destino ya existe" +#: ../../Zotlabs/Module/Register.php:263 +#: ../../Zotlabs/Module/New_channel.php:177 +msgid "Choose a short nickname" +msgstr "Elija un alias corto" -#: ../../Zotlabs/Lib/NativeWikiPage.php:166 -#: ../../Zotlabs/Lib/NativeWikiPage.php:362 -msgid "Page not found" -msgstr "No se ha encontrado la página" +#: ../../Zotlabs/Module/Register.php:263 +#, php-format +msgid "" +"Your nickname will be used to create an easy to remember channel address " +"e.g. nickname%s" +msgstr "Su alias se usará para crear una dirección de canal fácil de recordar, p. ej.: alias%s" -#: ../../Zotlabs/Lib/NativeWikiPage.php:197 -msgid "Error reading page content" -msgstr "Se ha producido un error al leer el contenido de la página" +#: ../../Zotlabs/Module/Register.php:264 +#: ../../Zotlabs/Module/New_channel.php:178 +#: ../../Zotlabs/Module/Settings/Channel.php:535 +msgid "Channel role and privacy" +msgstr "Clase de canal y privacidad" -#: ../../Zotlabs/Lib/NativeWikiPage.php:353 -#: ../../Zotlabs/Lib/NativeWikiPage.php:402 -#: ../../Zotlabs/Lib/NativeWikiPage.php:469 -#: ../../Zotlabs/Lib/NativeWikiPage.php:510 -msgid "Error reading wiki" -msgstr "Se ha producido un error al leer el wiki" +#: ../../Zotlabs/Module/Register.php:264 +msgid "" +"Select a channel permission role for your usage needs and privacy " +"requirements." +msgstr "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad." -#: ../../Zotlabs/Lib/NativeWikiPage.php:390 -msgid "Page update failed." -msgstr "Se ha producido un error al actualizar la página." +#: ../../Zotlabs/Module/Register.php:264 +#: ../../Zotlabs/Module/New_channel.php:178 +msgid "Read more about channel permission roles" +msgstr "Leer más sobre los roles y permisos" -#: ../../Zotlabs/Lib/NativeWikiPage.php:424 -msgid "Nothing deleted" -msgstr "No se ha eliminado nada" +#: ../../Zotlabs/Module/Register.php:265 +msgid "no" +msgstr "no" -#: ../../Zotlabs/Lib/NativeWikiPage.php:490 -msgid "Compare: object not found." -msgstr "No se ha encontrado un objeto para comparar." +#: ../../Zotlabs/Module/Register.php:265 +msgid "yes" +msgstr "sí" -#: ../../Zotlabs/Lib/NativeWikiPage.php:496 -msgid "Page updated" -msgstr "Se ha actualizado la página" +#: ../../Zotlabs/Module/Register.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:290 +msgid "Registration" +msgstr "Registro" -#: ../../Zotlabs/Lib/NativeWikiPage.php:499 -msgid "Untitled" -msgstr "Sin título" +#: ../../Zotlabs/Module/Register.php:294 +msgid "" +"This site requires email verification. After completing this form, please " +"check your email for further instructions." +msgstr "Este sitio requiere verificación por correo electrónico. Después de completar este formulario, por favor revise su correo electrónico para más instrucciones." -#: ../../Zotlabs/Lib/NativeWikiPage.php:505 -msgid "Wiki resource_id required for git commit" -msgstr "Se necesita Wiki resource_id para el git commit" +#: ../../Zotlabs/Module/Search.php:17 +#: ../../Zotlabs/Module/Viewconnections.php:23 +#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Display.php:29 +#: ../../Zotlabs/Module/Directory.php:67 ../../Zotlabs/Module/Directory.php:72 +#: ../../Zotlabs/Module/Photos.php:516 +msgid "Public access denied." +msgstr "Acceso público denegado." -#: ../../Zotlabs/Lib/NativeWikiPage.php:562 -#: ../../Zotlabs/Widget/Wiki_page_history.php:23 -msgctxt "wiki_history" -msgid "Message" -msgstr "Mensaje" +#: ../../Zotlabs/Module/Search.php:230 +#, php-format +msgid "Items tagged with: %s" +msgstr "elementos etiquetados con: %s" -#: ../../Zotlabs/Lib/NativeWikiPage.php:563 -#: ../../Zotlabs/Widget/Wiki_page_history.php:24 -msgid "Date" -msgstr "Fecha" +#: ../../Zotlabs/Module/Search.php:232 +#, php-format +msgid "Search results for: %s" +msgstr "Resultados de la búsqueda para: %s" -#: ../../Zotlabs/Lib/NativeWikiPage.php:565 -#: ../../Zotlabs/Widget/Wiki_page_history.php:26 -msgid "Compare" -msgstr "Comparar" +#: ../../Zotlabs/Module/Setup.php:167 +msgid "$Projectname Server - Setup" +msgstr "Servidor $Projectname - Instalación" -#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:754 -#: ../../include/bbcode.php:924 -msgid "Different viewers will see this text differently" -msgstr "Visitantes diferentes verán este texto de forma distinta" +#: ../../Zotlabs/Module/Setup.php:171 +msgid "Could not connect to database." +msgstr "No se ha podido conectar a la base de datos." -#: ../../Zotlabs/Lib/PermissionDescription.php:34 -#: ../../include/acl_selectors.php:33 -msgid "Visible to your default audience" -msgstr "Visible para su público predeterminado." +#: ../../Zotlabs/Module/Setup.php:175 +msgid "" +"Could not connect to specified site URL. Possible SSL certificate or DNS " +"issue." +msgstr "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS." -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../include/acl_selectors.php:106 -msgid "Only me" -msgstr "Sólo yo" +#: ../../Zotlabs/Module/Setup.php:182 +msgid "Could not create table." +msgstr "No se puede crear la tabla." -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Public" -msgstr "Público" +#: ../../Zotlabs/Module/Setup.php:188 +msgid "Your site database has been installed." +msgstr "La base de datos del sitio ha sido instalada." -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -msgid "Anybody in the $Projectname network" -msgstr "Cualquiera en la red $Projectname" +#: ../../Zotlabs/Module/Setup.php:194 +msgid "" +"You may need to import the file \"install/schema_xxx.sql\" manually using a " +"database client." +msgstr "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos." -#: ../../Zotlabs/Lib/PermissionDescription.php:110 -#, php-format -msgid "Any account on %s" -msgstr "Cualquier cuenta en %s" +#: ../../Zotlabs/Module/Setup.php:195 ../../Zotlabs/Module/Setup.php:259 +#: ../../Zotlabs/Module/Setup.php:766 +msgid "Please see the file \"install/INSTALL.txt\"." +msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Any of my connections" -msgstr "Cualquiera de mis conexiones" +#: ../../Zotlabs/Module/Setup.php:256 +msgid "System check" +msgstr "Verificación del sistema" -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Only connections I specifically allow" -msgstr "Sólo las conexiones que yo permita de forma explícita" +#: ../../Zotlabs/Module/Setup.php:260 ../../Zotlabs/Module/Cdav.php:1059 +#: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Events.php:707 +#: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Photos.php:953 +msgid "Next" +msgstr "Siguiente" -#: ../../Zotlabs/Lib/PermissionDescription.php:113 -msgid "Anybody authenticated (could include visitors from other networks)" -msgstr "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)" +#: ../../Zotlabs/Module/Setup.php:261 +msgid "Check again" +msgstr "Verificar de nuevo" -#: ../../Zotlabs/Lib/PermissionDescription.php:114 -msgid "Any connections including those who haven't yet been approved" -msgstr "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas" +#: ../../Zotlabs/Module/Setup.php:282 +msgid "Database connection" +msgstr "Conexión a la base de datos" -#: ../../Zotlabs/Lib/PermissionDescription.php:150 +#: ../../Zotlabs/Module/Setup.php:283 msgid "" -"This is your default setting for the audience of your normal stream, and " -"posts." -msgstr "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones." +"In order to install $Projectname we need to know how to connect to your " +"database." +msgstr "Para instalar $Projectname es necesario saber cómo conectar con su base de datos." -#: ../../Zotlabs/Lib/PermissionDescription.php:151 +#: ../../Zotlabs/Module/Setup.php:284 msgid "" -"This is your default setting for who can view your default channel profile" -msgstr "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado" - -#: ../../Zotlabs/Lib/PermissionDescription.php:152 -msgid "This is your default setting for who can view your connections" -msgstr "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." +msgstr "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes." -#: ../../Zotlabs/Lib/PermissionDescription.php:153 +#: ../../Zotlabs/Module/Setup.php:285 msgid "" -"This is your default setting for who can view your file storage and photos" -msgstr "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos" - -#: ../../Zotlabs/Lib/PermissionDescription.php:154 -msgid "This is your default setting for the audience of your webpages" -msgstr "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web" - -#: ../../Zotlabs/Lib/Libzotdir.php:160 ../../include/dir_fns.php:141 -msgid "Directory Options" -msgstr "Opciones del directorio" +"The database you specify below should already exist. If it does not, please " +"create it before continuing." +msgstr "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir." -#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../include/dir_fns.php:143 -msgid "Safe Mode" -msgstr "Modo seguro" +#: ../../Zotlabs/Module/Setup.php:289 +msgid "Database Server Name" +msgstr "Nombre del servidor de base de datos" -#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../include/dir_fns.php:144 -msgid "Public Forums Only" -msgstr "Solo foros públicos" +#: ../../Zotlabs/Module/Setup.php:289 +msgid "Default is 127.0.0.1" +msgstr "De forma predeterminada es 127.0.0.1" -#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../include/dir_fns.php:145 -msgid "This Website Only" -msgstr "Solo este sitio web" +#: ../../Zotlabs/Module/Setup.php:290 +msgid "Database Port" +msgstr "Puerto de la base de datos" -#: ../../Zotlabs/Lib/Group.php:28 ../../include/group.php:22 -msgid "" -"A deleted group with this name was revived. Existing item permissions " -"<strong>may</strong> apply to this group and any future members. If this is " -"not what you intended, please create another group with a different name." -msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos que ya existen sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente." +#: ../../Zotlabs/Module/Setup.php:290 +msgid "Communication port number - use 0 for default" +msgstr "Número del puerto de comunicaciones - use 0 como valor por defecto" -#: ../../Zotlabs/Lib/Group.php:270 ../../include/group.php:264 -msgid "Add new connections to this privacy group" -msgstr "Añadir conexiones nuevas a este grupo de canales" +#: ../../Zotlabs/Module/Setup.php:291 +msgid "Database Login Name" +msgstr "Usuario de la base de datos" -#: ../../Zotlabs/Lib/Group.php:302 ../../include/group.php:298 -msgid "edit" -msgstr "editar" +#: ../../Zotlabs/Module/Setup.php:292 +msgid "Database Login Password" +msgstr "Contraseña de acceso a la base de datos" -#: ../../Zotlabs/Lib/Group.php:325 ../../include/group.php:321 -msgid "Edit group" -msgstr "Editar grupo" +#: ../../Zotlabs/Module/Setup.php:293 +msgid "Database Name" +msgstr "Nombre de la base de datos" -#: ../../Zotlabs/Lib/Group.php:326 ../../include/group.php:322 -msgid "Add privacy group" -msgstr "Añadir un grupo de canales" +#: ../../Zotlabs/Module/Setup.php:294 +msgid "Database Type" +msgstr "Tipo de base de datos" -#: ../../Zotlabs/Lib/Group.php:327 ../../include/group.php:323 -msgid "Channels not in any privacy group" -msgstr "Sin canales en ningún grupo" +#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 +msgid "Site administrator email address" +msgstr "Dirección de correo electrónico del administrador del sitio" -#: ../../Zotlabs/Lib/Group.php:329 ../../Zotlabs/Widget/Savedsearch.php:84 -#: ../../include/group.php:325 -msgid "add" -msgstr "añadir" +#: ../../Zotlabs/Module/Setup.php:296 ../../Zotlabs/Module/Setup.php:336 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." +msgstr "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web." -#: ../../Zotlabs/Lib/Chatroom.php:23 -msgid "Missing room name" -msgstr "Sala de chat sin nombre" +#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 +msgid "Website URL" +msgstr "Dirección del sitio web" -#: ../../Zotlabs/Lib/Chatroom.php:32 -msgid "Duplicate room name" -msgstr "Nombre de sala duplicado." +#: ../../Zotlabs/Module/Setup.php:297 ../../Zotlabs/Module/Setup.php:338 +msgid "Please use SSL (https) URL if available." +msgstr "Por favor, use SSL (https) si está disponible." -#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 -msgid "Invalid room specifier." -msgstr "Especificador de sala no válido." +#: ../../Zotlabs/Module/Setup.php:298 ../../Zotlabs/Module/Setup.php:340 +msgid "Please select a default timezone for your website" +msgstr "Por favor, selecciones el huso horario por defecto de su sitio web" -#: ../../Zotlabs/Lib/Chatroom.php:122 -msgid "Room not found." -msgstr "Sala no encontrada." +#: ../../Zotlabs/Module/Setup.php:325 +msgid "Site settings" +msgstr "Ajustes del sitio" -#: ../../Zotlabs/Lib/Chatroom.php:143 -msgid "Room is full" -msgstr "La sala está llena." +#: ../../Zotlabs/Module/Setup.php:379 +msgid "PHP version 7.1 or greater is required." +msgstr "Se requiere la versión 7.1 o superior de PHP." -#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2632 -#, php-format -msgid "Unable to verify site signature for %s" -msgstr "No ha sido posible de verificar la firma del sitio para %s" +#: ../../Zotlabs/Module/Setup.php:380 +msgid "PHP version" +msgstr "Versión de PHP" -#: ../../Zotlabs/Lib/Enotify.php:60 -msgid "$Projectname Notification" -msgstr "Notificación de $Projectname" +#: ../../Zotlabs/Module/Setup.php:396 +msgid "Could not find a command line version of PHP in the web server PATH." +msgstr "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web." -#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:336 -#: ../../addon/diaspora/util.php:349 ../../addon/diaspora/p.php:48 -msgid "$projectname" -msgstr "$projectname" +#: ../../Zotlabs/Module/Setup.php:397 +msgid "" +"If you don't have a command line version of PHP installed on server, you " +"will not be able to run background polling via cron." +msgstr "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron." -#: ../../Zotlabs/Lib/Enotify.php:63 -msgid "Thank You," -msgstr "Gracias," +#: ../../Zotlabs/Module/Setup.php:401 +msgid "PHP executable path" +msgstr "Ruta del ejecutable PHP" -#: ../../Zotlabs/Lib/Enotify.php:65 ../../addon/hubwall/hubwall.php:33 -#, php-format -msgid "%s Administrator" -msgstr "%s Administrador" +#: ../../Zotlabs/Module/Setup.php:401 +msgid "" +"Enter full path to php executable. You can leave this blank to continue the " +"installation." +msgstr "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación." -#: ../../Zotlabs/Lib/Enotify.php:66 -#, php-format -msgid "This email was sent by %1$s at %2$s." -msgstr "Este email ha sido enviado por %1$s a %2$s." +#: ../../Zotlabs/Module/Setup.php:406 +msgid "Command line PHP" +msgstr "PHP en línea de comandos" -#: ../../Zotlabs/Lib/Enotify.php:67 -#, php-format +#: ../../Zotlabs/Module/Setup.php:416 msgid "" -"To stop receiving these messages, please adjust your Notification Settings " -"at %s" -msgstr "Para dejar de recibir estos mensajes, por favor ajuste la configuración de notificación en %s" +"Unable to check command line PHP, as shell_exec() is disabled. This is " +"required." +msgstr "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado." -#: ../../Zotlabs/Lib/Enotify.php:68 -#, php-format -msgid "To stop receiving these messages, please adjust your %s." -msgstr "Para dejar de recibir estos mensajes, por favor, ajuste su %s" +#: ../../Zotlabs/Module/Setup.php:420 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." +msgstr "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"." -#: ../../Zotlabs/Lib/Enotify.php:123 -#, php-format -msgid "%s <!item_type!>" -msgstr "%s <!item_type!>" +#: ../../Zotlabs/Module/Setup.php:421 +msgid "This is required for message delivery to work." +msgstr "Esto es necesario para que funcione la transmisión de mensajes." -#: ../../Zotlabs/Lib/Enotify.php:127 -#, php-format -msgid "[$Projectname:Notify] New mail received at %s" -msgstr "[$Projectname:Aviso] Nuevo correo recibido en %s" +#: ../../Zotlabs/Module/Setup.php:424 +msgid "PHP register_argc_argv" +msgstr "PHP register_argc_argv" -#: ../../Zotlabs/Lib/Enotify.php:129 -#, php-format -msgid "%1$s sent you a new private message at %2$s." -msgstr "%1$s le ha enviado un nuevo mensaje privado en %2$s." +#: ../../Zotlabs/Module/Setup.php:444 +msgid "" +"This is not sufficient to upload larger images or files. You should be able " +"to upload at least 4 MB at once." +msgstr "Esto no es suficiente para subir imágenes o archivos más grandes. Usted debe ser capaz de subir al menos 4 MB a la vez." -#: ../../Zotlabs/Lib/Enotify.php:130 +#: ../../Zotlabs/Module/Setup.php:446 #, php-format -msgid "%1$s sent you %2$s." -msgstr "%1$s le ha enviado %2$s." +msgid "" +"Your max allowed total upload size is set to %s. Maximum size of one file to" +" upload is set to %s. You are allowed to upload up to %d files at once." +msgstr "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez." -#: ../../Zotlabs/Lib/Enotify.php:130 -msgid "a private message" -msgstr "un mensaje privado" +#: ../../Zotlabs/Module/Setup.php:452 +msgid "You can adjust these settings in the server php.ini file." +msgstr "Puede ajustar estos valores en el fichero php.ini de su servidor." -#: ../../Zotlabs/Lib/Enotify.php:131 -#, php-format -msgid "Please visit %s to view and/or reply to your private messages." -msgstr "Por favor visite %s para ver y/o responder a su mensaje privado." +#: ../../Zotlabs/Module/Setup.php:454 +msgid "PHP upload limits" +msgstr "Límites PHP de subida" -#: ../../Zotlabs/Lib/Enotify.php:144 -msgid "commented on" -msgstr "ha comentado sobre " +#: ../../Zotlabs/Module/Setup.php:477 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" +msgstr "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado." -#: ../../Zotlabs/Lib/Enotify.php:155 -msgid "liked" -msgstr "ha gustado de " +#: ../../Zotlabs/Module/Setup.php:478 +msgid "" +"If running under Windows, please see " +"\"http://www.php.net/manual/en/openssl.installation.php\"." +msgstr "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"." -#: ../../Zotlabs/Lib/Enotify.php:158 -msgid "disliked" -msgstr "no ha gustado de " +#: ../../Zotlabs/Module/Setup.php:481 +msgid "Generate encryption keys" +msgstr "Generar claves de cifrado" -#: ../../Zotlabs/Lib/Enotify.php:201 -#, php-format -msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" -msgstr "%1$s%2$s [zrl=%3$s ]un %4$s[/zrl]" +#: ../../Zotlabs/Module/Setup.php:498 +msgid "libCurl PHP module" +msgstr "módulo libCurl PHP" -#: ../../Zotlabs/Lib/Enotify.php:209 -#, php-format -msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" -msgstr "%1$s %2$s[zrl=%3$s]%5$s de %4$s[/zrl]" +#: ../../Zotlabs/Module/Setup.php:499 +msgid "GD graphics PHP module" +msgstr "módulo PHP GD graphics" -#: ../../Zotlabs/Lib/Enotify.php:218 -#, php-format -msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" -msgstr "%1$s %2$s [zrl=%3$s]su %4$s[/zrl]" +#: ../../Zotlabs/Module/Setup.php:500 +msgid "OpenSSL PHP module" +msgstr "módulo PHP OpenSSL" -#: ../../Zotlabs/Lib/Enotify.php:230 -#, php-format -msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" -msgstr "[$Projectname:Aviso] Comentario moderado en la conversación #%1$d por %2$s" +#: ../../Zotlabs/Module/Setup.php:501 +msgid "PDO database PHP module" +msgstr "Módulo PHP de la base de datos PDO " -#: ../../Zotlabs/Lib/Enotify.php:232 -#, php-format -msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" -msgstr "[$Projectname:Aviso] Nuevo comentario de %2$s en la conversación #%1$d" +#: ../../Zotlabs/Module/Setup.php:502 +msgid "mb_string PHP module" +msgstr "módulo PHP mb_string" -#: ../../Zotlabs/Lib/Enotify.php:233 -#, php-format -msgid "%1$s commented on an item/conversation you have been following." -msgstr "%1$sha comentado un elemento/conversación que ha estado siguiendo." +#: ../../Zotlabs/Module/Setup.php:503 +msgid "xml PHP module" +msgstr "módulo PHP xml" -#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:317 -#: ../../Zotlabs/Lib/Enotify.php:333 ../../Zotlabs/Lib/Enotify.php:358 -#: ../../Zotlabs/Lib/Enotify.php:375 ../../Zotlabs/Lib/Enotify.php:388 -#, php-format -msgid "Please visit %s to view and/or reply to the conversation." -msgstr "Para ver o comentar la conversación, visite %s" +#: ../../Zotlabs/Module/Setup.php:504 +msgid "zip PHP module" +msgstr "Módulo zip PHP" -#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241 -#, php-format -msgid "Please visit %s to approve or reject this comment." -msgstr "Por favor, visite %s para aprobar o rechazar este comentario." +#: ../../Zotlabs/Module/Setup.php:508 ../../Zotlabs/Module/Setup.php:510 +msgid "Apache mod_rewrite module" +msgstr "módulo Apache mod_rewrite " -#: ../../Zotlabs/Lib/Enotify.php:299 -#, php-format -msgid "%1$s liked [zrl=%2$s]your %3$s[/zrl]" -msgstr "A %1$sle ha gustado [zrl=%2$s]su %3$s [/zrl]" +#: ../../Zotlabs/Module/Setup.php:508 +msgid "" +"Error: Apache webserver mod-rewrite module is required but not installed." +msgstr "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado." -#: ../../Zotlabs/Lib/Enotify.php:313 -#, php-format -msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" -msgstr "[$Projectname:Aviso] \"Me gusta\" de %2$s en la conversación #%1$d" +#: ../../Zotlabs/Module/Setup.php:514 ../../Zotlabs/Module/Setup.php:517 +msgid "exec" +msgstr "ejecutable" -#: ../../Zotlabs/Lib/Enotify.php:314 -#, php-format -msgid "%1$s liked an item/conversation you created." -msgstr "A %1$s le ha gustado un elemento o conversación que ha creado usted." +#: ../../Zotlabs/Module/Setup.php:514 +msgid "" +"Error: exec is required but is either not installed or has been disabled in " +"php.ini" +msgstr "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Lib/Enotify.php:325 -#, php-format -msgid "[$Projectname:Notify] %s posted to your profile wall" -msgstr "[$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")" +#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:523 +msgid "shell_exec" +msgstr "shell_exec" -#: ../../Zotlabs/Lib/Enotify.php:327 -#, php-format -msgid "%1$s posted to your profile wall at %2$s" -msgstr "%1$s ha publicado en su muro en %2$s" +#: ../../Zotlabs/Module/Setup.php:520 +msgid "" +"Error: shell_exec is required but is either not installed or has been " +"disabled in php.ini" +msgstr "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Lib/Enotify.php:329 -#, php-format -msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" -msgstr "%1$sha publicado en [zrl=%2$s]su muro[/zrl]" +#: ../../Zotlabs/Module/Setup.php:528 +msgid "Error: libCURL PHP module required but not installed." +msgstr "Error: se necesita el módulo PHP libCURL pero no está instalado." -#: ../../Zotlabs/Lib/Enotify.php:352 -#, php-format -msgid "[$Projectname:Notify] %s tagged you" -msgstr "[$Projectname:Aviso] %s le ha etiquetado" +#: ../../Zotlabs/Module/Setup.php:532 +msgid "" +"Error: GD PHP module with JPEG support or ImageMagick graphics library " +"required but not installed." +msgstr "Error: Se requiere el módulo GD PHP con soporte para JPEG o la biblioteca de gráficos ImageMagick, pero no está instalado." -#: ../../Zotlabs/Lib/Enotify.php:353 -#, php-format -msgid "%1$s tagged you at %2$s" -msgstr "%1$sle ha etiquetado en %2$s" +#: ../../Zotlabs/Module/Setup.php:536 +msgid "Error: openssl PHP module required but not installed." +msgstr "Error: el módulo PHP openssl es necesario, pero no está instalado." -#: ../../Zotlabs/Lib/Enotify.php:354 -#, php-format -msgid "%1$s [zrl=%2$s]tagged you[/zrl]." -msgstr "%1$s [zrl=%2$s]le ha etiquetado[/zrl]." +#: ../../Zotlabs/Module/Setup.php:542 +msgid "" +"Error: PDO database PHP module missing a driver for either mysql or pgsql." +msgstr "Error: El módulo PHP de la base de datos PDO carece de un controlador para mysql o pgsql." -#: ../../Zotlabs/Lib/Enotify.php:365 -#, php-format -msgid "[$Projectname:Notify] %1$s poked you" -msgstr "[$Projectname:Aviso] %1$s le ha dado un toque" +#: ../../Zotlabs/Module/Setup.php:547 +msgid "Error: PDO database PHP module required but not installed." +msgstr "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado." -#: ../../Zotlabs/Lib/Enotify.php:366 -#, php-format -msgid "%1$s poked you at %2$s" -msgstr "%1$sle ha dado un toque en %2$s" +#: ../../Zotlabs/Module/Setup.php:551 +msgid "Error: mb_string PHP module required but not installed." +msgstr "Error: el módulo PHP mb_string es necesario, pero no está instalado." + +#: ../../Zotlabs/Module/Setup.php:555 +msgid "Error: xml PHP module required for DAV but not installed." +msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado." + +#: ../../Zotlabs/Module/Setup.php:559 +msgid "Error: zip PHP module required but not installed." +msgstr "Error: se requiere el módulo zip PHP pero no está instalado." -#: ../../Zotlabs/Lib/Enotify.php:367 -#, php-format -msgid "%1$s [zrl=%2$s]poked you[/zrl]." -msgstr "%1$s [zrl=%2$s] le ha dado un toque[/zrl]." +#: ../../Zotlabs/Module/Setup.php:578 ../../Zotlabs/Module/Setup.php:587 +msgid ".htconfig.php is writable" +msgstr ".htconfig.php tiene permisos de escritura" -#: ../../Zotlabs/Lib/Enotify.php:382 -#, php-format -msgid "[$Projectname:Notify] %s tagged your post" -msgstr "[$Projectname:Aviso] %s ha etiquetado su entrada" +#: ../../Zotlabs/Module/Setup.php:583 +msgid "" +"The web installer needs to be able to create a file called \".htconfig.php\"" +" in the top folder of your web server and it is unable to do so." +msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor." -#: ../../Zotlabs/Lib/Enotify.php:383 -#, php-format -msgid "%1$s tagged your post at %2$s" -msgstr "%1$sha etiquetado su entrada en %2$s" +#: ../../Zotlabs/Module/Setup.php:584 +msgid "" +"This is most often a permission setting, as the web server may not be able " +"to write files in your folder - even if you can." +msgstr "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos." -#: ../../Zotlabs/Lib/Enotify.php:384 -#, php-format -msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" -msgstr "%1$s ha etiquetado [zrl=%2$s]su entrada[/zrl]" +#: ../../Zotlabs/Module/Setup.php:585 +msgid "Please see install/INSTALL.txt for additional information." +msgstr "Por favor, consulte install/INSTALL.txt para más información." -#: ../../Zotlabs/Lib/Enotify.php:395 -msgid "[$Projectname:Notify] Introduction received" -msgstr "[$Projectname:Aviso] Ha recibido una solicitud de conexión" +#: ../../Zotlabs/Module/Setup.php:601 +msgid "" +"This software uses the Smarty3 template engine to render its web views. " +"Smarty3 compiles templates to PHP to speed up rendering." +msgstr "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización." -#: ../../Zotlabs/Lib/Enotify.php:396 +#: ../../Zotlabs/Module/Setup.php:602 #, php-format -msgid "You've received an new connection request from '%1$s' at %2$s" -msgstr "Ha recibido una nueva solicitud de conexión de '%1$s' en %2$s" +msgid "" +"In order to store these compiled templates, the web server needs to have " +"write access to the directory %s under the top level web folder." +msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal." -#: ../../Zotlabs/Lib/Enotify.php:397 -#, php-format -msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." -msgstr "Ha recibido [zrl=%1$s]una nueva solicitud de conexión[/zrl] de %2$s." +#: ../../Zotlabs/Module/Setup.php:603 ../../Zotlabs/Module/Setup.php:624 +msgid "" +"Please ensure that the user that your web server runs as (e.g. www-data) has" +" write access to this folder." +msgstr "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)." -#: ../../Zotlabs/Lib/Enotify.php:400 ../../Zotlabs/Lib/Enotify.php:418 +#: ../../Zotlabs/Module/Setup.php:604 #, php-format -msgid "You may visit their profile at %s" -msgstr "Puede visitar su perfil en %s" +msgid "" +"Note: as a security measure, you should give the web server write access to " +"%s only--not the template files (.tpl) that it contains." +msgstr "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene." -#: ../../Zotlabs/Lib/Enotify.php:402 +#: ../../Zotlabs/Module/Setup.php:607 #, php-format -msgid "Please visit %s to approve or reject the connection request." -msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión." +msgid "%s is writable" +msgstr "%s tiene permisos de escritura" -#: ../../Zotlabs/Lib/Enotify.php:409 -msgid "[$Projectname:Notify] Friend suggestion received" -msgstr "[$Projectname:Aviso] Ha recibido una sugerencia de conexión" +#: ../../Zotlabs/Module/Setup.php:623 +msgid "" +"This software uses the store directory to save uploaded files. The web " +"server needs to have write access to the store directory under the top level" +" web folder" +msgstr "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior" -#: ../../Zotlabs/Lib/Enotify.php:410 -#, php-format -msgid "You've received a friend suggestion from '%1$s' at %2$s" -msgstr "Ha recibido una sugerencia de amistad de '%1$s' en %2$s" +#: ../../Zotlabs/Module/Setup.php:627 +msgid "store is writable" +msgstr "\"store\" tiene permisos de escritura" -#: ../../Zotlabs/Lib/Enotify.php:411 -#, php-format +#: ../../Zotlabs/Module/Setup.php:659 msgid "" -"You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." -msgstr "Ha recibido [zrl=%1$s]una sugerencia de amistad[/zrl] para %2$s de %3$s." +"SSL certificate cannot be validated. Fix certificate or disable https access" +" to this site." +msgstr "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio." -#: ../../Zotlabs/Lib/Enotify.php:416 -msgid "Name:" -msgstr "Nombre:" +#: ../../Zotlabs/Module/Setup.php:660 +msgid "" +"If you have https access to your website or allow connections to TCP port " +"443 (the https: port), you MUST use a browser-valid certificate. You MUST " +"NOT use self-signed certificates!" +msgstr "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo." -#: ../../Zotlabs/Lib/Enotify.php:417 -msgid "Photo:" -msgstr "Foto:" +#: ../../Zotlabs/Module/Setup.php:661 +msgid "" +"This restriction is incorporated because public posts from you may for " +"example contain references to images on your own hub." +msgstr "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor." -#: ../../Zotlabs/Lib/Enotify.php:420 -#, php-format -msgid "Please visit %s to approve or reject the suggestion." -msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia." +#: ../../Zotlabs/Module/Setup.php:662 +msgid "" +"If your certificate is not recognized, members of other sites (who may " +"themselves have valid certificates) will get a warning message on their own " +"site complaining about security issues." +msgstr "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web." -#: ../../Zotlabs/Lib/Enotify.php:640 -msgid "[$Projectname:Notify]" -msgstr "[$Projectname:Aviso]" +#: ../../Zotlabs/Module/Setup.php:663 +msgid "" +"This can cause usability issues elsewhere (not just on your own site) so we " +"must insist on this requirement." +msgstr "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos." -#: ../../Zotlabs/Lib/Enotify.php:808 -msgid "created a new post" -msgstr "ha creado una nueva entrada" +#: ../../Zotlabs/Module/Setup.php:664 +msgid "" +"Providers are available that issue free certificates which are browser-" +"valid." +msgstr "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos." -#: ../../Zotlabs/Lib/Enotify.php:809 -#, php-format -msgid "commented on %s's post" -msgstr "ha comentado la entrada de %s" +#: ../../Zotlabs/Module/Setup.php:665 +msgid "" +"If you are confident that the certificate is valid and signed by a trusted " +"authority, check to see if you have failed to install an intermediate cert. " +"These are not normally required by browsers, but are required for server-to-" +"server communications." +msgstr "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor." -#: ../../Zotlabs/Lib/Enotify.php:812 -#, php-format -msgid "repeated %s's post" -msgstr "repetida la entrada de %s" +#: ../../Zotlabs/Module/Setup.php:667 +msgid "SSL certificate validation" +msgstr "validación del certificado SSL" -#: ../../Zotlabs/Lib/Enotify.php:821 -#, php-format -msgid "edited a post dated %s" -msgstr "ha editado una entrada fechada el %s" +#: ../../Zotlabs/Module/Setup.php:673 +msgid "" +"Url rewrite in .htaccess is not working. Check your server " +"configuration.Test: " +msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:" -#: ../../Zotlabs/Lib/Enotify.php:825 -#, php-format -msgid "edited a comment dated %s" -msgstr "ha editado un comentario fechado el %s" +#: ../../Zotlabs/Module/Setup.php:676 +msgid "Url rewrite is working" +msgstr "La reescritura de las direcciones funciona correctamente" -#: ../../Zotlabs/Lib/NativeWiki.php:143 -msgid "Wiki updated successfully" -msgstr "El wiki se ha actualizado con éxito" +#: ../../Zotlabs/Module/Setup.php:689 +msgid "" +"The database configuration file \".htconfig.php\" could not be written. " +"Please use the enclosed text to create a configuration file in your web " +"server root." +msgstr "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor." -#: ../../Zotlabs/Lib/NativeWiki.php:197 -msgid "Wiki files deleted successfully" -msgstr "Se han borrado con éxito los ficheros del wiki" +#: ../../Zotlabs/Module/Setup.php:764 +msgid "<h1>What next?</h1>" +msgstr "<h1>¿Qué sigue?</h1>" -#: ../../Zotlabs/Lib/DB_Upgrade.php:67 -msgid "Source code of failed update: " -msgstr "Código fuente de la actualización fallida: " +#: ../../Zotlabs/Module/Setup.php:765 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the " +"poller." +msgstr "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"." -#: ../../Zotlabs/Lib/DB_Upgrade.php:88 -#, php-format -msgid "Update Error at %s" -msgstr "Error de actualización en %s" +#: ../../Zotlabs/Module/Viewconnections.php:65 +msgid "No connections." +msgstr "Sin conexiones." -#: ../../Zotlabs/Lib/DB_Upgrade.php:94 +#: ../../Zotlabs/Module/Viewconnections.php:83 #, php-format -msgid "Update %s failed. See error logs." -msgstr "La actualización %s ha fallado. Mire el informe de errores." - -#: ../../Zotlabs/Lib/ThreadItem.php:103 ../../include/conversation.php:700 -msgid "Private Message" -msgstr "Mensaje Privado" - -#: ../../Zotlabs/Lib/ThreadItem.php:130 -msgid "Privacy conflict. Discretion advised." -msgstr "Conflicto de privacidad. Se aconseja discreción." - -#: ../../Zotlabs/Lib/ThreadItem.php:172 ../../Zotlabs/Storage/Browser.php:286 -msgid "Admin Delete" -msgstr "Eliminar admin" +msgid "Visit %s's profile [%s]" +msgstr "Visitar el perfil de %s [%s]" -#: ../../Zotlabs/Lib/ThreadItem.php:178 ../../include/conversation.php:690 -msgid "Select" -msgstr "Seleccionar" +#: ../../Zotlabs/Module/Viewconnections.php:113 +msgid "View Connections" +msgstr "Ver conexiones" -#: ../../Zotlabs/Lib/ThreadItem.php:203 -msgid "I will attend" -msgstr "Participaré" +#: ../../Zotlabs/Module/Pubsites.php:27 +msgid "" +"The listed hubs allow public registration for the $Projectname network. All " +"hubs in the network are interlinked so membership on any of them conveys " +"membership in the network as a whole. Some hubs may require subscription or " +"provide tiered service plans. The hub itself <strong>may</strong> provide " +"additional details." +msgstr "Los sitios listados permiten el registro público en la red $Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales." -#: ../../Zotlabs/Lib/ThreadItem.php:203 -msgid "I will not attend" -msgstr "No participaré" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Hub URL" +msgstr "Dirección del hub" -#: ../../Zotlabs/Lib/ThreadItem.php:203 -msgid "I might attend" -msgstr "Quizá participe" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" +msgstr "Tipo de acceso" -#: ../../Zotlabs/Lib/ThreadItem.php:213 -msgid "I agree" -msgstr "Estoy de acuerdo" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" +msgstr "Normas de registro" -#: ../../Zotlabs/Lib/ThreadItem.php:213 -msgid "I disagree" -msgstr "No estoy de acuerdo" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" +msgstr "Estadísticas" -#: ../../Zotlabs/Lib/ThreadItem.php:213 -msgid "I abstain" -msgstr "Me abstengo" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" +msgstr "Software" -#: ../../Zotlabs/Lib/ThreadItem.php:267 ../../include/conversation.php:695 -msgid "Toggle Star Status" -msgstr "Activar o desactivar el estado de entrada preferida" +#: ../../Zotlabs/Module/Pubsites.php:49 +msgid "Rate" +msgstr "Valorar" -#: ../../Zotlabs/Lib/ThreadItem.php:278 ../../include/conversation.php:707 -msgid "Message signature validated" -msgstr "Firma de mensaje validada" +#: ../../Zotlabs/Module/Pubsites.php:60 ../../Zotlabs/Module/Webpages.php:261 +#: ../../Zotlabs/Module/Events.php:702 ../../Zotlabs/Module/Blocks.php:166 +#: ../../Zotlabs/Module/Wiki.php:213 ../../Zotlabs/Module/Wiki.php:409 +#: ../../Zotlabs/Module/Layouts.php:198 +msgid "View" +msgstr "Ver" -#: ../../Zotlabs/Lib/ThreadItem.php:279 ../../include/conversation.php:708 -msgid "Message signature incorrect" -msgstr "Firma de mensaje incorrecta" +#: ../../Zotlabs/Module/Channel.php:99 ../../Zotlabs/Module/Hcard.php:37 +#: ../../Zotlabs/Module/Profile.php:45 +msgid "Posts and comments" +msgstr "Publicaciones y comentarios" -#: ../../Zotlabs/Lib/ThreadItem.php:287 -msgid "Add Tag" -msgstr "Añadir etiqueta" +#: ../../Zotlabs/Module/Channel.php:106 ../../Zotlabs/Module/Hcard.php:44 +#: ../../Zotlabs/Module/Profile.php:52 +msgid "Only posts" +msgstr "Solo publicaciones" -#: ../../Zotlabs/Lib/ThreadItem.php:291 ../../include/conversation.php:891 -msgid "Conversation Tools" -msgstr "Herramientas de conversación" +#: ../../Zotlabs/Module/Channel.php:166 +msgid "Insufficient permissions. Request redirected to profile page." +msgstr "Permisos insuficientes. Petición redirigida a la página del perfil." -#: ../../Zotlabs/Lib/ThreadItem.php:307 ../../include/taxonomy.php:573 -msgid "like" -msgstr "me gusta" +#: ../../Zotlabs/Module/Channel.php:476 ../../Zotlabs/Module/Display.php:378 +msgid "" +"You must enable javascript for your browser to be able to view this content." +msgstr "Debe habilitar javascript para poder ver este contenido en su navegador." -#: ../../Zotlabs/Lib/ThreadItem.php:308 ../../include/taxonomy.php:574 -msgid "dislike" -msgstr "no me gusta" +#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." +msgstr "Identificador del perfil no válido" -#: ../../Zotlabs/Lib/ThreadItem.php:309 -msgid "Reply on this comment" -msgstr "Responder a este comentario" +#: ../../Zotlabs/Module/Profperm.php:111 +msgid "Profile Visibility Editor" +msgstr "Editor de visibilidad del perfil" -#: ../../Zotlabs/Lib/ThreadItem.php:309 -msgid "reply" -msgstr "responder" +#: ../../Zotlabs/Module/Profperm.php:115 +msgid "Click on a contact to add or remove." +msgstr "Pulsar en un contacto para añadirlo o eliminarlo." -#: ../../Zotlabs/Lib/ThreadItem.php:309 -msgid "Reply to" -msgstr "Responder a " +#: ../../Zotlabs/Module/Profperm.php:124 +msgid "Visible To" +msgstr "Visible para" -#: ../../Zotlabs/Lib/ThreadItem.php:319 -msgid "Share This" -msgstr "Compartir esto" +#: ../../Zotlabs/Module/Profperm.php:140 +#: ../../Zotlabs/Module/Connections.php:217 +msgid "All Connections" +msgstr "Todas las conexiones" -#: ../../Zotlabs/Lib/ThreadItem.php:319 -msgid "share" -msgstr "compartir" +#: ../../Zotlabs/Module/Group.php:45 +msgid "Privacy group created." +msgstr "El grupo de canales ha sido creado." -#: ../../Zotlabs/Lib/ThreadItem.php:329 -msgid "Delivery Report" -msgstr "Informe de transmisión" +#: ../../Zotlabs/Module/Group.php:48 +msgid "Could not create privacy group." +msgstr "No se puede crear el grupo de canales" -#: ../../Zotlabs/Lib/ThreadItem.php:348 -#, php-format -msgid "%d comment" -msgid_plural "%d comments" -msgstr[0] "%d comentario" -msgstr[1] "%d comentarios" +#: ../../Zotlabs/Module/Group.php:80 +msgid "Privacy group updated." +msgstr "Grupo de canales actualizado." -#: ../../Zotlabs/Lib/ThreadItem.php:380 ../../Zotlabs/Lib/ThreadItem.php:381 -#, php-format -msgid "View %s's profile - %s" -msgstr "Ver el perfil de %s - %s" +#: ../../Zotlabs/Module/Group.php:106 +msgid "Privacy Groups App" +msgstr "App Grupos de canales" -#: ../../Zotlabs/Lib/ThreadItem.php:384 -msgid "to" -msgstr "a" +#: ../../Zotlabs/Module/Group.php:107 +msgid "Management of privacy groups" +msgstr "Gestión de grupos de canales" -#: ../../Zotlabs/Lib/ThreadItem.php:385 -msgid "via" -msgstr "mediante" +#: ../../Zotlabs/Module/Group.php:142 +msgid "Add Group" +msgstr "Agregar un grupo" -#: ../../Zotlabs/Lib/ThreadItem.php:386 -msgid "Wall-to-Wall" -msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")" +#: ../../Zotlabs/Module/Group.php:146 +msgid "Privacy group name" +msgstr "Nombre del grupo" -#: ../../Zotlabs/Lib/ThreadItem.php:387 -msgid "via Wall-To-Wall:" -msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")" +#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256 +msgid "Members are visible to other channels" +msgstr "Los miembros son visibles para otros canales" -#: ../../Zotlabs/Lib/ThreadItem.php:401 ../../include/conversation.php:766 -#, php-format -msgid "from %s" -msgstr "desde %s" +#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 +msgid "Members" +msgstr "Miembros" -#: ../../Zotlabs/Lib/ThreadItem.php:404 ../../include/conversation.php:769 -#, php-format -msgid "last edited: %s" -msgstr "último cambio: %s" +#: ../../Zotlabs/Module/Group.php:182 +msgid "Privacy group removed." +msgstr "Grupo de canales eliminado." + +#: ../../Zotlabs/Module/Group.php:185 +msgid "Unable to remove privacy group." +msgstr "No se puede eliminar el grupo de canales." -#: ../../Zotlabs/Lib/ThreadItem.php:405 ../../include/conversation.php:770 +#: ../../Zotlabs/Module/Group.php:251 #, php-format -msgid "Expires: %s" -msgstr "Caduca: %s" +msgid "Privacy Group: %s" +msgstr "Grupo privado %s" -#: ../../Zotlabs/Lib/ThreadItem.php:413 -msgid "Attend" -msgstr "Participar o asistir" +#: ../../Zotlabs/Module/Group.php:253 +msgid "Privacy group name: " +msgstr "Nombre del grupo de canales:" -#: ../../Zotlabs/Lib/ThreadItem.php:414 -msgid "Attendance Options" -msgstr "Opciones de participación o asistencia" +#: ../../Zotlabs/Module/Group.php:258 +msgid "Delete Group" +msgstr "Eliminar grupo" -#: ../../Zotlabs/Lib/ThreadItem.php:415 -msgid "Vote" -msgstr "Votar" +#: ../../Zotlabs/Module/Group.php:269 +msgid "Group members" +msgstr "Miembros del grupo" -#: ../../Zotlabs/Lib/ThreadItem.php:416 -msgid "Voting Options" -msgstr "Opciones de votación" +#: ../../Zotlabs/Module/Group.php:271 +msgid "Not in this group" +msgstr "No en este grupo" -#: ../../Zotlabs/Lib/ThreadItem.php:431 -msgid "Go to previous comment" -msgstr "Ir al comentario anterior" +#: ../../Zotlabs/Module/Group.php:303 +msgid "Click a channel to toggle membership" +msgstr "Haga clic en un canal para cambiar los miembros" -#: ../../Zotlabs/Lib/ThreadItem.php:440 -#: ../../addon/bookmarker/bookmarker.php:38 -msgid "Save Bookmarks" -msgstr "Guardar en Marcadores" +#: ../../Zotlabs/Module/Card_edit.php:128 +msgid "Edit Card" +msgstr "Editar la ficha" -#: ../../Zotlabs/Lib/ThreadItem.php:441 -msgid "Add to Calendar" -msgstr "Añadir al calendario" +#: ../../Zotlabs/Module/Go.php:21 +msgid "This page is available only to site members" +msgstr "Esta página está disponible sólo para los miembros del sitio" -#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../include/conversation.php:483 -msgid "This is an unsaved preview" -msgstr "Esta es una previsualización sin guardar" +#: ../../Zotlabs/Module/Go.php:27 +msgid "Welcome" +msgstr "Bienvenido/a" -#: ../../Zotlabs/Lib/ThreadItem.php:502 ../../include/js_strings.php:7 -#, php-format -msgid "%s show all" -msgstr "%s mostrar todo" +#: ../../Zotlabs/Module/Go.php:29 +msgid "What would you like to do?" +msgstr "¿Qué le gustaría hacer?" -#: ../../Zotlabs/Lib/ThreadItem.php:797 ../../addon/hsse/hsse.php:200 -#: ../../include/conversation.php:1406 -msgid "Bold" -msgstr "Negrita" +#: ../../Zotlabs/Module/Go.php:31 +msgid "" +"Please bookmark this page if you would like to return to it in the future" +msgstr "Por favor añada esta página a sus marcadores si desea volver a ella en el futuro." -#: ../../Zotlabs/Lib/ThreadItem.php:798 ../../addon/hsse/hsse.php:201 -#: ../../include/conversation.php:1407 -msgid "Italic" -msgstr "Itálico " +#: ../../Zotlabs/Module/Go.php:35 +msgid "Upload a profile photo" +msgstr "Subir una foto de perfil" -#: ../../Zotlabs/Lib/ThreadItem.php:799 ../../addon/hsse/hsse.php:202 -#: ../../include/conversation.php:1408 -msgid "Underline" -msgstr "Subrayar" +#: ../../Zotlabs/Module/Go.php:36 +msgid "Upload a cover photo" +msgstr "Subir una foto de portada del perfil" -#: ../../Zotlabs/Lib/ThreadItem.php:800 ../../addon/hsse/hsse.php:203 -#: ../../include/conversation.php:1409 -msgid "Quote" -msgstr "Citar" +#: ../../Zotlabs/Module/Go.php:37 +msgid "Edit your default profile" +msgstr "Editar su perfil por defecto" -#: ../../Zotlabs/Lib/ThreadItem.php:801 ../../addon/hsse/hsse.php:204 -#: ../../include/conversation.php:1410 -msgid "Code" -msgstr "Código" +#: ../../Zotlabs/Module/Go.php:39 +msgid "View the channel directory" +msgstr "Ver el directorio de canales" -#: ../../Zotlabs/Lib/ThreadItem.php:802 -msgid "Image" -msgstr "Imagen" +#: ../../Zotlabs/Module/Go.php:40 +msgid "View/edit your channel settings" +msgstr "Ver o modificar los ajustes de su canal" -#: ../../Zotlabs/Lib/ThreadItem.php:803 ../../addon/hsse/hsse.php:205 -#: ../../include/conversation.php:1411 -msgid "Attach/Upload file" -msgstr "Adjuntar/cargar fichero" +#: ../../Zotlabs/Module/Go.php:41 +msgid "View the site or project documentation" +msgstr "Ver el sitio o la documentación del proyecto" -#: ../../Zotlabs/Lib/ThreadItem.php:804 -msgid "Insert Link" -msgstr "Insertar enlace" +#: ../../Zotlabs/Module/Go.php:42 +msgid "Visit your channel homepage" +msgstr "Visitar la página principal de su canal" -#: ../../Zotlabs/Lib/ThreadItem.php:805 -msgid "Video" -msgstr "Vídeo" +#: ../../Zotlabs/Module/Go.php:43 +msgid "" +"View your connections and/or add somebody whose address you already know" +msgstr "Vea sus conexiones y/o agregue a alguien cuya dirección ya conozca" -#: ../../Zotlabs/Lib/ThreadItem.php:815 -msgid "Your full name (required)" -msgstr "Su nombre completo (requerido)" +#: ../../Zotlabs/Module/Go.php:44 +msgid "" +"View your personal stream (this may be empty until you add some connections)" +msgstr "Ver su \"stream\" personal (puede que esté vacío hasta que agregue algunas conexiones)" -#: ../../Zotlabs/Lib/ThreadItem.php:816 -msgid "Your email address (required)" -msgstr "Su dirección de correo electrónico (requerido)" +#: ../../Zotlabs/Module/Go.php:52 +msgid "View the public stream. Warning: this content is not moderated" +msgstr "Ver el \"stream\" público. Advertencia: este contenido no está moderado" -#: ../../Zotlabs/Lib/ThreadItem.php:817 -msgid "Your website URL (optional)" -msgstr "La URL de su sitio web (opcional)" +#: ../../Zotlabs/Module/Oauth.php:45 +msgid "Name is required" +msgstr "El nombre es obligatorio" -#: ../../Zotlabs/Zot/Auth.php:152 -msgid "" -"Remote authentication blocked. You are logged into this site locally. Please" -" logout and retry." -msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo." +#: ../../Zotlabs/Module/Oauth.php:49 +msgid "Key and Secret are required" +msgstr "\"Key\" y \"Secret\" son obligatorios" -#: ../../Zotlabs/Zot/Auth.php:264 ../../addon/openid/Mod_Openid.php:76 -#: ../../addon/openid/Mod_Openid.php:178 -#, php-format -msgid "Welcome %s. Remote authentication successful." -msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente." +#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137 +#: ../../Zotlabs/Module/Cdav.php:1076 ../../Zotlabs/Module/Cdav.php:1389 +#: ../../Zotlabs/Module/Admin/Addons.php:457 +#: ../../Zotlabs/Module/Profiles.php:799 ../../Zotlabs/Module/Oauth2.php:58 +#: ../../Zotlabs/Module/Oauth2.php:144 ../../Zotlabs/Module/Connedit.php:939 +#: ../../Zotlabs/Lib/Apps.php:536 +msgid "Update" +msgstr "Actualizar" -#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:295 -msgid "parent" -msgstr "padre" +#: ../../Zotlabs/Module/Oauth.php:100 +msgid "OAuth Apps Manager App" +msgstr "App Gestión de apps OAuth" -#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2952 -msgid "Collection" -msgstr "Colección" +#: ../../Zotlabs/Module/Oauth.php:101 +msgid "OAuth authentication tokens for mobile and remote apps" +msgstr "Tokens de autenticación de OAuth para aplicaciones móviles y remotas" -#: ../../Zotlabs/Storage/Browser.php:134 -msgid "Principal" -msgstr "Principal" +#: ../../Zotlabs/Module/Oauth.php:110 ../../Zotlabs/Module/Oauth.php:136 +#: ../../Zotlabs/Module/Oauth.php:172 ../../Zotlabs/Module/Oauth2.php:143 +#: ../../Zotlabs/Module/Oauth2.php:193 +msgid "Add application" +msgstr "Añadir aplicación" -#: ../../Zotlabs/Storage/Browser.php:137 -msgid "Addressbook" -msgstr "Libreta de direcciones" +#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth2.php:118 +#: ../../Zotlabs/Module/Oauth2.php:146 +msgid "Name of application" +msgstr "Nombre de la aplicación" -#: ../../Zotlabs/Storage/Browser.php:143 -msgid "Schedule Inbox" -msgstr "Programar bandeja de entrada" +#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:115 +#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147 +msgid "Automatically generated - change if desired. Max length 20" +msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20" -#: ../../Zotlabs/Storage/Browser.php:146 -msgid "Schedule Outbox" -msgstr "Programar bandeja de salida" +#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 +#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 +msgid "Redirect" +msgstr "Redirigir" -#: ../../Zotlabs/Storage/Browser.php:279 -msgid "Total" -msgstr "Total" +#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth2.php:120 +#: ../../Zotlabs/Module/Oauth2.php:148 +msgid "" +"Redirect URI - leave blank unless your application specifically requires " +"this" +msgstr "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera" -#: ../../Zotlabs/Storage/Browser.php:281 -msgid "Shared" -msgstr "Compartido" +#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 +msgid "Icon url" +msgstr "Dirección del icono" -#: ../../Zotlabs/Storage/Browser.php:283 -msgid "Add Files" -msgstr "Añadir ficheros" +#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Sources.php:123 +#: ../../Zotlabs/Module/Sources.php:158 +msgid "Optional" +msgstr "Opcional" -#: ../../Zotlabs/Storage/Browser.php:367 -#, php-format -msgid "You are using %1$s of your available file storage." -msgstr "Está usando %1$s de su espacio disponible para ficheros." +#: ../../Zotlabs/Module/Oauth.php:128 +msgid "Application not found." +msgstr "Aplicación no encontrada." -#: ../../Zotlabs/Storage/Browser.php:372 -#, php-format -msgid "You are using %1$s of %2$s available file storage. (%3$s%)" -msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s%)" +#: ../../Zotlabs/Module/Oauth.php:171 +msgid "Connected OAuth Apps" +msgstr "Apps OAuth conectadas" -#: ../../Zotlabs/Storage/Browser.php:383 -msgid "WARNING:" -msgstr "ATENCIÓN: " +#: ../../Zotlabs/Module/Oauth.php:175 ../../Zotlabs/Module/Oauth2.php:196 +msgid "Client key starts with" +msgstr "La \"client key\" empieza por" -#: ../../Zotlabs/Storage/Browser.php:395 -msgid "Create new folder" -msgstr "Crear nueva carpeta" +#: ../../Zotlabs/Module/Oauth.php:176 ../../Zotlabs/Module/Oauth2.php:197 +msgid "No name" +msgstr "Sin nombre" -#: ../../Zotlabs/Storage/Browser.php:397 -msgid "Upload file" -msgstr "Subir fichero" +#: ../../Zotlabs/Module/Oauth.php:177 ../../Zotlabs/Module/Oauth2.php:198 +msgid "Remove authorization" +msgstr "Eliminar autorización" -#: ../../Zotlabs/Storage/Browser.php:410 -msgid "Drop files here to immediately upload" -msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata" +#: ../../Zotlabs/Module/Editwebpage.php:139 +msgid "Page link" +msgstr "Enlace de la página" -#: ../../Zotlabs/Widget/Forums.php:100 -#: ../../Zotlabs/Widget/Activity_filter.php:73 -#: ../../Zotlabs/Widget/Notifications.php:119 -#: ../../Zotlabs/Widget/Notifications.php:120 -msgid "Forums" -msgstr "Foros" +#: ../../Zotlabs/Module/Editwebpage.php:166 +msgid "Edit Webpage" +msgstr "Editar la página web" -#: ../../Zotlabs/Widget/Cdav.php:37 -msgid "Select Channel" -msgstr "Seleccionar un canal" +#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 +msgid "This site is not a directory server" +msgstr "Este sitio no es un servidor de directorio" -#: ../../Zotlabs/Widget/Cdav.php:42 -msgid "Read-write" -msgstr "Lectura y escritura" +#: ../../Zotlabs/Module/Dirsearch.php:33 +msgid "This directory server requires an access token" +msgstr "El servidor de este directorio necesita un \"token\" de acceso" -#: ../../Zotlabs/Widget/Cdav.php:43 -msgid "Read-only" -msgstr "Sólo lectura" +#: ../../Zotlabs/Module/Hq.php:140 +msgid "Welcome to Hubzilla!" +msgstr "¡Bienvenido a Hubzilla!" -#: ../../Zotlabs/Widget/Cdav.php:127 -msgid "Channel Calendar" -msgstr "Calendario del canal" +#: ../../Zotlabs/Module/Hq.php:140 +msgid "You have got no unseen posts..." +msgstr "No tiene ningún mensaje sin leer..." -#: ../../Zotlabs/Widget/Cdav.php:131 -msgid "Shared CalDAV Calendars" -msgstr "Calendarios CalDAV compartidos" +#: ../../Zotlabs/Module/Chat.php:102 +msgid "Chatrooms App" +msgstr "App Salas de chat" -#: ../../Zotlabs/Widget/Cdav.php:135 -msgid "Share this calendar" -msgstr "Compartir este calendario" +#: ../../Zotlabs/Module/Chat.php:103 +msgid "Access Controlled Chatrooms" +msgstr "Salas de chat moderadas" -#: ../../Zotlabs/Widget/Cdav.php:137 -msgid "Calendar name and color" -msgstr "Nombre y color del calendario" +#: ../../Zotlabs/Module/Chat.php:196 +msgid "Room not found" +msgstr "Sala no encontrada" -#: ../../Zotlabs/Widget/Cdav.php:139 -msgid "Create new CalDAV calendar" -msgstr "Crear un nuevo calendario CalDAV" +#: ../../Zotlabs/Module/Chat.php:212 +msgid "Leave Room" +msgstr "Abandonar la sala" -#: ../../Zotlabs/Widget/Cdav.php:141 -msgid "Calendar Name" -msgstr "Nombre del calendario" +#: ../../Zotlabs/Module/Chat.php:213 +msgid "Delete Room" +msgstr "Eliminar esta sala" -#: ../../Zotlabs/Widget/Cdav.php:142 -msgid "Calendar Tools" -msgstr "Gestión de calendarios" +#: ../../Zotlabs/Module/Chat.php:214 +msgid "I am away right now" +msgstr "Estoy ausente momentáneamente" -#: ../../Zotlabs/Widget/Cdav.php:144 -msgid "Import calendar" -msgstr "Importar un calendario" +#: ../../Zotlabs/Module/Chat.php:215 +msgid "I am online" +msgstr "Estoy conectado/a" -#: ../../Zotlabs/Widget/Cdav.php:145 -msgid "Select a calendar to import to" -msgstr "Seleccionar un calendario para importarlo" +#: ../../Zotlabs/Module/Chat.php:217 +msgid "Bookmark this room" +msgstr "Añadir esta sala a Marcadores" -#: ../../Zotlabs/Widget/Cdav.php:172 -msgid "Addressbooks" -msgstr "Agenda de direcciones" +#: ../../Zotlabs/Module/Chat.php:240 +msgid "New Chatroom" +msgstr "Nueva sala de chat" -#: ../../Zotlabs/Widget/Cdav.php:174 -msgid "Addressbook name" -msgstr "Nombre de la agenda" +#: ../../Zotlabs/Module/Chat.php:241 +msgid "Chatroom name" +msgstr "Nombre de la sala de chat" -#: ../../Zotlabs/Widget/Cdav.php:176 -msgid "Create new addressbook" -msgstr "Crear una nueva agenda de direcciones" +#: ../../Zotlabs/Module/Chat.php:242 +msgid "Expiration of chats (minutes)" +msgstr "Caducidad de los mensajes en los chats (en minutos)" -#: ../../Zotlabs/Widget/Cdav.php:177 -msgid "Addressbook Name" -msgstr "Nombre de la agenda" +#: ../../Zotlabs/Module/Chat.php:258 +#, php-format +msgid "%1$s's Chatrooms" +msgstr "Salas de chat de %1$s" -#: ../../Zotlabs/Widget/Cdav.php:179 -msgid "Addressbook Tools" -msgstr "Gestión de agendas de direcciones" +#: ../../Zotlabs/Module/Chat.php:263 +msgid "No chatrooms available" +msgstr "No hay salas de chat disponibles" -#: ../../Zotlabs/Widget/Cdav.php:180 -msgid "Import addressbook" -msgstr "Importar una agenda de direcciones" +#: ../../Zotlabs/Module/Chat.php:264 ../../Zotlabs/Module/Manage.php:145 +#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Wiki.php:214 +msgid "Create New" +msgstr "Crear" -#: ../../Zotlabs/Widget/Cdav.php:181 -msgid "Select an addressbook to import to" -msgstr "Seleccionar una agenda para importarla" +#: ../../Zotlabs/Module/Chat.php:267 +msgid "Expiration" +msgstr "Caducidad" -#: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31 -#: ../../widget/Netselect/Netselect.php:26 -#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:99 -#: ../../include/contact_widgets.php:142 ../../include/contact_widgets.php:187 -msgid "Everything" -msgstr "Todo" +#: ../../Zotlabs/Module/Chat.php:268 +msgid "min" +msgstr "min" -#: ../../Zotlabs/Widget/Eventstools.php:13 -msgid "Events Tools" -msgstr "Gestión de eventos" +#: ../../Zotlabs/Module/Channel_calendar.php:51 +#: ../../Zotlabs/Module/Events.php:113 +msgid "Event can not end before it has started." +msgstr "Un evento no puede terminar antes de que haya comenzado." + +#: ../../Zotlabs/Module/Channel_calendar.php:53 +#: ../../Zotlabs/Module/Channel_calendar.php:61 +#: ../../Zotlabs/Module/Channel_calendar.php:78 +#: ../../Zotlabs/Module/Events.php:115 ../../Zotlabs/Module/Events.php:124 +#: ../../Zotlabs/Module/Events.php:146 +msgid "Unable to generate preview." +msgstr "No se puede crear la vista previa." -#: ../../Zotlabs/Widget/Eventstools.php:14 -msgid "Export Calendar" -msgstr "Exportar el calendario" +#: ../../Zotlabs/Module/Channel_calendar.php:59 +#: ../../Zotlabs/Module/Events.php:122 +msgid "Event title and start time are required." +msgstr "Se requieren el título del evento y su hora de inicio." -#: ../../Zotlabs/Widget/Eventstools.php:15 -msgid "Import Calendar" -msgstr "Importar un calendario" +#: ../../Zotlabs/Module/Channel_calendar.php:76 +#: ../../Zotlabs/Module/Channel_calendar.php:218 +#: ../../Zotlabs/Module/Events.php:144 ../../Zotlabs/Module/Events.php:271 +msgid "Event not found." +msgstr "Evento no encontrado." -#: ../../Zotlabs/Widget/Suggestedchats.php:32 -msgid "Suggested Chatrooms" -msgstr "Salas de chat sugeridas" +#: ../../Zotlabs/Module/Channel_calendar.php:370 +#: ../../Zotlabs/Module/Events.php:641 +msgid "Edit event" +msgstr "Editar evento" -#: ../../Zotlabs/Widget/Hq_controls.php:14 -msgid "HQ Control Panel" -msgstr "Panel de control de HQ" +#: ../../Zotlabs/Module/Channel_calendar.php:372 +#: ../../Zotlabs/Module/Events.php:643 +msgid "Delete event" +msgstr "Borrar evento" -#: ../../Zotlabs/Widget/Hq_controls.php:17 -msgid "Create a new post" -msgstr "Crear una nueva entrada" +#: ../../Zotlabs/Module/Channel_calendar.php:387 +#: ../../Zotlabs/Module/Cdav.php:966 ../../Zotlabs/Module/Cal.php:167 +msgid "Link to source" +msgstr "Enlace a la fuente" -#: ../../Zotlabs/Widget/Mailmenu.php:13 -msgid "Private Mail Menu" -msgstr "Menú de correo privado" +#: ../../Zotlabs/Module/Channel_calendar.php:401 +#: ../../Zotlabs/Module/Events.php:677 +msgid "calendar" +msgstr "calendario" -#: ../../Zotlabs/Widget/Mailmenu.php:15 -msgid "Combined View" -msgstr "Vista combinada" +#: ../../Zotlabs/Module/Channel_calendar.php:488 +#: ../../Zotlabs/Module/Events.php:742 +msgid "Failed to remove event" +msgstr "Error al eliminar el evento" -#: ../../Zotlabs/Widget/Mailmenu.php:20 -msgid "Inbox" -msgstr "Bandeja de entrada" +#: ../../Zotlabs/Module/Like.php:56 +msgid "Like/Dislike" +msgstr "Me gusta/No me gusta" -#: ../../Zotlabs/Widget/Mailmenu.php:25 -msgid "Outbox" -msgstr "Bandeja de salida" +#: ../../Zotlabs/Module/Like.php:61 +msgid "This action is restricted to members." +msgstr "Esta acción está restringida solo para miembros." -#: ../../Zotlabs/Widget/Mailmenu.php:30 -msgid "New Message" -msgstr "Nuevo mensaje" +#: ../../Zotlabs/Module/Like.php:62 +msgid "" +"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a " +"href=\"register\">register as a new $Projectname member</a> to continue." +msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar." -#: ../../Zotlabs/Widget/Chatroom_list.php:20 -msgid "Overview" -msgstr "Resumen" +#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 +#: ../../Zotlabs/Module/Like.php:175 +msgid "Invalid request." +msgstr "Solicitud incorrecta." -#: ../../Zotlabs/Widget/Rating.php:51 -msgid "Rating Tools" -msgstr "Valoraciones" +#: ../../Zotlabs/Module/Like.php:152 +msgid "thing" +msgstr "elemento" -#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 -msgid "Rate Me" -msgstr "Valorar este canal" +#: ../../Zotlabs/Module/Like.php:198 +msgid "Channel unavailable." +msgstr "Canal no disponible." -#: ../../Zotlabs/Widget/Rating.php:60 -msgid "View Ratings" -msgstr "Mostrar las valoraciones" +#: ../../Zotlabs/Module/Like.php:246 +msgid "Previous action reversed." +msgstr "Acción anterior revocada." -#: ../../Zotlabs/Widget/Activity.php:50 -msgctxt "widget" -msgid "Activity" -msgstr "Actividad" +#: ../../Zotlabs/Module/Like.php:451 +#, php-format +msgid "%1$s agrees with %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s está de acuerdo" -#: ../../Zotlabs/Widget/Activity_filter.php:36 +#: ../../Zotlabs/Module/Like.php:453 #, php-format -msgid "Show posts related to the %s privacy group" -msgstr "Mostrar entradas relacionadas con el grupo %s" +msgid "%1$s doesn't agree with %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s no está de acuerdo" -#: ../../Zotlabs/Widget/Activity_filter.php:45 -msgid "Show my privacy groups" -msgstr "Mostrar mis grupos de canales" +#: ../../Zotlabs/Module/Like.php:455 +#, php-format +msgid "%1$s abstains from a decision on %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s se abstiene" -#: ../../Zotlabs/Widget/Activity_filter.php:66 -msgid "Show posts to this forum" -msgstr "Mostrar las entradas en este foro" +#: ../../Zotlabs/Module/Like.php:572 +msgid "Action completed." +msgstr "Acción completada." -#: ../../Zotlabs/Widget/Activity_filter.php:77 -msgid "Show forums" -msgstr "Mostrar los foros" +#: ../../Zotlabs/Module/Like.php:573 +msgid "Thank you." +msgstr "Gracias." -#: ../../Zotlabs/Widget/Activity_filter.php:91 -msgid "Starred Posts" -msgstr "Entradas preferidas" +#: ../../Zotlabs/Module/Poke.php:165 +msgid "Poke App" +msgstr "App Toques" -#: ../../Zotlabs/Widget/Activity_filter.php:95 -msgid "Show posts that I have starred" -msgstr "Mostrar entradas que he señalado como preferidas" +#: ../../Zotlabs/Module/Poke.php:166 +msgid "Poke somebody in your addressbook" +msgstr "Dar un toque a alguien en su libreta de direcciones" -#: ../../Zotlabs/Widget/Activity_filter.php:106 -msgid "Personal Posts" -msgstr "Entradas personales" +#: ../../Zotlabs/Module/Poke.php:200 +msgid "Poke somebody" +msgstr "Dar un toque a alguien" -#: ../../Zotlabs/Widget/Activity_filter.php:110 -msgid "Show posts that mention or involve me" -msgstr "Mostrar entradas que me mencionen o involucren" +#: ../../Zotlabs/Module/Poke.php:203 +msgid "Poke/Prod" +msgstr "Toque/Incitación" -#: ../../Zotlabs/Widget/Activity_filter.php:131 -#, php-format -msgid "Show posts that I have filed to %s" -msgstr "Mostrar las entradas que he enviado a %s" +#: ../../Zotlabs/Module/Poke.php:204 +msgid "Poke, prod or do other things to somebody" +msgstr "Dar un toque, incitar o hacer otras cosas a alguien" -#: ../../Zotlabs/Widget/Activity_filter.php:137 -#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53 -#: ../../include/features.php:311 -msgid "Saved Folders" -msgstr "Carpetas guardadas" +#: ../../Zotlabs/Module/Poke.php:211 +msgid "Recipient" +msgstr "Destinatario" -#: ../../Zotlabs/Widget/Activity_filter.php:141 -msgid "Show filed post categories" -msgstr "Mostrar los temas de las entradas archivadas" +#: ../../Zotlabs/Module/Poke.php:212 +msgid "Choose what you wish to do to recipient" +msgstr "Elegir qué desea enviar al destinatario" -#: ../../Zotlabs/Widget/Activity_filter.php:155 -msgid "Panel search" -msgstr "Panel de búsqueda" +#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 +msgid "Make this post private" +msgstr "Convertir en privado este envío" -#: ../../Zotlabs/Widget/Activity_filter.php:165 -msgid "Filter by name" -msgstr "Filtrar por nombre" +#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 +msgid "Calendar entries imported." +msgstr "Entradas de calendario importadas." -#: ../../Zotlabs/Widget/Activity_filter.php:180 -msgid "Remove active filter" -msgstr "Eliminar el filtro activo" +#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 +msgid "No calendar entries found." +msgstr "No se han encontrado entradas de calendario." -#: ../../Zotlabs/Widget/Activity_filter.php:196 -msgid "Stream Filters" -msgstr "Filtros del stream" +#: ../../Zotlabs/Module/Cdav.php:870 +msgid "INVALID EVENT DISMISSED!" +msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" -#: ../../Zotlabs/Widget/Follow.php:22 -#, php-format -msgid "You have %1$.0f of %2$.0f allowed connections." -msgstr "Tiene %1$.0f de %2$.0f conexiones permitidas." +#: ../../Zotlabs/Module/Cdav.php:871 +msgid "Summary: " +msgstr "Resumen: " -#: ../../Zotlabs/Widget/Follow.php:29 -msgid "Add New Connection" -msgstr "Añadir nueva conexión" +#: ../../Zotlabs/Module/Cdav.php:872 +msgid "Date: " +msgstr "Fecha: " -#: ../../Zotlabs/Widget/Follow.php:30 -msgid "Enter channel address" -msgstr "Dirección del canal" +#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 +msgid "Reason: " +msgstr "Razón: " -#: ../../Zotlabs/Widget/Follow.php:31 -msgid "Examples: bob@example.com, https://example.com/barbara" -msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen" +#: ../../Zotlabs/Module/Cdav.php:878 +msgid "INVALID CARD DISMISSED!" +msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" -#: ../../Zotlabs/Widget/Archive.php:43 -msgid "Archives" -msgstr "Hemeroteca" +#: ../../Zotlabs/Module/Cdav.php:879 +msgid "Name: " +msgstr "Nombre: " -#: ../../Zotlabs/Widget/Conversations.php:17 -msgid "Received Messages" -msgstr "Mensajes recibidos" +#: ../../Zotlabs/Module/Cdav.php:899 +msgid "CardDAV App" +msgstr "App CarDav" -#: ../../Zotlabs/Widget/Conversations.php:21 -msgid "Sent Messages" -msgstr "Enviar mensajes" +#: ../../Zotlabs/Module/Cdav.php:900 +msgid "CalDAV capable addressbook" +msgstr "Libreta de direcciones compatible con CalDav" -#: ../../Zotlabs/Widget/Conversations.php:25 -msgid "Conversations" -msgstr "Conversaciones" +#: ../../Zotlabs/Module/Cdav.php:1032 ../../Zotlabs/Module/Events.php:468 +msgid "Event title" +msgstr "Título del evento" -#: ../../Zotlabs/Widget/Conversations.php:37 -msgid "No messages." -msgstr "Sin mensajes." +#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:474 +msgid "Start date and time" +msgstr "Fecha y hora de comienzo" -#: ../../Zotlabs/Widget/Conversations.php:57 -msgid "Delete conversation" -msgstr "Eliminar conversación" +#: ../../Zotlabs/Module/Cdav.php:1034 +msgid "End date and time" +msgstr "Fecha y hora de finalización" + +#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:497 +msgid "Timezone:" +msgstr "Zona horaria: " -#: ../../Zotlabs/Widget/Chatroom_members.php:11 -msgid "Chat Members" -msgstr "Miembros del chat" +#: ../../Zotlabs/Module/Cdav.php:1058 ../../Zotlabs/Module/Events.php:697 +#: ../../Zotlabs/Module/Events.php:706 ../../Zotlabs/Module/Cal.php:205 +#: ../../Zotlabs/Module/Photos.php:944 +msgid "Previous" +msgstr "Anterior" -#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 -msgid "photo/image" -msgstr "foto/imagen" +#: ../../Zotlabs/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:708 +#: ../../Zotlabs/Module/Cal.php:207 +msgid "Today" +msgstr "Hoy" -#: ../../Zotlabs/Widget/Savedsearch.php:75 -msgid "Remove term" -msgstr "Eliminar término" +#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:703 +msgid "Month" +msgstr "Mes" -#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:303 -msgid "Saved Searches" -msgstr "Búsquedas guardadas" +#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:704 +msgid "Week" +msgstr "Semana" -#: ../../Zotlabs/Widget/Wiki_pages.php:34 -#: ../../Zotlabs/Widget/Wiki_pages.php:91 -msgid "Add new page" -msgstr "Añadir una nueva página" +#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:705 +msgid "Day" +msgstr "Día" -#: ../../Zotlabs/Widget/Wiki_pages.php:85 -msgid "Wiki Pages" -msgstr "Páginas del wiki" +#: ../../Zotlabs/Module/Cdav.php:1064 +msgid "List month" +msgstr "Lista mensual" -#: ../../Zotlabs/Widget/Wiki_pages.php:96 -msgid "Page name" -msgstr "Nombre de la página" +#: ../../Zotlabs/Module/Cdav.php:1065 +msgid "List week" +msgstr "Lista semanal" -#: ../../Zotlabs/Widget/Affinity.php:54 -msgid "Refresh" -msgstr "Recargar" +#: ../../Zotlabs/Module/Cdav.php:1066 +msgid "List day" +msgstr "Lista diaria" -#: ../../Zotlabs/Widget/Tasklist.php:23 -msgid "Tasks" -msgstr "Tareas" +#: ../../Zotlabs/Module/Cdav.php:1074 +msgid "More" +msgstr "Más" -#: ../../Zotlabs/Widget/Suggestions.php:53 -msgid "Suggestions" -msgstr "Sugerencias" +#: ../../Zotlabs/Module/Cdav.php:1075 +msgid "Less" +msgstr "Menos" -#: ../../Zotlabs/Widget/Suggestions.php:54 -msgid "See more..." -msgstr "Ver más..." +#: ../../Zotlabs/Module/Cdav.php:1077 +msgid "Select calendar" +msgstr "Seleccionar un calendario" -#: ../../Zotlabs/Widget/Activity_order.php:90 -msgid "Commented Date" -msgstr "Fecha de los comentarios" +#: ../../Zotlabs/Module/Cdav.php:1080 +msgid "Delete all" +msgstr "Eliminar todos" -#: ../../Zotlabs/Widget/Activity_order.php:94 -msgid "Order by last commented date" -msgstr "Ordenar por la última fecha de los comentarios" +#: ../../Zotlabs/Module/Cdav.php:1083 +msgid "Sorry! Editing of recurrent events is not yet implemented." +msgstr "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado." -#: ../../Zotlabs/Widget/Activity_order.php:97 -msgid "Posted Date" -msgstr "Fecha de publicación" +#: ../../Zotlabs/Module/Cdav.php:1374 ../../Zotlabs/Module/Connedit.php:924 +msgid "Organisation" +msgstr "Organización" -#: ../../Zotlabs/Widget/Activity_order.php:101 -msgid "Order by last posted date" -msgstr "Ordenar por la ultima fecha de publicación" +#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Connedit.php:926 +msgid "Phone" +msgstr "Teléfono" -#: ../../Zotlabs/Widget/Activity_order.php:104 -msgid "Date Unthreaded" -msgstr "Sin enhebrar por fecha" +#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Connedit.php:928 +msgid "Instant messenger" +msgstr "Mensajería instantánea" -#: ../../Zotlabs/Widget/Activity_order.php:108 -msgid "Order unthreaded by date" -msgstr "Ordenar sin enhebrar por fecha" +#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Connedit.php:929 +msgid "Website" +msgstr "Sitio web" -#: ../../Zotlabs/Widget/Activity_order.php:123 -msgid "Stream Order" -msgstr "Orden del stream" +#: ../../Zotlabs/Module/Cdav.php:1380 +#: ../../Zotlabs/Module/Admin/Channels.php:160 +#: ../../Zotlabs/Module/Profiles.php:502 ../../Zotlabs/Module/Profiles.php:790 +#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Locs.php:118 +msgid "Address" +msgstr "Dirección" -#: ../../Zotlabs/Widget/Cover_photo.php:65 -msgid "Click to show more" -msgstr "Hacer clic para ver más" +#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Connedit.php:931 +msgid "Note" +msgstr "Nota" -#: ../../Zotlabs/Widget/Tagcloud.php:22 ../../include/taxonomy.php:320 -#: ../../include/taxonomy.php:449 ../../include/taxonomy.php:470 -msgid "Tags" -msgstr "Etiquetas" +#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Connedit.php:937 +msgid "Add Field" +msgstr "Añadir un campo" -#: ../../Zotlabs/Widget/Appstore.php:11 -msgid "App Collections" -msgstr "Colección de aplicaciones" +#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:942 +msgid "P.O. Box" +msgstr "Buzón de correos" -#: ../../Zotlabs/Widget/Appstore.php:13 -msgid "Installed apps" -msgstr "Aplicaciones instaladas" +#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Connedit.php:943 +msgid "Additional" +msgstr "Adicional" -#: ../../Zotlabs/Widget/Newmember.php:31 -msgid "Profile Creation" -msgstr "Creación de perfiles" +#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:944 +msgid "Street" +msgstr "Calle" -#: ../../Zotlabs/Widget/Newmember.php:33 -msgid "Upload profile photo" -msgstr "Cargar la foto del perfil" +#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:945 +msgid "Locality" +msgstr "Localidad" -#: ../../Zotlabs/Widget/Newmember.php:34 -msgid "Upload cover photo" -msgstr "Cargar la foto de portada del perfil" +#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:946 +msgid "Region" +msgstr "Provincia, región o estado" -#: ../../Zotlabs/Widget/Newmember.php:35 ../../include/nav.php:115 -msgid "Edit your profile" -msgstr "Editar su perfil" +#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:947 +msgid "ZIP Code" +msgstr "Código postal" -#: ../../Zotlabs/Widget/Newmember.php:38 -msgid "Find and Connect with others" -msgstr "Encontrar y conectarse con otros" +#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Connedit.php:948 +msgid "Country" +msgstr "País" -#: ../../Zotlabs/Widget/Newmember.php:40 -msgid "View the directory" -msgstr "Ver el directorio" +#: ../../Zotlabs/Module/Cdav.php:1445 +msgid "Default Calendar" +msgstr "Calendario por defecto" -#: ../../Zotlabs/Widget/Newmember.php:42 -msgid "Manage your connections" -msgstr "Gestionar sus conexiones" +#: ../../Zotlabs/Module/Cdav.php:1456 +msgid "Default Addressbook" +msgstr "Agenda de direcciones por defecto" -#: ../../Zotlabs/Widget/Newmember.php:45 -msgid "Communicate" -msgstr "Comunicarse" +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." +msgstr "La información privada remota no está disponible." -#: ../../Zotlabs/Widget/Newmember.php:47 -msgid "View your channel homepage" -msgstr "Ver la página principal de su canal" +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" +msgstr "Visible para:" -#: ../../Zotlabs/Widget/Newmember.php:48 -msgid "View your network stream" -msgstr "Ver el \"stream\" de su red" +#: ../../Zotlabs/Module/Item.php:382 +msgid "Unable to locate original post." +msgstr "No ha sido posible encontrar la entrada original." -#: ../../Zotlabs/Widget/Newmember.php:54 -msgid "Documentation" -msgstr "Documentación" +#: ../../Zotlabs/Module/Item.php:668 +msgid "Empty post discarded." +msgstr "La entrada vacía ha sido desechada." -#: ../../Zotlabs/Widget/Newmember.php:57 -msgid "Missing Features?" -msgstr "¿Faltan Características?" +#: ../../Zotlabs/Module/Item.php:1077 +msgid "Duplicate post suppressed." +msgstr "Se ha suprimido la entrada duplicada." -#: ../../Zotlabs/Widget/Newmember.php:59 -msgid "Pin apps to navigation bar" -msgstr "Fijar apps a la barra de navegación" +#: ../../Zotlabs/Module/Item.php:1222 +msgid "System error. Post not saved." +msgstr "Error del sistema. La entrada no se ha podido salvar." -#: ../../Zotlabs/Widget/Newmember.php:60 -msgid "Install more apps" -msgstr "Instalar más apps" +#: ../../Zotlabs/Module/Item.php:1252 +msgid "Your comment is awaiting approval." +msgstr "Su comentario está pendiente de aprobación." -#: ../../Zotlabs/Widget/Newmember.php:71 -msgid "View public stream" -msgstr "Ver el \"stream\" público" +#: ../../Zotlabs/Module/Item.php:1369 +msgid "Unable to obtain post information from database." +msgstr "No ha sido posible obtener información de la entrada en la base de datos." -#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60 -msgid "Member registrations waiting for confirmation" -msgstr "Inscripciones de nuevos miembros pendientes de aprobación" +#: ../../Zotlabs/Module/Item.php:1376 +#, php-format +msgid "You have reached your limit of %1$.0f top level posts." +msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal." -#: ../../Zotlabs/Widget/Admin.php:29 -msgid "Inspect queue" -msgstr "Examinar la cola" +#: ../../Zotlabs/Module/Item.php:1383 +#, php-format +msgid "You have reached your limit of %1$.0f webpages." +msgstr "Ha alcanzado su límite de %1$.0f páginas web." -#: ../../Zotlabs/Widget/Admin.php:31 -msgid "DB updates" -msgstr "Actualizaciones de la base de datos" +#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:209 +msgid "Menu not found." +msgstr "Menú no encontrado" -#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:192 -msgid "Admin" -msgstr "Administrador" +#: ../../Zotlabs/Module/Mitem.php:63 +msgid "Unable to create element." +msgstr "No se puede crear el elemento." -#: ../../Zotlabs/Widget/Admin.php:56 -msgid "Addon Features" -msgstr "Características del addon" +#: ../../Zotlabs/Module/Mitem.php:87 +msgid "Unable to update menu element." +msgstr "No es posible actualizar el elemento del menú." -#: ../../Zotlabs/Widget/Settings_menu.php:32 -msgid "Account settings" -msgstr "Configuración de la cuenta" +#: ../../Zotlabs/Module/Mitem.php:103 +msgid "Unable to add menu element." +msgstr "No es posible añadir el elemento al menú" -#: ../../Zotlabs/Widget/Settings_menu.php:38 -msgid "Channel settings" -msgstr "Configuración del canal" +#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Xchan.php:41 +#: ../../Zotlabs/Module/Menu.php:232 +msgid "Not found." +msgstr "No encontrado." -#: ../../Zotlabs/Widget/Settings_menu.php:46 -msgid "Display settings" -msgstr "Ajustes de visualización" +#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 +msgid "Menu Item Permissions" +msgstr "Permisos del elemento del menú" -#: ../../Zotlabs/Widget/Settings_menu.php:53 -msgid "Manage locations" -msgstr "Gestión de ubicaciones (clones) del canal" +#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247 +#: ../../Zotlabs/Module/Settings/Channel.php:526 +msgid "(click to open/close)" +msgstr "(pulsar para abrir o cerrar)" -#: ../../Zotlabs/Widget/Bookmarkedchats.php:24 -msgid "Bookmarked Chatrooms" -msgstr "Salas de chat preferidas" +#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 +msgid "Link Name" +msgstr "Nombre del enlace" -#: ../../Zotlabs/Widget/Notifications.php:16 -msgid "New Network Activity" -msgstr "Nueva actividad en la red" +#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 +msgid "Link or Submenu Target" +msgstr "Destino del enlace o submenú" -#: ../../Zotlabs/Widget/Notifications.php:17 -msgid "New Network Activity Notifications" -msgstr "Avisos de nueva actividad en la red" +#: ../../Zotlabs/Module/Mitem.php:175 +msgid "Enter URL of the link or select a menu name to create a submenu" +msgstr "Introducir la dirección del enlace o seleccionar el nombre de un submenú" -#: ../../Zotlabs/Widget/Notifications.php:20 -msgid "View your network activity" -msgstr "Ver su actividad en la red" +#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256 +msgid "Use magic-auth if available" +msgstr "Usar la autenticación mágica si está disponible" -#: ../../Zotlabs/Widget/Notifications.php:23 -msgid "Mark all notifications read" -msgstr "Marcar todas las notificaciones como leídas" +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257 +msgid "Open link in new window" +msgstr "Abrir el enlace en una nueva ventana" -#: ../../Zotlabs/Widget/Notifications.php:26 -#: ../../Zotlabs/Widget/Notifications.php:45 -#: ../../Zotlabs/Widget/Notifications.php:152 -msgid "Show new posts only" -msgstr "Mostrar solo las entradas nuevas" +#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 +msgid "Order in list" +msgstr "Orden en la lista" -#: ../../Zotlabs/Widget/Notifications.php:27 -#: ../../Zotlabs/Widget/Notifications.php:46 -#: ../../Zotlabs/Widget/Notifications.php:122 -#: ../../Zotlabs/Widget/Notifications.php:153 -msgid "Filter by name or address" -msgstr "Filtrar por nombre o dirección" +#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 +msgid "Higher numbers will sink to bottom of listing" +msgstr "Los números más altos irán al final de la lista" -#: ../../Zotlabs/Widget/Notifications.php:35 -msgid "New Home Activity" -msgstr "Nueva actividad en su página principal" +#: ../../Zotlabs/Module/Mitem.php:179 +msgid "Submit and finish" +msgstr "Enviar y terminar" -#: ../../Zotlabs/Widget/Notifications.php:36 -msgid "New Home Activity Notifications" -msgstr "Avisos de nueva actividad en su página principal" +#: ../../Zotlabs/Module/Mitem.php:180 +msgid "Submit and continue" +msgstr "Enviar y continuar" -#: ../../Zotlabs/Widget/Notifications.php:39 -msgid "View your home activity" -msgstr "Ver su actividad en su página principal" +#: ../../Zotlabs/Module/Mitem.php:189 +msgid "Menu:" +msgstr "Menú:" -#: ../../Zotlabs/Widget/Notifications.php:42 -#: ../../Zotlabs/Widget/Notifications.php:149 -msgid "Mark all notifications seen" -msgstr "Marcar todas las notificaciones como vistas" +#: ../../Zotlabs/Module/Mitem.php:192 +msgid "Link Target" +msgstr "Destino del enlace" -#: ../../Zotlabs/Widget/Notifications.php:54 -msgid "New Mails" -msgstr "Nuevos mensajes de correo" +#: ../../Zotlabs/Module/Mitem.php:195 +msgid "Edit menu" +msgstr "Editar menú" -#: ../../Zotlabs/Widget/Notifications.php:55 -msgid "New Mails Notifications" -msgstr "Avisos de nuevos mensajes de correo" +#: ../../Zotlabs/Module/Mitem.php:198 +msgid "Edit element" +msgstr "Editar el elemento" -#: ../../Zotlabs/Widget/Notifications.php:58 -msgid "View your private mails" -msgstr "Ver sus correos privados" +#: ../../Zotlabs/Module/Mitem.php:199 +msgid "Drop element" +msgstr "Eliminar el elemento" -#: ../../Zotlabs/Widget/Notifications.php:61 -msgid "Mark all messages seen" -msgstr "Marcar todos los mensajes como vistos" +#: ../../Zotlabs/Module/Mitem.php:200 +msgid "New element" +msgstr "Nuevo elemento" -#: ../../Zotlabs/Widget/Notifications.php:69 -msgid "New Events" -msgstr "Eventos nuevos" +#: ../../Zotlabs/Module/Mitem.php:201 +msgid "Edit this menu container" +msgstr "Modificar el contenedor del menú" -#: ../../Zotlabs/Widget/Notifications.php:70 -msgid "New Events Notifications" -msgstr "Avisos de nuevos eventos" +#: ../../Zotlabs/Module/Mitem.php:202 +msgid "Add menu element" +msgstr "Añadir un elemento al menú" -#: ../../Zotlabs/Widget/Notifications.php:73 -msgid "View events" -msgstr "Ver los eventos" +#: ../../Zotlabs/Module/Mitem.php:203 +msgid "Delete this menu item" +msgstr "Eliminar este elemento del menú" -#: ../../Zotlabs/Widget/Notifications.php:76 -msgid "Mark all events seen" -msgstr "Marcar todos los eventos como leidos" +#: ../../Zotlabs/Module/Mitem.php:204 +msgid "Edit this menu item" +msgstr "Modificar este elemento del menú" -#: ../../Zotlabs/Widget/Notifications.php:85 -msgid "New Connections Notifications" -msgstr "Avisos de nuevas conexiones" +#: ../../Zotlabs/Module/Mitem.php:222 +msgid "Menu item not found." +msgstr "Este elemento del menú no se ha encontrado" -#: ../../Zotlabs/Widget/Notifications.php:88 -msgid "View all connections" -msgstr "Ver todas las conexiones" +#: ../../Zotlabs/Module/Mitem.php:235 +msgid "Menu item deleted." +msgstr "Este elemento del menú ha sido borrado" -#: ../../Zotlabs/Widget/Notifications.php:96 -msgid "New Files" -msgstr "Ficheros nuevos" +#: ../../Zotlabs/Module/Mitem.php:237 +msgid "Menu item could not be deleted." +msgstr "Este elemento del menú no puede ser borrado." -#: ../../Zotlabs/Widget/Notifications.php:97 -msgid "New Files Notifications" -msgstr "Avisos de nuevos ficheros" +#: ../../Zotlabs/Module/Mitem.php:244 +msgid "Edit Menu Element" +msgstr "Editar elemento del menú" -#: ../../Zotlabs/Widget/Notifications.php:104 -#: ../../Zotlabs/Widget/Notifications.php:105 -msgid "Notices" -msgstr "Avisos" +#: ../../Zotlabs/Module/Mitem.php:254 +msgid "Link text" +msgstr "Texto del enlace" -#: ../../Zotlabs/Widget/Notifications.php:108 -msgid "View all notices" -msgstr "Ver todos los avisos" +#: ../../Zotlabs/Module/Profile.php:93 +msgid "vcard" +msgstr "vcard" -#: ../../Zotlabs/Widget/Notifications.php:111 -msgid "Mark all notices seen" -msgstr "Marcar como leídos todos los avisos" +#: ../../Zotlabs/Module/Sharedwithme.php:103 +msgid "Files: shared with me" +msgstr "Ficheros: compartidos conmigo" -#: ../../Zotlabs/Widget/Notifications.php:132 -msgid "New Registrations" -msgstr "Registros nuevos" +#: ../../Zotlabs/Module/Sharedwithme.php:105 +msgid "NEW" +msgstr "NUEVO" -#: ../../Zotlabs/Widget/Notifications.php:133 -msgid "New Registrations Notifications" -msgstr "Notificaciones de nuevos registros" +#: ../../Zotlabs/Module/Sharedwithme.php:107 +#: ../../Zotlabs/Storage/Browser.php:294 +msgid "Last Modified" +msgstr "Última modificación" -#: ../../Zotlabs/Widget/Notifications.php:143 -msgid "Public Stream Notifications" -msgstr "Avisos del \"stream\" público" +#: ../../Zotlabs/Module/Sharedwithme.php:108 +msgid "Remove all files" +msgstr "Eliminar todos los ficheros" -#: ../../Zotlabs/Widget/Notifications.php:146 -msgid "View the public stream" -msgstr "Ver el \"stream\" público" +#: ../../Zotlabs/Module/Sharedwithme.php:109 +msgid "Remove this file" +msgstr "Eliminar este fichero" -#: ../../Zotlabs/Widget/Notifications.php:161 -msgid "Sorry, you have got no notifications at the moment" -msgstr "Lo sentimos, por el momento no ha recibido ninguna notificación" +#: ../../Zotlabs/Module/Help.php:23 +msgid "Documentation Search" +msgstr "Búsqueda de Documentación" -#: ../../util/nconfig.php:34 -msgid "Source channel not found." -msgstr "No se ha encontrado el canal de origen." +#: ../../Zotlabs/Module/Help.php:82 +msgid "Administrators" +msgstr "Administradores" -#: ../../widget/Netselect/Netselect.php:24 -msgid "Network/Protocol" -msgstr "Red / Protocolo" +#: ../../Zotlabs/Module/Help.php:83 +msgid "Developers" +msgstr "Desarrolladores" -#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1735 -msgid "Zot" -msgstr "Zot" +#: ../../Zotlabs/Module/Help.php:84 +msgid "Tutorials" +msgstr "Tutoriales" -#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1733 -msgid "Diaspora" -msgstr "Diaspora" +#: ../../Zotlabs/Module/Help.php:95 +msgid "$Projectname Documentation" +msgstr "Documentación de $Projectname" -#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1726 -#: ../../include/network.php:1727 -msgid "Friendica" -msgstr "Friendica" +#: ../../Zotlabs/Module/Help.php:96 +msgid "Contents" +msgstr "Contenidos" -#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1728 -msgid "OStatus" -msgstr "OStatus" +#: ../../Zotlabs/Module/Webpages.php:48 +msgid "Webpages App" +msgstr "App de Páginas web" -#: ../../boot.php:1655 -msgid "Create an account to access services and applications" -msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" +#: ../../Zotlabs/Module/Webpages.php:49 +msgid "Provide managed web pages on your channel" +msgstr "Proveer páginas web gestionadas en su canal" -#: ../../boot.php:1675 ../../include/nav.php:107 ../../include/nav.php:136 -#: ../../include/nav.php:155 -msgid "Logout" -msgstr "Finalizar sesión" +#: ../../Zotlabs/Module/Webpages.php:69 +msgid "Import Webpage Elements" +msgstr "Importar elementos de una página web" -#: ../../boot.php:1679 -msgid "Login/Email" -msgstr "Inicio de sesión / Correo electrónico" +#: ../../Zotlabs/Module/Webpages.php:70 +msgid "Import selected" +msgstr "Importar elementos seleccionados" -#: ../../boot.php:1680 -msgid "Password" -msgstr "Contraseña" +#: ../../Zotlabs/Module/Webpages.php:93 +msgid "Export Webpage Elements" +msgstr "Exportar elementos de una página web" -#: ../../boot.php:1681 -msgid "Remember me" -msgstr "Recordarme" +#: ../../Zotlabs/Module/Webpages.php:94 +msgid "Export selected" +msgstr "Exportar los elementos seleccionados" -#: ../../boot.php:1684 -msgid "Forgot your password?" -msgstr "¿Olvidó su contraseña?" +#: ../../Zotlabs/Module/Webpages.php:263 +msgid "Actions" +msgstr "Acciones" -#: ../../boot.php:2480 -#, php-format -msgid "[$Projectname] Website SSL error for %s" -msgstr "[$Projectname] Error SSL del sitio web en %s" +#: ../../Zotlabs/Module/Webpages.php:264 +msgid "Page Link" +msgstr "Vínculo de la página" -#: ../../boot.php:2485 -msgid "Website SSL certificate is not valid. Please correct." -msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema." +#: ../../Zotlabs/Module/Webpages.php:265 +msgid "Page Title" +msgstr "Título de página" -#: ../../boot.php:2601 -#, php-format -msgid "[$Projectname] Cron tasks not running on %s" -msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s" +#: ../../Zotlabs/Module/Webpages.php:266 ../../Zotlabs/Module/Blocks.php:157 +#: ../../Zotlabs/Module/Menu.php:178 ../../Zotlabs/Module/Layouts.php:191 +msgid "Created" +msgstr "Creado" -#: ../../boot.php:2606 -msgid "Cron/Scheduled tasks not running." -msgstr "Las tareas del Planificador/Cron no están funcionando." +#: ../../Zotlabs/Module/Webpages.php:267 ../../Zotlabs/Module/Blocks.php:158 +#: ../../Zotlabs/Module/Menu.php:179 ../../Zotlabs/Module/Layouts.php:192 +msgid "Edited" +msgstr "Editado" -#: ../../boot.php:2607 ../../include/datetime.php:238 -msgid "never" -msgstr "nunca" +#: ../../Zotlabs/Module/Webpages.php:295 +msgid "Invalid file type." +msgstr "Tipo de fichero no válido." -#: ../../store/[data]/smarty3/compiled/a0a1289f91f53b2c12e4e0b45ffe8291540ba895_0.file.cover_photo.tpl.php:127 -msgid "Cover Photo" -msgstr "Imagen de portada del perfil" +#: ../../Zotlabs/Module/Webpages.php:307 +msgid "Error opening zip file" +msgstr "Error al abrir el fichero comprimido zip" -#: ../../view/theme/redbasic_c/php/config.php:16 -#: ../../view/theme/redbasic_c/php/config.php:19 -#: ../../view/theme/redbasic/php/config.php:16 -#: ../../view/theme/redbasic/php/config.php:19 -msgid "Focus (Hubzilla default)" -msgstr "Focus (predefinido)" +#: ../../Zotlabs/Module/Webpages.php:318 +msgid "Invalid folder path." +msgstr "La ruta de la carpeta no es válida." -#: ../../view/theme/redbasic_c/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:98 -msgid "Theme settings" -msgstr "Ajustes del tema" +#: ../../Zotlabs/Module/Webpages.php:345 +msgid "No webpage elements detected." +msgstr "No se han detectado elementos de ninguna página web." -#: ../../view/theme/redbasic_c/php/config.php:100 -#: ../../view/theme/redbasic/php/config.php:99 -msgid "Narrow navbar" -msgstr "Estrechar la barra de navegación" +#: ../../Zotlabs/Module/Webpages.php:420 +msgid "Import complete." +msgstr "Importación completada." -#: ../../view/theme/redbasic_c/php/config.php:101 -#: ../../view/theme/redbasic/php/config.php:100 -msgid "Navigation bar background color" -msgstr "Color de fondo de la barra de navegación" +#: ../../Zotlabs/Module/Filestorage.php:103 +msgid "File not found." +msgstr "Fichero no encontrado." -#: ../../view/theme/redbasic_c/php/config.php:102 -#: ../../view/theme/redbasic/php/config.php:101 -msgid "Navigation bar icon color " -msgstr "Color del icono de la barra de navegación" +#: ../../Zotlabs/Module/Filestorage.php:152 +msgid "Permission Denied." +msgstr "Permiso denegado" -#: ../../view/theme/redbasic_c/php/config.php:103 -#: ../../view/theme/redbasic/php/config.php:102 -msgid "Navigation bar active icon color " -msgstr "Color del icono activo de la barra de navegación" +#: ../../Zotlabs/Module/Filestorage.php:185 +msgid "Edit file permissions" +msgstr "Modificar los permisos del fichero" -#: ../../view/theme/redbasic_c/php/config.php:104 -#: ../../view/theme/redbasic/php/config.php:103 -msgid "Link color" -msgstr "Color del enlace" +#: ../../Zotlabs/Module/Filestorage.php:198 +msgid "Include all files and sub folders" +msgstr "Incluir todos los ficheros y subcarpetas" -#: ../../view/theme/redbasic_c/php/config.php:105 -#: ../../view/theme/redbasic/php/config.php:104 -msgid "Set font-color for banner" -msgstr "Ajustar el color del tipo de letra para el \"banner\"" +#: ../../Zotlabs/Module/Filestorage.php:199 +msgid "Return to file list" +msgstr "Volver a la lista de ficheros" -#: ../../view/theme/redbasic_c/php/config.php:106 -#: ../../view/theme/redbasic/php/config.php:105 -msgid "Set the background color" -msgstr "Ajustar el color de fondo" +#: ../../Zotlabs/Module/Filestorage.php:201 +msgid "Copy/paste this code to attach file to a post" +msgstr "Copiar/pegar este código para adjuntar el fichero al envío" -#: ../../view/theme/redbasic_c/php/config.php:107 -#: ../../view/theme/redbasic/php/config.php:106 -msgid "Set the background image" -msgstr "Ajustar la imagen de fondo" +#: ../../Zotlabs/Module/Filestorage.php:202 +msgid "Copy/paste this URL to link file from a web page" +msgstr "Copiar/pegar esta dirección para enlazar el fichero desde una página web" -#: ../../view/theme/redbasic_c/php/config.php:108 -#: ../../view/theme/redbasic/php/config.php:107 -msgid "Set the background color of items" -msgstr "Ajustar el color de los elementos de fondo" +#: ../../Zotlabs/Module/Filestorage.php:204 +msgid "Share this file" +msgstr "Compartir este fichero" -#: ../../view/theme/redbasic_c/php/config.php:109 -#: ../../view/theme/redbasic/php/config.php:108 -msgid "Set the background color of comments" -msgstr "Ajustar el color de fondo de los comentarios" +#: ../../Zotlabs/Module/Filestorage.php:205 +msgid "Show URL to this file" +msgstr "Mostrar la dirección de este fichero" -#: ../../view/theme/redbasic_c/php/config.php:110 -#: ../../view/theme/redbasic/php/config.php:109 -msgid "Set font-size for the entire application" -msgstr "Ajustar el tamaño de letra para toda la aplicación" +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Storage/Browser.php:411 +msgid "Show in your contacts shared folder" +msgstr "Mostrar en la carpeta compartida con sus contactos" -#: ../../view/theme/redbasic_c/php/config.php:110 -#: ../../view/theme/redbasic/php/config.php:109 -msgid "Examples: 1rem, 100%, 16px" -msgstr "Ejemplos: 1rem, 100%, 16px" +#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 +msgid "Tag removed" +msgstr "Etiqueta eliminada." -#: ../../view/theme/redbasic_c/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:110 -msgid "Set font-color for posts and comments" -msgstr "Establecer el color de la letra para publicaciones y comentarios" +#: ../../Zotlabs/Module/Tagrm.php:123 +msgid "Remove Item Tag" +msgstr "Eliminar etiqueta del elemento." -#: ../../view/theme/redbasic_c/php/config.php:112 -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Set radius of corners" -msgstr "Establecer el radio de curvatura de las esquinas" +#: ../../Zotlabs/Module/Tagrm.php:125 +msgid "Select a tag to remove: " +msgstr "Seleccionar una etiqueta para eliminar:" -#: ../../view/theme/redbasic_c/php/config.php:112 -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Example: 4px" -msgstr "Ejemplo: 4px" +#: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135 +msgid "Continue" +msgstr "Continuar" -#: ../../view/theme/redbasic_c/php/config.php:113 -#: ../../view/theme/redbasic/php/config.php:112 -msgid "Set shadow depth of photos" -msgstr "Ajustar la profundidad de sombras de las fotos" +#: ../../Zotlabs/Module/Connect.php:104 +msgid "Premium Channel App" +msgstr "App Canal premium" -#: ../../view/theme/redbasic_c/php/config.php:114 -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Set maximum width of content region in pixel" -msgstr "Ajustar la anchura máxima de la región de contenido, en pixels" +#: ../../Zotlabs/Module/Connect.php:105 +msgid "" +"Allows you to set restrictions and terms on those that connect with your " +"channel" +msgstr "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal" -#: ../../view/theme/redbasic_c/php/config.php:114 -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Leave empty for default width" -msgstr "Dejar en blanco para la anchura predeterminada" +#: ../../Zotlabs/Module/Connect.php:116 +msgid "Premium Channel Setup" +msgstr "Configuración del canal premium" -#: ../../view/theme/redbasic_c/php/config.php:115 -msgid "Left align page content" -msgstr "Alinear a la izquierda el contenido de la página" +#: ../../Zotlabs/Module/Connect.php:118 +msgid "Enable premium channel connection restrictions" +msgstr "Habilitar restricciones de conexión del canal premium" -#: ../../view/theme/redbasic_c/php/config.php:116 -#: ../../view/theme/redbasic/php/config.php:114 -msgid "Set size of conversation author photo" -msgstr "Ajustar el tamaño de la foto del autor de la conversación" +#: ../../Zotlabs/Module/Connect.php:119 +msgid "" +"Please enter your restrictions or conditions, such as paypal receipt, usage " +"guidelines, etc." +msgstr "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc." -#: ../../view/theme/redbasic_c/php/config.php:117 -#: ../../view/theme/redbasic/php/config.php:115 -msgid "Set size of followup author photos" -msgstr "Ajustar el tamaño de foto de los seguidores del autor" +#: ../../Zotlabs/Module/Connect.php:121 ../../Zotlabs/Module/Connect.php:141 +msgid "" +"This channel may require additional steps or acknowledgement of the " +"following conditions prior to connecting:" +msgstr "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:" -#: ../../view/theme/redbasic/php/config.php:116 -msgid "Show advanced settings" -msgstr "Mostrar ajustes avanzados" +#: ../../Zotlabs/Module/Connect.php:122 +msgid "" +"Potential connections will then see the following text before proceeding:" +msgstr "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:" -#: ../../addon/rendezvous/rendezvous.php:57 -msgid "Errors encountered deleting database table " -msgstr "Errores encontrados al eliminar la tabla de la base de datos" +#: ../../Zotlabs/Module/Connect.php:123 ../../Zotlabs/Module/Connect.php:144 +msgid "" +"By continuing, I certify that I have complied with any instructions provided" +" on this page." +msgstr "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página." -#: ../../addon/rendezvous/rendezvous.php:95 -#: ../../addon/twitter/twitter.php:612 -msgid "Submit Settings" -msgstr "Enviar los ajustes" +#: ../../Zotlabs/Module/Connect.php:132 +msgid "(No specific instructions have been provided by the channel owner.)" +msgstr "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)" -#: ../../addon/rendezvous/rendezvous.php:96 -msgid "Drop tables when uninstalling?" -msgstr "¿Eliminar tablas al desinstalar?" +#: ../../Zotlabs/Module/Connect.php:140 +msgid "Restricted or Premium Channel" +msgstr "Canal premium o restringido" -#: ../../addon/rendezvous/rendezvous.php:96 -msgid "" -"If checked, the Rendezvous database tables will be deleted when the plugin " -"is uninstalled." -msgstr "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin." +#: ../../Zotlabs/Module/Cloud.php:116 +msgid "Not found" +msgstr "No encontrado" -#: ../../addon/rendezvous/rendezvous.php:97 -msgid "Mapbox Access Token" -msgstr "Token de acceso de Mapbox" +#: ../../Zotlabs/Module/Cloud.php:122 +msgid "Please refresh page" +msgstr "Por favor, recargue la página" -#: ../../addon/rendezvous/rendezvous.php:97 -msgid "" -"If you enter a Mapbox access token, it will be used to retrieve map tiles " -"from Mapbox instead of the default OpenStreetMap tile server." -msgstr "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado." +#: ../../Zotlabs/Module/Cloud.php:125 +msgid "Unknown error" +msgstr "Error desconocido" -#: ../../addon/rendezvous/rendezvous.php:162 -msgid "Rendezvous" -msgstr "Rendezvous" +#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1671 +#, php-format +msgid "🔁 Repeated %1$s's %2$s" +msgstr "🔁 Repetidos %2$sde %1$s" -#: ../../addon/rendezvous/rendezvous.php:167 -msgid "" -"This identity has been deleted by another member due to inactivity. Please " -"press the \"New identity\" button or refresh the page to register a new " -"identity. You may use the same name." -msgstr "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre." +#: ../../Zotlabs/Module/Share.php:119 +msgid "Post repeated" +msgstr "Entrada repetida" -#: ../../addon/rendezvous/rendezvous.php:168 -msgid "Welcome to Rendezvous!" -msgstr "¡Bienvenido/a a Rendevous!" +#: ../../Zotlabs/Module/Acl.php:360 +msgid "network" +msgstr "red" -#: ../../addon/rendezvous/rendezvous.php:169 -msgid "" -"Enter your name to join this rendezvous. To begin sharing your location with" -" the other members, tap the GPS control. When your location is discovered, a" -" red dot will appear and others will be able to see you on the map." -msgstr "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa." +#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 +msgid "Item is not editable" +msgstr "El elemento no es editable" -#: ../../addon/rendezvous/rendezvous.php:171 -msgid "Let's meet here" -msgstr "Reunámonos aquí" +#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 +msgid "Edit post" +msgstr "Editar la entrada" -#: ../../addon/rendezvous/rendezvous.php:174 -msgid "New marker" -msgstr "Nuevo marcador" +#: ../../Zotlabs/Module/Tagger.php:48 +msgid "Post not found." +msgstr "Mensaje no encontrado." -#: ../../addon/rendezvous/rendezvous.php:175 -msgid "Edit marker" -msgstr "Editar un marcador" +#: ../../Zotlabs/Module/Tagger.php:119 +#, php-format +msgid "%1$s tagged %2$s's %3$s with %4$s" +msgstr "%1$s ha etiquetado %3$s de %2$s con %4$s" -#: ../../addon/rendezvous/rendezvous.php:176 -msgid "New identity" -msgstr "Nueva identidad" +#: ../../Zotlabs/Module/Authorize.php:17 +msgid "Unknown App" +msgstr "Aplicación desconocida" -#: ../../addon/rendezvous/rendezvous.php:177 -msgid "Delete marker" -msgstr "Eliminar un marcador" +#: ../../Zotlabs/Module/Authorize.php:29 +msgid "Authorize" +msgstr "Autorizar" -#: ../../addon/rendezvous/rendezvous.php:178 -msgid "Delete member" -msgstr "Eliminar un miembro" +#: ../../Zotlabs/Module/Authorize.php:30 +#, php-format +msgid "Do you authorize the app %s to access your channel data?" +msgstr "¿Autoriza a la aplicación %s a acceder a los datos de su canal?" -#: ../../addon/rendezvous/rendezvous.php:179 -msgid "Edit proximity alert" -msgstr "Editar alerta de proximidad" +#: ../../Zotlabs/Module/Authorize.php:32 +msgid "Allow" +msgstr "Permitir" -#: ../../addon/rendezvous/rendezvous.php:180 -msgid "" -"A proximity alert will be issued when this member is within a certain radius" -" of you.<br><br>Enter a radius in meters (0 to disable):" -msgstr "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):" +#: ../../Zotlabs/Module/Authorize.php:33 +#: ../../Zotlabs/Module/Admin/Accounts.php:174 +msgid "Deny" +msgstr "Rechazar" -#: ../../addon/rendezvous/rendezvous.php:180 -#: ../../addon/rendezvous/rendezvous.php:185 -msgid "distance" -msgstr "distancia" +#: ../../Zotlabs/Module/Admin/Queue.php:35 +msgid "Queue Statistics" +msgstr "Estadísticas de la cola" -#: ../../addon/rendezvous/rendezvous.php:181 -msgid "Proximity alert distance (meters)" -msgstr "Distancia (en metros) para la alerta de proximidad" +#: ../../Zotlabs/Module/Admin/Queue.php:36 +msgid "Total Entries" +msgstr "Total de entradas" -#: ../../addon/rendezvous/rendezvous.php:182 -#: ../../addon/rendezvous/rendezvous.php:184 -msgid "" -"A proximity alert will be issued when you are within a certain radius of the" -" marker location.<br><br>Enter a radius in meters (0 to disable):" -msgstr "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):" +#: ../../Zotlabs/Module/Admin/Queue.php:37 +msgid "Priority" +msgstr "Prioridad" -#: ../../addon/rendezvous/rendezvous.php:183 -msgid "Marker proximity alert" -msgstr "Marcador de alerta de proximidad" +#: ../../Zotlabs/Module/Admin/Queue.php:38 +msgid "Destination URL" +msgstr "Dirección de destino" -#: ../../addon/rendezvous/rendezvous.php:186 -msgid "Reminder note" -msgstr "Recordatorio" +#: ../../Zotlabs/Module/Admin/Queue.php:39 +msgid "Mark hub permanently offline" +msgstr "Marcar el servidor como permanentemente fuera de línea" -#: ../../addon/rendezvous/rendezvous.php:187 -msgid "" -"Enter a note to be displayed when you are within the specified proximity..." -msgstr "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..." +#: ../../Zotlabs/Module/Admin/Queue.php:40 +msgid "Empty queue for this hub" +msgstr "Vaciar la cola para este servidor" -#: ../../addon/rendezvous/rendezvous.php:199 -msgid "Add new rendezvous" -msgstr "Añadir una nueva cita" +#: ../../Zotlabs/Module/Admin/Queue.php:41 +msgid "Last known contact" +msgstr "Último contacto conocido" -#: ../../addon/rendezvous/rendezvous.php:200 -msgid "" -"Create a new rendezvous and share the access link with those you wish to " -"invite to the group. Those who open the link become members of the " -"rendezvous. They can view other member locations, add markers to the map, or" -" share their own locations with the group." -msgstr "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo." +#: ../../Zotlabs/Module/Admin/Themes.php:26 +msgid "Theme settings updated." +msgstr "Ajustes del tema actualizados." -#: ../../addon/rendezvous/rendezvous.php:232 -msgid "You have no rendezvous. Press the button above to create a rendezvous!" -msgstr "No tiene ninguna cita. ¡Presione el botón de arriba para crear una!" +#: ../../Zotlabs/Module/Admin/Themes.php:61 +msgid "No themes found." +msgstr "No se han encontrado temas." -#: ../../addon/skeleton/Mod_Skeleton.php:32 -msgid "Skeleton App" -msgstr "App Skeleton" +#: ../../Zotlabs/Module/Admin/Themes.php:95 +#: ../../Zotlabs/Module/Admin/Addons.php:311 +msgid "Disable" +msgstr "Desactivar" -#: ../../addon/skeleton/Mod_Skeleton.php:33 -msgid "A skeleton for addons, you can copy/paste" -msgstr "Skeleton para los addons, puede copiar/pegar" +#: ../../Zotlabs/Module/Admin/Themes.php:97 +#: ../../Zotlabs/Module/Admin/Addons.php:314 +msgid "Enable" +msgstr "Activar" -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "Some setting" -msgstr "Algunos ajustes" +#: ../../Zotlabs/Module/Admin/Themes.php:116 +msgid "Screenshot" +msgstr "Instantánea de pantalla" -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "A setting" -msgstr "Un ajuste" +#: ../../Zotlabs/Module/Admin/Themes.php:122 +#: ../../Zotlabs/Module/Admin/Themes.php:156 +#: ../../Zotlabs/Module/Admin/Security.php:92 +#: ../../Zotlabs/Module/Admin/Accounts.php:166 +#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Logs.php:82 +#: ../../Zotlabs/Module/Admin/Channels.php:145 +#: ../../Zotlabs/Module/Admin/Addons.php:342 +#: ../../Zotlabs/Module/Admin/Addons.php:440 +#: ../../Zotlabs/Module/Admin.php:138 +msgid "Administration" +msgstr "Administración" -#: ../../addon/skeleton/Mod_Skeleton.php:48 -msgid "Skeleton Settings" -msgstr "Ajustes de Skeleton" +#: ../../Zotlabs/Module/Admin/Themes.php:124 +#: ../../Zotlabs/Module/Admin/Addons.php:344 +msgid "Toggle" +msgstr "Cambiar" -#: ../../addon/gnusoc/Mod_Gnusoc.php:16 -msgid "" -"The GNU-Social protocol does not support location independence. Connections " -"you make within that network may be unreachable from alternate channel " -"locations." -msgstr "El protocolo de GNU-Social no admite la independencia de la ubicación. Las\n conexiones que realice dentro de esa red pueden ser inaccesibles desde \nubicaciones de canales alternativos." +#: ../../Zotlabs/Module/Admin/Themes.php:134 +#: ../../Zotlabs/Module/Admin/Addons.php:352 +msgid "Author: " +msgstr "Autor:" -#: ../../addon/gnusoc/Mod_Gnusoc.php:22 -msgid "GNU-Social Protocol App" -msgstr "App Protocolo GNU-Social" +#: ../../Zotlabs/Module/Admin/Themes.php:135 +#: ../../Zotlabs/Module/Admin/Addons.php:353 +msgid "Maintainer: " +msgstr "Mantenedor:" -#: ../../addon/gnusoc/Mod_Gnusoc.php:34 -msgid "GNU-Social Protocol" -msgstr "Protocolo GNU-Social" +#: ../../Zotlabs/Module/Admin/Themes.php:162 +msgid "[Experimental]" +msgstr "[Experimental]" -#: ../../addon/gnusoc/gnusoc.php:451 -msgid "Follow" -msgstr "Seguir" +#: ../../Zotlabs/Module/Admin/Themes.php:163 +msgid "[Unsupported]" +msgstr "[No soportado]" -#: ../../addon/gnusoc/gnusoc.php:454 +#: ../../Zotlabs/Module/Admin/Features.php:56 #, php-format -msgid "%1$s is now following %2$s" -msgstr "%1$s está siguiendo ahora a %2$s" +msgid "Lock feature %s" +msgstr "Bloquear la funcionalidad %s" -#: ../../addon/planets/Mod_Planets.php:20 -#: ../../addon/planets/Mod_Planets.php:23 -msgid "Random Planet App" -msgstr "App Random Planet" +#: ../../Zotlabs/Module/Admin/Features.php:64 +msgid "Manage Additional Features" +msgstr "Gestionar las funcionalidades" -#: ../../addon/planets/Mod_Planets.php:23 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 -#: ../../addon/nsabait/Mod_Nsabait.php:24 ../../addon/hsse/Mod_Hsse.php:26 -#: ../../addon/authchoose/Mod_Authchoose.php:33 -msgid "Installed" -msgstr "Instalado" +#: ../../Zotlabs/Module/Admin/Security.php:83 +msgid "" +"By default, unfiltered HTML is allowed in embedded media. This is inherently" +" insecure." +msgstr "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro." -#: ../../addon/planets/Mod_Planets.php:25 +#: ../../Zotlabs/Module/Admin/Security.php:86 msgid "" -"Set a random planet from the Star Wars Empire as your location when posting" -msgstr "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias como su ubicación cuando publique." +"The recommended setting is to only allow unfiltered HTML from the following " +"sites:" +msgstr "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: " -#: ../../addon/openclipatar/openclipatar.php:50 -#: ../../addon/openclipatar/openclipatar.php:128 -msgid "System defaults:" -msgstr "Valores predeterminados del sistema: " +#: ../../Zotlabs/Module/Admin/Security.php:87 +msgid "" +"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br" +" />https://vimeo.com/<br />https://soundcloud.com/<br />" +msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />" -#: ../../addon/openclipatar/openclipatar.php:54 -msgid "Preferred Clipart IDs" -msgstr "IDs de las imágenes clipart preferidas" +#: ../../Zotlabs/Module/Admin/Security.php:88 +msgid "" +"All other embedded content will be filtered, <strong>unless</strong> " +"embedded content from that site is explicitly blocked." +msgstr "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita." -#: ../../addon/openclipatar/openclipatar.php:54 -msgid "List of preferred clipart ids. These will be shown first." -msgstr "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar." +#: ../../Zotlabs/Module/Admin/Security.php:95 +msgid "Block public" +msgstr "Bloquear páginas públicas" -#: ../../addon/openclipatar/openclipatar.php:55 -msgid "Default Search Term" -msgstr "Términos de búsqueda predeterminados" +#: ../../Zotlabs/Module/Admin/Security.php:95 +msgid "" +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently authenticated." +msgstr "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado." -#: ../../addon/openclipatar/openclipatar.php:55 -msgid "The default search term. These will be shown second." -msgstr "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar." +#: ../../Zotlabs/Module/Admin/Security.php:96 +msgid "Provide a cloud root directory" +msgstr "Proporcionar un directorio raíz de la nube" -#: ../../addon/openclipatar/openclipatar.php:56 -msgid "Return After" -msgstr "Regresar después" +#: ../../Zotlabs/Module/Admin/Security.php:96 +msgid "" +"The cloud root directory lists all channel names which provide public files" +msgstr "El directorio raíz de la nube lista todos los nombres de canales que proporcionan archivos públicos" -#: ../../addon/openclipatar/openclipatar.php:56 -msgid "Page to load after image selection." -msgstr "Página para cargar después de la selección de imágenes." +#: ../../Zotlabs/Module/Admin/Security.php:97 +msgid "Show total disk space available to cloud uploads" +msgstr "Mostrar el espacio total disponible en el disco para las cargas en la nube" -#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1422 -#: ../../include/nav.php:115 -msgid "Edit Profile" -msgstr "Editar el perfil" +#: ../../Zotlabs/Module/Admin/Security.php:98 +msgid "Set \"Transport Security\" HTTP header" +msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP" -#: ../../addon/openclipatar/openclipatar.php:59 -msgid "Profile List" -msgstr "Lista de perfiles" +#: ../../Zotlabs/Module/Admin/Security.php:99 +msgid "Set \"Content Security Policy\" HTTP header" +msgstr "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP" + +#: ../../Zotlabs/Module/Admin/Security.php:100 +msgid "Allowed email domains" +msgstr "Se aceptan dominios de correo electrónico" -#: ../../addon/openclipatar/openclipatar.php:61 -msgid "Order of Preferred" -msgstr "Orden de preferencia" +#: ../../Zotlabs/Module/Admin/Security.php:100 +msgid "" +"Comma separated list of domains which are allowed in email addresses for " +"registrations to this site. Wildcards are accepted. Empty to allow any " +"domains" +msgstr "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. " -#: ../../addon/openclipatar/openclipatar.php:61 -msgid "Sort order of preferred clipart ids." -msgstr "Orden de clasificación de los identificadores de imágenes clipart preferidas." +#: ../../Zotlabs/Module/Admin/Security.php:101 +msgid "Not allowed email domains" +msgstr "No se permiten dominios de correo electrónico" -#: ../../addon/openclipatar/openclipatar.php:62 -#: ../../addon/openclipatar/openclipatar.php:68 -msgid "Newest first" -msgstr "Las más nuevas en primer lugar" +#: ../../Zotlabs/Module/Admin/Security.php:101 +msgid "" +"Comma separated list of domains which are not allowed in email addresses for" +" registrations to this site. Wildcards are accepted. Empty to allow any " +"domains, unless allowed domains have been defined." +msgstr "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado." -#: ../../addon/openclipatar/openclipatar.php:65 -msgid "As entered" -msgstr "Tal como se ingresaron" +#: ../../Zotlabs/Module/Admin/Security.php:102 +msgid "Allow communications only from these sites" +msgstr "Permitir la comunicación solo desde estos sitios" -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Order of other" -msgstr "Orden de los demás" +#: ../../Zotlabs/Module/Admin/Security.php:102 +msgid "" +"One site per line. Leave empty to allow communication from anywhere by " +"default" +msgstr "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Sort order of other clipart ids." -msgstr "Orden de clasificación de otros ids de imágenes clipart." +#: ../../Zotlabs/Module/Admin/Security.php:103 +msgid "Block communications from these sites" +msgstr "Bloquear la comunicación desde estos sitios" -#: ../../addon/openclipatar/openclipatar.php:69 -msgid "Most downloaded first" -msgstr "Las más descargadas en primer lugar" +#: ../../Zotlabs/Module/Admin/Security.php:104 +msgid "Allow communications only from these channels" +msgstr "Permitir la comunicación solo desde estos canales" -#: ../../addon/openclipatar/openclipatar.php:70 -msgid "Most liked first" -msgstr "Las más apreciadas en primer lugar" +#: ../../Zotlabs/Module/Admin/Security.php:104 +msgid "" +"One channel (hash) per line. Leave empty to allow from any channel by " +"default" +msgstr "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Preferred IDs Message" -msgstr "Mensaje de IDs preferido" +#: ../../Zotlabs/Module/Admin/Security.php:105 +msgid "Block communications from these channels" +msgstr "Bloquear la comunicación desde estos canales" -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Message to display above preferred results." -msgstr "Mensaje para mostrar sobre los resultados preferidos." +#: ../../Zotlabs/Module/Admin/Security.php:106 +msgid "Only allow embeds from secure (SSL) websites and links." +msgstr "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)." -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Uploaded by: " -msgstr "Subida por: " +#: ../../Zotlabs/Module/Admin/Security.php:107 +msgid "Allow unfiltered embedded HTML content only from these domains" +msgstr "Permitir contenido HTML sin filtrar sólo desde estos dominios " -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Drawn by: " -msgstr "Creada por: " +#: ../../Zotlabs/Module/Admin/Security.php:107 +msgid "One site per line. By default embedded content is filtered." +msgstr "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada." -#: ../../addon/openclipatar/openclipatar.php:182 -#: ../../addon/openclipatar/openclipatar.php:194 -msgid "Use this image" -msgstr "Usar esta imagen" +#: ../../Zotlabs/Module/Admin/Security.php:108 +msgid "Block embedded HTML from these domains" +msgstr "Bloquear contenido con HTML incorporado desde estos dominios" -#: ../../addon/openclipatar/openclipatar.php:192 -msgid "Or select from a free OpenClipart.org image:" -msgstr "O seleccionar una imagen gratuita de OpenClipart.org: " +#: ../../Zotlabs/Module/Admin/Accounts.php:37 +#, php-format +msgid "%s account blocked/unblocked" +msgid_plural "%s account blocked/unblocked" +msgstr[0] "%s cuenta bloqueada/desbloqueada" +msgstr[1] "%s cuenta bloqueada/desbloqueada" -#: ../../addon/openclipatar/openclipatar.php:195 -msgid "Search Term" -msgstr "Término de búsqueda" +#: ../../Zotlabs/Module/Admin/Accounts.php:44 +#, php-format +msgid "%s account deleted" +msgid_plural "%s accounts deleted" +msgstr[0] "%s cuentas eliminadas" +msgstr[1] "%s cuentas eliminadas" -#: ../../addon/openclipatar/openclipatar.php:232 -msgid "Unknown error. Please try again later." -msgstr "Error desconocido. Por favor, inténtelo otra vez." +#: ../../Zotlabs/Module/Admin/Accounts.php:80 +msgid "Account not found" +msgstr "Cuenta no encontrada" -#: ../../addon/openclipatar/openclipatar.php:308 -msgid "Profile photo updated successfully." -msgstr "Se ha actualizado con éxito la foto de perfil." +#: ../../Zotlabs/Module/Admin/Accounts.php:99 +#, php-format +msgid "Account '%s' blocked" +msgstr "La cuenta '%s' ha sido bloqueada" -#: ../../addon/adultphotoflag/adultphotoflag.php:24 -msgid "Flag Adult Photos" -msgstr "Indicador (\"flag\") de fotos de adultos" +#: ../../Zotlabs/Module/Admin/Accounts.php:107 +#, php-format +msgid "Account '%s' unblocked" +msgstr "La cuenta '%s' ha sido desbloqueada" -#: ../../addon/adultphotoflag/adultphotoflag.php:25 -msgid "" -"Provide photo edit option to hide inappropriate photos from default album " -"view" -msgstr "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada" +#: ../../Zotlabs/Module/Admin/Accounts.php:169 +#: ../../Zotlabs/Module/Admin/Channels.php:148 +msgid "select all" +msgstr "seleccionar todo" -#: ../../addon/totp/Settings/Totp.php:90 -msgid "" -"You haven't set a TOTP secret yet.\n" -"Please click the button below to generate one and register this site\n" -"with your preferred authenticator app." -msgstr "Aún no ha establecido un TOTP secret.\nPor favor, haga clic en el botón de abajo para generar uno y registrar este sitio\ncon su aplicación de autenticación preferida." +#: ../../Zotlabs/Module/Admin/Accounts.php:170 +msgid "Registrations waiting for confirm" +msgstr "Inscripciones en espera de confirmación" -#: ../../addon/totp/Settings/Totp.php:93 -msgid "Your TOTP secret is" -msgstr "Su TOTP secret es " +#: ../../Zotlabs/Module/Admin/Accounts.php:171 +msgid "Request date" +msgstr "Fecha de solicitud" -#: ../../addon/totp/Settings/Totp.php:94 -msgid "" -"Be sure to save it somewhere in case you lose or replace your mobile device.\n" -"Use your mobile device to scan the QR code below to register this site\n" -"with your preferred authenticator app." -msgstr "Asegúrese de guardarlo en algún lugar en caso de que pierda o reemplace su dispositivo móvil.\nUtilice su dispositivo móvil para escanear el código QR a continuación para registrar este sitio\ncon su aplicación de autenticación preferida." +#: ../../Zotlabs/Module/Admin/Accounts.php:172 +msgid "No registrations." +msgstr "Sin registros." -#: ../../addon/totp/Settings/Totp.php:99 -msgid "Test" -msgstr "Test" +#: ../../Zotlabs/Module/Admin/Accounts.php:176 +#: ../../Zotlabs/Module/Connedit.php:636 +msgid "Block" +msgstr "Bloquear" -#: ../../addon/totp/Settings/Totp.php:100 -msgid "Generate New Secret" -msgstr "Generar un nuevo Secret" +#: ../../Zotlabs/Module/Admin/Accounts.php:177 +#: ../../Zotlabs/Module/Connedit.php:636 +msgid "Unblock" +msgstr "Desbloquear" -#: ../../addon/totp/Settings/Totp.php:101 -msgid "Go" -msgstr "Ir" +#: ../../Zotlabs/Module/Admin/Accounts.php:182 +msgid "ID" +msgstr "ID" -#: ../../addon/totp/Settings/Totp.php:102 -msgid "Enter your password" -msgstr "Introduzca su contraseña" +#: ../../Zotlabs/Module/Admin/Accounts.php:184 +msgid "All Channels" +msgstr "Todos los canales" -#: ../../addon/totp/Settings/Totp.php:103 -msgid "enter TOTP code from your device" -msgstr "introduzca el código TOTP desde su dispositivo" +#: ../../Zotlabs/Module/Admin/Accounts.php:185 +msgid "Register date" +msgstr "Fecha de registro" -#: ../../addon/totp/Settings/Totp.php:104 -msgid "Pass!" -msgstr "¡Pase!" +#: ../../Zotlabs/Module/Admin/Accounts.php:186 +msgid "Last login" +msgstr "Último acceso" -#: ../../addon/totp/Settings/Totp.php:105 -msgid "Fail" -msgstr "Fallo" +#: ../../Zotlabs/Module/Admin/Accounts.php:187 +msgid "Expires" +msgstr "Caduca" -#: ../../addon/totp/Settings/Totp.php:106 -msgid "Incorrect password, try again." -msgstr "Contraseña incorrecta, inténtelo de nuevo." +#: ../../Zotlabs/Module/Admin/Accounts.php:188 +msgid "Service Class" +msgstr "Clase de servicio" -#: ../../addon/totp/Settings/Totp.php:107 -msgid "Record your new TOTP secret and rescan the QR code above." -msgstr "Registre su nuevo TOTP secret y vuelva a escanear el código QR de arriba" +#: ../../Zotlabs/Module/Admin/Accounts.php:190 +msgid "" +"Selected accounts will be deleted!\\n\\nEverything these accounts had posted" +" on this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?" -#: ../../addon/totp/Settings/Totp.php:115 -msgid "TOTP Settings" -msgstr "Ajustes de TOTP" +#: ../../Zotlabs/Module/Admin/Accounts.php:191 +msgid "" +"The account {0} will be deleted!\\n\\nEverything this account has posted on " +"this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?" -#: ../../addon/totp/Mod_Totp.php:23 -msgid "TOTP Two-Step Verification" -msgstr "Verificación en dos pasos de TOTP" +#: ../../Zotlabs/Module/Admin/Site.php:161 +msgid "Site settings updated." +msgstr "Ajustes del sitio actualizados." -#: ../../addon/totp/Mod_Totp.php:24 -msgid "Enter the 2-step verification generated by your authenticator app:" -msgstr "Introduzca la verificación en 2 pasos generada por su app de autenticación: " +#: ../../Zotlabs/Module/Admin/Site.php:198 +#: ../../Zotlabs/Module/Settings/Display.php:119 +#, php-format +msgid "%s - (Incompatible)" +msgstr "%s - (Incompatible)" -#: ../../addon/totp/Mod_Totp.php:25 -msgid "Success!" -msgstr "¡Éxito!" +#: ../../Zotlabs/Module/Admin/Site.php:205 +msgid "mobile" +msgstr "móvil" -#: ../../addon/totp/Mod_Totp.php:26 -msgid "Invalid code, please try again." -msgstr "Código inválido, por favor inténtelo de nuevo." +#: ../../Zotlabs/Module/Admin/Site.php:207 +msgid "experimental" +msgstr "experimental" + +#: ../../Zotlabs/Module/Admin/Site.php:209 +msgid "unsupported" +msgstr "no soportado" -#: ../../addon/totp/Mod_Totp.php:27 -msgid "Too many invalid codes..." -msgstr "Demasiados códigos no válidos..." +#: ../../Zotlabs/Module/Admin/Site.php:256 +msgid "Yes - with approval" +msgstr "Sí - con aprobación" -#: ../../addon/totp/Mod_Totp.php:28 -msgid "Verify" -msgstr "Verficar" +#: ../../Zotlabs/Module/Admin/Site.php:262 +msgid "My site is not a public server" +msgstr "Mi sitio no es un servidor público" -#: ../../addon/wppost/Mod_Wppost.php:28 -msgid "Wordpress Settings saved." -msgstr "Se han guardado los ajustes de WordPress." +#: ../../Zotlabs/Module/Admin/Site.php:263 +msgid "My site has paid access only" +msgstr "Mi sitio es un servicio de pago" -#: ../../addon/wppost/Mod_Wppost.php:41 -msgid "Wordpress Post App" -msgstr "App Publicar en Wordpress" +#: ../../Zotlabs/Module/Admin/Site.php:264 +msgid "My site has free access only" +msgstr "Mi sitio es un servicio gratuito" -#: ../../addon/wppost/Mod_Wppost.php:42 -msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API" -msgstr "Publicar en WordPress o cualquier otra cosa que utilice la API XMLRPC de wordpress" +#: ../../Zotlabs/Module/Admin/Site.php:265 +msgid "My site offers free accounts with optional paid upgrades" +msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago" -#: ../../addon/wppost/Mod_Wppost.php:65 -msgid "WordPress username" -msgstr "Nombre de usuario de WordPress" +#: ../../Zotlabs/Module/Admin/Site.php:279 +msgid "Default permission role for new accounts" +msgstr "Permisos de rol por defecto para las nuevas cuentas" -#: ../../addon/wppost/Mod_Wppost.php:69 -msgid "WordPress password" -msgstr "Contraseña de WordPress" +#: ../../Zotlabs/Module/Admin/Site.php:279 +msgid "" +"This role will be used for the first channel created after registration." +msgstr "Este rol se utilizará para el primer canal creado después del registro." -#: ../../addon/wppost/Mod_Wppost.php:73 -msgid "WordPress API URL" -msgstr "URL de la API de WordPress" +#: ../../Zotlabs/Module/Admin/Site.php:291 +msgid "File upload" +msgstr "Subir fichero" -#: ../../addon/wppost/Mod_Wppost.php:74 -msgid "Typically https://your-blog.tld/xmlrpc.php" -msgstr "Habitualmente https://your-blog.tld/xmlrpc.php" +#: ../../Zotlabs/Module/Admin/Site.php:292 +msgid "Policies" +msgstr "Políticas" -#: ../../addon/wppost/Mod_Wppost.php:77 -msgid "WordPress blogid" -msgstr "Blog de WordPress" +#: ../../Zotlabs/Module/Admin/Site.php:299 +msgid "Banner/Logo" +msgstr "Banner/Logo" -#: ../../addon/wppost/Mod_Wppost.php:78 -msgid "For multi-user sites such as wordpress.com, otherwise leave blank" -msgstr "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco" +#: ../../Zotlabs/Module/Admin/Site.php:299 +msgid "Unfiltered HTML/CSS/JS is allowed" +msgstr "Se permite HTML/CSS/JS sin filtrar" -#: ../../addon/wppost/Mod_Wppost.php:82 -msgid "Post to WordPress by default" -msgstr "Publicar en WordPress por defecto" +#: ../../Zotlabs/Module/Admin/Site.php:300 +msgid "Administrator Information" +msgstr "Información del Administrador" -#: ../../addon/wppost/Mod_Wppost.php:86 -msgid "Forward comments (requires hubzilla_wp plugin)" -msgstr "Reenviar comentarios (requerido por el plugin hubzilla_wp)" +#: ../../Zotlabs/Module/Admin/Site.php:300 +msgid "" +"Contact information for site administrators. Displayed on siteinfo page. " +"BBCode can be used here" +msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../addon/wppost/Mod_Wppost.php:94 -msgid "Wordpress Post" -msgstr "Publicar en Wordpress" +#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Siteinfo.php:24 +msgid "Site Information" +msgstr "Información sobre el sitio" -#: ../../addon/wppost/wppost.php:46 -msgid "Post to WordPress" -msgstr "Publicar en WordPress" +#: ../../Zotlabs/Module/Admin/Site.php:301 +msgid "" +"Publicly visible description of this site. Displayed on siteinfo page. " +"BBCode can be used here" +msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../addon/nsfw/nsfw.php:152 -msgid "Possible adult content" -msgstr "Posible contenido para adultos" +#: ../../Zotlabs/Module/Admin/Site.php:302 +msgid "System language" +msgstr "Idioma del sistema" -#: ../../addon/nsfw/nsfw.php:167 -#, php-format -msgid "%s - view" -msgstr "ver - %s" +#: ../../Zotlabs/Module/Admin/Site.php:303 +msgid "System theme" +msgstr "Tema gráfico del sistema" -#: ../../addon/nsfw/Mod_Nsfw.php:22 -msgid "NSFW Settings saved." -msgstr "Se han guardado los ajustes de NSFW." +#: ../../Zotlabs/Module/Admin/Site.php:303 +msgid "" +"Default system theme - may be over-ridden by user profiles - <a href='#' " +"id='cnftheme'>change theme settings</a>" +msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>" -#: ../../addon/nsfw/Mod_Nsfw.php:33 -msgid "NSFW App" -msgstr "App NSFW" +#: ../../Zotlabs/Module/Admin/Site.php:306 +msgid "Allow Feeds as Connections" +msgstr "Permitir contenidos RSS como conexiones" -#: ../../addon/nsfw/Mod_Nsfw.php:34 -msgid "Collapse content that contains predefined words" -msgstr "Ocultar el contenido que contiene palabras predefinidas" +#: ../../Zotlabs/Module/Admin/Site.php:306 +msgid "(Heavy system resource usage)" +msgstr "(Uso intenso de los recursos del sistema)" -#: ../../addon/nsfw/Mod_Nsfw.php:44 +#: ../../Zotlabs/Module/Admin/Site.php:307 +msgid "Maximum image size" +msgstr "Tamaño máximo de la imagen" + +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "" -"This app looks in posts for the words/text you specify below, and collapses " -"any content containing those keywords so it is not displayed at " -"inappropriate times, such as sexual innuendo that may be improper in a work " -"setting. It is polite and recommended to tag any content containing nudity " -"with #NSFW. This filter can also match any other word/text you specify, and" -" can thereby be used as a general purpose content filter." -msgstr "Esta aplicación busca en los mensajes las palabras o texto que especifique a continuación, y oculta cualquier contenido que contenga esas palabras clave, para que no se muestren en momentos inapropiados, como insinuaciones sexuales que puedan ser inapropiadas en un entorno laboral. Es cortés y recomendable etiquetar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como filtro de contenido de propósito general." +"Maximum size in bytes of uploaded images. Default is 0, which means no " +"limits." +msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites." -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Comma separated list of keywords to hide" -msgstr "Lista separada por comas de palabras clave para ocultar" +#: ../../Zotlabs/Module/Admin/Site.php:308 +msgid "Does this site allow new member registration?" +msgstr "¿Debe este sitio permitir el registro de nuevos miembros?" -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Word, /regular-expression/, lang=xx, lang!=xx" -msgstr "Palabra, /expresión regular/, lang=xx, lang!=xx" +#: ../../Zotlabs/Module/Admin/Site.php:309 +msgid "Invitation only" +msgstr "Solo con una invitación" -#: ../../addon/nsfw/Mod_Nsfw.php:58 -msgid "NSFW" -msgstr "NSFW" +#: ../../Zotlabs/Module/Admin/Site.php:309 +msgid "" +"Only allow new member registrations with an invitation code. Above register " +"policy must be set to Yes." +msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"." -#: ../../addon/flashcards/Mod_Flashcards.php:174 -msgid "Not allowed." -msgstr "No permitido/a." +#: ../../Zotlabs/Module/Admin/Site.php:310 +msgid "Minimum age" +msgstr "Edad mínima" -#: ../../addon/queueworker/Mod_Queueworker.php:77 -msgid "Max queueworker threads" -msgstr "Máximo de hilos en la cola" +#: ../../Zotlabs/Module/Admin/Site.php:310 +msgid "Minimum age (in years) for who may register on this site." +msgstr "Edad mínima (en años) para poder registrarse en este sitio." -#: ../../addon/queueworker/Mod_Queueworker.php:91 -msgid "Assume workers dead after ___ seconds" -msgstr "Asumir que el proceso de trabajo está muerto después de ___ segundos" +#: ../../Zotlabs/Module/Admin/Site.php:311 +msgid "Which best describes the types of account offered by this hub?" +msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?" -#: ../../addon/queueworker/Mod_Queueworker.php:105 -msgid "" -"Pause before starting next task: (microseconds. Minimum 100 = .0001 " -"seconds)" -msgstr "Haga una pausa antes de comenzar la siguiente tarea: (microsegundos. Mínimo 100 =.0001 segundos)" +#: ../../Zotlabs/Module/Admin/Site.php:311 +msgid "This is displayed on the public server site list." +msgstr "Esto se muestra en la lista de sitios de servidores públicos." -#: ../../addon/queueworker/Mod_Queueworker.php:116 -msgid "Queueworker Settings" -msgstr "Configuración del gestor de procesos de trabajo en cola" +#: ../../Zotlabs/Module/Admin/Site.php:312 +msgid "Register text" +msgstr "Texto del registro" -#: ../../addon/ijpost/Mod_Ijpost.php:23 -msgid "Insane Journal Crosspost Connector Settings saved." -msgstr "Se han guardado los ajustes del Conector de publicación cruzada de InsaneJournal." +#: ../../Zotlabs/Module/Admin/Site.php:312 +msgid "Will be displayed prominently on the registration page." +msgstr "Se mostrará de forma destacada en la página de registro." -#: ../../addon/ijpost/Mod_Ijpost.php:35 -msgid "Insane Journal Crosspost Connector App" -msgstr "App Ajustes del Conector de publicación cruzada de InsaneJournal" +#: ../../Zotlabs/Module/Admin/Site.php:314 +msgid "Site homepage to show visitors (default: login box)" +msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)" -#: ../../addon/ijpost/Mod_Ijpost.php:36 -msgid "Relay public postings to Insane Journal" -msgstr "Retransmisión de entradas públicas a Insane Journal" +#: ../../Zotlabs/Module/Admin/Site.php:314 +msgid "" +"example: 'pubstream' to show public stream, 'page/sys/home' to show a system" +" webpage called 'home' or 'include:home.html' to include a file." +msgstr "ejemplo: 'pubstream' para mostrar el stream público, 'page/sys/home' para mostrar una página web del sistema llamada 'home' o 'include:home.html' para incluir un archivo." -#: ../../addon/ijpost/Mod_Ijpost.php:53 -msgid "InsaneJournal username" -msgstr "Nombre de usuario en InsaneJournal" +#: ../../Zotlabs/Module/Admin/Site.php:315 +msgid "Preserve site homepage URL" +msgstr "Preservar la dirección de la página personal" -#: ../../addon/ijpost/Mod_Ijpost.php:57 -msgid "InsaneJournal password" -msgstr "Contraseña en InsaneJournal" +#: ../../Zotlabs/Module/Admin/Site.php:315 +msgid "" +"Present the site homepage in a frame at the original location instead of " +"redirecting" +msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla." -#: ../../addon/ijpost/Mod_Ijpost.php:61 -msgid "Post to InsaneJournal by default" -msgstr "Publicar por defecto en InsaneJournal" +#: ../../Zotlabs/Module/Admin/Site.php:316 +msgid "Accounts abandoned after x days" +msgstr "Cuentas abandonadas después de x días" -#: ../../addon/ijpost/Mod_Ijpost.php:69 -msgid "Insane Journal Crosspost Connector" -msgstr "Conector de publicación cruzada de InsaneJournal" +#: ../../Zotlabs/Module/Admin/Site.php:316 +msgid "" +"Will not waste system resources polling external sites for abandonded " +"accounts. Enter 0 for no time limit." +msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo." -#: ../../addon/ijpost/ijpost.php:45 -msgid "Post to Insane Journal" -msgstr "Publicar en Insane Journal" +#: ../../Zotlabs/Module/Admin/Site.php:317 +msgid "Allowed friend domains" +msgstr "Dominios amigos permitidos" + +#: ../../Zotlabs/Module/Admin/Site.php:317 +msgid "" +"Comma separated list of domains which are allowed to establish friendships " +"with this site. Wildcards are accepted. Empty to allow any domains" +msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio." -#: ../../addon/dwpost/dwpost.php:48 -msgid "Post to Dreamwidth" -msgstr "Publicar en Dreamwidth" +#: ../../Zotlabs/Module/Admin/Site.php:318 +msgid "Verify Email Addresses" +msgstr "Verificar las direcciones de correo electrónico" -#: ../../addon/dwpost/Mod_Dwpost.php:24 -msgid "Dreamwidth Crosspost Connector Settings saved." -msgstr "Se han guardado los ajustes del conector de publicación cruzada Dreamwidth." +#: ../../Zotlabs/Module/Admin/Site.php:318 +msgid "" +"Check to verify email addresses used in account registration (recommended)." +msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)." -#: ../../addon/dwpost/Mod_Dwpost.php:36 -msgid "Dreamwidth Crosspost Connector App" -msgstr "App Dreamwidth Crosspost Connector" +#: ../../Zotlabs/Module/Admin/Site.php:319 +msgid "Force publish" +msgstr "Forzar la publicación" -#: ../../addon/dwpost/Mod_Dwpost.php:37 -msgid "Relay public postings to Dreamwidth" -msgstr "Retransmisión de entradas públicas a Dreamwidth" +#: ../../Zotlabs/Module/Admin/Site.php:319 +msgid "" +"Check to force all profiles on this site to be listed in the site directory." +msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio." -#: ../../addon/dwpost/Mod_Dwpost.php:52 -msgid "Dreamwidth username" -msgstr "Nombre de usuario en Dreamwidth" +#: ../../Zotlabs/Module/Admin/Site.php:320 +msgid "Import Public Streams" +msgstr "Importar contenido público" -#: ../../addon/dwpost/Mod_Dwpost.php:56 -msgid "Dreamwidth password" -msgstr "Contraseña en Dreamwidth" +#: ../../Zotlabs/Module/Admin/Site.php:320 +msgid "" +"Import and allow access to public content pulled from other sites. Warning: " +"this content is unmoderated." +msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas." -#: ../../addon/dwpost/Mod_Dwpost.php:60 -msgid "Post to Dreamwidth by default" -msgstr "Publicar en Dreamwidth de forma predeterminada" +#: ../../Zotlabs/Module/Admin/Site.php:321 +msgid "Site only Public Streams" +msgstr "Solo contenido público en este sitio" -#: ../../addon/dwpost/Mod_Dwpost.php:68 -msgid "Dreamwidth Crosspost Connector" -msgstr "Dreamwidth Crosspost Connector" +#: ../../Zotlabs/Module/Admin/Site.php:321 +msgid "" +"Allow access to public content originating only from this site if Imported " +"Public Streams are disabled." +msgstr "Permitir el acceso al contenido público originado sólo desde este sitio si los \"streams\" públicos Importados están deshabilitados." -#: ../../addon/notifyadmin/notifyadmin.php:34 -msgid "New registration" -msgstr "Nuevo registro" +#: ../../Zotlabs/Module/Admin/Site.php:322 +msgid "Allow anybody on the internet to access the Public streams" +msgstr "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos" -#: ../../addon/notifyadmin/notifyadmin.php:42 -#, php-format -msgid "Message sent to %s. New account registration: %s" -msgstr "Mensaje enviado a %s. Registro de una nueva cuenta: %s" +#: ../../Zotlabs/Module/Admin/Site.php:322 +msgid "" +"Disable to require authentication before viewing. Warning: this content is " +"unmoderated." +msgstr "Desactivar para requerir autenticación antes de la visualización. Advertencia: este contenido no está moderado." -#: ../../addon/dirstats/dirstats.php:94 -msgid "Hubzilla Directory Stats" -msgstr "Estadísticas de directorio de Hubzilla" +#: ../../Zotlabs/Module/Admin/Site.php:323 +msgid "Only import Public stream posts with this text" +msgstr "Importar solo entradas del stream púlbico con este texto " -#: ../../addon/dirstats/dirstats.php:95 -msgid "Total Hubs" -msgstr "Número total de servidores" +#: ../../Zotlabs/Module/Admin/Site.php:323 +#: ../../Zotlabs/Module/Admin/Site.php:324 +#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893 +msgid "" +"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " +"all posts" +msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo" -#: ../../addon/dirstats/dirstats.php:97 -msgid "Hubzilla Hubs" -msgstr "Servidores (hubs) de Hubzilla" +#: ../../Zotlabs/Module/Admin/Site.php:324 +msgid "Do not import Public stream posts with this text" +msgstr "No importar entradas del stream público con este texto " -#: ../../addon/dirstats/dirstats.php:99 -msgid "Friendica Hubs" -msgstr "Servidores (hubs) de Friendica" +#: ../../Zotlabs/Module/Admin/Site.php:327 +msgid "Login on Homepage" +msgstr "Iniciar sesión en la página personal" -#: ../../addon/dirstats/dirstats.php:101 -msgid "Diaspora Pods" -msgstr "Servidores (pods) de Diaspora" +#: ../../Zotlabs/Module/Admin/Site.php:327 +msgid "" +"Present a login box to visitors on the home page if no other content has " +"been configured." +msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido." -#: ../../addon/dirstats/dirstats.php:103 -msgid "Hubzilla Channels" -msgstr "Canales de Hubzilla" +#: ../../Zotlabs/Module/Admin/Site.php:328 +msgid "Enable context help" +msgstr "Habilitar la ayuda contextual" -#: ../../addon/dirstats/dirstats.php:105 -msgid "Friendica Channels" -msgstr "Canales de Friendica" +#: ../../Zotlabs/Module/Admin/Site.php:328 +msgid "" +"Display contextual help for the current page when the help button is " +"pressed." +msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda." -#: ../../addon/dirstats/dirstats.php:107 -msgid "Diaspora Channels" -msgstr "Canales de Diaspora" +#: ../../Zotlabs/Module/Admin/Site.php:330 +msgid "Reply-to email address for system generated email." +msgstr "Dirección de respuesta para el correo electrónico generado por el sistema." -#: ../../addon/dirstats/dirstats.php:109 -msgid "Aged 35 and above" -msgstr "De 35 años de edad en adelante" +#: ../../Zotlabs/Module/Admin/Site.php:331 +msgid "Sender (From) email address for system generated email." +msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema." -#: ../../addon/dirstats/dirstats.php:111 -msgid "Aged 34 and under" -msgstr "De 34 o menos años de edad" +#: ../../Zotlabs/Module/Admin/Site.php:332 +msgid "Name of email sender for system generated email." +msgstr "Nombre del remitente del correo electrónico generado por el sistema." -#: ../../addon/dirstats/dirstats.php:113 -msgid "Average Age" -msgstr "Promedio de edad" +#: ../../Zotlabs/Module/Admin/Site.php:334 +msgid "Directory Server URL" +msgstr "URL del servidor de directorio" -#: ../../addon/dirstats/dirstats.php:115 -msgid "Known Chatrooms" -msgstr "Salas de chat conocidas" +#: ../../Zotlabs/Module/Admin/Site.php:334 +msgid "Default directory server" +msgstr "Servidor de directorio predeterminado" -#: ../../addon/dirstats/dirstats.php:117 -msgid "Known Tags" -msgstr "Etiquetas conocidas" +#: ../../Zotlabs/Module/Admin/Site.php:336 +msgid "Proxy user" +msgstr "Usuario del proxy" -#: ../../addon/dirstats/dirstats.php:119 -msgid "" -"Please note Diaspora and Friendica statistics are merely those **this " -"directory** is aware of, and not all those known in the network. This also " -"applies to chatrooms," -msgstr "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat," +#: ../../Zotlabs/Module/Admin/Site.php:337 +msgid "Proxy URL" +msgstr "Dirección del proxy" -#: ../../addon/likebanner/likebanner.php:51 -msgid "Your Webbie:" -msgstr "Su webbie: " +#: ../../Zotlabs/Module/Admin/Site.php:338 +msgid "Network timeout" +msgstr "Tiempo de espera de la red" -#: ../../addon/likebanner/likebanner.php:54 -msgid "Fontsize (px):" -msgstr "Tamaño de fuente (px): " +#: ../../Zotlabs/Module/Admin/Site.php:338 +msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." +msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)" -#: ../../addon/likebanner/likebanner.php:68 -msgid "Link:" -msgstr "Enlace: " +#: ../../Zotlabs/Module/Admin/Site.php:339 +msgid "Delivery interval" +msgstr "Intervalo de entrega" -#: ../../addon/likebanner/likebanner.php:70 -msgid "Like us on Hubzilla" -msgstr "Múestrenos su agrado en Hubzilla" +#: ../../Zotlabs/Module/Admin/Site.php:339 +msgid "" +"Delay background delivery processes by this many seconds to reduce system " +"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " +"for large dedicated servers." +msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados." -#: ../../addon/likebanner/likebanner.php:72 -msgid "Embed:" -msgstr "Incorporado: " +#: ../../Zotlabs/Module/Admin/Site.php:340 +msgid "Deliveries per process" +msgstr "Intentos de envío por proceso" -#: ../../addon/redphotos/redphotos.php:106 -msgid "Photos imported" -msgstr "Se han importado las fotos" +#: ../../Zotlabs/Module/Admin/Site.php:340 +msgid "" +"Number of deliveries to attempt in a single operating system process. Adjust" +" if necessary to tune system performance. Recommend: 1-5." +msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5." -#: ../../addon/redphotos/redphotos.php:129 -msgid "Redmatrix Photo Album Import" -msgstr "Importar un álbum de fotos de Redmatrix" +#: ../../Zotlabs/Module/Admin/Site.php:341 +msgid "Queue Threshold" +msgstr "Umbral de la cola de espera" -#: ../../addon/redphotos/redphotos.php:130 -msgid "This will import all your Redmatrix photo albums to this channel." -msgstr "Esto importará todos sus álbumes de fotos de Redmatrix a este canal." +#: ../../Zotlabs/Module/Admin/Site.php:341 +msgid "" +"Always defer immediate delivery if queue contains more than this number of " +"entries." +msgstr "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas." -#: ../../addon/redphotos/redphotos.php:131 -#: ../../addon/redfiles/redfiles.php:121 -msgid "Redmatrix Server base URL" -msgstr "URL base del servidor Redmatrix" +#: ../../Zotlabs/Module/Admin/Site.php:342 +msgid "Poll interval" +msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos" -#: ../../addon/redphotos/redphotos.php:132 -#: ../../addon/redfiles/redfiles.php:122 -msgid "Redmatrix Login Username" -msgstr "Nombre de inicio de sesión en Redmatrix" +#: ../../Zotlabs/Module/Admin/Site.php:342 +msgid "" +"Delay background polling processes by this many seconds to reduce system " +"load. If 0, use delivery interval." +msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega." -#: ../../addon/redphotos/redphotos.php:133 -#: ../../addon/redfiles/redfiles.php:123 -msgid "Redmatrix Login Password" -msgstr "Contraseña de inicio de sesión en Redmatrix" +#: ../../Zotlabs/Module/Admin/Site.php:343 +msgid "Path to ImageMagick convert program" +msgstr "Ruta al programa de conversión de ImageMagick" -#: ../../addon/redphotos/redphotos.php:134 -msgid "Import just this album" -msgstr "Importar solo este álbum" +#: ../../Zotlabs/Module/Admin/Site.php:343 +msgid "" +"If set, use this program to generate photo thumbnails for huge images ( > " +"4000 pixels in either dimension), otherwise memory exhaustion may occur. " +"Example: /usr/bin/convert" +msgstr "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert" -#: ../../addon/redphotos/redphotos.php:134 -msgid "Leave blank to import all albums" -msgstr "Dejar en blanco para importar todos los álbumes" +#: ../../Zotlabs/Module/Admin/Site.php:344 +msgid "Allow SVG thumbnails in file browser" +msgstr "Permitir miniaturas SVG en el navegador de archivos" -#: ../../addon/redphotos/redphotos.php:135 -msgid "Maximum count to import" -msgstr "Límite máximo de importación" +#: ../../Zotlabs/Module/Admin/Site.php:344 +msgid "WARNING: SVG images may contain malicious code." +msgstr "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso." -#: ../../addon/redphotos/redphotos.php:135 -msgid "0 or blank to import all available" -msgstr "0 o en blanco para importar todos los disponibles" +#: ../../Zotlabs/Module/Admin/Site.php:345 +msgid "Maximum Load Average" +msgstr "Carga media máxima" -#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 -msgid "Popular Channels" -msgstr "Canales populares" +#: ../../Zotlabs/Module/Admin/Site.php:345 +msgid "" +"Maximum system load before delivery and poll processes are deferred - " +"default 50." +msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50." -#: ../../addon/irc/irc.php:37 -msgid "Channels to auto connect" -msgstr "Canales para conexión automática" +#: ../../Zotlabs/Module/Admin/Site.php:346 +msgid "Expiration period in days for imported (grid/network) content" +msgstr "Caducidad del contenido importado de otros sitios (en días)" -#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 -msgid "Comma separated list" -msgstr "Lista separada por comas" +#: ../../Zotlabs/Module/Admin/Site.php:346 +msgid "0 for no expiration of imported content" +msgstr "0 para que no caduque el contenido importado" -#: ../../addon/irc/irc.php:45 -msgid "IRC Settings" -msgstr "Ajustes de IRC" +#: ../../Zotlabs/Module/Admin/Site.php:347 +msgid "" +"Do not expire any posts which have comments less than this many days ago" +msgstr "No caduque ningún mensaje que tenga menos comentarios que este hace muchos días" -#: ../../addon/irc/irc.php:54 -msgid "IRC settings saved." -msgstr "Se han guardado los ajustes de IRC." +#: ../../Zotlabs/Module/Admin/Site.php:349 +msgid "" +"Public servers: Optional landing (marketing) webpage for new registrants" +msgstr "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros" -#: ../../addon/irc/irc.php:58 -msgid "IRC Chatroom" -msgstr "Sala de chat IRC" +#: ../../Zotlabs/Module/Admin/Site.php:349 +#, php-format +msgid "Create this page first. Default is %s/register" +msgstr "Crear esta página primero. Por defecto es %s/register" -#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 -msgid "Gallery" -msgstr "Galería" +#: ../../Zotlabs/Module/Admin/Site.php:350 +msgid "Page to display after creating a new channel" +msgstr "Página a mostrar después de la creación de un nuevo canal" -#: ../../addon/gallery/gallery.php:41 -msgid "Photo Gallery" -msgstr "Galería de fotos" +#: ../../Zotlabs/Module/Admin/Site.php:350 +msgid "Default: profiles" +msgstr "Perfiles predeterminados" -#: ../../addon/gallery/Mod_Gallery.php:58 -msgid "Gallery App" -msgstr "App Gallery" +#: ../../Zotlabs/Module/Admin/Site.php:352 +msgid "Optional: site location" +msgstr "Opcional: ubicación del sitio" -#: ../../addon/gallery/Mod_Gallery.php:59 -msgid "A simple gallery for your photo albums" -msgstr "Una galería sencilla para sus álbumes de fotos" +#: ../../Zotlabs/Module/Admin/Site.php:352 +msgid "Region or country" +msgstr "Región o país" -#: ../../addon/ljpost/Mod_Ljpost.php:36 -msgid "Livejournal Crosspost Connector App" -msgstr "App Livejournal Crosspost Connector" +#: ../../Zotlabs/Module/Admin/Logs.php:28 +msgid "Log settings updated." +msgstr "Actualizado el informe de configuraciones." -#: ../../addon/ljpost/Mod_Ljpost.php:37 -msgid "Relay public posts to Livejournal" -msgstr "Retransmisión de entradas públicas a Livejournal" +#: ../../Zotlabs/Module/Admin/Logs.php:85 +msgid "Clear" +msgstr "Vaciar" -#: ../../addon/ljpost/Mod_Ljpost.php:54 -msgid "Livejournal username" -msgstr "Nombre de usuario en Livejournal" +#: ../../Zotlabs/Module/Admin/Logs.php:91 +msgid "Debugging" +msgstr "Depuración" -#: ../../addon/ljpost/Mod_Ljpost.php:58 -msgid "Livejournal password" -msgstr "Contraseña en Livejournal" +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "Log file" +msgstr "Fichero de informe" -#: ../../addon/ljpost/Mod_Ljpost.php:62 -msgid "Post to Livejournal by default" -msgstr "Publicar en Livejournal por defecto" +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "" +"Must be writable by web server. Relative to your top-level webserver " +"directory." +msgstr "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal." -#: ../../addon/ljpost/Mod_Ljpost.php:70 -msgid "Livejournal Crosspost Connector" -msgstr "Livejournal Crosspost Connector" +#: ../../Zotlabs/Module/Admin/Logs.php:93 +msgid "Log level" +msgstr "Nivel de depuración" -#: ../../addon/ljpost/ljpost.php:45 -msgid "Post to Livejournal" -msgstr "Publicar en Livejournal" +#: ../../Zotlabs/Module/Admin/Channels.php:31 +#, php-format +msgid "%s channel censored/uncensored" +msgid_plural "%s channels censored/uncensored" +msgstr[0] "%s canales censurados/no censurados" +msgstr[1] "%s canales censurados/no censurados" -#: ../../addon/openid/openid.php:49 -msgid "" -"We encountered a problem while logging in with the OpenID you provided. " -"Please check the correct spelling of the ID." -msgstr "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito." +#: ../../Zotlabs/Module/Admin/Channels.php:40 +#, php-format +msgid "%s channel code allowed/disallowed" +msgid_plural "%s channels code allowed/disallowed" +msgstr[0] "%s código permitido/no permitido al canal" +msgstr[1] "%s código permitido/no permitido al canal" -#: ../../addon/openid/openid.php:49 -msgid "The error message was:" -msgstr "El mensaje de error ha sido: " +#: ../../Zotlabs/Module/Admin/Channels.php:46 +#, php-format +msgid "%s channel deleted" +msgid_plural "%s channels deleted" +msgstr[0] "%s canales eliminados" +msgstr[1] "%s canales eliminados" -#: ../../addon/openid/MysqlProvider.php:52 -msgid "First Name" -msgstr "Nombre" +#: ../../Zotlabs/Module/Admin/Channels.php:65 +msgid "Channel not found" +msgstr "Canal no encontrado" -#: ../../addon/openid/MysqlProvider.php:53 -msgid "Last Name" -msgstr "Apellido" +#: ../../Zotlabs/Module/Admin/Channels.php:75 +#, php-format +msgid "Channel '%s' deleted" +msgstr "Canal '%s' eliminado" -#: ../../addon/openid/MysqlProvider.php:54 -#: ../../addon/redred/Mod_Redred.php:75 -msgid "Nickname" -msgstr "Alias" +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' censored" +msgstr "Canal '%s' censurado" -#: ../../addon/openid/MysqlProvider.php:55 -msgid "Full Name" -msgstr "Nombre completo" +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' uncensored" +msgstr "Canal '%s' no censurado" -#: ../../addon/openid/MysqlProvider.php:61 -msgid "Profile Photo 16px" -msgstr "Foto del perfil 16px" +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code allowed" +msgstr "Código permitido al canal '%s'" -#: ../../addon/openid/MysqlProvider.php:62 -msgid "Profile Photo 32px" -msgstr "Foto del perfil 32px" +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code disallowed" +msgstr "Código no permitido al canal '%s'" -#: ../../addon/openid/MysqlProvider.php:63 -msgid "Profile Photo 48px" -msgstr "Foto del perfil 48px" +#: ../../Zotlabs/Module/Admin/Channels.php:150 +msgid "Censor" +msgstr "Censurar" -#: ../../addon/openid/MysqlProvider.php:64 -msgid "Profile Photo 64px" -msgstr "Foto del perfil 64px" +#: ../../Zotlabs/Module/Admin/Channels.php:151 +msgid "Uncensor" +msgstr "No censurar" -#: ../../addon/openid/MysqlProvider.php:65 -msgid "Profile Photo 80px" -msgstr "Foto del perfil 80px" +#: ../../Zotlabs/Module/Admin/Channels.php:152 +msgid "Allow Code" +msgstr "Permitir código" -#: ../../addon/openid/MysqlProvider.php:66 -msgid "Profile Photo 128px" -msgstr "Foto del perfil 128px" +#: ../../Zotlabs/Module/Admin/Channels.php:153 +msgid "Disallow Code" +msgstr "No permitir código" -#: ../../addon/openid/MysqlProvider.php:67 -msgid "Timezone" -msgstr "Zona horaria" +#: ../../Zotlabs/Module/Admin/Channels.php:158 +msgid "UID" +msgstr "UID" -#: ../../addon/openid/MysqlProvider.php:70 -msgid "Birth Year" -msgstr "Año de nacimiento" +#: ../../Zotlabs/Module/Admin/Channels.php:162 +msgid "" +"Selected channels will be deleted!\\n\\nEverything that was posted in these " +"channels on this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?" -#: ../../addon/openid/MysqlProvider.php:71 -msgid "Birth Month" -msgstr "Mes de nacimiento" +#: ../../Zotlabs/Module/Admin/Channels.php:163 +msgid "" +"The channel {0} will be deleted!\\n\\nEverything that was posted in this " +"channel on this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?" -#: ../../addon/openid/MysqlProvider.php:72 -msgid "Birth Day" -msgstr "Día de nacimiento" +#: ../../Zotlabs/Module/Admin/Account_edit.php:29 +#, php-format +msgid "Password changed for account %d." +msgstr "Ha cambiado la contraseña para la cuenta %d." -#: ../../addon/openid/MysqlProvider.php:73 -msgid "Birthdate" -msgstr "Fecha de nacimiento" +#: ../../Zotlabs/Module/Admin/Account_edit.php:46 +msgid "Account settings updated." +msgstr "Se han actualizado los ajustes de la cuenta." -#: ../../addon/openid/Mod_Openid.php:30 -msgid "OpenID protocol error. No ID returned." -msgstr "Error de protocolo OpenID. No se recuperó ninguna ID." +#: ../../Zotlabs/Module/Admin/Account_edit.php:61 +msgid "Account not found." +msgstr "No se ha encontrado la cuenta." -#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 -msgid "Login failed." -msgstr "El acceso ha fallado." +#: ../../Zotlabs/Module/Admin/Account_edit.php:68 +msgid "Account Edit" +msgstr "Editar la cuenta" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:69 +msgid "New Password" +msgstr "Nueva contraseña" -#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1602 -msgid "Male" -msgstr "Hombre" +#: ../../Zotlabs/Module/Admin/Account_edit.php:70 +msgid "New Password again" +msgstr "Nueva contraseña otra vez" -#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1600 -msgid "Female" -msgstr "Mujer" +#: ../../Zotlabs/Module/Admin/Account_edit.php:71 +msgid "Account language (for emails)" +msgstr "Idioma de la cuenta (para los correos electrónicos)" -#: ../../addon/randpost/randpost.php:97 -msgid "You're welcome." -msgstr "Bienvenido." +#: ../../Zotlabs/Module/Admin/Account_edit.php:72 +msgid "Service class" +msgstr "Clase de servicio" -#: ../../addon/randpost/randpost.php:98 -msgid "Ah shucks..." -msgstr "Ah, joder..." +#: ../../Zotlabs/Module/Admin/Profs.php:89 +msgid "New Profile Field" +msgstr "Nuevo campo en el perfil" -#: ../../addon/randpost/randpost.php:99 -msgid "Don't mention it." -msgstr "No lo menciones." +#: ../../Zotlabs/Module/Admin/Profs.php:90 +#: ../../Zotlabs/Module/Admin/Profs.php:110 +msgid "Field nickname" +msgstr "Alias del campo" -#: ../../addon/randpost/randpost.php:100 -msgid "<blush>" -msgstr "<sonrojo>" +#: ../../Zotlabs/Module/Admin/Profs.php:90 +#: ../../Zotlabs/Module/Admin/Profs.php:110 +msgid "System name of field" +msgstr "Nombre del campo en el sistema" -#: ../../addon/startpage/Mod_Startpage.php:50 -msgid "Startpage App" -msgstr "App Startpage" +#: ../../Zotlabs/Module/Admin/Profs.php:91 +#: ../../Zotlabs/Module/Admin/Profs.php:111 +msgid "Input type" +msgstr "Tipo de entrada" -#: ../../addon/startpage/Mod_Startpage.php:51 -msgid "Set a preferred page to load on login from home page" -msgstr "Establecer una página preferida para cargar al iniciar sesión desde la página de inicio" +#: ../../Zotlabs/Module/Admin/Profs.php:92 +#: ../../Zotlabs/Module/Admin/Profs.php:112 +msgid "Field Name" +msgstr "Nombre del campo" -#: ../../addon/startpage/Mod_Startpage.php:62 -msgid "Page to load after login" -msgstr "Página para cargar tras el inicio de sesión" +#: ../../Zotlabs/Module/Admin/Profs.php:92 +#: ../../Zotlabs/Module/Admin/Profs.php:112 +msgid "Label on profile pages" +msgstr "Etiqueta a mostrar en la página del perfil" -#: ../../addon/startpage/Mod_Startpage.php:62 -msgid "" -"Examples: "apps", "network?f=&gid=37" (privacy " -"collection), "channel" or "notifications/system" (leave " -"blank for default network page (grid)." -msgstr "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)." +#: ../../Zotlabs/Module/Admin/Profs.php:93 +#: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Help text" +msgstr "Texto de ayuda" -#: ../../addon/startpage/Mod_Startpage.php:70 -msgid "Startpage" -msgstr "Startpage" +#: ../../Zotlabs/Module/Admin/Profs.php:93 +#: ../../Zotlabs/Module/Admin/Profs.php:113 +msgid "Additional info (optional)" +msgstr "Información adicional (opcional)" -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslap" -msgstr "una bofetada humillante" +#: ../../Zotlabs/Module/Admin/Profs.php:103 +msgid "Field definition not found" +msgstr "Definición del campo no encontrada" -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslapped" -msgstr "ha abofeteado de forma humillante a" +#: ../../Zotlabs/Module/Admin/Profs.php:109 +msgid "Edit Profile Field" +msgstr "Modificar el campo del perfil" -#: ../../addon/morepokes/morepokes.php:20 -msgid "shag" -msgstr "un polvo" +#: ../../Zotlabs/Module/Admin/Profs.php:169 +msgid "Basic Profile Fields" +msgstr "Campos básicos del perfil" -#: ../../addon/morepokes/morepokes.php:20 -msgid "shagged" -msgstr "ha dejado exhausto/a a" +#: ../../Zotlabs/Module/Admin/Profs.php:170 +msgid "Advanced Profile Fields" +msgstr "Campos avanzados del perfil" -#: ../../addon/morepokes/morepokes.php:21 -msgid "patent" -msgstr "una patente" +#: ../../Zotlabs/Module/Admin/Profs.php:170 +msgid "(In addition to basic fields)" +msgstr "(Además de los campos básicos)" -#: ../../addon/morepokes/morepokes.php:21 -msgid "patented" -msgstr "ha patentado a" +#: ../../Zotlabs/Module/Admin/Profs.php:172 +msgid "All available fields" +msgstr "Todos los campos disponibles" -#: ../../addon/morepokes/morepokes.php:22 -msgid "hug" -msgstr "un abrazo" +#: ../../Zotlabs/Module/Admin/Profs.php:173 +msgid "Custom Fields" +msgstr "Campos personalizados" -#: ../../addon/morepokes/morepokes.php:22 -msgid "hugged" -msgstr "ha abrazado a" +#: ../../Zotlabs/Module/Admin/Profs.php:177 +msgid "Create Custom Field" +msgstr "Crear un campo personalizado" -#: ../../addon/morepokes/morepokes.php:23 -msgid "murder" -msgstr "un asesinato" +#: ../../Zotlabs/Module/Admin/Dbsync.php:19 +#: ../../Zotlabs/Module/Admin/Dbsync.php:59 +msgid "Update has been marked successful" +msgstr "La actualización ha sido marcada como exitosa" -#: ../../addon/morepokes/morepokes.php:23 -msgid "murdered" -msgstr "ha asesinado a" +#: ../../Zotlabs/Module/Admin/Dbsync.php:32 +#, php-format +msgid "Verification of update %s failed. Check system logs." +msgstr "Error en la verificación de la actualización %s. Compruebe los registros del sistema." -#: ../../addon/morepokes/morepokes.php:24 -msgid "worship" -msgstr "una alabanza" +#: ../../Zotlabs/Module/Admin/Dbsync.php:35 +#: ../../Zotlabs/Module/Admin/Dbsync.php:74 +#, php-format +msgid "Update %s was successfully applied." +msgstr "La actualización de %s se ha realizado exitosamente." -#: ../../addon/morepokes/morepokes.php:24 -msgid "worshipped" -msgstr "ha elogiado a" +#: ../../Zotlabs/Module/Admin/Dbsync.php:39 +#, php-format +msgid "Verifying update %s did not return a status. Unknown if it succeeded." +msgstr "La verificación de la actualización %s no devuelve un estado. Desconocido si tuvo éxito." -#: ../../addon/morepokes/morepokes.php:25 -msgid "kiss" -msgstr "un beso" +#: ../../Zotlabs/Module/Admin/Dbsync.php:42 +#, php-format +msgid "Update %s does not contain a verification function." +msgstr "La actualización %s no contiene una función de verificación." -#: ../../addon/morepokes/morepokes.php:25 -msgid "kissed" -msgstr "ha besado a" +#: ../../Zotlabs/Module/Admin/Dbsync.php:46 +#: ../../Zotlabs/Module/Admin/Dbsync.php:81 +#, php-format +msgid "Update function %s could not be found." +msgstr "No se encuentra la función de actualización de %s." -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempt" -msgstr "una tentación" +#: ../../Zotlabs/Module/Admin/Dbsync.php:71 +#, php-format +msgid "Executing update procedure %s failed. Check system logs." +msgstr "Error al ejecutar el procedimiento de actualización %s. Compruebe los registros del sistema." -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempted" -msgstr "ha tentado a" +#: ../../Zotlabs/Module/Admin/Dbsync.php:78 +#, php-format +msgid "" +"Update %s did not return a status. It cannot be determined if it was " +"successful." +msgstr "La actualización %s no devuelve un estado. No se puede determinar si tuvo éxito." -#: ../../addon/morepokes/morepokes.php:27 -msgid "raise eyebrows at" -msgstr "un levantamiento de cejas" +#: ../../Zotlabs/Module/Admin/Dbsync.php:99 +msgid "Failed Updates" +msgstr "Han fallado las actualizaciones" -#: ../../addon/morepokes/morepokes.php:27 -msgid "raised their eyebrows at" -msgstr "ha levantado las cejas a" +#: ../../Zotlabs/Module/Admin/Dbsync.php:101 +msgid "Mark success (if update was manually applied)" +msgstr "Marcar como exitosa (si la actualización se ha hecho manualmente)" -#: ../../addon/morepokes/morepokes.php:28 -msgid "insult" -msgstr "un insulto" +#: ../../Zotlabs/Module/Admin/Dbsync.php:102 +msgid "Attempt to verify this update if a verification procedure exists" +msgstr "Intentar verificar esta actualización si existe un procedimiento de verificación." -#: ../../addon/morepokes/morepokes.php:28 -msgid "insulted" -msgstr "ha insultado a" +#: ../../Zotlabs/Module/Admin/Dbsync.php:103 +msgid "Attempt to execute this update step automatically" +msgstr "Intentar ejecutar este paso de actualización automáticamente" -#: ../../addon/morepokes/morepokes.php:29 -msgid "praise" -msgstr "un elogio" +#: ../../Zotlabs/Module/Admin/Dbsync.php:108 +msgid "No failed updates." +msgstr "No ha fallado ninguna actualización." -#: ../../addon/morepokes/morepokes.php:29 -msgid "praised" -msgstr "ha elogiado a" +#: ../../Zotlabs/Module/Admin/Addons.php:290 +#, php-format +msgid "Plugin %s disabled." +msgstr "Extensión %s desactivada." -#: ../../addon/morepokes/morepokes.php:30 -msgid "be dubious of" -msgstr "una indecisión" +#: ../../Zotlabs/Module/Admin/Addons.php:295 +#, php-format +msgid "Plugin %s enabled." +msgstr "Extensión %s activada." -#: ../../addon/morepokes/morepokes.php:30 -msgid "was dubious of" -msgstr "estaba dudoso de" +#: ../../Zotlabs/Module/Admin/Addons.php:354 +msgid "Minimum project version: " +msgstr "Versión mínima del proyecto:" -#: ../../addon/morepokes/morepokes.php:31 -msgid "eat" -msgstr "una comida" +#: ../../Zotlabs/Module/Admin/Addons.php:355 +msgid "Maximum project version: " +msgstr "Versión máxima del proyecto:" -#: ../../addon/morepokes/morepokes.php:31 -msgid "ate" -msgstr "ha comido" +#: ../../Zotlabs/Module/Admin/Addons.php:356 +msgid "Minimum PHP version: " +msgstr "Versión mínima de PHP:" -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggle and fawn at" -msgstr "una sonrisa aduladora" +#: ../../Zotlabs/Module/Admin/Addons.php:357 +msgid "Compatible Server Roles: " +msgstr "Configuraciones compatibles con este servidor:" -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggled and fawned at" -msgstr "ha sonreído y adulado a" +#: ../../Zotlabs/Module/Admin/Addons.php:358 +msgid "Requires: " +msgstr "Se requiere:" -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubt" -msgstr "una duda" +#: ../../Zotlabs/Module/Admin/Addons.php:359 +#: ../../Zotlabs/Module/Admin/Addons.php:446 +msgid "Disabled - version incompatibility" +msgstr "Deshabilitado - versiones incompatibles" -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubted" -msgstr "ha dudado de" +#: ../../Zotlabs/Module/Admin/Addons.php:415 +msgid "Enter the public git repository URL of the addon repo." +msgstr "Introduzca la URL del repositorio público de git del addon repo." -#: ../../addon/morepokes/morepokes.php:34 -msgid "glare" -msgstr "una mirada furiosa" +#: ../../Zotlabs/Module/Admin/Addons.php:416 +msgid "Addon repo git URL" +msgstr "URL del repositorio git del addon" -#: ../../addon/morepokes/morepokes.php:34 -msgid "glared at" -msgstr "ha mirado con furia" +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "Custom repo name" +msgstr "Nombre personalizado del repositorio" -#: ../../addon/morepokes/morepokes.php:35 -msgid "fuck" -msgstr "una mierda" +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "(optional)" +msgstr "(opcional)" -#: ../../addon/morepokes/morepokes.php:35 -msgid "fucked" -msgstr "ha mandado a la mierda a" +#: ../../Zotlabs/Module/Admin/Addons.php:418 +msgid "Download Addon Repo" +msgstr "Descargar el repositorio" -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonk" -msgstr "un golpe" +#: ../../Zotlabs/Module/Admin/Addons.php:425 +msgid "Install new repo" +msgstr "Instalar un nuevo repositorio" -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonked" -msgstr "ha golpeado a" +#: ../../Zotlabs/Module/Admin/Addons.php:426 ../../Zotlabs/Lib/Apps.php:536 +msgid "Install" +msgstr "Instalar" -#: ../../addon/morepokes/morepokes.php:37 -msgid "declare undying love for" -msgstr "una declaración de amor eterno" +#: ../../Zotlabs/Module/Admin/Addons.php:449 +msgid "Manage Repos" +msgstr "Gestionar los repositorios" -#: ../../addon/morepokes/morepokes.php:37 -msgid "declared undying love for" -msgstr "ha declarado amor eterno a" +#: ../../Zotlabs/Module/Admin/Addons.php:450 +msgid "Installed Addon Repositories" +msgstr "Repositorioe de addons instalados" -#: ../../addon/diaspora/Receiver.php:1536 -#, php-format -msgid "%1$s dislikes %2$s's %3$s" -msgstr "a %1$s no le gusta el %3$s de %2$s" +#: ../../Zotlabs/Module/Admin/Addons.php:451 +msgid "Install a New Addon Repository" +msgstr "Instalar un nuevo repositorio de addons" -#: ../../addon/diaspora/Mod_Diaspora.php:43 -msgid "Diaspora Protocol Settings updated." -msgstr "Los ajustes del protocolo de Diaspora se han actualizado." +#: ../../Zotlabs/Module/Admin/Addons.php:458 +msgid "Switch branch" +msgstr "Cambiar la rama" -#: ../../addon/diaspora/Mod_Diaspora.php:52 -msgid "" -"The diaspora protocol does not support location independence. Connections " -"you make within that network may be unreachable from alternate channel " -"locations." -msgstr "El protocolo de Diaspora no admite la independencia de la ubicación. Las conexiones que realice dentro de esa red pueden ser inaccesibles desde ubicaciones de canales alternativos." +#: ../../Zotlabs/Module/Apps.php:50 +msgid "Installed Apps" +msgstr "Apps instaladas" -#: ../../addon/diaspora/Mod_Diaspora.php:58 -msgid "Diaspora Protocol App" -msgstr "App Protocolo Diaspora" +#: ../../Zotlabs/Module/Apps.php:53 +msgid "Manage Apps" +msgstr "Administrar apps" -#: ../../addon/diaspora/Mod_Diaspora.php:77 -msgid "Allow any Diaspora member to comment on your public posts" -msgstr "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas" +#: ../../Zotlabs/Module/Apps.php:54 +msgid "Create Custom App" +msgstr "Crear una app personalizada" -#: ../../addon/diaspora/Mod_Diaspora.php:81 -msgid "Prevent your hashtags from being redirected to other sites" -msgstr "Impedir que sus \"hashtags\" sean redirigidos a otros sitios " +#: ../../Zotlabs/Module/Achievements.php:38 +msgid "Some blurb about what to do when you're new here" +msgstr "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí" -#: ../../addon/diaspora/Mod_Diaspora.php:85 +#: ../../Zotlabs/Module/Removeme.php:35 msgid "" -"Sign and forward posts and comments with no existing Diaspora signature" -msgstr "Firmar y enviar entradas y comentarios sin firma de Diaspora" +"Channel removals are not allowed within 48 hours of changing the account " +"password." +msgstr "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña." -#: ../../addon/diaspora/Mod_Diaspora.php:90 -msgid "Followed hashtags (comma separated, do not include the #)" -msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)" +#: ../../Zotlabs/Module/Removeme.php:60 +msgid "Remove This Channel" +msgstr "Eliminar este canal" -#: ../../addon/diaspora/Mod_Diaspora.php:99 -msgid "Diaspora Protocol" -msgstr "Protocolo Diaspora" +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +#: ../../Zotlabs/Module/Changeaddr.php:78 +msgid "WARNING: " +msgstr "ATENCIÓN:" -#: ../../addon/diaspora/import_diaspora.php:18 -msgid "No username found in import file." -msgstr "No se ha encontrado el nombre de usuario en el fichero de importación." +#: ../../Zotlabs/Module/Removeme.php:61 +msgid "This channel will be completely removed from the network. " +msgstr "Este canal va a ser completamente eliminado de la red. " -#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:75 -msgid "Unable to create a unique channel address. Import failed." -msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación." +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "This action is permanent and can not be undone!" +msgstr "¡Esta acción tiene carácter definitivo y no se puede deshacer!" -#: ../../addon/photocache/Mod_Photocache.php:27 -msgid "Photo Cache settings saved." -msgstr "Se ha guardado la configuración de la caché de fotos." +#: ../../Zotlabs/Module/Removeme.php:62 +#: ../../Zotlabs/Module/Removeaccount.php:59 +#: ../../Zotlabs/Module/Changeaddr.php:79 +msgid "Please enter your password for verification:" +msgstr "Por favor, introduzca su contraseña para su verificación:" -#: ../../addon/photocache/Mod_Photocache.php:36 +#: ../../Zotlabs/Module/Removeme.php:63 +msgid "Remove this channel and all its clones from the network" +msgstr "Eliminar este canal y todos sus clones de la red" + +#: ../../Zotlabs/Module/Removeme.php:63 msgid "" -"Photo Cache addon saves a copy of images from external sites locally to " -"increase your anonymity in the web." -msgstr "El complemento Photo Cache guarda localmente una copia de las imágenes de sitios externos para aumentar su anonimato en la Web." +"By default only the instance of the channel located on this hub will be " +"removed from the network" +msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red" -#: ../../addon/photocache/Mod_Photocache.php:42 -msgid "Photo Cache App" -msgstr "App Photo Cache" +#: ../../Zotlabs/Module/Removeme.php:64 +#: ../../Zotlabs/Module/Settings/Channel.php:594 +msgid "Remove Channel" +msgstr "Eliminar el canal" -#: ../../addon/photocache/Mod_Photocache.php:53 -msgid "Minimal photo size for caching" -msgstr "Tamaño mínimo de la foto para el almacenamiento en caché" +#: ../../Zotlabs/Module/Events.php:468 +msgid "Edit event title" +msgstr "Editar el título del evento" -#: ../../addon/photocache/Mod_Photocache.php:55 -msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default." -msgstr "En píxeles. Desde 1 hasta 1024, 0 será reemplazado por el predeterminado del sistema." +#: ../../Zotlabs/Module/Events.php:470 +msgid "Categories (comma-separated list)" +msgstr "Temas (lista separada por comas)" -#: ../../addon/photocache/Mod_Photocache.php:64 -msgid "Photo Cache" -msgstr "Photo Cache" +#: ../../Zotlabs/Module/Events.php:471 +msgid "Edit Category" +msgstr "Modificar el tema" -#: ../../addon/testdrive/testdrive.php:104 -#, php-format -msgid "Your account on %s will expire in a few days." -msgstr "Su cuenta en %s caducará en unos pocos días." +#: ../../Zotlabs/Module/Events.php:471 +msgid "Category" +msgstr "Tema" -#: ../../addon/testdrive/testdrive.php:105 -msgid "Your $Productname test account is about to expire." -msgstr "Su cuenta de prueba de $Productname está a punto de caducar." +#: ../../Zotlabs/Module/Events.php:474 +msgid "Edit start date and time" +msgstr "Modificar la fecha y hora de comienzo" -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 -msgid "Add some colour to tag clouds" -msgstr "Añadir color a las nubes de etiquetas" +#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Events.php:478 +msgid "Finish date and time are not known or not relevant" +msgstr "La fecha y hora de terminación no se conocen o no son relevantes" -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 -msgid "Rainbow Tag App" -msgstr "App Etiqueta Arcoiris" +#: ../../Zotlabs/Module/Events.php:477 +msgid "Edit finish date and time" +msgstr "Modificar la fecha y hora de terminación" -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 -msgid "Rainbow Tag" -msgstr "Etiqueta Arcoiris" +#: ../../Zotlabs/Module/Events.php:477 +msgid "Finish date and time" +msgstr "Fecha y hora de terminación" -#: ../../addon/upload_limits/upload_limits.php:25 -msgid "Show Upload Limits" -msgstr "Mostrar los límites de subida" +#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Events.php:480 +msgid "Adjust for viewer timezone" +msgstr "Ajustar para obtener el visor de los husos horarios" -#: ../../addon/upload_limits/upload_limits.php:27 -msgid "Hubzilla configured maximum size: " -msgstr "Tamaño máximo configurado por Hubzilla: " +#: ../../Zotlabs/Module/Events.php:479 +msgid "" +"Important for events that happen in a particular place. Not practical for " +"global holidays." +msgstr "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales." -#: ../../addon/upload_limits/upload_limits.php:28 -msgid "PHP upload_max_filesize: " -msgstr "PHP upload_max_filesize: " +#: ../../Zotlabs/Module/Events.php:481 +msgid "Edit Description" +msgstr "Editar la descripción" -#: ../../addon/upload_limits/upload_limits.php:29 -msgid "PHP post_max_size (must be larger than upload_max_filesize): " -msgstr "PHP post_max_size (debe ser mayor que upload_max_filesize): " +#: ../../Zotlabs/Module/Events.php:483 +msgid "Edit Location" +msgstr "Modificar la dirección" -#: ../../addon/gravatar/gravatar.php:123 -msgid "generic profile image" -msgstr "imagen del perfil general" +#: ../../Zotlabs/Module/Events.php:502 +msgid "Advanced Options" +msgstr "Opciones avanzadas" -#: ../../addon/gravatar/gravatar.php:124 -msgid "random geometric pattern" -msgstr "patrón geométrico aleatorio" +#: ../../Zotlabs/Module/Events.php:613 +msgid "l, F j" +msgstr "l j F" -#: ../../addon/gravatar/gravatar.php:125 -msgid "monster face" -msgstr "cara de monstruo" +#: ../../Zotlabs/Module/Events.php:696 +msgid "Edit Event" +msgstr "Editar el evento" -#: ../../addon/gravatar/gravatar.php:126 -msgid "computer generated face" -msgstr "cara generada por ordenador" +#: ../../Zotlabs/Module/Events.php:696 +msgid "Create Event" +msgstr "Crear un evento" -#: ../../addon/gravatar/gravatar.php:127 -msgid "retro arcade style face" -msgstr "cara de estilo retro arcade" +#: ../../Zotlabs/Module/Events.php:739 +msgid "Event removed" +msgstr "Evento borrado" -#: ../../addon/gravatar/gravatar.php:128 -msgid "Hub default profile photo" -msgstr "Foto del perfil por defecto del hub" +#: ../../Zotlabs/Module/Manage.php:138 +#: ../../Zotlabs/Module/New_channel.php:147 +#, php-format +msgid "You have created %1$.0f of %2$.0f allowed channels." +msgstr "Ha creado %1$.0f de %2$.0f canales permitidos." -#: ../../addon/gravatar/gravatar.php:143 -msgid "Information" -msgstr "Información" +#: ../../Zotlabs/Module/Manage.php:145 +msgid "Create a new channel" +msgstr "Crear un nuevo canal" -#: ../../addon/gravatar/gravatar.php:143 -msgid "" -"Libravatar addon is installed, too. Please disable Libravatar addon or this " -"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if " -"nothing was found at Libravatar." -msgstr "El addon Libravatar también está instalado. Por favor deshabilite el addon de Libravatar o este addon de Gravatar.<br> El addon de Libravatar volverá a Gravatar si no se encuentra nada en Libravatar." +#: ../../Zotlabs/Module/Manage.php:171 +msgid "Current Channel" +msgstr "Canal actual" -#: ../../addon/gravatar/gravatar.php:150 -#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:43 -msgid "Save Settings" -msgstr "Guardar ajustes" +#: ../../Zotlabs/Module/Manage.php:173 +msgid "Switch to one of your channels by selecting it." +msgstr "Cambiar a uno de sus canales seleccionándolo." -#: ../../addon/gravatar/gravatar.php:151 -msgid "Default avatar image" -msgstr "Imagen del avatar por defecto" +#: ../../Zotlabs/Module/Manage.php:174 +msgid "Default Channel" +msgstr "Canal principal" -#: ../../addon/gravatar/gravatar.php:151 -msgid "Select default avatar image if none was found at Gravatar. See README" -msgstr "Selecciona la imagen de avatar predeterminada si no se encontró ninguna en Gravatar. Ver README" +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Make Default" +msgstr "Convertir en predeterminado" -#: ../../addon/gravatar/gravatar.php:152 -msgid "Rating of images" -msgstr "Valoración de las imágenes" +#: ../../Zotlabs/Module/Manage.php:178 +#, php-format +msgid "%d new messages" +msgstr "%d mensajes nuevos" -#: ../../addon/gravatar/gravatar.php:152 -msgid "Select the appropriate avatar rating for your site. See README" -msgstr "Seleccione la valoración adecuada del avatar para su sitio. Ver README" +#: ../../Zotlabs/Module/Manage.php:179 +#, php-format +msgid "%d new introductions" +msgstr "%d nuevas solicitudes de conexión" -#: ../../addon/gravatar/gravatar.php:165 -msgid "Gravatar settings updated." -msgstr "Se han actualizado los ajustes de Gravatar." +#: ../../Zotlabs/Module/Manage.php:181 +msgid "Delegated Channel" +msgstr "Canal delegado" -#: ../../addon/hzfiles/hzfiles.php:81 -msgid "Hubzilla File Storage Import" -msgstr "Importar del depósito de ficheros de Hubzilla" +#: ../../Zotlabs/Module/Chanview.php:139 +msgid "toggle full screen mode" +msgstr "cambiar al modo de pantalla completa" -#: ../../addon/hzfiles/hzfiles.php:82 -msgid "This will import all your cloud files from another server." -msgstr "Esto importará todos sus ficheros en la nube desde otro servidor." +#: ../../Zotlabs/Module/Pubstream.php:20 +msgid "Public Stream App" +msgstr "App Stream público" -#: ../../addon/hzfiles/hzfiles.php:83 -msgid "Hubzilla Server base URL" -msgstr "URL base del servidor Hubzilla" +#: ../../Zotlabs/Module/Pubstream.php:21 +msgid "The unmoderated public stream of this hub" +msgstr "Stream público no moderado de este hub" -#: ../../addon/hzfiles/hzfiles.php:84 -#: ../../addon/content_import/Mod_content_import.php:140 -msgid "Since modified date yyyy-mm-dd" -msgstr "Modificado desde la fecha yyyy-mm-dd" +#: ../../Zotlabs/Module/Chatsvc.php:131 +msgid "Away" +msgstr "Ausente" -#: ../../addon/hzfiles/hzfiles.php:85 -#: ../../addon/content_import/Mod_content_import.php:141 -msgid "Until modified date yyyy-mm-dd" -msgstr "Modificado hasta la fecha yyyy-mm-dd" +#: ../../Zotlabs/Module/Chatsvc.php:136 +msgid "Online" +msgstr "Conectado/a" -#: ../../addon/visage/Mod_Visage.php:21 -msgid "Who viewed my channel/profile" -msgstr "Quién ha visto mi canal/perfi" +#: ../../Zotlabs/Module/Permcats.php:28 +msgid "Permission category name is required." +msgstr "El nombre de la categoría de permiso es obligatorio." -#: ../../addon/visage/Mod_Visage.php:25 -msgid "Recent Channel/Profile Viewers" -msgstr "Visitantes recientes del canal o perfil" +#: ../../Zotlabs/Module/Permcats.php:47 +msgid "Permission category saved." +msgstr "Se ha guardado la categoría del permiso." -#: ../../addon/visage/Mod_Visage.php:36 -msgid "No entries." -msgstr "No hay entradas." +#: ../../Zotlabs/Module/Permcats.php:62 +msgid "Permission Categories App" +msgstr "App Categorías de permisos" -#: ../../addon/nsabait/Mod_Nsabait.php:20 -#: ../../addon/nsabait/Mod_Nsabait.php:24 -msgid "NSA Bait App" -msgstr "App NSA Bait " +#: ../../Zotlabs/Module/Permcats.php:63 +msgid "Create custom connection permission limits" +msgstr "Crear límites de permisos de conexión personalizados" -#: ../../addon/nsabait/Mod_Nsabait.php:26 -msgid "Make yourself a political target" -msgstr "Conviértase en un objetivo político" +#: ../../Zotlabs/Module/Permcats.php:79 +msgid "" +"Use this form to create permission rules for various classes of people or " +"connections." +msgstr "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones." -#: ../../addon/mailtest/mailtest.php:19 -msgid "Send test email" -msgstr "Enviar un correo electrónico de prueba" +#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 +msgid "Permission Categories" +msgstr "Tipos de permisos" -#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50 -msgid "No recipients found." -msgstr "No se han encontrado destinatarios." +#: ../../Zotlabs/Module/Permcats.php:120 +msgid "Permission category name" +msgstr "Nombre de categoría de permiso" -#: ../../addon/mailtest/mailtest.php:66 -msgid "Mail sent." -msgstr "El correo electrónico ha sido enviado." +#: ../../Zotlabs/Module/Email_resend.php:12 +#: ../../Zotlabs/Module/Email_validation.php:24 +msgid "Token verification failed." +msgstr "Ha fallado el token de verificación." -#: ../../addon/mailtest/mailtest.php:68 -msgid "Sending of mail failed." -msgstr "No se pudo enviar el correo." +#: ../../Zotlabs/Module/Email_resend.php:30 +msgid "Email verification resent" +msgstr "Reenvío del email de verificación" -#: ../../addon/mailtest/mailtest.php:77 -msgid "Mail Test" -msgstr "Prueba de correo" +#: ../../Zotlabs/Module/Email_resend.php:33 +msgid "Unable to resend email verification message." +msgstr "No se puede reenviar el mensaje de verificación por correo electrónico." -#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92 -msgid "Message subject" -msgstr "Asunto del mensaje" +#: ../../Zotlabs/Module/Ratings.php:70 +msgid "No ratings" +msgstr "Ninguna valoración" -#: ../../addon/mdpost/mdpost.php:42 -msgid "Use markdown for editing posts" -msgstr "Usar markdown para editar las entradas" +#: ../../Zotlabs/Module/Ratings.php:98 +msgid "Rating: " +msgstr "Valoración:" -#: ../../addon/openstreetmap/openstreetmap.php:119 -msgid "View Larger" -msgstr "Ver más grande" +#: ../../Zotlabs/Module/Ratings.php:99 +msgid "Website: " +msgstr "Sitio web:" -#: ../../addon/openstreetmap/openstreetmap.php:135 -msgid "Tile Server URL" -msgstr "URL del servidor de mosaicos de imágenes " +#: ../../Zotlabs/Module/Ratings.php:101 +msgid "Description: " +msgstr "Descripción:" -#: ../../addon/openstreetmap/openstreetmap.php:135 -msgid "" -"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" " -"target=\"_blank\">public tile servers</a>" -msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>" +#: ../../Zotlabs/Module/Cal.php:64 +msgid "Permissions denied." +msgstr "Permisos denegados." -#: ../../addon/openstreetmap/openstreetmap.php:136 -msgid "Nominatim (reverse geocoding) Server URL" -msgstr "URL del servidor nominatim (geocodificación inversa)" +#: ../../Zotlabs/Module/Viewsrc.php:43 +msgid "item" +msgstr "elemento" -#: ../../addon/openstreetmap/openstreetmap.php:136 -msgid "" -"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" " -"target=\"_blank\">Nominatim servers</a>" -msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">servidores nominatim</a>" +#: ../../Zotlabs/Module/Apporder.php:47 +msgid "Change Order of Pinned Navbar Apps" +msgstr "Cambiar el orden de las aplicaciones fijas en la barra de navegación" -#: ../../addon/openstreetmap/openstreetmap.php:137 -msgid "Default zoom" -msgstr "Zoom predeterminado" +#: ../../Zotlabs/Module/Apporder.php:47 +msgid "Change Order of App Tray Apps" +msgstr "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones" -#: ../../addon/openstreetmap/openstreetmap.php:137 +#: ../../Zotlabs/Module/Apporder.php:48 msgid "" -"The default zoom level. (1:world, 18:highest, also depends on tile server)" -msgstr "El nivel de zoom predeterminado. (1: mundo, 18: el más alto, también depende del servidor del mosaico de imágenes)" +"Use arrows to move the corresponding app left (top) or right (bottom) in the" +" navbar" +msgstr "Use las flechas para mover la aplicación correspondiente a la izquierda (arriba) o derecha (abajo) en la barra de navegación." -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include marker on map" -msgstr "Incluir un marcador en el mapa" +#: ../../Zotlabs/Module/Apporder.php:48 +msgid "Use arrows to move the corresponding app up or down in the app tray" +msgstr "Use las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la bandeja de aplicaciones." -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include a marker on the map." -msgstr "Incluir un marcador en el mapa." +#: ../../Zotlabs/Module/Oexchange.php:27 +msgid "Unable to find your hub." +msgstr "No se puede encontrar su servidor." -#: ../../addon/msgfooter/msgfooter.php:47 -msgid "text to include in all outgoing posts from this site" -msgstr "texto a incluir en todos los mensajes salientes de este sitio" +#: ../../Zotlabs/Module/Oexchange.php:41 +msgid "Post successful." +msgstr "Enviado con éxito." -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 -msgid "Fuzzloc Settings updated." -msgstr "Los ajustes de Fuzzloc se han actualizado." +#: ../../Zotlabs/Module/Moderate.php:65 +msgid "Comment approved" +msgstr "El comentario ha sido aprobado" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 -msgid "Fuzzy Location App" -msgstr "App Fuzzy Location" +#: ../../Zotlabs/Module/Moderate.php:69 +msgid "Comment deleted" +msgstr "Se ha eliminado el comentario" -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35 +#: ../../Zotlabs/Module/Removeaccount.php:35 msgid "" -"Blur your precise location if your channel uses browser location mapping" -msgstr "Desdibujar su ubicación precisa si su canal utiliza el mapeo de ubicación del navegador" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40 -msgid "Minimum offset in meters" -msgstr "Offset mínimo en metros" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44 -msgid "Maximum offset in meters" -msgstr "Offset máximo en metros" +"Account removals are not allowed within 48 hours of changing the account " +"password." +msgstr "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña." -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 -msgid "Fuzzy Location" -msgstr "Fuzzy Location" +#: ../../Zotlabs/Module/Removeaccount.php:57 +msgid "Remove This Account" +msgstr "Eliminar esta cuenta" -#: ../../addon/rtof/rtof.php:51 -msgid "Post to Friendica" -msgstr "Publicar en Friendica" +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "" +"This account and all its channels will be completely removed from the " +"network. " +msgstr "Esta cuenta y todos sus canales van a ser eliminados de la red." -#: ../../addon/rtof/Mod_Rtof.php:24 -msgid "Friendica Crosspost Connector Settings saved." -msgstr "Se han guardado los ajustes del conector de publicación cruzada con Friendica." +#: ../../Zotlabs/Module/Removeaccount.php:60 +msgid "" +"Remove this account, all its channels and all its channel clones from the " +"network" +msgstr "Remover esta cuenta, todos sus canales y clones de la red" -#: ../../addon/rtof/Mod_Rtof.php:36 -msgid "Friendica Crosspost Connector App" -msgstr "App Friendica Crosspost Connector" +#: ../../Zotlabs/Module/Removeaccount.php:60 +msgid "" +"By default only the instances of the channels located on this hub will be " +"removed from the network" +msgstr "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red" -#: ../../addon/rtof/Mod_Rtof.php:37 -msgid "Relay public postings to a connected Friendica account" -msgstr "Retransmisión de entradas públicas a una cuenta Friendica conectada" +#: ../../Zotlabs/Module/Removeaccount.php:61 +#: ../../Zotlabs/Module/Settings/Account.php:105 +msgid "Remove Account" +msgstr "Eliminar cuenta" -#: ../../addon/rtof/Mod_Rtof.php:49 -msgid "Send public postings to Friendica by default" -msgstr "Enviar entradas públicas a Friendica por defecto" +#: ../../Zotlabs/Module/Lang.php:17 +msgid "Language App" +msgstr "App idioma" -#: ../../addon/rtof/Mod_Rtof.php:53 -msgid "Friendica API Path" -msgstr "Ruta a la API de Friendica" +#: ../../Zotlabs/Module/Lang.php:18 +msgid "Change UI language" +msgstr "Cambiar el idioma de la interfaz de usuario" -#: ../../addon/rtof/Mod_Rtof.php:53 ../../addon/redred/Mod_Redred.php:67 -msgid "https://{sitename}/api" -msgstr "https://{sitename}/api" +#: ../../Zotlabs/Module/Uexport.php:61 +msgid "Channel Export App" +msgstr "App Exportación de canales" -#: ../../addon/rtof/Mod_Rtof.php:57 -msgid "Friendica login name" -msgstr "Nombre de inicio de sesión en Friendica" +#: ../../Zotlabs/Module/Uexport.php:62 +msgid "Export your channel" +msgstr "Exportar su canal" -#: ../../addon/rtof/Mod_Rtof.php:61 -msgid "Friendica password" -msgstr "Contraseña de Friendica" +#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 +msgid "Export Channel" +msgstr "Exportar el canal" -#: ../../addon/rtof/Mod_Rtof.php:69 -msgid "Friendica Crosspost Connector" -msgstr "Friendica Crosspost Connector" +#: ../../Zotlabs/Module/Uexport.php:74 +msgid "" +"Export your basic channel information to a file. This acts as a backup of " +"your connections, permissions, profile and basic data, which can be used to " +"import your data to a new server hub, but does not contain your content." +msgstr "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido." -#: ../../addon/jappixmini/Mod_Jappixmini.php:96 -msgid "Jappixmini App" -msgstr "App Jappixmini" +#: ../../Zotlabs/Module/Uexport.php:75 +msgid "Export Content" +msgstr "Exportar contenidos" -#: ../../addon/jappixmini/Mod_Jappixmini.php:97 -msgid "Provides a Facebook-like chat using Jappix Mini" -msgstr "Proporciona un chat similar al de Facebook utilizando Jappix Mini" +#: ../../Zotlabs/Module/Uexport.php:76 +msgid "" +"Export your channel information and recent content to a JSON backup that can" +" be restored or imported to another server hub. This backs up all of your " +"connections, permissions, profile data and several months of posts. This " +"file may be VERY large. Please be patient - it may take several minutes for" +" this download to begin." +msgstr "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar." -#: ../../addon/jappixmini/Mod_Jappixmini.php:157 -#: ../../include/channel.php:1518 ../../include/channel.php:1689 -msgid "Status:" -msgstr "Estado:" +#: ../../Zotlabs/Module/Uexport.php:78 +msgid "Export your posts from a given year." +msgstr "Exporta sus publicaciones de un año dado." -#: ../../addon/jappixmini/Mod_Jappixmini.php:161 -msgid "Hide Jappixmini Chat-Widget from the webinterface" -msgstr "Ocultar el widget de chat Jappixmini en la interfaz web" +#: ../../Zotlabs/Module/Uexport.php:80 +msgid "" +"You may also export your posts and conversations for a particular year or " +"month. Adjust the date in your browser location bar to select other dates. " +"If the export fails (possibly due to memory exhaustion on your server hub), " +"please try again selecting a more limited date range." +msgstr "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño." -#: ../../addon/jappixmini/Mod_Jappixmini.php:166 -msgid "Jabber username" -msgstr "Nombre de usuario en Jabber" +#: ../../Zotlabs/Module/Uexport.php:81 +#, php-format +msgid "" +"To select all posts for a given year, such as this year, visit <a " +"href=\"%1$s\">%2$s</a>" +msgstr "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1$s\">%2$s</a>" -#: ../../addon/jappixmini/Mod_Jappixmini.php:172 -msgid "Jabber server" -msgstr "Servidor de Jabber" +#: ../../Zotlabs/Module/Uexport.php:82 +#, php-format +msgid "" +"To select all posts for a given month, such as January of this year, visit " +"<a href=\"%1$s\">%2$s</a>" +msgstr "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1$s\">%2$s</a>" -#: ../../addon/jappixmini/Mod_Jappixmini.php:178 -msgid "Jabber BOSH host URL" -msgstr "URL del host BOSH de Jabber" +#: ../../Zotlabs/Module/Uexport.php:83 +#, php-format +msgid "" +"These content files may be imported or restored by visiting <a " +"href=\"%1$s\">%2$s</a> on any site containing your channel. For best results" +" please import or restore these in date order (oldest first)." +msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)." -#: ../../addon/jappixmini/Mod_Jappixmini.php:185 -msgid "Jabber password" -msgstr "Contraseña en Jabber" +#: ../../Zotlabs/Module/Display.php:396 +msgid "Article" +msgstr "Artículo" -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -msgid "Encrypt Jabber password with Hubzilla password" -msgstr "Cifrar la contraseña de Jabber con la contraseña de Hubzilla" +#: ../../Zotlabs/Module/Display.php:448 +msgid "Item has been removed." +msgstr "Se ha eliminado el elemento." -#: ../../addon/jappixmini/Mod_Jappixmini.php:195 -#: ../../addon/redred/Mod_Redred.php:79 -msgid "Hubzilla password" -msgstr "Contraseña de Hubzilla" +#: ../../Zotlabs/Module/Common.php:14 +msgid "No channel." +msgstr "Ningún canal." -#: ../../addon/jappixmini/Mod_Jappixmini.php:199 -#: ../../addon/jappixmini/Mod_Jappixmini.php:203 -msgid "Approve subscription requests from Hubzilla contacts automatically" -msgstr "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla" +#: ../../Zotlabs/Module/Common.php:45 +msgid "No connections in common." +msgstr "Ninguna conexión en común." -#: ../../addon/jappixmini/Mod_Jappixmini.php:207 -msgid "Purge internal list of jabber addresses of contacts" -msgstr "Purgar la lista interna de las direcciones de contactos de jabber" +#: ../../Zotlabs/Module/Common.php:65 +msgid "View Common Connections" +msgstr "Ver las conexiones comunes" -#: ../../addon/jappixmini/Mod_Jappixmini.php:212 -msgid "Configuration Help" -msgstr "Ayuda para los ajustes" +#: ../../Zotlabs/Module/Impel.php:185 +#, php-format +msgid "%s element installed" +msgstr "%s elemento instalado" -#: ../../addon/jappixmini/Mod_Jappixmini.php:258 -msgid "Jappixmini Settings" -msgstr "Ajustes de Jappixmini" +#: ../../Zotlabs/Module/Impel.php:188 +#, php-format +msgid "%s element installation failed" +msgstr "Elemento con instalación fallida: %s" -#: ../../addon/upgrade_info/upgrade_info.php:48 -msgid "Your channel has been upgraded to $Projectname version" -msgstr "Su canal ha sido actualizado a la versión $Projectname" +#: ../../Zotlabs/Module/New_channel.php:159 +msgid "Your real name is recommended." +msgstr "Se recomienda su nombre real." -#: ../../addon/upgrade_info/upgrade_info.php:50 -msgid "Please have a look at the" -msgstr "Por favor, eche un vistazo a la " +#: ../../Zotlabs/Module/New_channel.php:160 +msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\"" +msgstr "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\"" -#: ../../addon/upgrade_info/upgrade_info.php:52 -msgid "git history" -msgstr "historial del git" +#: ../../Zotlabs/Module/New_channel.php:165 +msgid "" +"This will be used to create a unique network address (like an email " +"address)." +msgstr "Esto se utilizará para crear una dirección de red única (como una dirección de correo electrónico)." -#: ../../addon/upgrade_info/upgrade_info.php:54 -msgid "change log" -msgstr "lista de cambios" +#: ../../Zotlabs/Module/New_channel.php:167 +msgid "Allowed characters are a-z 0-9, - and _" +msgstr "Los caracteres permitidos son a-z 0-9, - and _" -#: ../../addon/upgrade_info/upgrade_info.php:55 -msgid "for further info." -msgstr "para más información." +#: ../../Zotlabs/Module/New_channel.php:175 +msgid "Channel name" +msgstr "Nombre del canal" -#: ../../addon/upgrade_info/upgrade_info.php:60 -msgid "Upgrade Info" -msgstr "Información de actualización" +#: ../../Zotlabs/Module/New_channel.php:178 +msgid "" +"Select a channel permission role compatible with your usage needs and " +"privacy requirements." +msgstr "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad." -#: ../../addon/upgrade_info/upgrade_info.php:64 -msgid "Do not show this again" -msgstr "No mostrar esto de nuevo" +#: ../../Zotlabs/Module/New_channel.php:181 +msgid "Create a Channel" +msgstr "Crear un canal" -#: ../../addon/channelreputation/channelreputation.php:100 -#: ../../addon/channelreputation/channelreputation.php:101 -#: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177 -#: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259 -#: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317 -msgid "Access Denied" -msgstr "Acceso denegado" +#: ../../Zotlabs/Module/New_channel.php:182 +msgid "" +"A channel is a unique network identity. It can represent a person (social " +"network profile), a forum (group), a business or celebrity page, a newsfeed," +" and many other things." +msgstr "Un canal es una identidad única en la red. Puede representar a una persona (un perfil de una red social), un foro o grupo, un negocio o una página de una celebridad, un \"feed\" de noticias, y muchas otras cosas." -#: ../../addon/channelreputation/channelreputation.php:108 -msgid "Enable Community Moderation" -msgstr "Habilitar la moderación de la comunidad" +#: ../../Zotlabs/Module/New_channel.php:183 +msgid "" +"or <a href=\"import\">import an existing channel</a> from another location." +msgstr "O <a href=\"import\">importar un canal </a> desde otro lugar." -#: ../../addon/channelreputation/channelreputation.php:116 -msgid "Reputation automatically given to new members" -msgstr "La reputación se otorga automáticamente a los nuevos miembros" +#: ../../Zotlabs/Module/New_channel.php:188 +msgid "Validate" +msgstr "Validar" -#: ../../addon/channelreputation/channelreputation.php:117 -msgid "Reputation will never fall below this value" -msgstr "La reputación nunca caerá por debajo de este valor" +#: ../../Zotlabs/Module/Magic.php:78 +msgid "Hub not found." +msgstr "Servidor no encontrado" -#: ../../addon/channelreputation/channelreputation.php:118 -msgid "Minimum reputation before posting is allowed" -msgstr "Reputación mínima antes de que se permita el envío de entradas" +#: ../../Zotlabs/Module/Ping.php:337 +msgid "sent you a private message" +msgstr "le ha enviado un mensaje privado" -#: ../../addon/channelreputation/channelreputation.php:119 -msgid "Minimum reputation before commenting is allowed" -msgstr "Mínima reputación antes de que se permitan los comentarios" +#: ../../Zotlabs/Module/Ping.php:393 +msgid "added your channel" +msgstr "añadió este canal a sus conexiones" -#: ../../addon/channelreputation/channelreputation.php:120 -msgid "Minimum reputation before a member is able to moderate other posts" -msgstr "Reputación mínima antes de que un miembro sea capaz de moderar otros mensajes" +#: ../../Zotlabs/Module/Ping.php:418 +msgid "requires approval" +msgstr "requiere aprobación" -#: ../../addon/channelreputation/channelreputation.php:121 -msgid "" -"Max ratio of moderator's reputation that can be added to/deducted from " -"reputation of person being moderated" -msgstr "Proporción máxima de la reputación del moderador que puede ser añadida/descontada de la reputación de la persona que está siendo moderada." +#: ../../Zotlabs/Module/Ping.php:428 +msgid "g A l F d" +msgstr "g A l d F" -#: ../../addon/channelreputation/channelreputation.php:122 -msgid "Reputation \"cost\" to post" -msgstr "\"Coste\" de la reputación a contabilizar" +#: ../../Zotlabs/Module/Ping.php:446 +msgid "[today]" +msgstr "[hoy]" -#: ../../addon/channelreputation/channelreputation.php:123 -msgid "Reputation \"cost\" to comment" -msgstr "\"Coste\" de la reputación para comentar" +#: ../../Zotlabs/Module/Ping.php:456 +msgid "posted an event" +msgstr "publicó un evento" -#: ../../addon/channelreputation/channelreputation.php:124 -msgid "" -"Reputation automatically recovers at this rate per hour until it reaches " -"minimum_to_post" -msgstr "La reputación se recupera automáticamente a esta tasa por hora hasta que alcanza el mínimo_a_post" +#: ../../Zotlabs/Module/Ping.php:490 +msgid "shared a file with you" +msgstr "compartió un archivo con usted" -#: ../../addon/channelreputation/channelreputation.php:125 -msgid "" -"When minimum_to_moderate > reputation > minimum_to_post reputation recovers " -"at this rate per hour" -msgstr "Cuando el mínimo_a_moderar > reputación > mínimo_a_publicar la reputación se recupera a esta tasa por hora " +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Private forum" +msgstr "Foro privado" -#: ../../addon/channelreputation/channelreputation.php:139 -msgid "Community Moderation Settings" -msgstr "Configuración de la moderación de la comunidad" +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Public forum" +msgstr "Foro público" -#: ../../addon/channelreputation/channelreputation.php:229 -msgid "Channel Reputation" -msgstr "Reputación del canal" +#: ../../Zotlabs/Module/Service_limits.php:23 +msgid "No service class restrictions found." +msgstr "No se han encontrado restricciones sobre esta clase de servicio." -#: ../../addon/channelreputation/channelreputation.php:233 -msgid "An Error has occurred." -msgstr "Se ha producido un error." +#: ../../Zotlabs/Module/Mood.php:134 +msgid "Mood App" +msgstr "App Estados de ánimo" -#: ../../addon/channelreputation/channelreputation.php:251 -msgid "Upvote" -msgstr "Votar a favor" +#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155 +msgid "Set your current mood and tell your friends" +msgstr "Describir su estado de ánimo para comunicárselo a sus amigos" -#: ../../addon/channelreputation/channelreputation.php:252 -msgid "Downvote" -msgstr "Votar en contra" +#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 +msgid "Mood" +msgstr "Estado de ánimo" -#: ../../addon/channelreputation/channelreputation.php:374 -msgid "Can moderate reputation on my channel." -msgstr "Se puede moderar la reputación en mi canal." +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "About this site" +msgstr "Acerca de este sitio" -#: ../../addon/superblock/superblock.php:337 -msgid "Block Completely" -msgstr "Bloquear completamente" +#: ../../Zotlabs/Module/Siteinfo.php:22 +msgid "Site Name" +msgstr "Nombre del sitio" -#: ../../addon/superblock/Mod_Superblock.php:20 -msgid "Superblock App" -msgstr "App Superblock" +#: ../../Zotlabs/Module/Siteinfo.php:26 +msgid "Administrator" +msgstr "Administrador" -#: ../../addon/superblock/Mod_Superblock.php:21 -msgid "Block channels" -msgstr "Bloquear canales" +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "Software and Project information" +msgstr "Información sobre el software y el proyecto" -#: ../../addon/superblock/Mod_Superblock.php:63 -msgid "superblock settings updated" -msgstr "se han actualizado los ajustes de superblock" +#: ../../Zotlabs/Module/Siteinfo.php:30 +msgid "This site is powered by $Projectname" +msgstr "Este sitio funciona con $Projectname" -#: ../../addon/superblock/Mod_Superblock.php:87 -msgid "Currently blocked" -msgstr "Actualmente bloqueado" +#: ../../Zotlabs/Module/Siteinfo.php:31 +msgid "" +"Federated and decentralised networking and identity services provided by Zot" +msgstr "Servicios federados y descentralizados de identidad y redes proporcionados por Zot" -#: ../../addon/superblock/Mod_Superblock.php:89 -msgid "No channels currently blocked" -msgstr "No hay canales bloqueados actualmente" +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Additional federated transport protocols:" +msgstr "Protocolos adicionales de transporte federado: " -#: ../../addon/nofed/Mod_Nofed.php:21 -msgid "nofed Settings saved." -msgstr "Se han guardado los ajustes de nofed." +#: ../../Zotlabs/Module/Siteinfo.php:36 +#, php-format +msgid "Version %s" +msgstr "Versión %s" -#: ../../addon/nofed/Mod_Nofed.php:33 -msgid "No Federation App" -msgstr "App No Federation" +#: ../../Zotlabs/Module/Siteinfo.php:37 +msgid "Project homepage" +msgstr "Página principal del proyecto" -#: ../../addon/nofed/Mod_Nofed.php:34 -msgid "" -"Prevent posting from being federated to anybody. It will exist only on your " -"channel page." -msgstr "Evitar que la entrada sea federada con nadie. Sólo existirá en la página de su canal." +#: ../../Zotlabs/Module/Siteinfo.php:38 +msgid "Developer homepage" +msgstr "Página principal del desarrollador" -#: ../../addon/nofed/Mod_Nofed.php:42 -msgid "Federate posts by default" -msgstr "Federar las publicaciones por defecto" +#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 +msgid "App installed." +msgstr "Aplicación instalada." -#: ../../addon/nofed/Mod_Nofed.php:50 -msgid "No Federation" -msgstr "No Federation" +#: ../../Zotlabs/Module/Appman.php:49 +msgid "Malformed app." +msgstr "Aplicación con errores" -#: ../../addon/nofed/nofed.php:47 -msgid "Federate" -msgstr "Federar" +#: ../../Zotlabs/Module/Appman.php:132 +msgid "Embed code" +msgstr "Código incorporado" -#: ../../addon/redred/Mod_Redred.php:24 -msgid "Channel is required." -msgstr "Se requiere un canal." +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Edit App" +msgstr "Modificar la aplicación" -#: ../../addon/redred/Mod_Redred.php:38 -msgid "Hubzilla Crosspost Connector Settings saved." -msgstr "Se han guardado los ajustes de Hubzilla Crosspost Connector" +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Create App" +msgstr "Crear una aplicación" -#: ../../addon/redred/Mod_Redred.php:50 -#: ../../addon/statusnet/Mod_Statusnet.php:146 -msgid "Hubzilla Crosspost Connector App" -msgstr "App Hubzilla Crosspost Connector" +#: ../../Zotlabs/Module/Appman.php:143 +msgid "Name of app" +msgstr "Nombre de la aplicación" -#: ../../addon/redred/Mod_Redred.php:51 -msgid "Relay public postings to another Hubzilla channel" -msgstr "Retransmisión de entradas a otro canal de Hubzilla" +#: ../../Zotlabs/Module/Appman.php:144 +msgid "Location (URL) of app" +msgstr "Dirección (URL) de la aplicación" -#: ../../addon/redred/Mod_Redred.php:63 -msgid "Send public postings to Hubzilla channel by default" -msgstr "Enviar entradas públicas al canal Hubzilla por defecto" +#: ../../Zotlabs/Module/Appman.php:146 +msgid "Photo icon URL" +msgstr "Dirección del icono" -#: ../../addon/redred/Mod_Redred.php:67 -msgid "Hubzilla API Path" -msgstr "Ruta de la API de Hubzilla" +#: ../../Zotlabs/Module/Appman.php:146 +msgid "80 x 80 pixels - optional" +msgstr "80 x 80 pixels - opcional" -#: ../../addon/redred/Mod_Redred.php:71 -msgid "Hubzilla login name" -msgstr "Nombre de inicio de sesión en Hubzilla" +#: ../../Zotlabs/Module/Appman.php:147 +msgid "Categories (optional, comma separated list)" +msgstr "Temas (opcional, lista separada por comas)" -#: ../../addon/redred/Mod_Redred.php:75 -msgid "Hubzilla channel name" -msgstr "Nombre del canal de Hubzilla" +#: ../../Zotlabs/Module/Appman.php:148 +msgid "Version ID" +msgstr "Versión" -#: ../../addon/redred/Mod_Redred.php:87 -msgid "Hubzilla Crosspost Connector" -msgstr "Hubzilla Crosspost Connector" +#: ../../Zotlabs/Module/Appman.php:149 +msgid "Price of app" +msgstr "Precio de la aplicación" -#: ../../addon/redred/redred.php:50 -msgid "Post to Hubzilla" -msgstr "Publicar en Hubzilla" +#: ../../Zotlabs/Module/Appman.php:150 +msgid "Location (URL) to purchase app" +msgstr "Dirección (URL) donde adquirir la aplicación" -#: ../../addon/logrot/logrot.php:36 -msgid "Logfile archive directory" -msgstr "Directorio de los ficheros de informe" +#: ../../Zotlabs/Module/Admin.php:97 +msgid "Blocked accounts" +msgstr "Cuentas bloqueadas" -#: ../../addon/logrot/logrot.php:36 -msgid "Directory to store rotated logs" -msgstr "Directorio para almacenar los informes rotados" +#: ../../Zotlabs/Module/Admin.php:98 +msgid "Expired accounts" +msgstr "Cuentas caducadas" -#: ../../addon/logrot/logrot.php:37 -msgid "Logfile size in bytes before rotating" -msgstr "Tamaño del fichero de informe en bytes antes de rotarlo" +#: ../../Zotlabs/Module/Admin.php:99 +msgid "Expiring accounts" +msgstr "Cuentas que caducan" + +#: ../../Zotlabs/Module/Admin.php:120 +msgid "Message queues" +msgstr "Mensajes en cola" -#: ../../addon/logrot/logrot.php:38 -msgid "Number of logfiles to retain" -msgstr "Número de ficheros de informe que se deben retener" +#: ../../Zotlabs/Module/Admin.php:134 +msgid "Your software should be updated" +msgstr "Debe actualizar su software" -#: ../../addon/content_import/Mod_content_import.php:27 -msgid "No server specified" -msgstr "No se ha especificado ningún servidor" +#: ../../Zotlabs/Module/Admin.php:139 +msgid "Summary" +msgstr "Sumario" -#: ../../addon/content_import/Mod_content_import.php:73 -msgid "Posts imported" -msgstr "Entradas importadas" +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Registered accounts" +msgstr "Cuentas registradas" -#: ../../addon/content_import/Mod_content_import.php:113 -msgid "Files imported" -msgstr "Ficheros importados" +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Pending registrations" +msgstr "Registros pendientes" -#: ../../addon/content_import/Mod_content_import.php:122 -msgid "" -"This addon app copies existing content and file storage to a cloned/copied " -"channel. Once the app is installed, visit the newly installed app. This will" -" allow you to set the location of your original channel and an optional date" -" range of files/conversations to copy." -msgstr "Este complemento copia el contenido existente y el almacenamiento de ficheros en un canal clonado/copiado. Una vez instalada la aplicación, visite la aplicación recién instalada. Esto le permitirá establecer la ubicación de su canal original y un rango de fechas opcional de ficheros/conversaciones para copiar." +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Registered channels" +msgstr "Canales registrados" -#: ../../addon/content_import/Mod_content_import.php:136 -msgid "" -"This will import all your conversations and cloud files from a cloned " -"channel on another server. This may take a while if you have lots of posts " -"and or files." -msgstr "Esto importará todas sus conversaciones y archivos de nube de un canal clonado en otro servidor. El proceso puede tardar un poco si tiene muchos mensajes y/o ficheros." +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Active addons" +msgstr "Addons acivos" -#: ../../addon/content_import/Mod_content_import.php:137 -msgid "Include posts" -msgstr "Incluir entradas" +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Version" +msgstr "Versión" -#: ../../addon/content_import/Mod_content_import.php:137 -msgid "Conversations, Articles, Cards, and other posted content" -msgstr "Conversaciones, artículos, fichas y otros contenidos publicados" +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (master)" +msgstr "Versión del repositorio (master)" -#: ../../addon/content_import/Mod_content_import.php:138 -msgid "Include files" -msgstr "Incluir ficheros" +#: ../../Zotlabs/Module/Admin.php:148 +msgid "Repository version (dev)" +msgstr "Versión del repositorio (dev)" -#: ../../addon/content_import/Mod_content_import.php:138 -msgid "Files, Photos and other cloud storage" -msgstr "Archivos, fotos y otro tipo de almacenamiento en la nube" +#: ../../Zotlabs/Module/Cards.php:51 +msgid "Cards App" +msgstr "App de Fichas" -#: ../../addon/content_import/Mod_content_import.php:139 -msgid "Original Server base URL" -msgstr "URL base del servidor original" +#: ../../Zotlabs/Module/Cards.php:52 +msgid "Create personal planning cards" +msgstr "Crear fichas de planificación personal" -#: ../../addon/frphotos/frphotos.php:92 -msgid "Friendica Photo Album Import" -msgstr "Importar un álbum de fotos de Friendica" +#: ../../Zotlabs/Module/Cards.php:112 +msgid "Add Card" +msgstr "Añadir una ficha" -#: ../../addon/frphotos/frphotos.php:93 -msgid "This will import all your Friendica photo albums to this Red channel." -msgstr "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla." +#: ../../Zotlabs/Module/Directory.php:116 +msgid "No default suggestions were found." +msgstr "No se encontraron sugerencias por defecto." -#: ../../addon/frphotos/frphotos.php:94 -msgid "Friendica Server base URL" -msgstr "URL base del servidor de Friendica" +#: ../../Zotlabs/Module/Directory.php:270 +#, php-format +msgid "%d rating" +msgid_plural "%d ratings" +msgstr[0] "%d valoración" +msgstr[1] "%d valoraciones" -#: ../../addon/frphotos/frphotos.php:95 -msgid "Friendica Login Username" -msgstr "Nombre de inicio de sesión en Friendica" +#: ../../Zotlabs/Module/Directory.php:281 +msgid "Gender: " +msgstr "Género:" -#: ../../addon/frphotos/frphotos.php:96 -msgid "Friendica Login Password" -msgstr "Contraseña de inicio de sesión en Friendica" +#: ../../Zotlabs/Module/Directory.php:283 +msgid "Status: " +msgstr "Estado:" -#: ../../addon/hsse/Mod_Hsse.php:15 -msgid "WYSIWYG status editor" -msgstr "Editor de estado de WYSIWYG" +#: ../../Zotlabs/Module/Directory.php:285 +msgid "Homepage: " +msgstr "Página personal:" -#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 -msgid "WYSIWYG Status App" -msgstr "App WYSIWYG Status" +#: ../../Zotlabs/Module/Directory.php:345 +msgid "Description:" +msgstr "Descripción:" -#: ../../addon/hsse/Mod_Hsse.php:34 -msgid "WYSIWYG Status" -msgstr "Estado de WYSIWYG" +#: ../../Zotlabs/Module/Directory.php:354 +msgid "Public Forum:" +msgstr "Foro público:" -#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 -msgid "Set your location" -msgstr "Establecer su ubicación" +#: ../../Zotlabs/Module/Directory.php:357 +msgid "Keywords: " +msgstr "Palabras clave:" -#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 -msgid "Clear browser location" -msgstr "Eliminar los datos de localización geográfica del navegador" +#: ../../Zotlabs/Module/Directory.php:360 +msgid "Don't suggest" +msgstr "No sugerir:" -#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 -msgid "Embed (existing) photo from your photo albums" -msgstr "Insertar una foto de sus álbumes" +#: ../../Zotlabs/Module/Directory.php:362 +msgid "Common connections (estimated):" +msgstr "Conexiones comunes (estimadas): " -#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 -msgid "Tag term:" -msgstr "Término de la etiqueta:" +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Global Directory" +msgstr "Directorio global:" -#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 -msgid "Where are you right now?" -msgstr "¿Donde está ahora?" +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Local Directory" +msgstr "Directorio local:" -#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 -msgid "Choose a different album..." -msgstr "Elegir un álbum diferente..." +#: ../../Zotlabs/Module/Directory.php:417 +msgid "Finding:" +msgstr "Encontrar:" -#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 -msgid "Comments enabled" -msgstr "Comentarios habilitados" +#: ../../Zotlabs/Module/Directory.php:422 +msgid "next page" +msgstr "siguiente página" -#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 -msgid "Comments disabled" -msgstr "Comentarios deshabilitados" +#: ../../Zotlabs/Module/Directory.php:422 +msgid "previous page" +msgstr "página anterior" -#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 -msgid "Page link name" -msgstr "Nombre del enlace de la página" +#: ../../Zotlabs/Module/Directory.php:423 +msgid "Sort options" +msgstr "Ordenar opciones" -#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 -msgid "Post as" -msgstr "Publicar como" +#: ../../Zotlabs/Module/Directory.php:424 +msgid "Alphabetic" +msgstr "Alfabético" -#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 -msgid "Toggle voting" -msgstr "Cambiar votación" +#: ../../Zotlabs/Module/Directory.php:425 +msgid "Reverse Alphabetic" +msgstr "Alfabético inverso" -#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 -msgid "Disable comments" -msgstr "Dehabilitar los comentarios" +#: ../../Zotlabs/Module/Directory.php:426 +msgid "Newest to Oldest" +msgstr "De más nuevo a más antiguo" -#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 -msgid "Toggle comments" -msgstr "Activar o desactivar los comentarios" +#: ../../Zotlabs/Module/Directory.php:427 +msgid "Oldest to Newest" +msgstr "De más antiguo a más nuevo" -#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 -msgid "Categories (optional, comma-separated list)" -msgstr "Temas (opcional, lista separada por comas)" +#: ../../Zotlabs/Module/Directory.php:444 +msgid "No entries (some entries may be hidden)." +msgstr "Sin entradas (algunas entradas pueden estar ocultas)." -#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 -msgid "Other networks and post services" -msgstr "Otras redes y servicios de publicación" +#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 +msgid "Authorize application connection" +msgstr "Autorizar una conexión de aplicación" -#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 -msgid "Set publish date" -msgstr "Establecer la fecha de publicación" +#: ../../Zotlabs/Module/Api.php:75 +msgid "Return to your app and insert this Security Code:" +msgstr "Vuelva a su aplicación e introduzca este código de seguridad: " -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 -msgid "ActivityPub Protocol Settings updated." -msgstr "Se han actualizado los ajustes del protocolo ActivityPub." +#: ../../Zotlabs/Module/Api.php:85 +msgid "Please login to continue." +msgstr "Por favor inicie sesión para continuar." -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:34 +#: ../../Zotlabs/Module/Api.php:97 msgid "" -"The activitypub protocol does not support location independence. Connections" -" you make within that network may be unreachable from alternate channel " -"locations." -msgstr "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos." +"Do you want to authorize this application to access your posts and contacts," +" and/or create new posts for you?" +msgstr "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 -msgid "Activitypub Protocol App" -msgstr "App Protocolo Activitypub" +#: ../../Zotlabs/Module/Regmod.php:15 +msgid "Please login." +msgstr "Por favor, inicie sesión." -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 -msgid "Deliver to ActivityPub recipients in privacy groups" -msgstr "Entregar a los destinatarios de ActivityPub en grupos de canales" +#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 +#: ../../Zotlabs/Module/Editblock.php:113 +msgid "Block Name" +msgstr "Nombre del bloque" + +#: ../../Zotlabs/Module/Blocks.php:156 +msgid "Block Title" +msgstr "Título del bloque" + +#: ../../Zotlabs/Module/Email_validation.php:36 +msgid "Email Verification Required" +msgstr "Verificación obligatoria del correo electrónico" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +#: ../../Zotlabs/Module/Email_validation.php:37 +#, php-format msgid "" -"May result in a large number of mentions and expose all the members of your " -"privacy group" -msgstr "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales" +"A verification token was sent to your email address [%s]. Enter that token " +"here to complete the account verification step. Please allow a few minutes " +"for delivery, and check your spam folder if you do not see the message." +msgstr "Se ha enviado un token de verificación a su dirección de correo electrónico [%s]. Ingrese ese símbolo aquí para completar el paso de verificación de cuenta. Por favor, espere unos minutos para el envío, y revise su carpeta de spam si no ve el mensaje." -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 -msgid "Send multi-media HTML articles" -msgstr "Enviar artículos multimedia en HTML" +#: ../../Zotlabs/Module/Email_validation.php:38 +msgid "Resend Email" +msgstr "Reenvío de correo electrónico" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 -msgid "Not supported by some microblog services such as Mastodon" -msgstr "No soportado por algunos servicios de microblog como Mastodon" +#: ../../Zotlabs/Module/Email_validation.php:41 +msgid "Validation token" +msgstr "Token de validación" -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 -msgid "Activitypub Protocol" -msgstr "Protocolo Activitypub" +#: ../../Zotlabs/Module/Attach.php:13 +msgid "Item not available." +msgstr "Elemento no disponible" -#: ../../addon/donate/donate.php:21 -msgid "Project Servers and Resources" -msgstr "Servidores y recursos del proyecto" +#: ../../Zotlabs/Module/Profile_photo.php:91 +#: ../../Zotlabs/Module/Cover_photo.php:83 +msgid "Image uploaded but image cropping failed." +msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. " -#: ../../addon/donate/donate.php:22 -msgid "Project Creator and Tech Lead" -msgstr "Creador del proyecto y director técnico" +#: ../../Zotlabs/Module/Profile_photo.php:164 +#: ../../Zotlabs/Module/Cover_photo.php:210 +msgid "Image resize failed." +msgstr "El ajuste del tamaño de la imagen ha fallado." -#: ../../addon/donate/donate.php:49 -msgid "" -"And the hundreds of other people and organisations who helped make the " -"Hubzilla possible." -msgstr "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla." +#: ../../Zotlabs/Module/Profile_photo.php:294 +#: ../../Zotlabs/Module/Cover_photo.php:263 +msgid "Image upload failed." +msgstr "La carga de la imagen ha fallado." -#: ../../addon/donate/donate.php:52 -msgid "" -"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving " -"their time and expertise - and often paying out of pocket for services they " -"share with others." -msgstr "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros." +#: ../../Zotlabs/Module/Profile_photo.php:313 +#: ../../Zotlabs/Module/Cover_photo.php:280 +msgid "Unable to process image." +msgstr "No ha sido posible procesar la imagen." -#: ../../addon/donate/donate.php:53 -msgid "" -"There is no corporate funding and no ads, and we do not collect and sell " -"your personal information. (We don't control your personal information - " -"<strong>you do</strong>.)" -msgstr "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)" +#: ../../Zotlabs/Module/Profile_photo.php:377 +#: ../../Zotlabs/Module/Profile_photo.php:429 +#: ../../Zotlabs/Module/Cover_photo.php:373 +#: ../../Zotlabs/Module/Cover_photo.php:388 +msgid "Photo not available." +msgstr "Foto no disponible." -#: ../../addon/donate/donate.php:54 +#: ../../Zotlabs/Module/Profile_photo.php:493 msgid "" -"Help support our ground-breaking work in decentralisation, web identity, and" -" privacy." -msgstr "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad." +"Your default profile photo is visible to anybody on the internet. Profile " +"photos for alternate profiles will inherit the permissions of the profile" +msgstr "Su foto de perfil predeterminada es visible para cualquiera en Internet. Las fotos de perfil para perfiles alternativos heredarán los permisos del predeterminado." -#: ../../addon/donate/donate.php:56 +#: ../../Zotlabs/Module/Profile_photo.php:493 msgid "" -"Your donations keep servers and services running and also helps us to " -"provide innovative new features and continued development." -msgstr "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada." +"Your profile photo is visible to anybody on the internet and may be " +"distributed to other websites." +msgstr "La foto de su perfil es visible para cualquiera en Internet y puede ser distribuida en otros sitios web." -#: ../../addon/donate/donate.php:59 -msgid "Donate" -msgstr "Donar" +#: ../../Zotlabs/Module/Profile_photo.php:495 +#: ../../Zotlabs/Module/Cover_photo.php:426 +msgid "Upload File:" +msgstr "Subir fichero:" -#: ../../addon/donate/donate.php:61 -msgid "" -"Choose a project, developer, or public hub to support with a one-time " -"donation" -msgstr "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez" +#: ../../Zotlabs/Module/Profile_photo.php:496 +#: ../../Zotlabs/Module/Cover_photo.php:427 +msgid "Select a profile:" +msgstr "Seleccionar un perfil:" -#: ../../addon/donate/donate.php:62 -msgid "Donate Now" -msgstr "Donar ahora" +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Use Photo for Profile" +msgstr "Usar la fotografía para el perfil" -#: ../../addon/donate/donate.php:63 -msgid "" -"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project " -"only)" -msgstr "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)" +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Change Profile Photo" +msgstr "Cambiar la foto del perfil" -#: ../../addon/donate/donate.php:64 -msgid "" -"Please indicate if you would like your first name or full name (or nothing) " -"to appear in our sponsor listing" -msgstr "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores" +#: ../../Zotlabs/Module/Profile_photo.php:498 +msgid "Use" +msgstr "Usar" -#: ../../addon/donate/donate.php:65 -msgid "Sponsor" -msgstr "Patrocinador" +#: ../../Zotlabs/Module/Profile_photo.php:503 +#: ../../Zotlabs/Module/Profile_photo.php:504 +#: ../../Zotlabs/Module/Cover_photo.php:432 +#: ../../Zotlabs/Module/Cover_photo.php:433 +msgid "Use a photo from your albums" +msgstr "Usar una foto de sus álbumes" -#: ../../addon/donate/donate.php:68 -msgid "Special thanks to: " -msgstr "Agradecimiento especial a: " +#: ../../Zotlabs/Module/Profile_photo.php:509 +#: ../../Zotlabs/Module/Cover_photo.php:438 ../../Zotlabs/Module/Wiki.php:405 +msgid "Choose a different album" +msgstr "Elegir un álbum diferente..." -#: ../../addon/chords/Mod_Chords.php:44 -msgid "" -"This is a fairly comprehensive and complete guitar chord dictionary which " -"will list most of the available ways to play a certain chord, starting from " -"the base of the fingerboard up to a few frets beyond the twelfth fret " -"(beyond which everything repeats). A couple of non-standard tunings are " -"provided for the benefit of slide players, etc." -msgstr "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc." +#: ../../Zotlabs/Module/Profile_photo.php:514 +#: ../../Zotlabs/Module/Cover_photo.php:444 +msgid "Select existing photo" +msgstr "Seleccionar una foto" -#: ../../addon/chords/Mod_Chords.php:46 -msgid "" -"Chord names start with a root note (A-G) and may include sharps (#) and " -"flats (b). This software will parse most of the standard naming conventions " -"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements." -msgstr "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales." +#: ../../Zotlabs/Module/Profile_photo.php:533 +#: ../../Zotlabs/Module/Cover_photo.php:461 +msgid "Crop Image" +msgstr "Recortar imagen" -#: ../../addon/chords/Mod_Chords.php:48 -msgid "" -"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " -"E7b13b11 ..." -msgstr "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..." +#: ../../Zotlabs/Module/Profile_photo.php:534 +#: ../../Zotlabs/Module/Cover_photo.php:462 +msgid "Please adjust the image cropping for optimum viewing." +msgstr "Por favor ajuste el recorte de la imagen para una visión óptima." -#: ../../addon/chords/Mod_Chords.php:51 -msgid "Guitar Chords" -msgstr "Acordes de guitarra" +#: ../../Zotlabs/Module/Profile_photo.php:536 +#: ../../Zotlabs/Module/Cover_photo.php:464 +msgid "Done Editing" +msgstr "Edición completada" -#: ../../addon/chords/Mod_Chords.php:52 -msgid "The complete online chord dictionary" -msgstr "El diccionario completo de acordes en línea" +#: ../../Zotlabs/Module/Editblock.php:138 +msgid "Edit Block" +msgstr "Modificar este bloque" -#: ../../addon/chords/Mod_Chords.php:57 -msgid "Tuning" -msgstr "Afinación" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "Enter a folder name" +msgstr "Escriba un nombre de carpeta" -#: ../../addon/chords/Mod_Chords.php:58 -msgid "Chord name: example: Em7" -msgstr "Nombre del acorde, por ejemplo: Em7" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "or select an existing folder (doubleclick)" +msgstr "o seleccione una (con un doble click)" -#: ../../addon/chords/Mod_Chords.php:59 -msgid "Show for left handed stringing" -msgstr "Mostrar para tocadores zurdos" +#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 +msgid "Save to Folder" +msgstr "Guardar en carpeta" -#: ../../addon/chords/chords.php:33 -msgid "Quick Reference" -msgstr "Referencia rápida" +#: ../../Zotlabs/Module/Editlayout.php:128 +#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189 +msgid "Layout Name" +msgstr "Nombre de la plantilla" -#: ../../addon/libertree/libertree.php:43 -msgid "Post to Libertree" -msgstr "Publicar en Libertree" +#: ../../Zotlabs/Module/Editlayout.php:129 +#: ../../Zotlabs/Module/Layouts.php:132 +msgid "Layout Description (Optional)" +msgstr "Descripción de la plantilla (opcional)" -#: ../../addon/libertree/Mod_Libertree.php:25 -msgid "Libertree Crosspost Connector Settings saved." -msgstr "Se han guardado los ajustes del conector de publicación cruzada con Libertree." +#: ../../Zotlabs/Module/Editlayout.php:137 +msgid "Edit Layout" +msgstr "Modificar la plantilla" -#: ../../addon/libertree/Mod_Libertree.php:35 -msgid "Libertree Crosspost Connector App" -msgstr "App Libertree Crosspost Connector" +#: ../../Zotlabs/Module/Connections.php:58 +#: ../../Zotlabs/Module/Connections.php:115 +#: ../../Zotlabs/Module/Connections.php:273 +msgid "Active" +msgstr "Activo/a" -#: ../../addon/libertree/Mod_Libertree.php:36 -msgid "Relay public posts to Libertree" -msgstr "Retransmisión de entradas públicas a Libertree" +#: ../../Zotlabs/Module/Connections.php:63 +#: ../../Zotlabs/Module/Connections.php:181 +#: ../../Zotlabs/Module/Connections.php:278 +msgid "Blocked" +msgstr "Bloqueadas" -#: ../../addon/libertree/Mod_Libertree.php:51 -msgid "Libertree API token" -msgstr "Token de la API de Libertree" +#: ../../Zotlabs/Module/Connections.php:68 +#: ../../Zotlabs/Module/Connections.php:188 +#: ../../Zotlabs/Module/Connections.php:277 +msgid "Ignored" +msgstr "Ignoradas" -#: ../../addon/libertree/Mod_Libertree.php:55 -msgid "Libertree site URL" -msgstr "URL del servidor de Libertree" +#: ../../Zotlabs/Module/Connections.php:73 +#: ../../Zotlabs/Module/Connections.php:202 +#: ../../Zotlabs/Module/Connections.php:276 +msgid "Hidden" +msgstr "Ocultas" -#: ../../addon/libertree/Mod_Libertree.php:59 -msgid "Post to Libertree by default" -msgstr "Publicar en Libertree por defecto" +#: ../../Zotlabs/Module/Connections.php:78 +#: ../../Zotlabs/Module/Connections.php:195 +msgid "Archived/Unreachable" +msgstr "Archivadas o inaccesibles" -#: ../../addon/libertree/Mod_Libertree.php:67 -msgid "Libertree Crosspost Connector" -msgstr "Libertree Crosspost Connector" +#: ../../Zotlabs/Module/Connections.php:83 +#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:180 +#: ../../Zotlabs/Module/Notifications.php:50 +msgid "New" +msgstr "Nuevas" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 -msgid "Flattr widget settings updated." -msgstr "Los ajustes del widget Flattr han sido actualizados." +#: ../../Zotlabs/Module/Connections.php:157 +msgid "Active Connections" +msgstr "Conexiones activas" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 -msgid "Flattr Widget App" -msgstr "App Flattr Widget" +#: ../../Zotlabs/Module/Connections.php:160 +msgid "Show active connections" +msgstr "Mostrar las conexiones activas" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54 -msgid "Add a Flattr button to your channel page" -msgstr "Proporcionar un botón Flattr a la página de su canal" +#: ../../Zotlabs/Module/Connections.php:167 +msgid "Show pending (new) connections" +msgstr "Mostrar conexiones (nuevas) pendientes" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 -msgid "Flattr user" -msgstr "Usuario en Flattr" +#: ../../Zotlabs/Module/Connections.php:184 +msgid "Only show blocked connections" +msgstr "Mostrar solo las conexiones bloqueadas" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "URL of the Thing to flattr" -msgstr "URL de la Cosa para apoyar en flattr" +#: ../../Zotlabs/Module/Connections.php:191 +msgid "Only show ignored connections" +msgstr "Mostrar solo conexiones ignoradas" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "If empty channel URL is used" -msgstr "Si está vacío, se usa la URL del canal" +#: ../../Zotlabs/Module/Connections.php:198 +msgid "Only show archived/unreachable connections" +msgstr "Mostrar solo las conexiones archivadas o no localizables" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 -msgid "Title of the Thing to flattr" -msgstr "Título de la Cosa para apoyar en flattr" +#: ../../Zotlabs/Module/Connections.php:205 +msgid "Only show hidden connections" +msgstr "Mostrar solo las conexiones ocultas" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 -msgid "If empty \"channel name on The Hubzilla\" will be used" -msgstr "Si está vacío, se usará \"nombre del canal en Hubzilla\"" +#: ../../Zotlabs/Module/Connections.php:220 +msgid "Show all connections" +msgstr "Mostrar todas las conexiones" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "Static or dynamic flattr button" -msgstr "Botón de flattr estático o dinámico" +#: ../../Zotlabs/Module/Connections.php:274 +msgid "Pending approval" +msgstr "Pendiente de aprobación" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "static" -msgstr "estático" +#: ../../Zotlabs/Module/Connections.php:275 +msgid "Archived" +msgstr "Archivadas" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "dynamic" -msgstr "dinámico" +#: ../../Zotlabs/Module/Connections.php:279 +msgid "Not connected at this location" +msgstr "No está conectado/a en esta ubicación" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "Alignment of the widget" -msgstr "Alineamiento del widget" +#: ../../Zotlabs/Module/Connections.php:296 +#, php-format +msgid "%1$s [%2$s]" +msgstr "%1$s [%2$s]" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "left" -msgstr "izquierda" +#: ../../Zotlabs/Module/Connections.php:297 +msgid "Edit connection" +msgstr "Editar conexión" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "right" -msgstr "derecha" +#: ../../Zotlabs/Module/Connections.php:299 +msgid "Delete connection" +msgstr "Eliminar conexión" -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 -msgid "Flattr Widget" -msgstr "Flattr Widget" +#: ../../Zotlabs/Module/Connections.php:308 +msgid "Channel address" +msgstr "Dirección del canal" -#: ../../addon/flattrwidget/flattrwidget.php:50 -msgid "Flattr this!" -msgstr "¡Apoyar esto en Flattr!" +#: ../../Zotlabs/Module/Connections.php:313 +msgid "Call" +msgstr "Llamar" -#: ../../addon/statusnet/Mod_Statusnet.php:61 -msgid "" -"Please contact your site administrator.<br />The provided API URL is not " -"valid." -msgstr "Por favor, contacte con el administrador de su sitio.<br />La URL de la API proporcionada no es válida." +#: ../../Zotlabs/Module/Connections.php:315 +msgid "Status" +msgstr "Estado" -#: ../../addon/statusnet/Mod_Statusnet.php:98 -msgid "We could not contact the GNU social API with the Path you entered." -msgstr "No podemos conectar con la API de GNU social con la ruta que ha proporcionado." +#: ../../Zotlabs/Module/Connections.php:317 +msgid "Connected" +msgstr "Conectado/a" -#: ../../addon/statusnet/Mod_Statusnet.php:130 -msgid "GNU social settings updated." -msgstr "Se han guardado los ajustes de GNU social." +#: ../../Zotlabs/Module/Connections.php:319 +msgid "Approve connection" +msgstr "Aprobar esta conexión" -#: ../../addon/statusnet/Mod_Statusnet.php:147 -msgid "" -"Relay public postings to a connected GNU social account (formerly StatusNet)" -msgstr "Retransmisión de entradas públicas a una cuenta conectada de GNU social (antiguo StarusNet)" +#: ../../Zotlabs/Module/Connections.php:321 +msgid "Ignore connection" +msgstr "Ignorar esta conexión" -#: ../../addon/statusnet/Mod_Statusnet.php:181 -msgid "Globally Available GNU social OAuthKeys" -msgstr "OAuthKeys globales de GNU social disponibles" +#: ../../Zotlabs/Module/Connections.php:322 +#: ../../Zotlabs/Module/Connedit.php:644 +msgid "Ignore" +msgstr "Ignorar" -#: ../../addon/statusnet/Mod_Statusnet.php:183 -msgid "" -"There are preconfigured OAuth key pairs for some GNU social servers " -"available. If you are using one of them, please use these credentials.<br " -"/>If not feel free to connect to any other GNU social instance (see below)." -msgstr "Existen pares de claves OAuth preconfiguradas disponibles para algunos servidores libres de GNU social. Si está usando uno de ellos, utilice estas credenciales.<br />Si no se siente libre de conectarse a cualquier otra instancia de GNU social (vea a continuación)." +#: ../../Zotlabs/Module/Connections.php:323 +msgid "Recent activity" +msgstr "Actividad reciente" -#: ../../addon/statusnet/Mod_Statusnet.php:198 -msgid "Provide your own OAuth Credentials" -msgstr "Proporcione sus propias credenciales de OAuth" +#: ../../Zotlabs/Module/Connections.php:328 +msgid "Connect at this location" +msgstr "Conectar en esta ubicación " -#: ../../addon/statusnet/Mod_Statusnet.php:200 -msgid "" -"No consumer key pair for GNU social found. Register your Hubzilla Account as" -" an desktop client on your GNU social account, copy the consumer key pair " -"here and enter the API base root.<br />Before you register your own OAuth " -"key pair ask the administrator if there is already a key pair for this " -"Hubzilla installation at your favourite GNU social installation." -msgstr "No se ha encontrado un par de claves de consumidor para GNU social. Registre su cuenta de Hubzilla como un cliente de escritorio en su cuenta social GNU, copie el par de claves de consumidor aquí y escriba la dirección raíz de la API.<br />Antes de registrar su propio par de claves OAuth, pregunte al administrador si ya hay un par de claves para esta instalación de Hubzilla en su instalación GNU social favorita." +#: ../../Zotlabs/Module/Connections.php:356 +msgid "Search your connections" +msgstr "Buscar sus conexiones" -#: ../../addon/statusnet/Mod_Statusnet.php:204 -msgid "OAuth Consumer Key" -msgstr "OAuth Consumer Key" +#: ../../Zotlabs/Module/Connections.php:357 +msgid "Connections search" +msgstr "Buscar conexiones" -#: ../../addon/statusnet/Mod_Statusnet.php:208 -msgid "OAuth Consumer Secret" -msgstr "OAuth Consumer Secret" +#: ../../Zotlabs/Module/Cover_photo.php:194 +#: ../../Zotlabs/Module/Cover_photo.php:252 +msgid "Cover Photos" +msgstr "Imágenes de portada del perfil" -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Base API Path" -msgstr "Ruta base de la API" +#: ../../Zotlabs/Module/Cover_photo.php:424 +msgid "Your cover photo may be visible to anybody on the internet" +msgstr "La foto de la portada puede ser visible para cualquiera en Internet" -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Remember the trailing /" -msgstr "Recuerde la barra /" +#: ../../Zotlabs/Module/Cover_photo.php:428 +msgid "Change Cover Photo" +msgstr "Cambiar la foto de portada del perfil" -#: ../../addon/statusnet/Mod_Statusnet.php:216 -msgid "GNU social application name" -msgstr "Nombre de la aplicación de GNU social" +#: ../../Zotlabs/Module/Photos.php:78 +msgid "Page owner information could not be retrieved." +msgstr "La información del propietario de la página no pudo ser recuperada." -#: ../../addon/statusnet/Mod_Statusnet.php:239 -msgid "" -"To connect to your GNU social account click the button below to get a " -"security code from GNU social which you have to copy into the input box " -"below and submit the form. Only your <strong>public</strong> posts will be " -"posted to GNU social." -msgstr "Para conectarse a su cuenta de GNU social, haga clic en el botón de abajo para obtener un código de seguridad de GNU social que tiene que copiar en el cuadro de entrada a continuación y envíe el formulario. Solo sus <strong>entradas</strong> públicas aparecerán en GNU social." +#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 +msgid "Album not found." +msgstr "Álbum no encontrado." -#: ../../addon/statusnet/Mod_Statusnet.php:241 -msgid "Log in with GNU social" -msgstr "Inicio de sesión en GNU social" +#: ../../Zotlabs/Module/Photos.php:103 +msgid "Delete Album" +msgstr "Borrar álbum" -#: ../../addon/statusnet/Mod_Statusnet.php:244 -msgid "Copy the security code from GNU social here" -msgstr "Copiar aquí el código de seguridad de GNU social" +#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 +msgid "Delete Photo" +msgstr "Borrar foto" -#: ../../addon/statusnet/Mod_Statusnet.php:254 -msgid "Cancel Connection Process" -msgstr "Cancelar el proceso de conexión" +#: ../../Zotlabs/Module/Photos.php:527 +msgid "No photos selected" +msgstr "No hay fotos seleccionadas" -#: ../../addon/statusnet/Mod_Statusnet.php:256 -msgid "Current GNU social API is" -msgstr "La API actual de GNU social es " +#: ../../Zotlabs/Module/Photos.php:576 +msgid "Access to this item is restricted." +msgstr "El acceso a este elemento está restringido." -#: ../../addon/statusnet/Mod_Statusnet.php:260 -msgid "Cancel GNU social Connection" -msgstr "Cancelar la conexión de GNU social" +#: ../../Zotlabs/Module/Photos.php:619 +#, php-format +msgid "%1$.2f MB of %2$.2f MB photo storage used." +msgstr "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado." -#: ../../addon/statusnet/Mod_Statusnet.php:272 -#: ../../addon/twitter/Mod_Twitter.php:147 -msgid "Currently connected to: " -msgstr "Actualmente está conectado a: " +#: ../../Zotlabs/Module/Photos.php:622 +#, php-format +msgid "%1$.2f MB photo storage used." +msgstr "%1$.2f MB de almacenamiento de fotos utilizado." -#: ../../addon/statusnet/Mod_Statusnet.php:277 -msgid "" -"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile " -"details from unknown viewers?</em>) the link potentially included in public " -"postings relayed to GNU social will lead the visitor to a blank page " -"informing the visitor that the access to your profile has been restricted." -msgstr "<strong>Aviso</strong>: Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>) el vínculo potencialmente incluido en las entradas públicas retransmitidas a GNU social llevará al visitante a una página en blanco que le informará de que el acceso a su perfil ha sido restringido." +#: ../../Zotlabs/Module/Photos.php:664 +msgid "Upload Photos" +msgstr "Subir fotos" -#: ../../addon/statusnet/Mod_Statusnet.php:282 -msgid "Post to GNU social by default" -msgstr "Publicar en GNU social por defecto" +#: ../../Zotlabs/Module/Photos.php:668 +msgid "Enter an album name" +msgstr "Introducir un nombre de álbum" -#: ../../addon/statusnet/Mod_Statusnet.php:282 -msgid "" -"If enabled your public postings will be posted to the associated GNU-social " -"account by default" -msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta GNU-social asociada de forma predeterminada" +#: ../../Zotlabs/Module/Photos.php:669 +msgid "or select an existing album (doubleclick)" +msgstr "o seleccionar un álbum (con un doble click)" -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:171 -msgid "Clear OAuth configuration" -msgstr "Limpiar la configuración de OAuth" +#: ../../Zotlabs/Module/Photos.php:670 +msgid "Create a status post for this upload" +msgstr "Crear un mensaje de estado para esta subida" -#: ../../addon/statusnet/Mod_Statusnet.php:303 -msgid "GNU-Social Crosspost Connector" -msgstr "GNU-Social Crosspost Connector" +#: ../../Zotlabs/Module/Photos.php:672 +msgid "Description (optional)" +msgstr "Descripción (opcional)" -#: ../../addon/statusnet/statusnet.php:145 -msgid "Post to GNU social" -msgstr "Publicar en GNU social" +#: ../../Zotlabs/Module/Photos.php:758 +msgid "Show Newest First" +msgstr "Mostrar lo más reciente primero" -#: ../../addon/statusnet/statusnet.php:594 -msgid "API URL" -msgstr "URL de la API" +#: ../../Zotlabs/Module/Photos.php:760 +msgid "Show Oldest First" +msgstr "Mostrar lo más antiguo primero" -#: ../../addon/statusnet/statusnet.php:597 -msgid "Application name" -msgstr "Nombre de la aplicación" +#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 +msgid "Add Photos" +msgstr "Añadir fotos" -#: ../../addon/qrator/qrator.php:48 -msgid "QR code" -msgstr "Código QR" +#: ../../Zotlabs/Module/Photos.php:865 +msgid "Permission denied. Access to this item may be restricted." +msgstr "Permiso denegado. El acceso a este elemento puede estar restringido." -#: ../../addon/qrator/qrator.php:63 -msgid "QR Generator" -msgstr "Generador QR" +#: ../../Zotlabs/Module/Photos.php:867 +msgid "Photo not available" +msgstr "Foto no disponible" -#: ../../addon/qrator/qrator.php:64 -msgid "Enter some text" -msgstr "Escribir algún texto" +#: ../../Zotlabs/Module/Photos.php:925 +msgid "Use as profile photo" +msgstr "Usar como foto del perfil" -#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 -msgid "Invalid game." -msgstr "Juego no válido." +#: ../../Zotlabs/Module/Photos.php:926 +msgid "Use as cover photo" +msgstr "Usar como imagen de portada del perfil" -#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417 -msgid "You are not a player in this game." -msgstr "Usted no participa en este juego." +#: ../../Zotlabs/Module/Photos.php:933 +msgid "Private Photo" +msgstr "Foto privada" -#: ../../addon/chess/Mod_Chess.php:242 -msgid "You must be a local channel to create a game." -msgstr "Debe ser un canal local para crear un juego" +#: ../../Zotlabs/Module/Photos.php:948 +msgid "View Full Size" +msgstr "Ver tamaño completo" -#: ../../addon/chess/Mod_Chess.php:260 -msgid "You must select one opponent that is not yourself." -msgstr "Debe seleccionar un oponente que no sea usted mismo." +#: ../../Zotlabs/Module/Photos.php:1030 +msgid "Edit photo" +msgstr "Editar foto" -#: ../../addon/chess/Mod_Chess.php:271 -msgid "Random color chosen." -msgstr "Elegido un color aleatorio." +#: ../../Zotlabs/Module/Photos.php:1032 +msgid "Rotate CW (right)" +msgstr "Girar CW (a la derecha)" -#: ../../addon/chess/Mod_Chess.php:279 -msgid "Error creating new game." -msgstr "Error al crear un nuevo juego." +#: ../../Zotlabs/Module/Photos.php:1033 +msgid "Rotate CCW (left)" +msgstr "Girar CCW (a la izquierda)" -#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 -msgid "Requested channel is not available." -msgstr "El canal solicitado no está disponible." +#: ../../Zotlabs/Module/Photos.php:1036 +msgid "Move photo to album" +msgstr "Mover la foto a un álbum" -#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 -msgid "Chess not installed." -msgstr "Chess no está instalado." +#: ../../Zotlabs/Module/Photos.php:1037 +msgid "Enter a new album name" +msgstr "Introducir un nuevo nombre de álbum" -#: ../../addon/chess/Mod_Chess.php:326 -msgid "You must select a local channel /chess/channelname" -msgstr "Debe seleccionar un canal local /chess/nombredelcanal" +#: ../../Zotlabs/Module/Photos.php:1038 +msgid "or select an existing one (doubleclick)" +msgstr "o seleccionar un álbum (con un doble click)" -#: ../../addon/chess/chess.php:645 -msgid "Enable notifications" -msgstr "Habilitar notificaciones" +#: ../../Zotlabs/Module/Photos.php:1043 +msgid "Add a Tag" +msgstr "Añadir una etiqueta" -#: ../../addon/twitter/Mod_Twitter.php:65 -msgid "Twitter settings updated." -msgstr "Se han actualizado los ajustes de Twitter." +#: ../../Zotlabs/Module/Photos.php:1051 +msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" +msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" -#: ../../addon/twitter/Mod_Twitter.php:78 -msgid "Twitter Crosspost Connector App" -msgstr "App Twitter Crosspost Connector" +#: ../../Zotlabs/Module/Photos.php:1054 +msgid "Flag as adult in album view" +msgstr "Marcar como \"solo para adultos\" en el álbum" -#: ../../addon/twitter/Mod_Twitter.php:79 -msgid "Relay public posts to Twitter" -msgstr "Retransmisión de entradas públicas a Twitter" +#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "I like this (toggle)" +msgstr "Me gusta (cambiar)" -#: ../../addon/twitter/Mod_Twitter.php:103 -msgid "" -"No consumer key pair for Twitter found. Please contact your site " -"administrator." -msgstr "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio." +#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "I don't like this (toggle)" +msgstr "No me gusta esto (cambiar)" -#: ../../addon/twitter/Mod_Twitter.php:125 -msgid "" -"At this Hubzilla instance the Twitter plugin was enabled but you have not " -"yet connected your account to your Twitter account. To do so click the " -"button below to get a PIN from Twitter which you have to copy into the input" -" box below and submit the form. Only your <strong>public</strong> posts will" -" be posted to Twitter." -msgstr "En esta instancia de Hubzilla, el complemento de Twitter estaba habilitado pero aún no ha conectado su cuenta a la cuenta de Twitter. Para ello, haga clic en el botón de abajo, para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus entradas <strong>públicas</ strong> se publicarán en Twitter." +#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 +#: ../../Zotlabs/Lib/ThreadItem.php:793 +msgid "This is you" +msgstr "Este es usted" -#: ../../addon/twitter/Mod_Twitter.php:127 -msgid "Log in with Twitter" -msgstr "Iniciar sesión en Twitter" +#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 +#: ../../Zotlabs/Lib/ThreadItem.php:232 ../../Zotlabs/Lib/ThreadItem.php:244 +msgid "View all" +msgstr "Ver todo" -#: ../../addon/twitter/Mod_Twitter.php:130 -msgid "Copy the PIN from Twitter here" -msgstr "Copiar aquí el PIN de Twitter" +#: ../../Zotlabs/Module/Photos.php:1246 +msgid "Photo Tools" +msgstr "Gestión de las fotos" -#: ../../addon/twitter/Mod_Twitter.php:152 -msgid "" -"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile " -"details from unknown viewers?</em>) the link potentially included in public " -"postings relayed to Twitter will lead the visitor to a blank page informing " -"the visitor that the access to your profile has been restricted." -msgstr "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido." +#: ../../Zotlabs/Module/Photos.php:1255 +msgid "In This Photo:" +msgstr "En esta foto:" -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Twitter post length" -msgstr "Longitud del mensaje en Twitter" +#: ../../Zotlabs/Module/Photos.php:1260 +msgid "Map" +msgstr "Mapa" -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Maximum tweet length" -msgstr "Longitud máxima del tweet" +#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 +msgctxt "noun" +msgid "Likes" +msgstr "Me gusta" -#: ../../addon/twitter/Mod_Twitter.php:162 -msgid "Send public postings to Twitter by default" -msgstr "Enviar mensajes públicos a Twitter de forma predeterminada" +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 +msgctxt "noun" +msgid "Dislikes" +msgstr "No me gusta" -#: ../../addon/twitter/Mod_Twitter.php:162 -msgid "" -"If enabled your public postings will be posted to the associated Twitter " -"account by default" -msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada." +#: ../../Zotlabs/Module/Lostpass.php:19 +msgid "No valid account found." +msgstr "No se ha encontrado una cuenta válida." -#: ../../addon/twitter/Mod_Twitter.php:181 -msgid "Twitter Crosspost Connector" -msgstr "Twitter Crosspost Connector" +#: ../../Zotlabs/Module/Lostpass.php:33 +msgid "Password reset request issued. Check your email." +msgstr "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico." -#: ../../addon/twitter/twitter.php:107 -msgid "Post to Twitter" -msgstr "Publicar en Twitter" +#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 +#, php-format +msgid "Site Member (%s)" +msgstr "Usuario del sitio (%s)" -#: ../../addon/smileybutton/Mod_Smileybutton.php:35 -msgid "Smileybutton App" -msgstr "App Smileybutton" +#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 +#, php-format +msgid "Password reset requested at %s" +msgstr "Se ha solicitado restablecer la contraseña en %s" -#: ../../addon/smileybutton/Mod_Smileybutton.php:36 -msgid "Adds a smileybutton to the jot editor" -msgstr "Añade un botón de emoticonos al editor jot" +#: ../../Zotlabs/Module/Lostpass.php:68 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." +msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado." -#: ../../addon/smileybutton/Mod_Smileybutton.php:44 -msgid "Hide the button and show the smilies directly." -msgstr "Ocultar el botón y mostrar los smilies directamente." +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1683 +msgid "Password Reset" +msgstr "Restablecer la contraseña" -#: ../../addon/smileybutton/Mod_Smileybutton.php:52 -msgid "Smileybutton Settings" -msgstr "Ajustes de Smileybutton" +#: ../../Zotlabs/Module/Lostpass.php:92 +msgid "Your password has been reset as requested." +msgstr "Su contraseña ha sido restablecida según lo solicitó." + +#: ../../Zotlabs/Module/Lostpass.php:93 +msgid "Your new password is" +msgstr "Su nueva contraseña es" + +#: ../../Zotlabs/Module/Lostpass.php:94 +msgid "Save or copy your new password - and then" +msgstr "Guarde o copie su nueva contraseña - y después" -#: ../../addon/cart/Settings/Cart.php:56 -msgid "Enable Test Catalog" -msgstr "Habilitar el catálogo de pruebas" +#: ../../Zotlabs/Module/Lostpass.php:95 +msgid "click here to login" +msgstr "pulse aquí para conectarse" -#: ../../addon/cart/Settings/Cart.php:68 -msgid "Enable Manual Payments" -msgstr "Permitir pagos manuales" +#: ../../Zotlabs/Module/Lostpass.php:96 +msgid "" +"Your password may be changed from the <em>Settings</em> page after " +"successful login." +msgstr "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión." -#: ../../addon/cart/Settings/Cart.php:88 -msgid "Base Merchant Currency" -msgstr "Divida base del vendedor" +#: ../../Zotlabs/Module/Lostpass.php:117 +#, php-format +msgid "Your password has changed at %s" +msgstr "Su contraseña en %s ha sido cambiada" -#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1263 -msgid "Cart Settings" -msgstr "Configuración del carro de la compra" +#: ../../Zotlabs/Module/Lostpass.php:130 +msgid "Forgot your Password?" +msgstr "¿Ha olvidado su contraseña?" -#: ../../addon/cart/myshop.php:30 -msgid "Access Denied." -msgstr "Acceso denegado" +#: ../../Zotlabs/Module/Lostpass.php:131 +msgid "" +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." +msgstr "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones." -#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1334 -msgid "Order Not Found" -msgstr "No se ha encontrado el pedido" +#: ../../Zotlabs/Module/Lostpass.php:132 +msgid "Email Address" +msgstr "Dirección de correo electrónico" -#: ../../addon/cart/myshop.php:186 ../../addon/cart/myshop.php:220 -#: ../../addon/cart/myshop.php:269 ../../addon/cart/myshop.php:327 -msgid "Invalid Item" -msgstr "Elemento no válido" +#: ../../Zotlabs/Module/Lostpass.php:133 ../../Zotlabs/Module/Pdledit.php:77 +msgid "Reset" +msgstr "Reiniciar" -#: ../../addon/cart/cart.php:159 -msgid "DB Cleanup Failure" -msgstr "Fallo de limpieza de la base de datos" +#: ../../Zotlabs/Module/Follow.php:36 +msgid "Connection added." +msgstr "Se ha incorporado una conexión." -#: ../../addon/cart/cart.php:565 -msgid "[cart] Item Added" -msgstr "[cesta] Artículo añadido" +#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 +msgid "Invalid item." +msgstr "Elemento no válido." -#: ../../addon/cart/cart.php:953 -msgid "Order already checked out." -msgstr "El pedido ya ha sido revisado" +#: ../../Zotlabs/Module/Page.php:173 +msgid "" +"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " +"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam," +" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " +"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse " +"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " +"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." -#: ../../addon/cart/cart.php:1256 -msgid "Drop database tables when uninstalling." -msgstr "Eliminar tablas de la base de datos al desinstalar." +#: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184 +#: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659 +msgid "Profile not found." +msgstr "Perfil no encontrado." -#: ../../addon/cart/cart.php:1275 ../../addon/cart/cart.php:1278 -msgid "Shop" -msgstr "Comprar" +#: ../../Zotlabs/Module/Profiles.php:44 +msgid "Profile deleted." +msgstr "Perfil eliminado." -#: ../../addon/cart/cart.php:1395 -msgid "Cart utilities for orders and payments" -msgstr "Utilidades del carro para pedidos y pagos" +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 +msgid "Profile-" +msgstr "Perfil-" -#: ../../addon/cart/cart.php:1433 -msgid "You must be logged into the Grid to shop." -msgstr "Debe iniciar sesión en la red para comprar." +#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 +msgid "New profile created." +msgstr "El nuevo perfil ha sido creado." -#: ../../addon/cart/cart.php:1466 -#: ../../addon/cart/submodules/paypalbutton.php:392 -#: ../../addon/cart/manual_payments.php:68 -msgid "Order not found." -msgstr "El pedido no se ha encontrado." +#: ../../Zotlabs/Module/Profiles.php:111 +msgid "Profile unavailable to clone." +msgstr "Perfil no disponible para clonar." -#: ../../addon/cart/cart.php:1474 -msgid "Access denied." -msgstr "Acceso denegado" +#: ../../Zotlabs/Module/Profiles.php:146 +msgid "Profile unavailable to export." +msgstr "Perfil no disponible para exportar." -#: ../../addon/cart/cart.php:1526 ../../addon/cart/cart.php:1669 -msgid "No Order Found" -msgstr "No se ha encontrado ningún pedido" +#: ../../Zotlabs/Module/Profiles.php:252 +msgid "Profile Name is required." +msgstr "Se necesita el nombre del perfil." -#: ../../addon/cart/cart.php:1535 -msgid "An unknown error has occurred Please start again." -msgstr "Se ha producido un error desconocido Vuelva a empezar." +#: ../../Zotlabs/Module/Profiles.php:459 +msgid "Marital Status" +msgstr "Estado civil" -#: ../../addon/cart/cart.php:1702 -msgid "Invalid Payment Type. Please start again." -msgstr "Tipo de pago no válido. Por favor, empiece de nuevo." +#: ../../Zotlabs/Module/Profiles.php:463 +msgid "Romantic Partner" +msgstr "Pareja sentimental" -#: ../../addon/cart/cart.php:1709 -msgid "Order not found" -msgstr "El pedido no se ha encontrado" +#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 +msgid "Likes" +msgstr "Me gusta" -#: ../../addon/cart/submodules/paypalbutton.php:85 -msgid "Enable Paypal Button Module" -msgstr "Habilitar el módulo del botón de Paypal" +#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 +msgid "Dislikes" +msgstr "No me gusta" -#: ../../addon/cart/submodules/paypalbutton.php:93 -msgid "Use Production Key" -msgstr "Utilizar clave en entorno de producción" +#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 +msgid "Work/Employment" +msgstr "Trabajo:" -#: ../../addon/cart/submodules/paypalbutton.php:100 -msgid "Paypal Sandbox Client Key" -msgstr "Clave de cliente en el entorno de pruebas de Paypal" +#: ../../Zotlabs/Module/Profiles.php:478 +msgid "Religion" +msgstr "Religión" -#: ../../addon/cart/submodules/paypalbutton.php:107 -msgid "Paypal Sandbox Secret Key" -msgstr "Clave secreta en el entorno de pruebas de Paypal" +#: ../../Zotlabs/Module/Profiles.php:482 +msgid "Political Views" +msgstr "Ideas políticas" -#: ../../addon/cart/submodules/paypalbutton.php:113 -msgid "Paypal Production Client Key" -msgstr "Clave de cliente en el entorno de producción de Paypal" +#: ../../Zotlabs/Module/Profiles.php:490 +msgid "Sexual Preference" +msgstr "Preferencia sexual" -#: ../../addon/cart/submodules/paypalbutton.php:120 -msgid "Paypal Production Secret Key" -msgstr "Clave secreta en el entorno de producción de Paypal" +#: ../../Zotlabs/Module/Profiles.php:494 +msgid "Homepage" +msgstr "Página personal" -#: ../../addon/cart/submodules/paypalbutton.php:252 -msgid "Paypal button payments are not enabled." -msgstr "Los pagos con el botón de Paypal no están habilitados." +#: ../../Zotlabs/Module/Profiles.php:498 +msgid "Interests" +msgstr "Intereses" -#: ../../addon/cart/submodules/paypalbutton.php:270 -msgid "" -"Paypal button payments are not properly configured. Please choose another " -"payment option." -msgstr "Los pagos con el botón de Paypal no están configurados correctamente. Por favor, elija otra opción de pago." +#: ../../Zotlabs/Module/Profiles.php:594 +msgid "Profile updated." +msgstr "Perfil actualizado." -#: ../../addon/cart/submodules/manualcat.php:61 -msgid "Enable Manual Cart Module" -msgstr "Habilitar el módulo de carro manual" +#: ../../Zotlabs/Module/Profiles.php:678 +msgid "Hide your connections list from viewers of this profile" +msgstr "Ocultar la lista de conexiones a los visitantes del perfil" -#: ../../addon/cart/submodules/manualcat.php:173 -#: ../../addon/cart/submodules/hzservices.php:160 -msgid "New Sku" -msgstr "Nuevo SKU (número de referencia)" +#: ../../Zotlabs/Module/Profiles.php:722 +msgid "Edit Profile Details" +msgstr "Modificar los detalles de este perfil" -#: ../../addon/cart/submodules/manualcat.php:209 -#: ../../addon/cart/submodules/hzservices.php:195 -msgid "Cannot save edits to locked item." -msgstr "No se pueden guardar las ediciones en el elemento bloqueado." +#: ../../Zotlabs/Module/Profiles.php:724 +msgid "View this profile" +msgstr "Ver este perfil" -#: ../../addon/cart/submodules/manualcat.php:252 -#: ../../addon/cart/submodules/hzservices.php:644 -msgid "Changes Locked" -msgstr "Cambios bloqueados" +#: ../../Zotlabs/Module/Profiles.php:726 +msgid "Profile Tools" +msgstr "Gestión del perfil" -#: ../../addon/cart/submodules/manualcat.php:256 -#: ../../addon/cart/submodules/hzservices.php:648 -msgid "Item available for purchase." -msgstr "Artículo disponible para la compra." +#: ../../Zotlabs/Module/Profiles.php:727 +msgid "Change cover photo" +msgstr "Cambiar la imagen de portada del perfil" -#: ../../addon/cart/submodules/manualcat.php:263 -#: ../../addon/cart/submodules/hzservices.php:655 -msgid "Price" -msgstr "Precio" +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Create a new profile using these settings" +msgstr "Crear un nuevo perfil usando estos ajustes" -#: ../../addon/cart/submodules/hzservices.php:62 -msgid "Enable Hubzilla Services Module" -msgstr "Habilitar el Módulo de Servicios de Hubzilla" +#: ../../Zotlabs/Module/Profiles.php:730 +msgid "Clone this profile" +msgstr "Clonar este perfil" -#: ../../addon/cart/submodules/hzservices.php:243 -#: ../../addon/cart/submodules/hzservices.php:330 -msgid "SKU not found." -msgstr "No se ha encontrado el SKU" +#: ../../Zotlabs/Module/Profiles.php:731 +msgid "Delete this profile" +msgstr "Eliminar este perfil" -#: ../../addon/cart/submodules/hzservices.php:296 -#: ../../addon/cart/submodules/hzservices.php:300 -msgid "Invalid Activation Directive." -msgstr "Directiva de activación no válida." +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Add profile things" +msgstr "Añadir cosas al perfil" -#: ../../addon/cart/submodules/hzservices.php:371 -#: ../../addon/cart/submodules/hzservices.php:375 -msgid "Invalid Deactivation Directive." -msgstr "Directiva de desactivación no válida" +#: ../../Zotlabs/Module/Profiles.php:733 +msgid "Personal" +msgstr "Personales" -#: ../../addon/cart/submodules/hzservices.php:561 -msgid "Add to this privacy group" -msgstr "Añadir a este grupo de canales" +#: ../../Zotlabs/Module/Profiles.php:735 +msgid "Relationship" +msgstr "Relación" -#: ../../addon/cart/submodules/hzservices.php:577 -msgid "Set user service class" -msgstr "Configurar la clase de servicio al usuario" +#: ../../Zotlabs/Module/Profiles.php:738 +msgid "Import profile from file" +msgstr "Importar perfil desde un fichero" -#: ../../addon/cart/submodules/hzservices.php:604 -msgid "You must be using a local account to purchase this service." -msgstr "Usted debe estar usando una cuenta local para comprar este servicio." +#: ../../Zotlabs/Module/Profiles.php:739 +msgid "Export profile to file" +msgstr "Exportar perfil a un fichero" -#: ../../addon/cart/submodules/hzservices.php:659 -msgid "Add buyer to privacy group" -msgstr "Agregar comprador al grupo de canales" +#: ../../Zotlabs/Module/Profiles.php:740 +msgid "Your gender" +msgstr "Género" -#: ../../addon/cart/submodules/hzservices.php:664 -msgid "Add buyer as connection" -msgstr "Añadir comprador como conexión" +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "Marital status" +msgstr "Estado civil" -#: ../../addon/cart/submodules/hzservices.php:672 -#: ../../addon/cart/submodules/hzservices.php:714 -msgid "Set Service Class" -msgstr "Establecer clase de servicio" +#: ../../Zotlabs/Module/Profiles.php:742 +msgid "Sexual preference" +msgstr "Preferencia sexual" -#: ../../addon/cart/submodules/subscriptions.php:151 -msgid "Enable Subscription Management Module" -msgstr "Habilitar el módulo de gestión de suscripciones" +#: ../../Zotlabs/Module/Profiles.php:745 +msgid "Profile name" +msgstr "Nombre del perfil" -#: ../../addon/cart/submodules/subscriptions.php:223 -msgid "" -"Cannot include subscription items with different terms in the same order." -msgstr "No se pueden incluir artículos de suscripción con términos diferentes en el mismo orden." +#: ../../Zotlabs/Module/Profiles.php:747 +msgid "This is your default profile." +msgstr "Este es su perfil principal." -#: ../../addon/cart/submodules/subscriptions.php:372 -msgid "Select Subscription to Edit" -msgstr "Seleccione suscripción a editar" +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Your full name" +msgstr "Nombre completo" -#: ../../addon/cart/submodules/subscriptions.php:380 -msgid "Edit Subscriptions" -msgstr "Editar suscripciones" +#: ../../Zotlabs/Module/Profiles.php:750 +msgid "Title/Description" +msgstr "Título o descripción" -#: ../../addon/cart/submodules/subscriptions.php:414 -msgid "Subscription SKU" -msgstr "SKU de la suscripción" +#: ../../Zotlabs/Module/Profiles.php:753 +msgid "Street address" +msgstr "Dirección" -#: ../../addon/cart/submodules/subscriptions.php:419 -msgid "Catalog Description" -msgstr "Descripción del catálogo" +#: ../../Zotlabs/Module/Profiles.php:754 +msgid "Locality/City" +msgstr "Ciudad" -#: ../../addon/cart/submodules/subscriptions.php:423 -msgid "Subscription available for purchase." -msgstr "Suscripción disponible para la compra." +#: ../../Zotlabs/Module/Profiles.php:755 +msgid "Region/State" +msgstr "Región o Estado" -#: ../../addon/cart/submodules/subscriptions.php:428 -msgid "Maximum active subscriptions to this item per account." -msgstr "Máximo de suscripciones activas a este artículo por cuenta." +#: ../../Zotlabs/Module/Profiles.php:756 +msgid "Postal/Zip code" +msgstr "Código postal" -#: ../../addon/cart/submodules/subscriptions.php:431 -msgid "Subscription price." -msgstr "Precio de la suscripción." +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Who (if applicable)" +msgstr "Quién (si es pertinente)" -#: ../../addon/cart/submodules/subscriptions.php:435 -msgid "Quantity" -msgstr "Cuantía" +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com" -#: ../../addon/cart/submodules/subscriptions.php:439 -msgid "Term" -msgstr "Condición" +#: ../../Zotlabs/Module/Profiles.php:763 +msgid "Since (date)" +msgstr "Desde (fecha)" -#: ../../addon/cart/manual_payments.php:7 -msgid "Error: order mismatch. Please try again." -msgstr "Error: desajuste de pedidos. Por favor, inténtelo de nuevo." +#: ../../Zotlabs/Module/Profiles.php:766 +msgid "Tell us about yourself" +msgstr "Háblenos de usted" -#: ../../addon/cart/manual_payments.php:61 -msgid "Manual payments are not enabled." -msgstr "Los pagos manuales no están habilitados." +#: ../../Zotlabs/Module/Profiles.php:768 +msgid "Hometown" +msgstr "Lugar de nacimiento" -#: ../../addon/cart/manual_payments.php:77 -msgid "Finished" -msgstr "Terminado" +#: ../../Zotlabs/Module/Profiles.php:769 +msgid "Political views" +msgstr "Ideas políticas" -#: ../../addon/piwik/piwik.php:85 -msgid "" -"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " -"analytics tool." -msgstr "Este sitio es rastreado mediante la herramienta analítica <a href='http://www.piwik.org'>Piwik</a>." +#: ../../Zotlabs/Module/Profiles.php:770 +msgid "Religious views" +msgstr "Creencias religiosas" -#: ../../addon/piwik/piwik.php:88 -#, php-format -msgid "" -"If you do not want that your visits are logged this way you <a href='%s'>can" -" set a cookie to prevent Piwik from tracking further visits of the site</a> " -"(opt-out)." -msgstr "Si usted no quiere que sus visitas se registren de esta manera <a href='%s'>puede establecer una cookie para evitar que Piwik rastree otras visitas del sitio</a> (opt-out)." +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Keywords used in directory listings" +msgstr "Palabras clave utilizadas en los listados de directorios" -#: ../../addon/piwik/piwik.php:96 -msgid "Piwik Base URL" -msgstr "URL base de Piwik" +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Example: fishing photography software" +msgstr "Por ejemplo: software de fotografía submarina" -#: ../../addon/piwik/piwik.php:96 -msgid "" -"Absolute path to your Piwik installation. (without protocol (http/s), with " -"trailing slash)" -msgstr "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)" +#: ../../Zotlabs/Module/Profiles.php:774 +msgid "Musical interests" +msgstr "Preferencias musicales" -#: ../../addon/piwik/piwik.php:97 -msgid "Site ID" -msgstr "ID del sitio" +#: ../../Zotlabs/Module/Profiles.php:775 +msgid "Books, literature" +msgstr "Libros, literatura" -#: ../../addon/piwik/piwik.php:98 -msgid "Show opt-out cookie link?" -msgstr "Mostrar el enlace de la cookie opt-out?" +#: ../../Zotlabs/Module/Profiles.php:776 +msgid "Television" +msgstr "Televisión" -#: ../../addon/piwik/piwik.php:99 -msgid "Asynchronous tracking" -msgstr "Rastreo asíncrono" +#: ../../Zotlabs/Module/Profiles.php:777 +msgid "Film/Dance/Culture/Entertainment" +msgstr "Cine, danza, cultura, entretenimiento" -#: ../../addon/piwik/piwik.php:100 -msgid "Enable frontend JavaScript error tracking" -msgstr "Habilitar la interfaz JavaScript de seguimiento de errores" +#: ../../Zotlabs/Module/Profiles.php:778 +msgid "Hobbies/Interests" +msgstr "Aficiones o intereses" -#: ../../addon/piwik/piwik.php:100 -msgid "This feature requires Piwik >= 2.2.0" -msgstr "Esta funcionalidad requiere Piwik >= 2.2.0" +#: ../../Zotlabs/Module/Profiles.php:779 +msgid "Love/Romance" +msgstr "Vida sentimental o amorosa" -#: ../../addon/tour/tour.php:76 -msgid "Edit your profile and change settings." -msgstr "Editar su perfil y cambiar los ajustes." +#: ../../Zotlabs/Module/Profiles.php:781 +msgid "School/Education" +msgstr "Estudios" -#: ../../addon/tour/tour.php:77 -msgid "Click here to see activity from your connections." -msgstr "Pulsar aquí para ver la actividad de sus conexiones." +#: ../../Zotlabs/Module/Profiles.php:782 +msgid "Contact information and social networks" +msgstr "Información de contacto y redes sociales" -#: ../../addon/tour/tour.php:78 -msgid "Click here to see your channel home." -msgstr "Pulsar aquí para ver la página de inicio de su canal." +#: ../../Zotlabs/Module/Profiles.php:783 +msgid "My other channels" +msgstr "Mis otros canales" -#: ../../addon/tour/tour.php:79 -msgid "You can access your private messages from here." -msgstr "Puede acceder a sus mensajes privados desde aquí." +#: ../../Zotlabs/Module/Profiles.php:785 +msgid "Communications" +msgstr "Comunicaciones" -#: ../../addon/tour/tour.php:80 -msgid "Create new events here." -msgstr "Crear nuevos eventos aquí." +#: ../../Zotlabs/Module/Subthread.php:143 +#, php-format +msgid "%1$s is following %2$s's %3$s" +msgstr "%1$s está siguiendo %3$s de %2$s" -#: ../../addon/tour/tour.php:81 -msgid "" -"You can accept new connections and change permissions for existing ones " -"here. You can also e.g. create groups of contacts." -msgstr "Puede aceptar nuevas conexiones y cambiar permisos para las que ya existen aquí. También puede, por ejemplo, crear grupos de contactos." +#: ../../Zotlabs/Module/Subthread.php:145 +#, php-format +msgid "%1$s stopped following %2$s's %3$s" +msgstr "%1$s ha dejado de seguir %3$s de %2$s" -#: ../../addon/tour/tour.php:82 -msgid "System notifications will arrive here" -msgstr "Las notificaciones del sistema llegarán aquí" +#: ../../Zotlabs/Module/Articles.php:52 +msgid "Articles App" +msgstr "App Artículos" -#: ../../addon/tour/tour.php:83 -msgid "Search for content and users" -msgstr "Buscar contenido y usuarios" +#: ../../Zotlabs/Module/Articles.php:53 +msgid "Create interactive articles" +msgstr "Crear artículos interactivos" -#: ../../addon/tour/tour.php:84 -msgid "Browse for new contacts" -msgstr "Buscar nuevos contactos" +#: ../../Zotlabs/Module/Articles.php:116 +msgid "Add Article" +msgstr "Añadir un artículo" -#: ../../addon/tour/tour.php:85 -msgid "Launch installed apps" -msgstr "Iniciar aplicaciones instaladas" +#: ../../Zotlabs/Module/Bookmarks.php:62 +msgid "Bookmark added" +msgstr "Marcador añadido" -#: ../../addon/tour/tour.php:86 -msgid "Looking for help? Click here." -msgstr "¿Busca ayuda? Pulse aquí." +#: ../../Zotlabs/Module/Bookmarks.php:78 +msgid "Bookmarks App" +msgstr "App Marcadores" -#: ../../addon/tour/tour.php:87 -msgid "" -"New events have occurred in your network. Click here to see what has " -"happened!" -msgstr "Se han producido nuevos eventos en su red. ¡Haga clic aquí para ver lo que ha sucedido!" +#: ../../Zotlabs/Module/Bookmarks.php:79 +msgid "Bookmark links from posts and manage them" +msgstr "Añadir enlaces de las entradas a Marcadores y administrarlos" -#: ../../addon/tour/tour.php:88 -msgid "You have received a new private message. Click here to see from who!" -msgstr "Ha recibido un nuevo mensaje privado. Haga clic aquí para ver de quién!" +#: ../../Zotlabs/Module/Bookmarks.php:92 +msgid "My Bookmarks" +msgstr "Mis marcadores" -#: ../../addon/tour/tour.php:89 -msgid "There are events this week. Click here too see which!" -msgstr "Hay eventos esta semana. Haga clic aquí para ver cuáles!" +#: ../../Zotlabs/Module/Bookmarks.php:103 +msgid "My Connections Bookmarks" +msgstr "Marcadores de mis conexiones" -#: ../../addon/tour/tour.php:90 -msgid "You have received a new introduction. Click here to see who!" -msgstr "Ha recibido una nueva solicitud de conexión. ¡Pulse aquí para ver de quién!" +#: ../../Zotlabs/Module/Probe.php:18 +msgid "Remote Diagnostics App" +msgstr "App Diagnósticos remotos" -#: ../../addon/tour/tour.php:91 +#: ../../Zotlabs/Module/Probe.php:19 +msgid "Perform diagnostics on remote channels" +msgstr "Realizar diagnósticos en canales remotos" + +#: ../../Zotlabs/Module/Changeaddr.php:35 msgid "" -"There is a new system notification. Click here to see what has happened!" -msgstr "Hay una nueva notificación del sistema. ¡Haga clic aquí para ver lo que ha sucedido!" +"Channel name changes are not allowed within 48 hours of changing the account" +" password." +msgstr "Los cambios en el nombre de un canal no está permitida hasta pasadas 48 horas desde el cambio de contraseña de la cuenta." + +#: ../../Zotlabs/Module/Changeaddr.php:77 +msgid "Change channel nickname/address" +msgstr "Cambiar el alias o la dirección del canal" -#: ../../addon/tour/tour.php:94 -msgid "Click here to share text, images, videos and sound." -msgstr "Haga clic aquí para compartir texto, imágenes, vídeos y sonido." +#: ../../Zotlabs/Module/Changeaddr.php:78 +msgid "Any/all connections on other networks will be lost!" +msgstr "¡Cualquier/todas las conexiones en otras redes se perderán!" -#: ../../addon/tour/tour.php:95 -msgid "You can write an optional title for your update (good for long posts)." -msgstr "Puede escribir un título opcional para su actualización (bueno para los mensajes largos)." +#: ../../Zotlabs/Module/Changeaddr.php:80 +msgid "New channel address" +msgstr "Nueva dirección del canal" -#: ../../addon/tour/tour.php:96 -msgid "Entering some categories here makes it easier to find your post later." -msgstr "Al ingresar algunos temas aquí, es más fácil encontrar su publicación más tarde." +#: ../../Zotlabs/Module/Changeaddr.php:81 +msgid "Rename Channel" +msgstr "Renombrar el canal" -#: ../../addon/tour/tour.php:97 -msgid "Share photos, links, location, etc." -msgstr "Compartir fotos, enlaces, ubicación, etc." +#: ../../Zotlabs/Module/Invite.php:37 +msgid "Total invitation limit exceeded." +msgstr "Se ha superado el límite máximo de invitaciones." -#: ../../addon/tour/tour.php:98 -msgid "" -"Only want to share content for a while? Make it expire at a certain date." -msgstr "¿Solo quieres compartir contenido durante un tiempo? Haga que expire en una fecha determinada." +#: ../../Zotlabs/Module/Invite.php:61 +#, php-format +msgid "%s : Not a valid email address." +msgstr "%s : No es una dirección de correo electrónico válida. " -#: ../../addon/tour/tour.php:99 -msgid "You can password protect content." -msgstr "Puede proteger contenido con una contraseña." +#: ../../Zotlabs/Module/Invite.php:75 +msgid "Please join us on $Projectname" +msgstr "Únase a nosotros en $Projectname" -#: ../../addon/tour/tour.php:100 -msgid "Choose who you share with." -msgstr "Elegir con quién compartir." +#: ../../Zotlabs/Module/Invite.php:85 +msgid "Invitation limit exceeded. Please contact your site administrator." +msgstr "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio." -#: ../../addon/tour/tour.php:102 -msgid "Click here when you are done." -msgstr "Haga clic aquí cuando haya terminado." +#: ../../Zotlabs/Module/Invite.php:94 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "%d mensajes enviados." +msgstr[1] "%d mensajes enviados." -#: ../../addon/tour/tour.php:105 -msgid "Adjust from which channels posts should be displayed." -msgstr "Ajustar de qué canales se deben mostrar las publicaciones." +#: ../../Zotlabs/Module/Invite.php:110 +msgid "Invite App" +msgstr "Solicitar una app" -#: ../../addon/tour/tour.php:106 -msgid "Only show posts from channels in the specified privacy group." -msgstr "Mostrar solo las entradas de los canales de un grupo específico de canales." +#: ../../Zotlabs/Module/Invite.php:111 +msgid "Send email invitations to join this network" +msgstr "Enviar invitaciones por correo electrónico para unirse a esta red" -#: ../../addon/tour/tour.php:110 -msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)." -msgstr "Encuentre fácilmente entradas que contengan etiquetas (palabras clave precedidas del símbolo \"#\")." +#: ../../Zotlabs/Module/Invite.php:124 +msgid "You have no more invitations available" +msgstr "No tiene más invitaciones disponibles" -#: ../../addon/tour/tour.php:111 -msgid "Easily find posts in given category." -msgstr "Encuentre fácilmente las publicaciones en una categoría dada." +#: ../../Zotlabs/Module/Invite.php:155 +msgid "Send invitations" +msgstr "Enviar invitaciones" -#: ../../addon/tour/tour.php:112 -msgid "Easily find posts by date." -msgstr "Encuentre fácilmente entradas por fechas." +#: ../../Zotlabs/Module/Invite.php:156 +msgid "Enter email addresses, one per line:" +msgstr "Introduzca las direcciones de correo electrónico, una por línea:" -#: ../../addon/tour/tour.php:113 -msgid "" -"Suggested users who have volounteered to be shown as suggestions, and who we" -" think you might find interesting." -msgstr "Se sugiere a los usuarios que se han ofrecido voluntariamente que se muestren como sugerencias, y que creemos que podrían resultar interesantes." +#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:289 +msgid "Your message:" +msgstr "Su mensaje:" -#: ../../addon/tour/tour.php:114 -msgid "Here you see channels you have connected to." -msgstr "Aquí puede ver los canales a los que está conectado." +#: ../../Zotlabs/Module/Invite.php:158 +msgid "Please join my community on $Projectname." +msgstr "Por favor, únase a mi comunidad en $Projectname." -#: ../../addon/tour/tour.php:115 -msgid "Save your search so you can repeat it at a later date." -msgstr "Guarde su búsqueda para poder repetirla en una fecha posterior." +#: ../../Zotlabs/Module/Invite.php:160 +msgid "You will need to supply this invitation code:" +msgstr "Tendrá que suministrar este código de invitación:" -#: ../../addon/tour/tour.php:118 +#: ../../Zotlabs/Module/Invite.php:161 msgid "" -"If you see this icon you can be sure that the sender is who it say it is. It" -" is normal that it is not always possible to verify the sender, so the icon " -"will be missing sometimes. There is usually no need to worry about that." -msgstr "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso." +"1. Register at any $Projectname location (they are all inter-connected)" +msgstr "1. Regístrese en cualquier sitio de $Projectname (están todos interconectados)" -#: ../../addon/tour/tour.php:119 -msgid "" -"Danger! It seems someone tried to forge a message! This message is not " -"necessarily from who it says it is from!" -msgstr "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!" +#: ../../Zotlabs/Module/Invite.php:163 +msgid "2. Enter my $Projectname network address into the site searchbar." +msgstr "2. Introduzca mi dirección $Projectname en la caja de búsqueda del sitio." -#: ../../addon/tour/tour.php:126 -msgid "" -"Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can " -"pause it at any time and continue where you left off by reloading the page, " -"or navigting to another page.</p><p>You can also advance by pressing the " -"return key" -msgstr "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno" +#: ../../Zotlabs/Module/Invite.php:164 +msgid "or visit" +msgstr "o visitar" -#: ../../addon/sendzid/Mod_Sendzid.php:14 -msgid "Send your identity to all websites" -msgstr "Enviar su identidad a todos los sitios web" +#: ../../Zotlabs/Module/Invite.php:166 +msgid "3. Click [Connect]" +msgstr "3. Pulse [conectar]" -#: ../../addon/sendzid/Mod_Sendzid.php:20 -msgid "Sendzid App" -msgstr "App Sendzid" +#: ../../Zotlabs/Module/Notes.php:56 +msgid "Notes App" +msgstr "App Notas" -#: ../../addon/sendzid/Mod_Sendzid.php:32 -msgid "Send ZID" -msgstr "Enviar ZID" +#: ../../Zotlabs/Module/Notes.php:57 +msgid "A simple notes app with a widget (note: notes are not encrypted)" +msgstr "Una simple aplicación de notas con un widget (aviso: las notas no están encriptadas)" -#: ../../addon/tictac/tictac.php:21 -msgid "Three Dimensional Tic-Tac-Toe" -msgstr "Juego en 3D Tic-Tac-Toe" +#: ../../Zotlabs/Module/Xchan.php:10 +msgid "Xchan Lookup" +msgstr "Búsqueda de canales" -#: ../../addon/tictac/tictac.php:54 -msgid "3D Tic-Tac-Toe" -msgstr "3D Tic-Tac-Toe" +#: ../../Zotlabs/Module/Xchan.php:13 +msgid "Lookup xchan beginning with (or webbie): " +msgstr "Buscar un canal (o un \"webbie\") que comience por:" -#: ../../addon/tictac/tictac.php:59 -msgid "New game" -msgstr "Nuevo juego" +#: ../../Zotlabs/Module/Mail.php:77 +msgid "Unable to lookup recipient." +msgstr "No se puede asociar a un destinatario." -#: ../../addon/tictac/tictac.php:60 -msgid "New game with handicap" -msgstr "Nuevo juego con hándicap" +#: ../../Zotlabs/Module/Mail.php:84 +msgid "Unable to communicate with requested channel." +msgstr "No se puede establecer la comunicación con el canal solicitado." -#: ../../addon/tictac/tictac.php:61 -msgid "" -"Three dimensional tic-tac-toe is just like the traditional game except that " -"it is played on multiple levels simultaneously. " -msgstr "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente." +#: ../../Zotlabs/Module/Mail.php:91 +msgid "Cannot verify requested channel." +msgstr "No se puede verificar el canal solicitado." -#: ../../addon/tictac/tictac.php:62 -msgid "" -"In this case there are three levels. You win by getting three in a row on " -"any level, as well as up, down, and diagonally across the different levels." -msgstr "En este caso hay tres niveles. Usted gana al conseguir tres en una fila en cualquier nivel, así como arriba, abajo, y en diagonal a través de los diferentes niveles." +#: ../../Zotlabs/Module/Mail.php:109 +msgid "Selected channel has private message restrictions. Send failed." +msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló." -#: ../../addon/tictac/tictac.php:64 -msgid "" -"The handicap game disables the center position on the middle level because " -"the player claiming this square often has an unfair advantage." -msgstr "El juego con hándicap deshabilita la posición central en el nivel medio porque el jugador que reclama este cuadrado a menudo tiene una ventaja injusta." +#: ../../Zotlabs/Module/Mail.php:164 +msgid "Messages" +msgstr "Mensajes" -#: ../../addon/tictac/tictac.php:183 -msgid "You go first..." -msgstr "Usted va primero..." +#: ../../Zotlabs/Module/Mail.php:177 +msgid "message" +msgstr "mensaje" -#: ../../addon/tictac/tictac.php:188 -msgid "I'm going first this time..." -msgstr "Yo voy primero esta vez..." +#: ../../Zotlabs/Module/Mail.php:218 +msgid "Message recalled." +msgstr "Mensaje revocado." -#: ../../addon/tictac/tictac.php:194 -msgid "You won!" -msgstr "¡Usted ha ganado!" +#: ../../Zotlabs/Module/Mail.php:231 +msgid "Conversation removed." +msgstr "Conversación eliminada." -#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 -msgid "\"Cat\" game!" -msgstr "¡El juego del \"gato\"!" +#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:367 +msgid "Expires YYYY-MM-DD HH:MM" +msgstr "Caduca YYYY-MM-DD HH:MM" -#: ../../addon/tictac/tictac.php:223 -msgid "I won!" -msgstr "¡He ganado yo!" +#: ../../Zotlabs/Module/Mail.php:274 +msgid "Requested channel is not in this network" +msgstr "El canal solicitado no existe en esta red" -#: ../../addon/pageheader/Mod_Pageheader.php:22 -msgid "pageheader Settings saved." -msgstr "Se han guardado los ajustes del encabezado de página." +#: ../../Zotlabs/Module/Mail.php:282 +msgid "Send Private Message" +msgstr "Enviar un mensaje privado" -#: ../../addon/pageheader/Mod_Pageheader.php:34 -msgid "Page Header App" -msgstr "App Page Header" +#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 +msgid "To:" +msgstr "Para:" -#: ../../addon/pageheader/Mod_Pageheader.php:35 -msgid "Inserts a page header" -msgstr "Inserta un encabezado de página" +#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 +msgid "Subject:" +msgstr "Asunto:" -#: ../../addon/pageheader/Mod_Pageheader.php:43 -msgid "Message to display on every page on this server" -msgstr "Mensaje para mostrar en todas las páginas de este servidor" +#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:434 +msgid "Attach file" +msgstr "Adjuntar fichero" + +#: ../../Zotlabs/Module/Mail.php:293 +msgid "Send" +msgstr "Enviar" + +#: ../../Zotlabs/Module/Mail.php:397 +msgid "Delete message" +msgstr "Borrar mensaje" -#: ../../addon/pageheader/Mod_Pageheader.php:51 -msgid "Page Header" -msgstr "Page Header" +#: ../../Zotlabs/Module/Mail.php:398 +msgid "Delivery report" +msgstr "Informe de transmisión" -#: ../../addon/authchoose/Mod_Authchoose.php:22 -msgid "" -"Allow magic authentication only to websites of your immediate connections" -msgstr "Permitir la autenticación mágica sólo a los sitios web de sus conexiones próximas" +#: ../../Zotlabs/Module/Mail.php:399 +msgid "Recall message" +msgstr "Revocar el mensaje" -#: ../../addon/authchoose/Mod_Authchoose.php:28 -#: ../../addon/authchoose/Mod_Authchoose.php:33 -msgid "Authchoose App" -msgstr "App Authchoose" +#: ../../Zotlabs/Module/Mail.php:401 +msgid "Message has been recalled." +msgstr "El mensaje ha sido revocado." -#: ../../addon/authchoose/Mod_Authchoose.php:39 -msgid "Authchoose" -msgstr "Autoseleccionar" +#: ../../Zotlabs/Module/Mail.php:419 +msgid "Delete Conversation" +msgstr "Eliminar conversación" -#: ../../addon/moremoods/moremoods.php:19 -msgid "lonely" -msgstr "Solo/a" +#: ../../Zotlabs/Module/Mail.php:421 +msgid "" +"No secure communications available. You <strong>may</strong> be able to " +"respond from the sender's profile page." +msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente." -#: ../../addon/moremoods/moremoods.php:20 -msgid "drunk" -msgstr "ebrio/a" +#: ../../Zotlabs/Module/Mail.php:425 +msgid "Send Reply" +msgstr "Responder" -#: ../../addon/moremoods/moremoods.php:21 -msgid "horny" -msgstr "caliente" +#: ../../Zotlabs/Module/Mail.php:430 +#, php-format +msgid "Your message for %s (%s):" +msgstr "Su mensaje para %s (%s):" -#: ../../addon/moremoods/moremoods.php:22 -msgid "stoned" -msgstr "drogado/a" +#: ../../Zotlabs/Module/Affinity.php:35 +msgid "Affinity Tool settings updated." +msgstr "Actualización de los ajustes de Affinity Tool." -#: ../../addon/moremoods/moremoods.php:23 -msgid "fucked up" -msgstr "jodido/a" +#: ../../Zotlabs/Module/Affinity.php:47 +msgid "" +"This app presents a slider control in your connection editor and also on " +"your network page. The slider represents your degree of friendship " +"(affinity) with each connection. It allows you to zoom in or out and display" +" conversations from only your closest friends or everybody in your stream." +msgstr "Esta aplicación presenta un control deslizante en su editor de conexión y también en su página de red. El control deslizante representa su grado de amistad (afinidad) con cada conexión. Le permite acercar o alejar y mostrar conversaciones sólo de sus amigos más cercanos o de todo el mundo en su stream." -#: ../../addon/moremoods/moremoods.php:24 -msgid "clusterfucked" -msgstr "hecho/a polvo" +#: ../../Zotlabs/Module/Affinity.php:52 +msgid "Affinity Tool App" +msgstr "App Affinity Tool " -#: ../../addon/moremoods/moremoods.php:25 -msgid "crazy" -msgstr "loco/a" +#: ../../Zotlabs/Module/Affinity.php:57 +msgid "" +"The numbers below represent the minimum and maximum slider default positions" +" for your network/stream page as a percentage." +msgstr "Los números que aparecen a continuación representan las posiciones predeterminadas mínimas y máximas de los controles deslizantes para su red/stream en forma de porcentaje." -#: ../../addon/moremoods/moremoods.php:26 -msgid "hurt" -msgstr "ofendido/a" +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "Default maximum affinity level" +msgstr "Nivel máximo de afinidad por defecto" -#: ../../addon/moremoods/moremoods.php:27 -msgid "sleepy" -msgstr "soñoliento/a" +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "0-99 default 99" +msgstr "0-99 por defecto 99" -#: ../../addon/moremoods/moremoods.php:28 -msgid "grumpy" -msgstr "gruñón/ona" +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "Default minimum affinity level" +msgstr "Nivel mínimo de afinidad por defecto" -#: ../../addon/moremoods/moremoods.php:29 -msgid "high" -msgstr "superior" +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "0-99 - default 0" +msgstr "0-99 - por defecto 0" -#: ../../addon/moremoods/moremoods.php:30 -msgid "semi-conscious" -msgstr "semiconsciente" +#: ../../Zotlabs/Module/Affinity.php:76 +msgid "Persistent affinity levels" +msgstr "Niveles de afinidad persistentes" -#: ../../addon/moremoods/moremoods.php:31 -msgid "in love" -msgstr "enamorado/a" +#: ../../Zotlabs/Module/Affinity.php:76 +msgid "" +"If disabled the max and min levels will be reset to default after page " +"reload" +msgstr "Si está desactivado, los niveles máximo y mínimo se restablecerán a los valores predeterminados después de recargar la página." -#: ../../addon/moremoods/moremoods.php:32 -msgid "in lust" -msgstr "lujurioso/a" +#: ../../Zotlabs/Module/Affinity.php:84 +msgid "Affinity Tool Settings" +msgstr "Ajustes de Affinity Tool" -#: ../../addon/moremoods/moremoods.php:33 -msgid "naked" -msgstr "desnudo/a" +#: ../../Zotlabs/Module/Rate.php:156 +msgid "Website:" +msgstr "Sitio web:" -#: ../../addon/moremoods/moremoods.php:34 -msgid "stinky" -msgstr "apestoso/a" +#: ../../Zotlabs/Module/Rate.php:159 +#, php-format +msgid "Remote Channel [%s] (not yet known on this site)" +msgstr "Canal remoto [%s] (aún no es conocido en este sitio)" -#: ../../addon/moremoods/moremoods.php:35 -msgid "sweaty" -msgstr "sudoroso/a" +#: ../../Zotlabs/Module/Rate.php:160 +msgid "Rating (this information is public)" +msgstr "Valoración (esta información es pública)" -#: ../../addon/moremoods/moremoods.php:36 -msgid "bleeding out" -msgstr "exánime" +#: ../../Zotlabs/Module/Rate.php:161 +msgid "Optionally explain your rating (this information is public)" +msgstr "Opcionalmente puede explicar su valoración (esta información es pública)" -#: ../../addon/moremoods/moremoods.php:37 -msgid "victorious" -msgstr "victorioso/a" +#: ../../Zotlabs/Module/Settings/Network.php:41 +#: ../../Zotlabs/Module/Settings/Channel_home.php:44 +msgid "Max height of content (in pixels)" +msgstr "Altura máxima del contenido (en píxeles)" -#: ../../addon/moremoods/moremoods.php:38 -msgid "defeated" -msgstr "derrotado/a" +#: ../../Zotlabs/Module/Settings/Network.php:43 +#: ../../Zotlabs/Module/Settings/Channel_home.php:46 +msgid "Click to expand content exceeding this height" +msgstr "Haga clic para expandir el contenido que exceda esta altura" -#: ../../addon/moremoods/moremoods.php:39 -msgid "envious" -msgstr "envidioso/a" +#: ../../Zotlabs/Module/Settings/Network.php:58 +msgid "Stream Settings" +msgstr "Ajustes del stream" -#: ../../addon/moremoods/moremoods.php:40 -msgid "jealous" -msgstr "celoso/a" +#: ../../Zotlabs/Module/Settings/Features.php:43 +msgid "Additional Features" +msgstr "Funcionalidades" -#: ../../addon/xmpp/Mod_Xmpp.php:23 -msgid "XMPP settings updated." -msgstr "Se han actualizado los ajustes de XMPP." +#: ../../Zotlabs/Module/Settings/Channel.php:327 +msgid "Nobody except yourself" +msgstr "Nadie excepto usted" -#: ../../addon/xmpp/Mod_Xmpp.php:35 -msgid "XMPP App" -msgstr "App XMPP" +#: ../../Zotlabs/Module/Settings/Channel.php:328 +msgid "Only those you specifically allow" +msgstr "Solo aquellos a los que usted permita explícitamente" -#: ../../addon/xmpp/Mod_Xmpp.php:36 -msgid "Embedded XMPP (Jabber) client" -msgstr "Cliente XMPP (Jabber) integrado" +#: ../../Zotlabs/Module/Settings/Channel.php:329 +msgid "Approved connections" +msgstr "Conexiones aprobadas" -#: ../../addon/xmpp/Mod_Xmpp.php:52 -msgid "Individual credentials" -msgstr "Credenciales individuales" +#: ../../Zotlabs/Module/Settings/Channel.php:330 +msgid "Any connections" +msgstr "Cualquier conexión" -#: ../../addon/xmpp/Mod_Xmpp.php:58 -msgid "Jabber BOSH server" -msgstr "Servidor BOSH de Jabber" +#: ../../Zotlabs/Module/Settings/Channel.php:331 +msgid "Anybody on this website" +msgstr "Cualquiera en este sitio web" -#: ../../addon/xmpp/Mod_Xmpp.php:67 -msgid "XMPP Settings" -msgstr "Ajustes de XMPP" +#: ../../Zotlabs/Module/Settings/Channel.php:332 +msgid "Anybody in this network" +msgstr "Cualquiera en esta red" -#: ../../addon/xmpp/xmpp.php:44 -msgid "Jabber BOSH host" -msgstr "BOSH de Jabber" +#: ../../Zotlabs/Module/Settings/Channel.php:333 +msgid "Anybody authenticated" +msgstr "Cualquiera que esté autenticado" -#: ../../addon/xmpp/xmpp.php:45 -msgid "Use central userbase" -msgstr "Usar la base de usuarios central" +#: ../../Zotlabs/Module/Settings/Channel.php:334 +msgid "Anybody on the internet" +msgstr "Cualquiera en internet" -#: ../../addon/xmpp/xmpp.php:45 -msgid "" -"If enabled, members will automatically login to an ejabberd server that has " -"to be installed on this machine with synchronized credentials via the " -"\"auth_ejabberd.php\" script." -msgstr "Si está habilitado, los miembros se conectarán automáticamente a un servidor ejabberd que debe instalarse en esta máquina con credenciales sincronizadas a través del script \"auth ejabberd.php\"." +#: ../../Zotlabs/Module/Settings/Channel.php:409 +msgid "Publish your default profile in the network directory" +msgstr "Publicar su perfil principal en el directorio de la red" -#: ../../addon/wholikesme/wholikesme.php:29 -msgid "Who likes me?" -msgstr "¿Quién me ha puesto \"Me gusta\"?" +#: ../../Zotlabs/Module/Settings/Channel.php:414 +msgid "Allow us to suggest you as a potential friend to new members?" +msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?" -#: ../../addon/pumpio/Mod_Pumpio.php:40 -msgid "Pump.io Settings saved." -msgstr "Se han guardado los ajustes de Pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:418 +msgid "or" +msgstr "o" -#: ../../addon/pumpio/Mod_Pumpio.php:53 -msgid "Pump.io Crosspost Connector App" -msgstr "App Pump.io Crosspost Connector" +#: ../../Zotlabs/Module/Settings/Channel.php:427 +msgid "Your channel address is" +msgstr "Su dirección de canal es" -#: ../../addon/pumpio/Mod_Pumpio.php:54 -msgid "Relay public posts to pump.io" -msgstr "Retransmisión de entradas públicas a pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:430 +msgid "Your files/photos are accessible via WebDAV at" +msgstr "Sus archivos y fotos son accesibles a través de WebDAV en " + +#: ../../Zotlabs/Module/Settings/Channel.php:470 +msgid "Automatic membership approval" +msgstr "Aprobación automática de nuevos miembros" -#: ../../addon/pumpio/Mod_Pumpio.php:73 -msgid "Pump.io servername" -msgstr "Nombre del servidor de Pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:470 +#: ../../Zotlabs/Module/Defperms.php:255 +msgid "" +"If enabled, connection requests will be approved without your interaction" +msgstr "Si está habilitado, las solicitudes de conexión serán aprobadas sin su intervención." -#: ../../addon/pumpio/Mod_Pumpio.php:73 -msgid "Without \"http://\" or \"https://\"" -msgstr "Sin \"http://\" or \"https://\"" +#: ../../Zotlabs/Module/Settings/Channel.php:491 +msgid "Channel Settings" +msgstr "Ajustes del canal" -#: ../../addon/pumpio/Mod_Pumpio.php:77 -msgid "Pump.io username" -msgstr "Nombre de usuario en Pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:498 +msgid "Basic Settings" +msgstr "Configuración básica" -#: ../../addon/pumpio/Mod_Pumpio.php:77 -msgid "Without the servername" -msgstr "Sin el nombre del servidor" +#: ../../Zotlabs/Module/Settings/Channel.php:500 +#: ../../Zotlabs/Module/Settings/Account.php:104 +msgid "Email Address:" +msgstr "Dirección de correo electrónico:" -#: ../../addon/pumpio/Mod_Pumpio.php:88 -msgid "You are not authenticated to pumpio" -msgstr "No está autenticado en pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:501 +msgid "Your Timezone:" +msgstr "Su huso horario:" -#: ../../addon/pumpio/Mod_Pumpio.php:90 -msgid "(Re-)Authenticate your pump.io connection" -msgstr "(Re-)Autenticar su conexión en pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:502 +msgid "Default Post Location:" +msgstr "Localización geográfica predeterminada para sus publicaciones:" -#: ../../addon/pumpio/Mod_Pumpio.php:94 -msgid "Post to pump.io by default" -msgstr "Publicar por defecto en pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:502 +msgid "Geographical location to display on your posts" +msgstr "Localización geográfica que debe mostrarse en sus publicaciones" -#: ../../addon/pumpio/Mod_Pumpio.php:98 -msgid "Should posts be public" -msgstr "¿Las entradas deben ser públicas?" +#: ../../Zotlabs/Module/Settings/Channel.php:503 +msgid "Use Browser Location:" +msgstr "Usar la localización geográfica del navegador:" -#: ../../addon/pumpio/Mod_Pumpio.php:102 -msgid "Mirror all public posts" -msgstr "Reflejar todos los mensajes públicos" +#: ../../Zotlabs/Module/Settings/Channel.php:505 +msgid "Adult Content" +msgstr "Contenido solo para adultos" -#: ../../addon/pumpio/Mod_Pumpio.php:112 -msgid "Pump.io Crosspost Connector" -msgstr "Pump.io Crosspost Connector" +#: ../../Zotlabs/Module/Settings/Channel.php:505 +msgid "" +"This channel frequently or regularly publishes adult content. (Please tag " +"any adult material and/or nudity with #NSFW)" +msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)" -#: ../../addon/pumpio/pumpio.php:152 -msgid "You are now authenticated to pumpio." -msgstr "Ahora está autenticado en pump.io." +#: ../../Zotlabs/Module/Settings/Channel.php:507 +msgid "Security and Privacy Settings" +msgstr "Configuración de seguridad y privacidad" -#: ../../addon/pumpio/pumpio.php:153 -msgid "return to the featured settings page" -msgstr "Volver a la página de configuración destacada" +#: ../../Zotlabs/Module/Settings/Channel.php:509 +msgid "Your permissions are already configured. Click to view/adjust" +msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar" -#: ../../addon/pumpio/pumpio.php:168 -msgid "Post to Pump.io" -msgstr "Publicar en Pump.io" +#: ../../Zotlabs/Module/Settings/Channel.php:511 +msgid "Hide my online presence" +msgstr "Ocultar mi presencia en línea" -#: ../../addon/ldapauth/ldapauth.php:70 -msgid "An account has been created for you." -msgstr "Se ha creado una cuenta para usted." +#: ../../Zotlabs/Module/Settings/Channel.php:511 +msgid "Prevents displaying in your profile that you are online" +msgstr "Evitar mostrar en su perfil que está en línea" -#: ../../addon/ldapauth/ldapauth.php:77 -msgid "Authentication successful but rejected: account creation is disabled." -msgstr "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada." +#: ../../Zotlabs/Module/Settings/Channel.php:513 +msgid "Simple Privacy Settings:" +msgstr "Configuración de privacidad sencilla:" -#: ../../addon/opensearch/opensearch.php:26 -#, php-format -msgctxt "opensearch" -msgid "Search %1$s (%2$s)" -msgstr "Buscar %1$s (%2$s)" +#: ../../Zotlabs/Module/Settings/Channel.php:514 +msgid "" +"Very Public - <em>extremely permissive (should be used with caution)</em>" +msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>" -#: ../../addon/opensearch/opensearch.php:28 -msgctxt "opensearch" -msgid "$Projectname" -msgstr "$Projectname" +#: ../../Zotlabs/Module/Settings/Channel.php:515 +msgid "" +"Typical - <em>default public, privacy when desired (similar to social " +"network permissions but with improved privacy)</em>" +msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>" -#: ../../addon/opensearch/opensearch.php:43 -msgid "Search $Projectname" -msgstr "Buscar $Projectname" +#: ../../Zotlabs/Module/Settings/Channel.php:516 +msgid "Private - <em>default private, never open or public</em>" +msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>" -#: ../../addon/redfiles/redfiles.php:119 -msgid "Redmatrix File Storage Import" -msgstr "Importar repositorio de ficheros de Redmatrix" +#: ../../Zotlabs/Module/Settings/Channel.php:517 +msgid "Blocked - <em>default blocked to/from everybody</em>" +msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>" -#: ../../addon/redfiles/redfiles.php:120 -msgid "This will import all your Redmatrix cloud files to this channel." -msgstr "Esto importará todos sus ficheros de la nube de Redmatrix a este canal." +#: ../../Zotlabs/Module/Settings/Channel.php:519 +msgid "Allow others to tag your posts" +msgstr "Permitir a otros etiquetar sus publicaciones" -#: ../../addon/redfiles/redfilehelper.php:64 -msgid "file" -msgstr "fichero" +#: ../../Zotlabs/Module/Settings/Channel.php:519 +msgid "" +"Often used by the community to retro-actively flag inappropriate content" +msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva." -#: ../../addon/hubwall/hubwall.php:19 -msgid "Send email to all members" -msgstr "Enviar un correo electrónico a todos los miembros" +#: ../../Zotlabs/Module/Settings/Channel.php:521 +msgid "Channel Permission Limits" +msgstr "Límites de los permisos del canal" -#: ../../addon/hubwall/hubwall.php:73 -#, php-format -msgid "%1$d of %2$d messages sent." -msgstr "%1$d de %2$d mensajes enviados." +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "Expire other channel content after this many days" +msgstr "Caducar contenido de otros canales después de este número de días" -#: ../../addon/hubwall/hubwall.php:81 -msgid "Send email to all hub members." -msgstr "Enviar un correo electrónico a todos los miembros del hub." +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "0 or blank to use the website limit." +msgstr "0 o en blanco para usar el límite del sitio web." -#: ../../addon/hubwall/hubwall.php:93 -msgid "Sender Email address" -msgstr "Dirección de correo electrónico del remitente" +#: ../../Zotlabs/Module/Settings/Channel.php:523 +#, php-format +msgid "This website expires after %d days." +msgstr "Este sitio web caduca después de %d días." -#: ../../addon/hubwall/hubwall.php:94 -msgid "Test mode (only send to hub administrator)" -msgstr "Modo de prueba (enviar sólo al administrador del hub)" +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "This website does not expire imported content." +msgstr "Este sitio web no caduca el contenido importado." -#: ../../include/selectors.php:18 -msgid "Profile to assign new connections" -msgstr "Perfil para asignar a las nuevas conexiones" +#: ../../Zotlabs/Module/Settings/Channel.php:523 +msgid "The website limit takes precedence if lower than your limit." +msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite." -#: ../../include/selectors.php:41 -msgid "Frequently" -msgstr "Frecuentemente" +#: ../../Zotlabs/Module/Settings/Channel.php:524 +msgid "Maximum Friend Requests/Day:" +msgstr "Máximo de solicitudes de amistad por día:" -#: ../../include/selectors.php:42 -msgid "Hourly" -msgstr "Cada hora" +#: ../../Zotlabs/Module/Settings/Channel.php:524 +msgid "May reduce spam activity" +msgstr "Podría reducir la actividad de spam" -#: ../../include/selectors.php:43 -msgid "Twice daily" -msgstr "Dos veces al día" +#: ../../Zotlabs/Module/Settings/Channel.php:525 +msgid "Default Privacy Group" +msgstr "Grupo de canales predeterminado" -#: ../../include/selectors.php:44 -msgid "Daily" -msgstr "Diariamente" +#: ../../Zotlabs/Module/Settings/Channel.php:527 +msgid "Use my default audience setting for the type of object published" +msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación" -#: ../../include/selectors.php:45 -msgid "Weekly" -msgstr "Semanalmente" +#: ../../Zotlabs/Module/Settings/Channel.php:536 +msgid "Default permissions category" +msgstr "Categoría de permisos por defecto" -#: ../../include/selectors.php:46 -msgid "Monthly" -msgstr "Mensualmente" +#: ../../Zotlabs/Module/Settings/Channel.php:542 +msgid "Maximum private messages per day from unknown people:" +msgstr "Máximo de mensajes privados por día de gente desconocida:" -#: ../../include/selectors.php:60 -msgid "Currently Male" -msgstr "Actualmente hombre" +#: ../../Zotlabs/Module/Settings/Channel.php:542 +msgid "Useful to reduce spamming" +msgstr "Útil para reducir el envío de correo no deseado" -#: ../../include/selectors.php:60 -msgid "Currently Female" -msgstr "Actualmente mujer" +#: ../../Zotlabs/Module/Settings/Channel.php:545 +#: ../../Zotlabs/Lib/Enotify.php:68 +msgid "Notification Settings" +msgstr "Configuración de las notificaciones" -#: ../../include/selectors.php:60 -msgid "Mostly Male" -msgstr "Generalmente hombre" +#: ../../Zotlabs/Module/Settings/Channel.php:546 +msgid "By default post a status message when:" +msgstr "Por defecto, enviar un mensaje de estado cuando:" -#: ../../include/selectors.php:60 -msgid "Mostly Female" -msgstr "Generalmente mujer" +#: ../../Zotlabs/Module/Settings/Channel.php:547 +msgid "accepting a friend request" +msgstr "Acepte una solicitud de amistad" -#: ../../include/selectors.php:60 -msgid "Transgender" -msgstr "Transgénero" +#: ../../Zotlabs/Module/Settings/Channel.php:548 +msgid "joining a forum/community" +msgstr "al unirse a un foro o comunidad" -#: ../../include/selectors.php:60 -msgid "Intersex" -msgstr "Intersexual" +#: ../../Zotlabs/Module/Settings/Channel.php:549 +msgid "making an <em>interesting</em> profile change" +msgstr "Realice un cambio <em>interesante</em> en su perfil" -#: ../../include/selectors.php:60 -msgid "Transsexual" -msgstr "Transexual" +#: ../../Zotlabs/Module/Settings/Channel.php:550 +msgid "Send a notification email when:" +msgstr "Enviar una notificación por correo electrónico cuando:" -#: ../../include/selectors.php:60 -msgid "Hermaphrodite" -msgstr "Hermafrodita" +#: ../../Zotlabs/Module/Settings/Channel.php:551 +msgid "You receive a connection request" +msgstr "Reciba una solicitud de conexión" -#: ../../include/selectors.php:60 ../../include/channel.php:1606 -msgid "Neuter" -msgstr "Neutral" +#: ../../Zotlabs/Module/Settings/Channel.php:552 +msgid "Your connections are confirmed" +msgstr "Sus conexiones hayan sido confirmadas" -#: ../../include/selectors.php:60 ../../include/channel.php:1608 -msgid "Non-specific" -msgstr "No especificado" +#: ../../Zotlabs/Module/Settings/Channel.php:553 +msgid "Someone writes on your profile wall" +msgstr "Alguien escriba en la página de su perfil (\"muro\")" -#: ../../include/selectors.php:60 -msgid "Undecided" -msgstr "Indeciso/a" +#: ../../Zotlabs/Module/Settings/Channel.php:554 +msgid "Someone writes a followup comment" +msgstr "Alguien escriba un comentario sobre sus publicaciones" -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Males" -msgstr "Hombres" +#: ../../Zotlabs/Module/Settings/Channel.php:555 +msgid "You receive a private message" +msgstr "Reciba un mensaje privado" -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Females" -msgstr "Mujeres" +#: ../../Zotlabs/Module/Settings/Channel.php:556 +msgid "You receive a friend suggestion" +msgstr "Reciba una sugerencia de amistad" -#: ../../include/selectors.php:96 -msgid "Gay" -msgstr "Homosexual" +#: ../../Zotlabs/Module/Settings/Channel.php:557 +msgid "You are tagged in a post" +msgstr "Usted sea etiquetado en una publicación" -#: ../../include/selectors.php:96 -msgid "Lesbian" -msgstr "Lesbiana" +#: ../../Zotlabs/Module/Settings/Channel.php:558 +msgid "You are poked/prodded/etc. in a post" +msgstr "Reciba un toque o incitación en una publicación" -#: ../../include/selectors.php:96 -msgid "No Preference" -msgstr "Sin preferencias" +#: ../../Zotlabs/Module/Settings/Channel.php:560 +msgid "Someone likes your post/comment" +msgstr "Alguien muestre agrado por su entrada o comentario" -#: ../../include/selectors.php:96 -msgid "Bisexual" -msgstr "Bisexual" +#: ../../Zotlabs/Module/Settings/Channel.php:563 +msgid "Show visual notifications including:" +msgstr "Mostrar notificaciones visuales que incluyan:" -#: ../../include/selectors.php:96 -msgid "Autosexual" -msgstr "Autosexual" +#: ../../Zotlabs/Module/Settings/Channel.php:565 +msgid "Unseen stream activity" +msgstr "Actividad del stream no vista" -#: ../../include/selectors.php:96 -msgid "Abstinent" -msgstr "Casto/a" +#: ../../Zotlabs/Module/Settings/Channel.php:566 +msgid "Unseen channel activity" +msgstr "Actividad no vista en el canal" -#: ../../include/selectors.php:96 -msgid "Virgin" -msgstr "Virgen" +#: ../../Zotlabs/Module/Settings/Channel.php:567 +msgid "Unseen private messages" +msgstr "Mensajes privados no leídos" -#: ../../include/selectors.php:96 -msgid "Deviant" -msgstr "Fuera de lo común" +#: ../../Zotlabs/Module/Settings/Channel.php:568 +msgid "Upcoming events" +msgstr "Próximos eventos" -#: ../../include/selectors.php:96 -msgid "Fetish" -msgstr "Fetichista" +#: ../../Zotlabs/Module/Settings/Channel.php:569 +msgid "Events today" +msgstr "Eventos de hoy" -#: ../../include/selectors.php:96 -msgid "Oodles" -msgstr "Orgías" +#: ../../Zotlabs/Module/Settings/Channel.php:570 +msgid "Upcoming birthdays" +msgstr "Próximos cumpleaños" -#: ../../include/selectors.php:96 -msgid "Nonsexual" -msgstr "Asexual" +#: ../../Zotlabs/Module/Settings/Channel.php:570 +msgid "Not available in all themes" +msgstr "No disponible en todos los temas" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Single" -msgstr "Soltero/a" +#: ../../Zotlabs/Module/Settings/Channel.php:571 +msgid "System (personal) notifications" +msgstr "Notificaciones del sistema (personales)" -#: ../../include/selectors.php:134 -msgid "Lonely" -msgstr "Solo/a" +#: ../../Zotlabs/Module/Settings/Channel.php:572 +msgid "System info messages" +msgstr "Mensajes de información del sistema" -#: ../../include/selectors.php:134 -msgid "Available" -msgstr "Disponible" +#: ../../Zotlabs/Module/Settings/Channel.php:573 +msgid "System critical alerts" +msgstr "Alertas críticas del sistema" -#: ../../include/selectors.php:134 -msgid "Unavailable" -msgstr "No disponible" +#: ../../Zotlabs/Module/Settings/Channel.php:574 +msgid "New connections" +msgstr "Nuevas conexiones" -#: ../../include/selectors.php:134 -msgid "Has crush" -msgstr "Enamorado/a" +#: ../../Zotlabs/Module/Settings/Channel.php:575 +msgid "System Registrations" +msgstr "Registros del sistema" -#: ../../include/selectors.php:134 -msgid "Infatuated" -msgstr "Apasionado/a" +#: ../../Zotlabs/Module/Settings/Channel.php:576 +msgid "Unseen shared files" +msgstr "Ficheros compartidos no vistos" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Dating" -msgstr "Saliendo con alguien" +#: ../../Zotlabs/Module/Settings/Channel.php:577 +msgid "Unseen public stream activity" +msgstr "Actividad del stream público no vista" -#: ../../include/selectors.php:134 -msgid "Unfaithful" -msgstr "Infiel" +#: ../../Zotlabs/Module/Settings/Channel.php:578 +msgid "Unseen likes and dislikes" +msgstr "Los \"me gusta\" y \"no me gusta\" no vistos" -#: ../../include/selectors.php:134 -msgid "Sex Addict" -msgstr "Con adicción al sexo" +#: ../../Zotlabs/Module/Settings/Channel.php:579 +msgid "Unseen forum posts" +msgstr "Entradas no vistas en el foro" -#: ../../include/selectors.php:134 -msgid "Friends/Benefits" -msgstr "Amigos con algo extra" +#: ../../Zotlabs/Module/Settings/Channel.php:580 +msgid "Email notification hub (hostname)" +msgstr "Email de notificación del hub (nombre del host)" -#: ../../include/selectors.php:134 -msgid "Casual" -msgstr "Casual" +#: ../../Zotlabs/Module/Settings/Channel.php:580 +#, php-format +msgid "" +"If your channel is mirrored to multiple hubs, set this to your preferred " +"location. This will prevent duplicate email notifications. Example: %s" +msgstr "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s" -#: ../../include/selectors.php:134 -msgid "Engaged" -msgstr "Prometido/a" +#: ../../Zotlabs/Module/Settings/Channel.php:581 +msgid "Show new wall posts, private messages and connections under Notices" +msgstr "Mostrar nuevos mensajes en el muro, mensajes privados y conexiones en Avisos" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Married" -msgstr "Casado/a" +#: ../../Zotlabs/Module/Settings/Channel.php:583 +msgid "Notify me of events this many days in advance" +msgstr "Avisarme de los eventos con algunos días de antelación" -#: ../../include/selectors.php:134 -msgid "Imaginarily married" -msgstr "Casado/a en sueños" +#: ../../Zotlabs/Module/Settings/Channel.php:583 +msgid "Must be greater than 0" +msgstr "Debe ser mayor que 0" -#: ../../include/selectors.php:134 -msgid "Partners" -msgstr "Pareja" +#: ../../Zotlabs/Module/Settings/Channel.php:588 +msgid "Advanced Account/Page Type Settings" +msgstr "Ajustes avanzados de la cuenta y de los tipos de página" -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Cohabiting" -msgstr "Cohabitando" +#: ../../Zotlabs/Module/Settings/Channel.php:589 +msgid "Change the behaviour of this account for special situations" +msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales" -#: ../../include/selectors.php:134 -msgid "Common law" -msgstr "Matrimonio tradicional" +#: ../../Zotlabs/Module/Settings/Channel.php:591 +msgid "Miscellaneous Settings" +msgstr "Ajustes diversos" -#: ../../include/selectors.php:134 -msgid "Happy" -msgstr "Felíz" +#: ../../Zotlabs/Module/Settings/Channel.php:592 +msgid "Default photo upload folder" +msgstr "Carpeta por defecto de las fotos subidas" -#: ../../include/selectors.php:134 -msgid "Not looking" -msgstr "No estoy buscando" +#: ../../Zotlabs/Module/Settings/Channel.php:592 +#: ../../Zotlabs/Module/Settings/Channel.php:593 +msgid "%Y - current year, %m - current month" +msgstr "%Y - año en curso, %m - mes actual" -#: ../../include/selectors.php:134 -msgid "Swinger" -msgstr "Libertino" +#: ../../Zotlabs/Module/Settings/Channel.php:593 +msgid "Default file upload folder" +msgstr "Carpeta por defecto de los ficheros subidos" -#: ../../include/selectors.php:134 -msgid "Betrayed" -msgstr "Engañado/a" +#: ../../Zotlabs/Module/Settings/Channel.php:595 +msgid "Remove this channel." +msgstr "Eliminar este canal." -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Separated" -msgstr "Separado/a" +#: ../../Zotlabs/Module/Settings/Account.php:19 +msgid "Not valid email." +msgstr "Correo electrónico no válido." -#: ../../include/selectors.php:134 -msgid "Unstable" -msgstr "Inestable" +#: ../../Zotlabs/Module/Settings/Account.php:22 +msgid "Protected email address. Cannot change to that email." +msgstr "Dirección de correo electrónico protegida. No se puede cambiar a ella." -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Divorced" -msgstr "Divorciado/a" +#: ../../Zotlabs/Module/Settings/Account.php:31 +msgid "System failure storing new email. Please try again." +msgstr "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo." -#: ../../include/selectors.php:134 -msgid "Imaginarily divorced" -msgstr "Divorciado/a en sueños" +#: ../../Zotlabs/Module/Settings/Account.php:48 +msgid "Password verification failed." +msgstr "La comprobación de la contraseña ha fallado." + +#: ../../Zotlabs/Module/Settings/Account.php:55 +msgid "Passwords do not match. Password unchanged." +msgstr "Las contraseñas no coinciden. La contraseña no se ha cambiado." -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Widowed" -msgstr "Viudo/a" +#: ../../Zotlabs/Module/Settings/Account.php:59 +msgid "Empty passwords are not allowed. Password unchanged." +msgstr "No se permiten contraseñas vacías. La contraseña no se ha cambiado." -#: ../../include/selectors.php:134 -msgid "Uncertain" -msgstr "Indeterminado" +#: ../../Zotlabs/Module/Settings/Account.php:73 +msgid "Password changed." +msgstr "Contraseña cambiada." -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "It's complicated" -msgstr "Es complicado" +#: ../../Zotlabs/Module/Settings/Account.php:75 +msgid "Password update failed. Please try again." +msgstr "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo." -#: ../../include/selectors.php:134 -msgid "Don't care" -msgstr "No me importa" +#: ../../Zotlabs/Module/Settings/Account.php:99 +msgid "Account Settings" +msgstr "Configuración de la cuenta" -#: ../../include/selectors.php:134 -msgid "Ask me" -msgstr "Pregúnteme" +#: ../../Zotlabs/Module/Settings/Account.php:100 +msgid "Current Password" +msgstr "Contraseña actual" -#: ../../include/conversation.php:169 -#, php-format -msgid "likes %1$s's %2$s" -msgstr "gusta de %2$s de %1$s" +#: ../../Zotlabs/Module/Settings/Account.php:101 +msgid "Enter New Password" +msgstr "Escribir una nueva contraseña" -#: ../../include/conversation.php:172 -#, php-format -msgid "doesn't like %1$s's %2$s" -msgstr "no gusta de %2$s de %1$s" +#: ../../Zotlabs/Module/Settings/Account.php:102 +msgid "Confirm New Password" +msgstr "Confirmar la nueva contraseña" -#: ../../include/conversation.php:212 -#, php-format -msgid "%1$s is now connected with %2$s" -msgstr "%1$s ahora está conectado/a con %2$s" +#: ../../Zotlabs/Module/Settings/Account.php:102 +msgid "Leave password fields blank unless changing" +msgstr "Dejar en blanco la contraseña a menos que desee cambiarla." -#: ../../include/conversation.php:247 -#, php-format -msgid "%1$s poked %2$s" -msgstr "%1$s ha dado un toque a %2$s" +#: ../../Zotlabs/Module/Settings/Account.php:106 +msgid "Remove this account including all its channels" +msgstr "Eliminar esta cuenta incluyendo todos sus canales" -#: ../../include/conversation.php:251 ../../include/text.php:1195 -#: ../../include/text.php:1199 -msgid "poked" -msgstr "ha dado un toque a" +#: ../../Zotlabs/Module/Settings/Featured.php:24 +msgid "No feature settings configured" +msgstr "No se ha establecido la configuración de los complementos" -#: ../../include/conversation.php:739 -#, php-format -msgid "View %s's profile @ %s" -msgstr "Ver el perfil @ %s de %s" +#: ../../Zotlabs/Module/Settings/Featured.php:33 +msgid "Addon Settings" +msgstr "Ajustes de los complementos" -#: ../../include/conversation.php:759 -msgid "Categories:" -msgstr "Temas:" +#: ../../Zotlabs/Module/Settings/Featured.php:34 +msgid "Please save/submit changes to any panel before opening another." +msgstr "Guarde o envíe los cambios a cualquier panel antes de abrir otro." -#: ../../include/conversation.php:760 -msgid "Filed under:" -msgstr "Archivado bajo:" +#: ../../Zotlabs/Module/Settings/Events.php:39 +msgid "Events Settings" +msgstr "Gestión de eventos" -#: ../../include/conversation.php:785 -msgid "View in context" -msgstr "Mostrar en su contexto" +#: ../../Zotlabs/Module/Settings/Manage.php:39 +msgid "Channel Manager Settings" +msgstr "Ajustes del administrador de canales" -#: ../../include/conversation.php:886 -msgid "remove" -msgstr "eliminar" +#: ../../Zotlabs/Module/Settings/Channel_home.php:59 +msgid "Personal menu to display in your channel pages" +msgstr "Menú personal que debe mostrarse en las páginas de su canal" -#: ../../include/conversation.php:890 -msgid "Loading..." -msgstr "Cargando..." +#: ../../Zotlabs/Module/Settings/Channel_home.php:86 +msgid "Channel Home Settings" +msgstr "Ajustes del canal" -#: ../../include/conversation.php:892 -msgid "Delete Selected Items" -msgstr "Eliminar elementos seleccionados" +#: ../../Zotlabs/Module/Settings/Calendar.php:39 +msgid "Calendar Settings" +msgstr "Ajustes del calendario" -#: ../../include/conversation.php:935 -msgid "View Source" -msgstr "Ver el código fuente de la entrada" +#: ../../Zotlabs/Module/Settings/Display.php:128 +#, php-format +msgid "%s - (Experimental)" +msgstr "%s - (Experimental)" -#: ../../include/conversation.php:945 -msgid "Follow Thread" -msgstr "Seguir este hilo" +#: ../../Zotlabs/Module/Settings/Display.php:184 +msgid "Display Settings" +msgstr "Ajustes de visualización" -#: ../../include/conversation.php:954 -msgid "Unfollow Thread" -msgstr "Dejar de seguir este hilo" +#: ../../Zotlabs/Module/Settings/Display.php:185 +msgid "Theme Settings" +msgstr "Ajustes del tema" -#: ../../include/conversation.php:1068 -msgid "Edit Connection" -msgstr "Editar conexión" +#: ../../Zotlabs/Module/Settings/Display.php:186 +msgid "Custom Theme Settings" +msgstr "Ajustes personalizados del tema" -#: ../../include/conversation.php:1078 -msgid "Message" -msgstr "Mensaje" +#: ../../Zotlabs/Module/Settings/Display.php:187 +msgid "Content Settings" +msgstr "Ajustes del contenido" -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s likes this." -msgstr "A %s le gusta esto." +#: ../../Zotlabs/Module/Settings/Display.php:193 +msgid "Display Theme:" +msgstr "Tema gráfico del perfil:" -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s doesn't like this." -msgstr "A %s no le gusta esto." +#: ../../Zotlabs/Module/Settings/Display.php:194 +msgid "Select scheme" +msgstr "Elegir un esquema" -#: ../../include/conversation.php:1216 -#, php-format -msgid "<span %1$s>%2$d people</span> like this." -msgid_plural "<span %1$s>%2$d people</span> like this." -msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto." -msgstr[1] "A <span %1$s>%2$d personas</span> les gusta esto." +#: ../../Zotlabs/Module/Settings/Display.php:196 +msgid "Preload images before rendering the page" +msgstr "Carga previa de las imágenes antes de generar la página" -#: ../../include/conversation.php:1218 -#, php-format -msgid "<span %1$s>%2$d people</span> don't like this." -msgid_plural "<span %1$s>%2$d people</span> don't like this." -msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto." -msgstr[1] "A <span %1$s>%2$d personas</span> no les gusta esto." +#: ../../Zotlabs/Module/Settings/Display.php:196 +msgid "" +"The subjective page load time will be longer but the page will be ready when" +" displayed" +msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre." -#: ../../include/conversation.php:1224 -msgid "and" -msgstr "y" +#: ../../Zotlabs/Module/Settings/Display.php:197 +msgid "Enable user zoom on mobile devices" +msgstr "Habilitar zoom de usuario en dispositivos móviles" -#: ../../include/conversation.php:1227 -#, php-format -msgid ", and %d other people" -msgid_plural ", and %d other people" -msgstr[0] ", y %d persona más" -msgstr[1] ", y %d personas más" +#: ../../Zotlabs/Module/Settings/Display.php:198 +msgid "Update browser every xx seconds" +msgstr "Actualizar navegador cada xx segundos" -#: ../../include/conversation.php:1228 -#, php-format -msgid "%s like this." -msgstr "A %s le gusta esto." +#: ../../Zotlabs/Module/Settings/Display.php:198 +msgid "Minimum of 10 seconds, no maximum" +msgstr "Mínimo de 10 segundos, sin máximo" -#: ../../include/conversation.php:1228 -#, php-format -msgid "%s don't like this." -msgstr "A %s no le gusta esto." +#: ../../Zotlabs/Module/Settings/Display.php:199 +msgid "Maximum number of conversations to load at any time:" +msgstr "Máximo número de conversaciones a cargar en cualquier momento:" -#: ../../include/conversation.php:1708 -msgctxt "noun" -msgid "Attending" -msgid_plural "Attending" -msgstr[0] "Participaré" -msgstr[1] "Participaré" +#: ../../Zotlabs/Module/Settings/Display.php:199 +msgid "Maximum of 100 items" +msgstr "Máximo de 100 elementos" -#: ../../include/conversation.php:1711 -msgctxt "noun" -msgid "Not Attending" -msgid_plural "Not Attending" -msgstr[0] "No participaré" -msgstr[1] "No participaré" +#: ../../Zotlabs/Module/Settings/Display.php:200 +msgid "Show emoticons (smilies) as images" +msgstr "Mostrar emoticonos (smilies) como imágenes" -#: ../../include/conversation.php:1714 -msgctxt "noun" -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "Indeciso/a" -msgstr[1] "Indecisos/as" +#: ../../Zotlabs/Module/Settings/Display.php:201 +msgid "Provide channel menu in navigation bar" +msgstr "Proporcionar un menú de canales en la barra de navegación" -#: ../../include/conversation.php:1717 -msgctxt "noun" -msgid "Agree" -msgid_plural "Agrees" -msgstr[0] "De acuerdo" -msgstr[1] "De acuerdo" +#: ../../Zotlabs/Module/Settings/Display.php:201 +msgid "Default: channel menu located in app menu" +msgstr "Predeterminado: menú de canales ubicado en el menú de aplicaciones" -#: ../../include/conversation.php:1720 -msgctxt "noun" -msgid "Disagree" -msgid_plural "Disagrees" -msgstr[0] "En desacuerdo" -msgstr[1] "En desacuerdo" +#: ../../Zotlabs/Module/Settings/Display.php:202 +msgid "Manual conversation updates" +msgstr "Actualizaciones manuales de la conversación" -#: ../../include/conversation.php:1723 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "se abstiene" -msgstr[1] "Se abstienen" +#: ../../Zotlabs/Module/Settings/Display.php:202 +msgid "Default is on, turning this off may increase screen jumping" +msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla" -#: ../../include/bookmarks.php:34 -#, php-format -msgid "%1$s's bookmarks" -msgstr "Marcadores de %1$s" +#: ../../Zotlabs/Module/Settings/Display.php:203 +msgid "Link post titles to source" +msgstr "Enlazar título de la publicación a la fuente original" -#: ../../include/import.php:28 -msgid "Unable to import a removed channel." -msgstr "No se puede importar un canal eliminado." +#: ../../Zotlabs/Module/Settings/Display.php:205 +msgid "Display new member quick links menu" +msgstr "Mostrar el menú de enlaces rápidos para nuevos miembros" -#: ../../include/import.php:54 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." -msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado." +#: ../../Zotlabs/Module/Settings/Directory.php:39 +msgid "Directory Settings" +msgstr "Configuración del directorio" -#: ../../include/import.php:120 -msgid "Cloned channel not found. Import failed." -msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." +#: ../../Zotlabs/Module/Settings/Editor.php:39 +msgid "Editor Settings" +msgstr "Ajustes del editor" -#: ../../include/text.php:520 -msgid "prev" -msgstr "anterior" +#: ../../Zotlabs/Module/Settings/Connections.php:39 +msgid "Connections Settings" +msgstr "Gestión de las conexiones" -#: ../../include/text.php:522 -msgid "first" -msgstr "primera" +#: ../../Zotlabs/Module/Settings/Photos.php:39 +msgid "Photos Settings" +msgstr "Gestión de las fotos" -#: ../../include/text.php:551 -msgid "last" -msgstr "última" +#: ../../Zotlabs/Module/Settings/Profiles.php:47 +msgid "Profiles Settings" +msgstr "Gestión de los perfiles" -#: ../../include/text.php:554 -msgid "next" -msgstr "próxima" +#: ../../Zotlabs/Module/Settings/Conversation.php:22 +msgid "Settings saved." +msgstr "Configuración guardada." -#: ../../include/text.php:572 -msgid "older" -msgstr "más antiguas" +#: ../../Zotlabs/Module/Settings/Conversation.php:24 +msgid "Settings saved. Reload page please." +msgstr "Ajustes guardados. Recargue la página, por favor." -#: ../../include/text.php:574 -msgid "newer" -msgstr "más recientes" +#: ../../Zotlabs/Module/Settings/Conversation.php:46 +msgid "Conversation Settings" +msgstr "Ajustes de conversación" -#: ../../include/text.php:998 -msgid "No connections" -msgstr "Sin conexiones" +#: ../../Zotlabs/Module/Menu.php:68 +msgid "Unable to update menu." +msgstr "No se puede actualizar el menú." -#: ../../include/text.php:1030 -#, php-format -msgid "View all %s connections" -msgstr "Ver todas las %s conexiones" +#: ../../Zotlabs/Module/Menu.php:79 +msgid "Unable to create menu." +msgstr "No se puede crear el menú." -#: ../../include/text.php:1092 -#, php-format -msgid "Network: %s" -msgstr "Red %s" +#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 +msgid "Menu Name" +msgstr "Nombre del menú" -#: ../../include/text.php:1195 ../../include/text.php:1199 -msgid "poke" -msgstr "un toque" +#: ../../Zotlabs/Module/Menu.php:161 +msgid "Unique name (not visible on webpage) - required" +msgstr "Nombre único (no será visible en la página web) - requerido" -#: ../../include/text.php:1200 -msgid "ping" -msgstr "un \"ping\"" +#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:175 +msgid "Menu Title" +msgstr "Título del menú" -#: ../../include/text.php:1200 -msgid "pinged" -msgstr "ha enviado un \"ping\" a" +#: ../../Zotlabs/Module/Menu.php:162 +msgid "Visible on webpage - leave empty for no title" +msgstr "Visible en la página web - no ponga nada si no desea un título" -#: ../../include/text.php:1201 -msgid "prod" -msgstr "una incitación " +#: ../../Zotlabs/Module/Menu.php:163 +msgid "Allow Bookmarks" +msgstr "Permitir marcadores" -#: ../../include/text.php:1201 -msgid "prodded" -msgstr "ha incitado a " +#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 +msgid "Menu may be used to store saved bookmarks" +msgstr "El menú se puede usar para guardar marcadores" -#: ../../include/text.php:1202 -msgid "slap" -msgstr "una bofetada " +#: ../../Zotlabs/Module/Menu.php:164 ../../Zotlabs/Module/Menu.php:225 +msgid "Submit and proceed" +msgstr "Enviar y proceder" -#: ../../include/text.php:1202 -msgid "slapped" -msgstr "ha abofeteado a " +#: ../../Zotlabs/Module/Menu.php:177 ../../Zotlabs/Module/Locs.php:120 +msgid "Drop" +msgstr "Eliminar" -#: ../../include/text.php:1203 -msgid "finger" -msgstr "un \"finger\" " +#: ../../Zotlabs/Module/Menu.php:181 +msgid "Bookmarks allowed" +msgstr "Marcadores permitidos" -#: ../../include/text.php:1203 -msgid "fingered" -msgstr "envió un \"finger\" a" +#: ../../Zotlabs/Module/Menu.php:183 +msgid "Delete this menu" +msgstr "Borrar este menú" -#: ../../include/text.php:1204 -msgid "rebuff" -msgstr "un reproche" +#: ../../Zotlabs/Module/Menu.php:184 ../../Zotlabs/Module/Menu.php:219 +msgid "Edit menu contents" +msgstr "Editar los contenidos del menú" -#: ../../include/text.php:1204 -msgid "rebuffed" -msgstr "ha hecho un reproche a " +#: ../../Zotlabs/Module/Menu.php:185 +msgid "Edit this menu" +msgstr "Modificar este menú" -#: ../../include/text.php:1227 -msgid "happy" -msgstr "feliz " +#: ../../Zotlabs/Module/Menu.php:201 +msgid "Menu could not be deleted." +msgstr "El menú no puede ser eliminado." -#: ../../include/text.php:1228 -msgid "sad" -msgstr "triste " +#: ../../Zotlabs/Module/Menu.php:214 +msgid "Edit Menu" +msgstr "Modificar el menú" -#: ../../include/text.php:1229 -msgid "mellow" -msgstr "tranquilo/a" +#: ../../Zotlabs/Module/Menu.php:218 +msgid "Add or remove entries to this menu" +msgstr "Añadir o quitar entradas en este menú" -#: ../../include/text.php:1230 -msgid "tired" -msgstr "cansado/a " +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Menu name" +msgstr "Nombre del menú" -#: ../../include/text.php:1231 -msgid "perky" -msgstr "vivaz" +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Must be unique, only seen by you" +msgstr "Debe ser único, solo será visible para usted" -#: ../../include/text.php:1232 -msgid "angry" -msgstr "enfadado/a" +#: ../../Zotlabs/Module/Menu.php:221 +msgid "Menu title" +msgstr "Título del menú" -#: ../../include/text.php:1233 -msgid "stupefied" -msgstr "asombrado/a" +#: ../../Zotlabs/Module/Menu.php:221 +msgid "Menu title as seen by others" +msgstr "El título del menú tal como será visto por los demás" -#: ../../include/text.php:1234 -msgid "puzzled" -msgstr "perplejo/a" +#: ../../Zotlabs/Module/Menu.php:222 +msgid "Allow bookmarks" +msgstr "Permitir marcadores" -#: ../../include/text.php:1235 -msgid "interested" -msgstr "interesado/a" +#: ../../Zotlabs/Module/Defperms.php:67 ../../Zotlabs/Module/Connedit.php:81 +msgid "Could not access contact record." +msgstr "No se ha podido acceder al registro de contacto." -#: ../../include/text.php:1236 -msgid "bitter" -msgstr "amargado/a" +#: ../../Zotlabs/Module/Defperms.php:189 +msgid "Default Permissions App" +msgstr "App Permisos por defecto" -#: ../../include/text.php:1237 -msgid "cheerful" -msgstr "alegre" +#: ../../Zotlabs/Module/Defperms.php:190 +msgid "Set custom default permissions for new connections" +msgstr "Establecer permisos predeterminados personalizados para nuevas conexiones" -#: ../../include/text.php:1238 -msgid "alive" -msgstr "animado/a" +#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:867 +msgid "Connection Default Permissions" +msgstr "Permisos predeterminados de conexión" -#: ../../include/text.php:1239 -msgid "annoyed" -msgstr "molesto/a" +#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:868 +msgid "Apply these permissions automatically" +msgstr "Aplicar estos permisos automaticamente" -#: ../../include/text.php:1240 -msgid "anxious" -msgstr "ansioso/a" +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 +msgid "Permission role" +msgstr "Permisos de rol" -#: ../../include/text.php:1241 -msgid "cranky" -msgstr "de mal humor" +#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870 +msgid "Add permission role" +msgstr "Añadir permisos de rol" -#: ../../include/text.php:1242 -msgid "disturbed" -msgstr "perturbado/a" +#: ../../Zotlabs/Module/Defperms.php:261 ../../Zotlabs/Module/Connedit.php:883 +msgid "" +"The permissions indicated on this page will be applied to all new " +"connections." +msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones." -#: ../../include/text.php:1243 -msgid "frustrated" -msgstr "frustrado/a" +#: ../../Zotlabs/Module/Defperms.php:262 +msgid "Automatic approval settings" +msgstr "Opciones de autorización automática" -#: ../../include/text.php:1244 -msgid "depressed" -msgstr "deprimido/a" +#: ../../Zotlabs/Module/Defperms.php:270 +msgid "" +"Some individual permissions may have been preset or locked based on your " +"channel type and privacy settings." +msgstr "Es posible que se hayan preestablecido o bloqueado algunos permisos individuales según el tipo de canal y la configuración de privacidad." -#: ../../include/text.php:1245 -msgid "motivated" -msgstr "motivado/a" +#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68 +msgid "This setting requires special processing and editing has been blocked." +msgstr "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada." -#: ../../include/text.php:1246 -msgid "relaxed" -msgstr "relajado/a" +#: ../../Zotlabs/Module/Pconfig.php:57 +msgid "Configuration Editor" +msgstr "Editor de configuración" -#: ../../include/text.php:1247 -msgid "surprised" -msgstr "sorprendido/a" +#: ../../Zotlabs/Module/Pconfig.php:58 +msgid "" +"Warning: Changing some settings could render your channel inoperable. Please" +" leave this page unless you are comfortable with and knowledgeable about how" +" to correctly use this feature." +msgstr "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica." -#: ../../include/text.php:1435 ../../include/js_strings.php:96 -msgid "Monday" -msgstr "lunes" +#: ../../Zotlabs/Module/Oauth2.php:54 +msgid "Name and Secret are required" +msgstr "\"Key\" y \"Secret\" son obligatorios" -#: ../../include/text.php:1435 ../../include/js_strings.php:97 -msgid "Tuesday" -msgstr "martes" +#: ../../Zotlabs/Module/Oauth2.php:106 +msgid "OAuth2 Apps Manager App" +msgstr "Aplicación del administrador de apps OAuth2" -#: ../../include/text.php:1435 ../../include/js_strings.php:98 -msgid "Wednesday" -msgstr "miércoles" +#: ../../Zotlabs/Module/Oauth2.php:107 +msgid "OAuth2 authenticatication tokens for mobile and remote apps" +msgstr "Tokens de autenticación de OAuth2 para aplicaciones móviles y remotas" -#: ../../include/text.php:1435 ../../include/js_strings.php:99 -msgid "Thursday" -msgstr "jueves" +#: ../../Zotlabs/Module/Oauth2.php:115 +msgid "Add OAuth2 application" +msgstr "Añadir aplicación OAuth2" -#: ../../include/text.php:1435 ../../include/js_strings.php:100 -msgid "Friday" -msgstr "viernes" +#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 +msgid "Grant Types" +msgstr "Tipos de permisos" -#: ../../include/text.php:1435 ../../include/js_strings.php:101 -msgid "Saturday" -msgstr "sábado" +#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122 +msgid "leave blank unless your application sepcifically requires this" +msgstr "Dejar en blanco a menos que su aplicación lo requiera específicamente" -#: ../../include/text.php:1435 ../../include/js_strings.php:95 -msgid "Sunday" -msgstr "domingo" +#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 +msgid "Authorization scope" +msgstr "Alcance de la autorización" -#: ../../include/text.php:1439 ../../include/js_strings.php:71 -msgid "January" -msgstr "enero" +#: ../../Zotlabs/Module/Oauth2.php:134 +msgid "OAuth2 Application not found." +msgstr "No se ha encontrado la aplicación OAuth2." -#: ../../include/text.php:1439 ../../include/js_strings.php:72 -msgid "February" -msgstr "febrero" +#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150 +msgid "leave blank unless your application specifically requires this" +msgstr "dejar en blanco a menos que su aplicación lo requiera específicamente" -#: ../../include/text.php:1439 ../../include/js_strings.php:73 -msgid "March" -msgstr "marzo" +#: ../../Zotlabs/Module/Oauth2.php:192 +msgid "Connected OAuth2 Apps" +msgstr "Aplicaciones OAuth2 conectadas" -#: ../../include/text.php:1439 ../../include/js_strings.php:74 -msgid "April" -msgstr "abril" +#: ../../Zotlabs/Module/Randprof.php:29 +msgid "Random Channel App" +msgstr "App Canal aleatorio" -#: ../../include/text.php:1439 -msgid "May" -msgstr "mayo" +#: ../../Zotlabs/Module/Randprof.php:30 +msgid "Visit a random channel in the $Projectname network" +msgstr "Visitar un canal aleatorio en la red $Projectname" -#: ../../include/text.php:1439 ../../include/js_strings.php:76 -msgid "June" -msgstr "junio" +#: ../../Zotlabs/Module/Dreport.php:59 +msgid "Invalid message" +msgstr "Mensaje no válido" -#: ../../include/text.php:1439 ../../include/js_strings.php:77 -msgid "July" -msgstr "julio" +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "no results" +msgstr "sin resultados" -#: ../../include/text.php:1439 ../../include/js_strings.php:78 -msgid "August" -msgstr "agosto" +#: ../../Zotlabs/Module/Dreport.php:107 +msgid "channel sync processed" +msgstr "se ha realizado la sincronización del canal" -#: ../../include/text.php:1439 ../../include/js_strings.php:79 -msgid "September" -msgstr "septiembre" +#: ../../Zotlabs/Module/Dreport.php:111 +msgid "queued" +msgstr "encolado" -#: ../../include/text.php:1439 ../../include/js_strings.php:80 -msgid "October" -msgstr "octubre" +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "posted" +msgstr "enviado" -#: ../../include/text.php:1439 ../../include/js_strings.php:81 -msgid "November" -msgstr "noviembre" +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "accepted for delivery" +msgstr "aceptado para el envío" -#: ../../include/text.php:1439 ../../include/js_strings.php:82 -msgid "December" -msgstr "diciembre" +#: ../../Zotlabs/Module/Dreport.php:123 +msgid "updated" +msgstr "actualizado" -#: ../../include/text.php:1513 -msgid "Unknown Attachment" -msgstr "Adjunto no reconocido" +#: ../../Zotlabs/Module/Dreport.php:126 +msgid "update ignored" +msgstr "actualización ignorada" -#: ../../include/text.php:1515 ../../include/feedutils.php:858 -msgid "unknown" -msgstr "desconocido" +#: ../../Zotlabs/Module/Dreport.php:129 +msgid "permission denied" +msgstr "permiso denegado" -#: ../../include/text.php:1551 -msgid "remove category" -msgstr "eliminar el tema" +#: ../../Zotlabs/Module/Dreport.php:133 +msgid "recipient not found" +msgstr "destinatario no encontrado" -#: ../../include/text.php:1627 -msgid "remove from file" -msgstr "eliminar del fichero" +#: ../../Zotlabs/Module/Dreport.php:136 +msgid "mail recalled" +msgstr "mensaje de correo revocado" -#: ../../include/text.php:1791 ../../include/message.php:13 -msgid "Download binary/encrypted content" -msgstr "Descargar contenido binario o cifrado" +#: ../../Zotlabs/Module/Dreport.php:139 +msgid "duplicate mail received" +msgstr "se ha recibido mensaje duplicado" -#: ../../include/text.php:1961 ../../include/language.php:423 -msgid "default" -msgstr "por defecto" +#: ../../Zotlabs/Module/Dreport.php:142 +msgid "mail delivered" +msgstr "correo enviado" -#: ../../include/text.php:1969 -msgid "Page layout" -msgstr "Plantilla de la página" +#: ../../Zotlabs/Module/Dreport.php:162 +#, php-format +msgid "Delivery report for %1$s" +msgstr "Informe de entrega para %1$s" -#: ../../include/text.php:1969 -msgid "You can create your own with the layouts tool" -msgstr "Puede crear su propia disposición gráfica con la herramienta de plantillas" +#: ../../Zotlabs/Module/Dreport.php:167 +msgid "Redeliver" +msgstr "Volver a enviar" -#: ../../include/text.php:1980 -msgid "HTML" -msgstr "HTML" +#: ../../Zotlabs/Module/Thing.php:120 +msgid "Thing updated" +msgstr "Elemento actualizado." -#: ../../include/text.php:1983 -msgid "Comanche Layout" -msgstr "Plantilla de Comanche" +#: ../../Zotlabs/Module/Thing.php:172 +msgid "Object store: failed" +msgstr "Guardar objeto: ha fallado" -#: ../../include/text.php:1988 -msgid "PHP" -msgstr "PHP" +#: ../../Zotlabs/Module/Thing.php:176 +msgid "Thing added" +msgstr "Elemento añadido" -#: ../../include/text.php:1997 -msgid "Page content type" -msgstr "Tipo de contenido de la página" +#: ../../Zotlabs/Module/Thing.php:202 +#, php-format +msgid "OBJ: %1$s %2$s %3$s" +msgstr "OBJ: %1$s %2$s %3$s" -#: ../../include/text.php:2130 -msgid "activity" -msgstr "la/su actividad" +#: ../../Zotlabs/Module/Thing.php:265 +msgid "Show Thing" +msgstr "Mostrar elemento" -#: ../../include/text.php:2231 -msgid "a-z, 0-9, -, and _ only" -msgstr "a-z, 0-9, -, and _ only" +#: ../../Zotlabs/Module/Thing.php:272 +msgid "item not found." +msgstr "elemento no encontrado." -#: ../../include/text.php:2557 -msgid "Design Tools" -msgstr "Herramientas de diseño web" +#: ../../Zotlabs/Module/Thing.php:305 +msgid "Edit Thing" +msgstr "Editar elemento" -#: ../../include/text.php:2563 -msgid "Pages" -msgstr "Páginas" +#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:364 +msgid "Select a profile" +msgstr "Seleccionar un perfil" -#: ../../include/text.php:2575 -msgid "Import" -msgstr "Importar" +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 +msgid "Post an activity" +msgstr "Publicar una actividad" -#: ../../include/text.php:2576 -msgid "Import website..." -msgstr "Importar un sitio web..." +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:367 +msgid "Only sends to viewers of the applicable profile" +msgstr "Sólo enviar a espectadores del perfil pertinente." -#: ../../include/text.php:2577 -msgid "Select folder to import" -msgstr "Seleccionar la carpeta que se va a importar" +#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:369 +msgid "Name of thing e.g. something" +msgstr "Nombre del elemento, p. ej.:. \"algo\"" -#: ../../include/text.php:2578 -msgid "Import from a zipped folder:" -msgstr "Importar desde una carpeta comprimida: " +#: ../../Zotlabs/Module/Thing.php:315 ../../Zotlabs/Module/Thing.php:370 +msgid "URL of thing (optional)" +msgstr "Dirección del elemento (opcional)" -#: ../../include/text.php:2579 -msgid "Import from cloud files:" -msgstr "Importar desde los ficheros en la nube: " +#: ../../Zotlabs/Module/Thing.php:317 ../../Zotlabs/Module/Thing.php:371 +msgid "URL for photo of thing (optional)" +msgstr "Dirección para la foto o elemento (opcional)" -#: ../../include/text.php:2580 -msgid "/cloud/channel/path/to/folder" -msgstr "/cloud/canal/ruta/a la/carpeta" +#: ../../Zotlabs/Module/Thing.php:362 +msgid "Add Thing to your Profile" +msgstr "Añadir alguna cosa a su perfil" -#: ../../include/text.php:2581 -msgid "Enter path to website files" -msgstr "Ruta a los ficheros del sitio web" +#: ../../Zotlabs/Module/Rmagic.php:44 +msgid "Authentication failed." +msgstr "Falló la autenticación." -#: ../../include/text.php:2582 -msgid "Select folder" -msgstr "Seleccionar la carpeta" +#: ../../Zotlabs/Module/Pdledit.php:26 +msgid "Layout updated." +msgstr "Plantilla actualizada." -#: ../../include/text.php:2583 -msgid "Export website..." -msgstr "Exportar un sitio web..." +#: ../../Zotlabs/Module/Pdledit.php:42 +msgid "PDL Editor App" +msgstr "App Editor PDL" -#: ../../include/text.php:2584 -msgid "Export to a zip file" -msgstr "Exportar a un fichero comprimido .zip" +#: ../../Zotlabs/Module/Pdledit.php:43 +msgid "Provides the ability to edit system page layouts" +msgstr "Proporciona la capacidad de editar los diseños de página del sistema" -#: ../../include/text.php:2585 -msgid "website.zip" -msgstr "sitio_web.zip" +#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99 +msgid "Edit System Page Description" +msgstr "Editor del Sistema de Descripción de Páginas" -#: ../../include/text.php:2586 -msgid "Enter a name for the zip file." -msgstr "Escriba un nombre para el fichero zip." +#: ../../Zotlabs/Module/Pdledit.php:77 +msgid "(modified)" +msgstr "(modificado)" -#: ../../include/text.php:2587 -msgid "Export to cloud files" -msgstr "Exportar a la nube de ficheros" +#: ../../Zotlabs/Module/Pdledit.php:94 +msgid "Layout not found." +msgstr "Plantilla no encontrada" -#: ../../include/text.php:2588 -msgid "/path/to/export/folder" -msgstr "/ruta/para/exportar/carpeta" +#: ../../Zotlabs/Module/Pdledit.php:100 +msgid "Module Name:" +msgstr "Nombre del módulo:" -#: ../../include/text.php:2589 -msgid "Enter a path to a cloud files destination." -msgstr "Escriba una ruta de destino a la nube de ficheros." +#: ../../Zotlabs/Module/Pdledit.php:101 +msgid "Layout Help" +msgstr "Ayuda para el diseño de plantillas de página" -#: ../../include/text.php:2590 -msgid "Specify folder" -msgstr "Especificar una carpeta" +#: ../../Zotlabs/Module/Pdledit.php:102 +msgid "Edit another layout" +msgstr "Editar otro diseño" -#: ../../include/contact_widgets.php:11 -#, php-format -msgid "%d invitation available" -msgid_plural "%d invitations available" -msgstr[0] "%d invitación pendiente" -msgstr[1] "%d invitaciones disponibles" +#: ../../Zotlabs/Module/Pdledit.php:103 +msgid "System layout" +msgstr "Diseño del sistema" -#: ../../include/contact_widgets.php:19 -msgid "Find Channels" -msgstr "Encontrar canales" +#: ../../Zotlabs/Module/Wiki.php:52 +msgid "Wiki App" +msgstr "App Wiki" -#: ../../include/contact_widgets.php:20 -msgid "Enter name or interest" -msgstr "Introducir nombre o interés" +#: ../../Zotlabs/Module/Wiki.php:53 +msgid "Provide a wiki for your channel" +msgstr "Proporcionar un wiki para su canal" -#: ../../include/contact_widgets.php:21 -msgid "Connect/Follow" -msgstr "Conectar/Seguir" +#: ../../Zotlabs/Module/Wiki.php:133 +msgid "Error retrieving wiki" +msgstr "Error al recuperar el wiki" -#: ../../include/contact_widgets.php:22 -msgid "Examples: Robert Morgenstein, Fishing" -msgstr "Ejemplos: José Fernández, Pesca" +#: ../../Zotlabs/Module/Wiki.php:140 +msgid "Error creating zip file export folder" +msgstr "Error al crear el fichero comprimido zip de la carpeta a exportar" -#: ../../include/contact_widgets.php:26 -msgid "Random Profile" -msgstr "Perfil aleatorio" +#: ../../Zotlabs/Module/Wiki.php:191 +msgid "Error downloading wiki: " +msgstr "Error al descargar el wiki: " -#: ../../include/contact_widgets.php:27 -msgid "Invite Friends" -msgstr "Invitar a amigos" +#: ../../Zotlabs/Module/Wiki.php:212 +msgid "Download" +msgstr "Descargar" -#: ../../include/contact_widgets.php:29 -msgid "Advanced example: name=fred and country=iceland" -msgstr "Ejemplo avanzado: nombre=juan y país=españa" +#: ../../Zotlabs/Module/Wiki.php:216 +msgid "Wiki name" +msgstr "Nombre del wiki" -#: ../../include/contact_widgets.php:218 -msgid "Common Connections" -msgstr "Conexiones comunes" +#: ../../Zotlabs/Module/Wiki.php:217 +msgid "Content type" +msgstr "Tipo de contenido" -#: ../../include/contact_widgets.php:222 -#, php-format -msgid "View all %d common connections" -msgstr "Ver todas las %d conexiones comunes" +#: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:292 +msgid "Type" +msgstr "Tipo" -#: ../../include/markdown.php:202 ../../include/bbcode.php:366 -#, php-format -msgid "%1$s wrote the following %2$s %3$s" -msgstr "%1$s escribió %2$s siguiente %3$s" +#: ../../Zotlabs/Module/Wiki.php:220 +msgid "Any type" +msgstr "Cualquier tipo" -#: ../../include/follow.php:37 -msgid "Channel is blocked on this site." -msgstr "El canal está bloqueado en este sitio." +#: ../../Zotlabs/Module/Wiki.php:227 +msgid "Lock content type" +msgstr "Tipo de contenido bloqueado" -#: ../../include/follow.php:42 -msgid "Channel location missing." -msgstr "Falta la dirección del canal." +#: ../../Zotlabs/Module/Wiki.php:228 +msgid "Create a status post for this wiki" +msgstr "Crear un mensaje de estado para este wiki" -#: ../../include/follow.php:84 -msgid "Response from remote channel was incomplete." -msgstr "Respuesta incompleta del canal." +#: ../../Zotlabs/Module/Wiki.php:229 +msgid "Edit Wiki Name" +msgstr "Editar el nombre del wiki" -#: ../../include/follow.php:96 -msgid "Premium channel - please visit:" -msgstr "Canal Premium - por favor visite:" +#: ../../Zotlabs/Module/Wiki.php:274 +msgid "Wiki not found" +msgstr "Wiki no encontrado" -#: ../../include/follow.php:110 -msgid "Channel was deleted and no longer exists." -msgstr "El canal ha sido eliminado y ya no existe." +#: ../../Zotlabs/Module/Wiki.php:300 +msgid "Rename page" +msgstr "Renombrar la página" -#: ../../include/follow.php:166 -msgid "Remote channel or protocol unavailable." -msgstr "Canal remoto o protocolo no disponible." +#: ../../Zotlabs/Module/Wiki.php:321 +msgid "Error retrieving page content" +msgstr "Error al recuperar el contenido de la página" -#: ../../include/follow.php:190 -msgid "Channel discovery failed." -msgstr "El intento de acceder al canal ha fallado." +#: ../../Zotlabs/Module/Wiki.php:329 ../../Zotlabs/Module/Wiki.php:331 +msgid "New page" +msgstr "Nueva página" -#: ../../include/follow.php:202 -msgid "Protocol disabled." -msgstr "Protocolo deshabilitado." +#: ../../Zotlabs/Module/Wiki.php:366 +msgid "Revision Comparison" +msgstr "Comparación de revisiones" -#: ../../include/follow.php:213 -msgid "Cannot connect to yourself." -msgstr "No puede conectarse consigo mismo." +#: ../../Zotlabs/Module/Wiki.php:374 +msgid "Short description of your changes (optional)" +msgstr "Breve descripción de sus cambios (opcional)" -#: ../../include/js_strings.php:5 -msgid "Delete this item?" -msgstr "¿Borrar este elemento?" +#: ../../Zotlabs/Module/Wiki.php:384 +msgid "Source" +msgstr "Fuente" -#: ../../include/js_strings.php:8 -#, php-format -msgid "%s show less" -msgstr "%s mostrar menos" +#: ../../Zotlabs/Module/Wiki.php:394 +msgid "New page name" +msgstr "Nombre de la nueva página" -#: ../../include/js_strings.php:9 -#, php-format -msgid "%s expand" -msgstr "%s expandir" +#: ../../Zotlabs/Module/Wiki.php:399 +msgid "Embed image from photo albums" +msgstr "Incluir una imagen de los álbumes de fotos" -#: ../../include/js_strings.php:10 -#, php-format -msgid "%s collapse" -msgstr "%s contraer" +#: ../../Zotlabs/Module/Wiki.php:410 +msgid "History" +msgstr "Historial" -#: ../../include/js_strings.php:11 -msgid "Password too short" -msgstr "Contraseña demasiado corta" +#: ../../Zotlabs/Module/Wiki.php:488 +msgid "Error creating wiki. Invalid name." +msgstr "Error al crear el wiki: el nombre no es válido." -#: ../../include/js_strings.php:12 -msgid "Passwords do not match" -msgstr "Las contraseñas no coinciden" +#: ../../Zotlabs/Module/Wiki.php:495 +msgid "A wiki with this name already exists." +msgstr "Ya hay un wiki con este nombre." -#: ../../include/js_strings.php:13 -msgid "everybody" -msgstr "cualquiera" +#: ../../Zotlabs/Module/Wiki.php:508 +msgid "Wiki created, but error creating Home page." +msgstr "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio." -#: ../../include/js_strings.php:14 -msgid "Secret Passphrase" -msgstr "Contraseña secreta" +#: ../../Zotlabs/Module/Wiki.php:515 +msgid "Error creating wiki" +msgstr "Error al crear el wiki" -#: ../../include/js_strings.php:15 -msgid "Passphrase hint" -msgstr "Pista de contraseña" +#: ../../Zotlabs/Module/Wiki.php:539 +msgid "Error updating wiki. Invalid name." +msgstr "Error al actualizar el wiki. Nombre no válido." -#: ../../include/js_strings.php:16 -msgid "Notice: Permissions have changed but have not yet been submitted." -msgstr "Aviso: los permisos han cambiado pero aún no han sido enviados." +#: ../../Zotlabs/Module/Wiki.php:559 +msgid "Error updating wiki" +msgstr "Error al actualizar el wiki" -#: ../../include/js_strings.php:17 -msgid "close all" -msgstr "cerrar todo" +#: ../../Zotlabs/Module/Wiki.php:574 +msgid "Wiki delete permission denied." +msgstr "Se ha denegado el permiso para eliminar el wiki." -#: ../../include/js_strings.php:18 -msgid "Nothing new here" -msgstr "Nada nuevo por aquí" +#: ../../Zotlabs/Module/Wiki.php:584 +msgid "Error deleting wiki" +msgstr "Se ha producido un error al eliminar el wiki" -#: ../../include/js_strings.php:19 -msgid "Rate This Channel (this is public)" -msgstr "Valorar este canal (esto es público)" +#: ../../Zotlabs/Module/Wiki.php:617 +msgid "New page created" +msgstr "Se ha creado la nueva página" -#: ../../include/js_strings.php:21 -msgid "Describe (optional)" -msgstr "Describir (opcional)" +#: ../../Zotlabs/Module/Wiki.php:739 +msgid "Cannot delete Home" +msgstr "No se puede eliminar la página principal" -#: ../../include/js_strings.php:23 -msgid "Please enter a link URL" -msgstr "Por favor, introduzca una dirección de enlace" +#: ../../Zotlabs/Module/Wiki.php:803 +msgid "Current Revision" +msgstr "Revisión actual" -#: ../../include/js_strings.php:24 -msgid "Unsaved changes. Are you sure you wish to leave this page?" -msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?" +#: ../../Zotlabs/Module/Wiki.php:803 +msgid "Selected Revision" +msgstr "Revisión seleccionada" -#: ../../include/js_strings.php:26 -msgid "lovely" -msgstr "encantador" +#: ../../Zotlabs/Module/Wiki.php:853 +msgid "You must be authenticated." +msgstr "Debe estar autenticado." -#: ../../include/js_strings.php:27 -msgid "wonderful" -msgstr "fabuloso" +#: ../../Zotlabs/Module/Home.php:90 +#, php-format +msgid "Welcome to %s" +msgstr "Bienvenido a %s" -#: ../../include/js_strings.php:28 -msgid "fantastic" -msgstr "fantástico" +#: ../../Zotlabs/Module/Suggest.php:40 +msgid "Suggest Channels App" +msgstr "App Sugerencia de canales" -#: ../../include/js_strings.php:29 -msgid "great" -msgstr "grandioso" +#: ../../Zotlabs/Module/Suggest.php:41 +msgid "" +"Suggestions for channels in the $Projectname network you might be interested" +" in" +msgstr "Sugerencias de los canales de la red $Projectname en los que puede estar interesado" -#: ../../include/js_strings.php:30 +#: ../../Zotlabs/Module/Suggest.php:54 msgid "" -"Your chosen nickname was either already taken or not valid. Please use our " -"suggestion (" -msgstr "El nombre de usuario elegido ya está en uso o no es válido. Por favor, utilice nuestra sugerencia (" +"No suggestions available. If this is a new site, please try again in 24 " +"hours." +msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo." -#: ../../include/js_strings.php:31 -msgid ") or enter a new one." -msgstr ") o introduzca uno nuevo." +#: ../../Zotlabs/Module/Connedit.php:112 +msgid "Could not locate selected profile." +msgstr "No se ha podido localizar el perfil seleccionado." -#: ../../include/js_strings.php:32 -msgid "Thank you, this nickname is valid." -msgstr "Gracias, este alias es válido." +#: ../../Zotlabs/Module/Connedit.php:256 +msgid "Connection updated." +msgstr "Conexión actualizada." -#: ../../include/js_strings.php:33 -msgid "A channel name is required." -msgstr "Se requiere un nombre de canal" +#: ../../Zotlabs/Module/Connedit.php:258 +msgid "Failed to update connection record." +msgstr "Error al actualizar el registro de la conexión." -#: ../../include/js_strings.php:34 -msgid "This is a " -msgstr "Esto es un " +#: ../../Zotlabs/Module/Connedit.php:312 +msgid "is now connected to" +msgstr "ahora está conectado/a" -#: ../../include/js_strings.php:35 -msgid " channel name" -msgstr "nombre de canal" +#: ../../Zotlabs/Module/Connedit.php:437 +msgid "Could not access address book record." +msgstr "No se pudo acceder al registro en su libreta de direcciones." -#: ../../include/js_strings.php:36 -msgid "Back to reply" -msgstr "Volver a la respuesta" +#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489 +msgid "Refresh failed - channel is currently unavailable." +msgstr "Recarga fallida - no se puede encontrar el canal en este momento." -#: ../../include/js_strings.php:42 -#, php-format -msgid "%d minutes" -msgid_plural "%d minutes" -msgstr[0] "%d minutos" -msgstr[1] "%d minutos" +#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513 +#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531 +#: ../../Zotlabs/Module/Connedit.php:544 +msgid "Unable to set address book parameters." +msgstr "No ha sido posible establecer los parámetros de la libreta de direcciones." -#: ../../include/js_strings.php:43 -#, php-format -msgid "about %d hours" -msgid_plural "about %d hours" -msgstr[0] "alrededor de %d horas" -msgstr[1] "alrededor de %d horas" +#: ../../Zotlabs/Module/Connedit.php:568 +msgid "Connection has been removed." +msgstr "La conexión ha sido eliminada." -#: ../../include/js_strings.php:44 +#: ../../Zotlabs/Module/Connedit.php:611 #, php-format -msgid "%d days" -msgid_plural "%d days" -msgstr[0] "%d días" -msgstr[1] "%d días" +msgid "View %s's profile" +msgstr "Ver el perfil de %s" -#: ../../include/js_strings.php:45 -#, php-format -msgid "%d months" -msgid_plural "%d months" -msgstr[0] "%d meses" -msgstr[1] "%d meses" +#: ../../Zotlabs/Module/Connedit.php:615 +msgid "Refresh Permissions" +msgstr "Recargar los permisos" -#: ../../include/js_strings.php:46 -#, php-format -msgid "%d years" -msgid_plural "%d years" -msgstr[0] "%d años" -msgstr[1] "%d años" +#: ../../Zotlabs/Module/Connedit.php:618 +msgid "Fetch updated permissions" +msgstr "Obtener los permisos actualizados" -#: ../../include/js_strings.php:51 -msgid "timeago.prefixAgo" -msgstr "hace " +#: ../../Zotlabs/Module/Connedit.php:622 +msgid "Refresh Photo" +msgstr "Actualizar la foto" -#: ../../include/js_strings.php:52 -msgid "timeago.prefixFromNow" -msgstr "en " +#: ../../Zotlabs/Module/Connedit.php:625 +msgid "Fetch updated photo" +msgstr "Obtener una foto actualizada" -#: ../../include/js_strings.php:53 -msgid "timeago.suffixAgo" -msgstr "NONE" +#: ../../Zotlabs/Module/Connedit.php:632 +msgid "View recent posts and comments" +msgstr "Ver publicaciones y comentarios recientes" -#: ../../include/js_strings.php:54 -msgid "timeago.suffixFromNow" -msgstr "NONE" +#: ../../Zotlabs/Module/Connedit.php:639 +msgid "Block (or Unblock) all communications with this connection" +msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" -#: ../../include/js_strings.php:57 -msgid "less than a minute" -msgstr "menos de un minuto" +#: ../../Zotlabs/Module/Connedit.php:640 +msgid "This connection is blocked!" +msgstr "¡Esta conexión está bloqueada!" -#: ../../include/js_strings.php:58 -msgid "about a minute" -msgstr "alrededor de un minuto" +#: ../../Zotlabs/Module/Connedit.php:644 +msgid "Unignore" +msgstr "Dejar de ignorar" -#: ../../include/js_strings.php:60 -msgid "about an hour" -msgstr "alrededor de una hora" +#: ../../Zotlabs/Module/Connedit.php:647 +msgid "Ignore (or Unignore) all inbound communications from this connection" +msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" -#: ../../include/js_strings.php:62 -msgid "a day" -msgstr "un día" +#: ../../Zotlabs/Module/Connedit.php:648 +msgid "This connection is ignored!" +msgstr "¡Esta conexión es ignorada!" -#: ../../include/js_strings.php:64 -msgid "about a month" -msgstr "alrededor de un mes" +#: ../../Zotlabs/Module/Connedit.php:652 +msgid "Unarchive" +msgstr "Desarchivar" -#: ../../include/js_strings.php:66 -msgid "about a year" -msgstr "alrededor de un año" +#: ../../Zotlabs/Module/Connedit.php:652 +msgid "Archive" +msgstr "Archivar" -#: ../../include/js_strings.php:68 -msgid " " -msgstr " " +#: ../../Zotlabs/Module/Connedit.php:655 +msgid "" +"Archive (or Unarchive) this connection - mark channel dead but keep content" +msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos" -#: ../../include/js_strings.php:69 -msgid "timeago.numbers" -msgstr "timeago.numbers" +#: ../../Zotlabs/Module/Connedit.php:656 +msgid "This connection is archived!" +msgstr "¡Esta conexión esta archivada!" -#: ../../include/js_strings.php:75 -msgctxt "long" -msgid "May" -msgstr "mayo" +#: ../../Zotlabs/Module/Connedit.php:660 +msgid "Unhide" +msgstr "Mostrar" -#: ../../include/js_strings.php:83 -msgid "Jan" -msgstr "ene" +#: ../../Zotlabs/Module/Connedit.php:660 +msgid "Hide" +msgstr "Ocultar" -#: ../../include/js_strings.php:84 -msgid "Feb" -msgstr "feb" +#: ../../Zotlabs/Module/Connedit.php:663 +msgid "Hide or Unhide this connection from your other connections" +msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" -#: ../../include/js_strings.php:85 -msgid "Mar" -msgstr "mar" +#: ../../Zotlabs/Module/Connedit.php:664 +msgid "This connection is hidden!" +msgstr "¡Esta conexión está oculta!" -#: ../../include/js_strings.php:86 -msgid "Apr" -msgstr "abr" +#: ../../Zotlabs/Module/Connedit.php:671 +msgid "Delete this connection" +msgstr "Eliminar esta conexión" -#: ../../include/js_strings.php:87 -msgctxt "short" -msgid "May" -msgstr "may" +#: ../../Zotlabs/Module/Connedit.php:679 +msgid "Fetch Vcard" +msgstr "Obtener una vcard" -#: ../../include/js_strings.php:88 -msgid "Jun" -msgstr "jun" +#: ../../Zotlabs/Module/Connedit.php:682 +msgid "Fetch electronic calling card for this connection" +msgstr "Obtener una tarjeta de llamada electrónica para esta conexión" -#: ../../include/js_strings.php:89 -msgid "Jul" -msgstr "jul" +#: ../../Zotlabs/Module/Connedit.php:693 +msgid "Open Individual Permissions section by default" +msgstr "Abrir la sección de permisos individuales por defecto" -#: ../../include/js_strings.php:90 -msgid "Aug" -msgstr "ago" +#: ../../Zotlabs/Module/Connedit.php:716 +msgid "Affinity" +msgstr "Afinidad" -#: ../../include/js_strings.php:91 -msgid "Sep" -msgstr "sep" +#: ../../Zotlabs/Module/Connedit.php:719 +msgid "Open Set Affinity section by default" +msgstr "Abrir por defecto la sección para definir la afinidad" -#: ../../include/js_strings.php:92 -msgid "Oct" -msgstr "oct" +#: ../../Zotlabs/Module/Connedit.php:756 +msgid "Filter" +msgstr "Filtrar" -#: ../../include/js_strings.php:93 -msgid "Nov" -msgstr "nov" +#: ../../Zotlabs/Module/Connedit.php:759 +msgid "Open Custom Filter section by default" +msgstr "Abrir por defecto la sección de personalización de filtros" -#: ../../include/js_strings.php:94 -msgid "Dec" -msgstr "dic" +#: ../../Zotlabs/Module/Connedit.php:796 +msgid "Approve this connection" +msgstr "Aprobar esta conexión" -#: ../../include/js_strings.php:102 -msgid "Sun" -msgstr "dom" +#: ../../Zotlabs/Module/Connedit.php:796 +msgid "Accept connection to allow communication" +msgstr "Aceptar la conexión para permitir la comunicación" -#: ../../include/js_strings.php:103 -msgid "Mon" -msgstr "lun" +#: ../../Zotlabs/Module/Connedit.php:801 +msgid "Set Affinity" +msgstr "Ajustar la afinidad" + +#: ../../Zotlabs/Module/Connedit.php:804 +msgid "Set Profile" +msgstr "Ajustar el perfil" -#: ../../include/js_strings.php:104 -msgid "Tue" -msgstr "mar" +#: ../../Zotlabs/Module/Connedit.php:807 +msgid "Set Affinity & Profile" +msgstr "Ajustar la afinidad y el perfil" -#: ../../include/js_strings.php:105 -msgid "Wed" -msgstr "mié" +#: ../../Zotlabs/Module/Connedit.php:855 +msgid "This connection is unreachable from this location." +msgstr "No se puede acceder a la conexión desde este sitio." -#: ../../include/js_strings.php:106 -msgid "Thu" -msgstr "jue" +#: ../../Zotlabs/Module/Connedit.php:856 +msgid "This connection may be unreachable from other channel locations." +msgstr "Esta conexión puede ser inaccesible desde otras ubicaciones del canal." -#: ../../include/js_strings.php:107 -msgid "Fri" -msgstr "vie" +#: ../../Zotlabs/Module/Connedit.php:858 +msgid "Location independence is not supported by their network." +msgstr "La independencia de ubicación no es compatible con su red." -#: ../../include/js_strings.php:108 -msgid "Sat" -msgstr "sáb" +#: ../../Zotlabs/Module/Connedit.php:864 +msgid "" +"This connection is unreachable from this location. Location independence is " +"not supported by their network." +msgstr "Esta conexión no es accesible desde este sitio. La independencia de ubicación no es compatible con su red." -#: ../../include/js_strings.php:109 -msgctxt "calendar" -msgid "today" -msgstr "hoy" +#: ../../Zotlabs/Module/Connedit.php:868 +msgid "Connection requests will be approved without your interaction" +msgstr "Las solicitudes de conexión serán aprobadas sin su intervención" -#: ../../include/js_strings.php:110 -msgctxt "calendar" -msgid "month" -msgstr "mes" +#: ../../Zotlabs/Module/Connedit.php:877 +msgid "This connection's primary address is" +msgstr "La dirección primaria de esta conexión es" -#: ../../include/js_strings.php:111 -msgctxt "calendar" -msgid "week" -msgstr "semana" +#: ../../Zotlabs/Module/Connedit.php:878 +msgid "Available locations:" +msgstr "Ubicaciones disponibles:" -#: ../../include/js_strings.php:112 -msgctxt "calendar" -msgid "day" -msgstr "día" +#: ../../Zotlabs/Module/Connedit.php:884 +msgid "Connection Tools" +msgstr "Gestión de las conexiones" -#: ../../include/js_strings.php:113 -msgctxt "calendar" -msgid "All day" -msgstr "Todos los días" +#: ../../Zotlabs/Module/Connedit.php:886 +msgid "Slide to adjust your degree of friendship" +msgstr "Deslizar para ajustar el grado de amistad" -#: ../../include/message.php:41 -msgid "Unable to determine sender." -msgstr "No ha sido posible determinar el remitente. " +#: ../../Zotlabs/Module/Connedit.php:888 +msgid "Slide to adjust your rating" +msgstr "Deslizar para ajustar su valoración" -#: ../../include/message.php:80 -msgid "No recipient provided." -msgstr "No se ha especificado ningún destinatario." +#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894 +msgid "Optionally explain your rating" +msgstr "Opcionalmente, puede explicar su valoración" -#: ../../include/message.php:85 -msgid "[no subject]" -msgstr "[sin asunto]" +#: ../../Zotlabs/Module/Connedit.php:891 +msgid "Custom Filter" +msgstr "Filtro personalizado" -#: ../../include/message.php:214 -msgid "Stored post could not be verified." -msgstr "No se han podido verificar las publicaciones guardadas." +#: ../../Zotlabs/Module/Connedit.php:892 +msgid "Only import posts with this text" +msgstr "Importar solo entradas que contengan este texto" -#: ../../include/activities.php:42 -msgid " and " -msgstr " y " +#: ../../Zotlabs/Module/Connedit.php:893 +msgid "Do not import posts with this text" +msgstr "No importar entradas que contengan este texto" -#: ../../include/activities.php:50 -msgid "public profile" -msgstr "el perfil público" +#: ../../Zotlabs/Module/Connedit.php:895 +msgid "This information is public!" +msgstr "¡Esta información es pública!" -#: ../../include/activities.php:59 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" -msgstr "%1$s ha cambiado %2$s a “%3$s”" +#: ../../Zotlabs/Module/Connedit.php:900 +msgid "Connection Pending Approval" +msgstr "Conexión pendiente de aprobación" -#: ../../include/activities.php:60 +#: ../../Zotlabs/Module/Connedit.php:905 #, php-format -msgid "Visit %1$s's %2$s" -msgstr "Visitar %2$s de %1$s" +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." +msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura." -#: ../../include/activities.php:63 -#, php-format -msgid "%1$s has an updated %2$s, changing %3$s." -msgstr "%1$s ha actualizado %2$s, cambiando %3$s." +#: ../../Zotlabs/Module/Connedit.php:912 +msgid "" +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can change those settings here but " +"they wont have any impact unless the inherited setting changes." +msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados." -#: ../../include/attach.php:267 ../../include/attach.php:375 -msgid "Item was not found." -msgstr "Elemento no encontrado." +#: ../../Zotlabs/Module/Connedit.php:913 +msgid "Last update:" +msgstr "Última actualización:" -#: ../../include/attach.php:284 -msgid "Unknown error." -msgstr "Error desconocido" +#: ../../Zotlabs/Module/Connedit.php:921 +msgid "Details" +msgstr "Detalles" -#: ../../include/attach.php:568 -msgid "No source file." -msgstr "Ningún fichero de origen" +#: ../../Zotlabs/Module/Notifications.php:55 +#: ../../Zotlabs/Module/Notify.php:61 +msgid "No more system notifications." +msgstr "No hay más notificaciones del sistema" -#: ../../include/attach.php:590 -msgid "Cannot locate file to replace" -msgstr "No se puede localizar el fichero que va a ser sustituido." +#: ../../Zotlabs/Module/Notifications.php:59 +#: ../../Zotlabs/Module/Notify.php:65 +msgid "System Notifications" +msgstr "Notificaciones del sistema" -#: ../../include/attach.php:609 -msgid "Cannot locate file to revise/update" -msgstr "No se puede localizar el fichero para revisar/actualizar" +#: ../../Zotlabs/Module/Notifications.php:60 +#: ../../Zotlabs/Lib/ThreadItem.php:450 +msgid "Mark all seen" +msgstr "Marcar todo como visto" -#: ../../include/attach.php:751 -#, php-format -msgid "File exceeds size limit of %d" -msgstr "El fichero supera el limite de tamaño de %d" +#: ../../Zotlabs/Module/Layouts.php:186 +msgid "Comanche page description language help" +msgstr "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche" -#: ../../include/attach.php:772 -#, php-format -msgid "You have reached your limit of %1$.0f Mbytes attachment storage." -msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos." +#: ../../Zotlabs/Module/Layouts.php:190 +msgid "Layout Description" +msgstr "Descripción de la plantilla" -#: ../../include/attach.php:954 -msgid "File upload failed. Possible system limit or action terminated." -msgstr "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado." +#: ../../Zotlabs/Module/Layouts.php:195 +msgid "Download PDL file" +msgstr "Descargar el fichero PDL" -#: ../../include/attach.php:983 -msgid "Stored file could not be verified. Upload failed." -msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado." +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." +msgstr "Dirección no encontrada." -#: ../../include/attach.php:1057 ../../include/attach.php:1073 -msgid "Path not available." -msgstr "Ruta no disponible." +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." +msgstr "Ha fallado la búsqueda de la dirección." -#: ../../include/attach.php:1122 ../../include/attach.php:1285 -msgid "Empty pathname" -msgstr "Ruta vacía" +#: ../../Zotlabs/Module/Locs.php:66 +msgid "" +"Please select another location to become primary before removing the primary" +" location." +msgstr "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal." -#: ../../include/attach.php:1148 -msgid "duplicate filename or path" -msgstr "Nombre duplicado de ruta o fichero" +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" +msgstr "Sincronizando ubicaciones" -#: ../../include/attach.php:1173 -msgid "Path not found." -msgstr "Ruta no encontrada" +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." +msgstr "No encontrada ninguna dirección." -#: ../../include/attach.php:1241 -msgid "mkdir failed." -msgstr "mkdir ha fallado." +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" +msgstr "Gestionar las direcciones del canal" -#: ../../include/attach.php:1245 -msgid "database storage failed." -msgstr "el almacenamiento en la base de datos ha fallado." +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" +msgstr "Sincronizar ahora" -#: ../../include/attach.php:1291 -msgid "Empty path" -msgstr "Ruta vacía" +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." +msgstr "Por favor, espere algunos minutos entre operaciones consecutivas." -#: ../../include/security.php:607 +#: ../../Zotlabs/Module/Locs.php:124 msgid "" -"The form security token was not correct. This probably happened because the " -"form has been opened for too long (>3 hours) before submitting it." -msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado" +"When possible, drop a location by logging into that website/hub and removing" +" your channel." +msgstr "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal." -#: ../../include/items.php:965 ../../include/items.php:1025 -msgid "(Unknown)" -msgstr "(Desconocido)" +#: ../../Zotlabs/Module/Locs.php:125 +msgid "Use this form to drop the location if the hub is no longer operating." +msgstr "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo." + +#: ../../Zotlabs/Module/Sources.php:41 +msgid "Failed to create source. No channel selected." +msgstr "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal." + +#: ../../Zotlabs/Module/Sources.php:57 +msgid "Source created." +msgstr "Fuente creada." -#: ../../include/items.php:1213 -msgid "Visible to anybody on the internet." -msgstr "Visible para cualquiera en internet." +#: ../../Zotlabs/Module/Sources.php:70 +msgid "Source updated." +msgstr "Fuente actualizada." -#: ../../include/items.php:1215 -msgid "Visible to you only." -msgstr "Visible sólo para usted." +#: ../../Zotlabs/Module/Sources.php:88 +msgid "Sources App" +msgstr "App de Fuentes" -#: ../../include/items.php:1217 -msgid "Visible to anybody in this network." -msgstr "Visible para cualquiera en esta red." +#: ../../Zotlabs/Module/Sources.php:89 +msgid "Automatically import channel content from other channels or feeds" +msgstr "Importar automáticamente contenido de otros canales o \"feeds\"" -#: ../../include/items.php:1219 -msgid "Visible to anybody authenticated." -msgstr "Visible para cualquiera que esté autenticado." +#: ../../Zotlabs/Module/Sources.php:101 +msgid "*" +msgstr "*" -#: ../../include/items.php:1221 -#, php-format -msgid "Visible to anybody on %s." -msgstr "Visible para cualquiera en %s." +#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:367 +msgid "Channel Sources" +msgstr "Orígenes de los contenidos del canal" -#: ../../include/items.php:1223 -msgid "Visible to all connections." -msgstr "Visible para todas las conexiones." +#: ../../Zotlabs/Module/Sources.php:108 +msgid "Manage remote sources of content for your channel." +msgstr "Gestionar contenido de origen remoto para su canal." -#: ../../include/items.php:1225 -msgid "Visible to approved connections." -msgstr "Visible para las conexiones permitidas." +#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:119 +msgid "New Source" +msgstr "Nueva fuente" -#: ../../include/items.php:1227 -msgid "Visible to specific connections." -msgstr "Visible para conexiones específicas." +#: ../../Zotlabs/Module/Sources.php:120 ../../Zotlabs/Module/Sources.php:154 +msgid "" +"Import all or selected content from the following channel into this channel " +"and distribute it according to your channel settings." +msgstr "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes." -#: ../../include/items.php:4306 -msgid "Privacy group is empty." -msgstr "El grupo de canales está vacío." +#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 +msgid "Only import content with these words (one per line)" +msgstr "Importar solo contenido que contenga estas palabras (una por línea)" -#: ../../include/items.php:4313 -#, php-format -msgid "Privacy group: %s" -msgstr "Grupo de canales: %s" +#: ../../Zotlabs/Module/Sources.php:121 ../../Zotlabs/Module/Sources.php:155 +msgid "Leave blank to import all public content" +msgstr "Dejar en blanco para importar todo el contenido público" -#: ../../include/items.php:4325 -msgid "Connection not found." -msgstr "Conexión no encontrada" +#: ../../Zotlabs/Module/Sources.php:122 ../../Zotlabs/Module/Sources.php:161 +msgid "Channel Name" +msgstr "Nombre del canal" -#: ../../include/items.php:4674 -msgid "profile photo" -msgstr "foto del perfil" +#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 +msgid "" +"Add the following categories to posts imported from this source (comma " +"separated)" +msgstr "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)" -#: ../../include/items.php:4866 -#, php-format -msgid "[Edited %s]" -msgstr "[se ha editado %s]" +#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 +msgid "Resend posts with this channel as author" +msgstr "Reenviar mensajes con este canal como autor" -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Post" -msgstr "Publicar" +#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 +msgid "Copyrights may apply" +msgstr "Se pueden aplicar los derechos de autor" -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Comment" -msgstr "Comentar" +#: ../../Zotlabs/Module/Sources.php:144 ../../Zotlabs/Module/Sources.php:174 +msgid "Source not found." +msgstr "Fuente no encontrada" -#: ../../include/channel.php:43 -msgid "Unable to obtain identity information from database" -msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos" +#: ../../Zotlabs/Module/Sources.php:151 +msgid "Edit Source" +msgstr "Editar fuente" -#: ../../include/channel.php:76 -msgid "Empty name" -msgstr "Nombre vacío" +#: ../../Zotlabs/Module/Sources.php:152 +msgid "Delete Source" +msgstr "Eliminar fuente" -#: ../../include/channel.php:79 -msgid "Name too long" -msgstr "Nombre demasiado largo" +#: ../../Zotlabs/Module/Sources.php:182 +msgid "Source removed" +msgstr "Fuente eliminada" -#: ../../include/channel.php:196 -msgid "No account identifier" -msgstr "Ningún identificador de la cuenta" +#: ../../Zotlabs/Module/Sources.php:184 +msgid "Unable to remove source." +msgstr "No se puede eliminar la fuente." -#: ../../include/channel.php:208 -msgid "Nickname is required." -msgstr "Se requiere un sobrenombre (alias)." +#: ../../Zotlabs/Module/Rbmark.php:94 +msgid "Select a bookmark folder" +msgstr "Seleccionar una carpeta de marcadores" -#: ../../include/channel.php:287 -msgid "Unable to retrieve created identity" -msgstr "No ha sido posible recuperar la identidad creada" +#: ../../Zotlabs/Module/Rbmark.php:99 +msgid "Save Bookmark" +msgstr "Guardar marcador" -#: ../../include/channel.php:429 -msgid "Default Profile" -msgstr "Perfil principal" +#: ../../Zotlabs/Module/Rbmark.php:100 +msgid "URL of bookmark" +msgstr "Dirección del marcador" -#: ../../include/channel.php:588 ../../include/channel.php:677 -msgid "Unable to retrieve modified identity" -msgstr "No se puede recuperar la identidad modficada" +#: ../../Zotlabs/Module/Rbmark.php:105 +msgid "Or enter new bookmark folder name" +msgstr "O introduzca un nuevo nombre para la carpeta de marcadores" -#: ../../include/channel.php:1419 -msgid "Create New Profile" -msgstr "Crear un nuevo perfil" +#: ../../Zotlabs/Zot/Auth.php:152 +msgid "" +"Remote authentication blocked. You are logged into this site locally. Please" +" logout and retry." +msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo." -#: ../../include/channel.php:1440 -msgid "Visible to everybody" -msgstr "Visible para todos" +#: ../../Zotlabs/Lib/Permcat.php:82 +msgctxt "permcat" +msgid "default" +msgstr "por defecto" -#: ../../include/channel.php:1517 ../../include/channel.php:1645 -msgid "Gender:" -msgstr "Género:" +#: ../../Zotlabs/Lib/Permcat.php:133 +msgctxt "permcat" +msgid "follower" +msgstr "seguidor" -#: ../../include/channel.php:1519 ../../include/channel.php:1713 -msgid "Homepage:" -msgstr "Página personal:" +#: ../../Zotlabs/Lib/Permcat.php:137 +msgctxt "permcat" +msgid "contributor" +msgstr "contribuidor" -#: ../../include/channel.php:1520 -msgid "Online Now" -msgstr "Ahora en línea" +#: ../../Zotlabs/Lib/Permcat.php:141 +msgctxt "permcat" +msgid "publisher" +msgstr "editor" -#: ../../include/channel.php:1573 -msgid "Change your profile photo" -msgstr "Cambiar su foto del perfil" +#: ../../Zotlabs/Lib/Activity.php:1656 +#, php-format +msgid "Likes %1$s's %2$s" +msgstr "Gusta de %2$sde %1$s" -#: ../../include/channel.php:1604 -msgid "Trans" -msgstr "Trans" +#: ../../Zotlabs/Lib/Activity.php:1659 +#, php-format +msgid "Doesn't like %1$s's %2$s" +msgstr "No le gusta %2$sde %1$s" -#: ../../include/channel.php:1650 -msgid "Like this channel" -msgstr "Me gusta este canal" +#: ../../Zotlabs/Lib/Activity.php:1662 +#, php-format +msgid "Will attend %1$s's %2$s" +msgstr "Asistirá %2$sde %1$s" -#: ../../include/channel.php:1674 -msgid "j F, Y" -msgstr "j F Y" +#: ../../Zotlabs/Lib/Activity.php:1665 +#, php-format +msgid "Will not attend %1$s's %2$s" +msgstr "No asistirá %2$sde %1$s" -#: ../../include/channel.php:1675 -msgid "j F" -msgstr "j F" +#: ../../Zotlabs/Lib/Activity.php:1668 +#, php-format +msgid "May attend %1$s's %2$s" +msgstr "Puede asistir %2$sde %1$s" -#: ../../include/channel.php:1682 -msgid "Birthday:" -msgstr "Cumpleaños:" +#: ../../Zotlabs/Lib/Enotify.php:60 +msgid "$Projectname Notification" +msgstr "Notificación de $Projectname" -#: ../../include/channel.php:1695 -#, php-format -msgid "for %1$d %2$s" -msgstr "por %1$d %2$s" +#: ../../Zotlabs/Lib/Enotify.php:63 +msgid "Thank You," +msgstr "Gracias," -#: ../../include/channel.php:1707 -msgid "Tags:" -msgstr "Etiquetas:" +#: ../../Zotlabs/Lib/Enotify.php:66 +#, php-format +msgid "This email was sent by %1$s at %2$s." +msgstr "Este email ha sido enviado por %1$s a %2$s." -#: ../../include/channel.php:1711 -msgid "Sexual Preference:" -msgstr "Orientación sexual:" +#: ../../Zotlabs/Lib/Enotify.php:67 +#, php-format +msgid "" +"To stop receiving these messages, please adjust your Notification Settings " +"at %s" +msgstr "Para dejar de recibir estos mensajes, por favor ajuste la configuración de notificación en %s" -#: ../../include/channel.php:1717 -msgid "Political Views:" -msgstr "Posición política:" +#: ../../Zotlabs/Lib/Enotify.php:68 +#, php-format +msgid "To stop receiving these messages, please adjust your %s." +msgstr "Para dejar de recibir estos mensajes, por favor, ajuste su %s" -#: ../../include/channel.php:1719 -msgid "Religion:" -msgstr "Religión:" +#: ../../Zotlabs/Lib/Enotify.php:123 +#, php-format +msgid "%s <!item_type!>" +msgstr "%s <!item_type!>" -#: ../../include/channel.php:1723 -msgid "Hobbies/Interests:" -msgstr "Aficciones o intereses:" +#: ../../Zotlabs/Lib/Enotify.php:127 +#, php-format +msgid "[$Projectname:Notify] New mail received at %s" +msgstr "[$Projectname:Aviso] Nuevo correo recibido en %s" -#: ../../include/channel.php:1725 -msgid "Likes:" -msgstr "Me gusta:" +#: ../../Zotlabs/Lib/Enotify.php:129 +#, php-format +msgid "%1$s sent you a new private message at %2$s." +msgstr "%1$s le ha enviado un nuevo mensaje privado en %2$s." -#: ../../include/channel.php:1727 -msgid "Dislikes:" -msgstr "No me gusta:" +#: ../../Zotlabs/Lib/Enotify.php:130 +#, php-format +msgid "%1$s sent you %2$s." +msgstr "%1$s le ha enviado %2$s." -#: ../../include/channel.php:1729 -msgid "Contact information and Social Networks:" -msgstr "Información de contacto y redes sociales:" +#: ../../Zotlabs/Lib/Enotify.php:130 +msgid "a private message" +msgstr "un mensaje privado" -#: ../../include/channel.php:1731 -msgid "My other channels:" -msgstr "Mis otros canales:" +#: ../../Zotlabs/Lib/Enotify.php:131 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." +msgstr "Por favor visite %s para ver y/o responder a su mensaje privado." -#: ../../include/channel.php:1733 -msgid "Musical interests:" -msgstr "Preferencias musicales:" +#: ../../Zotlabs/Lib/Enotify.php:144 +msgid "commented on" +msgstr "ha comentado sobre " -#: ../../include/channel.php:1735 -msgid "Books, literature:" -msgstr "Libros, literatura:" +#: ../../Zotlabs/Lib/Enotify.php:155 +msgid "liked" +msgstr "ha gustado de " -#: ../../include/channel.php:1737 -msgid "Television:" -msgstr "Televisión:" +#: ../../Zotlabs/Lib/Enotify.php:158 +msgid "disliked" +msgstr "no ha gustado de " -#: ../../include/channel.php:1739 -msgid "Film/dance/culture/entertainment:" -msgstr "Cine, danza, cultura, entretenimiento:" +#: ../../Zotlabs/Lib/Enotify.php:201 +#, php-format +msgid "%1$s %2$s [zrl=%3$s]a %4$s[/zrl]" +msgstr "%1$s%2$s [zrl=%3$s ]un %4$s[/zrl]" -#: ../../include/channel.php:1741 -msgid "Love/Romance:" -msgstr "Vida sentimental o amorosa:" +#: ../../Zotlabs/Lib/Enotify.php:209 +#, php-format +msgid "%1$s %2$s [zrl=%3$s]%4$s's %5$s[/zrl]" +msgstr "%1$s %2$s[zrl=%3$s]%5$s de %4$s[/zrl]" -#: ../../include/channel.php:1743 -msgid "Work/employment:" -msgstr "Trabajo:" +#: ../../Zotlabs/Lib/Enotify.php:218 +#, php-format +msgid "%1$s %2$s [zrl=%3$s]your %4$s[/zrl]" +msgstr "%1$s %2$s [zrl=%3$s]su %4$s[/zrl]" -#: ../../include/channel.php:1745 -msgid "School/education:" -msgstr "Estudios:" +#: ../../Zotlabs/Lib/Enotify.php:230 +#, php-format +msgid "[$Projectname:Notify] Moderated Comment to conversation #%1$d by %2$s" +msgstr "[$Projectname:Aviso] Comentario moderado en la conversación #%1$d por %2$s" -#: ../../include/channel.php:1768 -msgid "Like this thing" -msgstr "Me gusta esto" +#: ../../Zotlabs/Lib/Enotify.php:232 +#, php-format +msgid "[$Projectname:Notify] Comment to conversation #%1$d by %2$s" +msgstr "[$Projectname:Aviso] Nuevo comentario de %2$s en la conversación #%1$d" -#: ../../include/event.php:32 ../../include/event.php:95 -msgid "l F d, Y \\@ g:i A" -msgstr "l d de F, Y \\@ G:i" +#: ../../Zotlabs/Lib/Enotify.php:233 +#, php-format +msgid "%1$s commented on an item/conversation you have been following." +msgstr "%1$sha comentado un elemento/conversación que ha estado siguiendo." -#: ../../include/event.php:40 -msgid "Starts:" -msgstr "Comienza:" +#: ../../Zotlabs/Lib/Enotify.php:236 ../../Zotlabs/Lib/Enotify.php:317 +#: ../../Zotlabs/Lib/Enotify.php:333 ../../Zotlabs/Lib/Enotify.php:358 +#: ../../Zotlabs/Lib/Enotify.php:375 ../../Zotlabs/Lib/Enotify.php:388 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." +msgstr "Para ver o comentar la conversación, visite %s" -#: ../../include/event.php:50 -msgid "Finishes:" -msgstr "Finaliza:" +#: ../../Zotlabs/Lib/Enotify.php:240 ../../Zotlabs/Lib/Enotify.php:241 +#, php-format +msgid "Please visit %s to approve or reject this comment." +msgstr "Por favor, visite %s para aprobar o rechazar este comentario." -#: ../../include/event.php:95 -msgid "l F d, Y" -msgstr "l F d, Y" +#: ../../Zotlabs/Lib/Enotify.php:299 +#, php-format +msgid "%1$s liked [zrl=%2$s]your %3$s[/zrl]" +msgstr "A %1$sle ha gustado [zrl=%2$s]su %3$s [/zrl]" -#: ../../include/event.php:99 -msgid "Start:" -msgstr "Iniciar: " +#: ../../Zotlabs/Lib/Enotify.php:313 +#, php-format +msgid "[$Projectname:Notify] Like received to conversation #%1$d by %2$s" +msgstr "[$Projectname:Aviso] \"Me gusta\" de %2$s en la conversación #%1$d" -#: ../../include/event.php:103 -msgid "End:" -msgstr "Finalizar: " +#: ../../Zotlabs/Lib/Enotify.php:314 +#, php-format +msgid "%1$s liked an item/conversation you created." +msgstr "A %1$s le ha gustado un elemento o conversación que ha creado usted." -#: ../../include/event.php:1058 -msgid "This event has been added to your calendar." -msgstr "Este evento ha sido añadido a su calendario." +#: ../../Zotlabs/Lib/Enotify.php:325 +#, php-format +msgid "[$Projectname:Notify] %s posted to your profile wall" +msgstr "[$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")" -#: ../../include/event.php:1284 -msgid "Not specified" -msgstr "Sin especificar" +#: ../../Zotlabs/Lib/Enotify.php:327 +#, php-format +msgid "%1$s posted to your profile wall at %2$s" +msgstr "%1$s ha publicado en su muro en %2$s" -#: ../../include/event.php:1285 -msgid "Needs Action" -msgstr "Necesita de una intervención" +#: ../../Zotlabs/Lib/Enotify.php:329 +#, php-format +msgid "%1$s posted to [zrl=%2$s]your wall[/zrl]" +msgstr "%1$sha publicado en [zrl=%2$s]su muro[/zrl]" -#: ../../include/event.php:1286 -msgid "Completed" -msgstr "Completado/a" +#: ../../Zotlabs/Lib/Enotify.php:352 +#, php-format +msgid "[$Projectname:Notify] %s tagged you" +msgstr "[$Projectname:Aviso] %s le ha etiquetado" -#: ../../include/event.php:1287 -msgid "In Process" -msgstr "En proceso" +#: ../../Zotlabs/Lib/Enotify.php:353 +#, php-format +msgid "%1$s tagged you at %2$s" +msgstr "%1$sle ha etiquetado en %2$s" -#: ../../include/event.php:1288 -msgid "Cancelled" -msgstr "Cancelado/a" +#: ../../Zotlabs/Lib/Enotify.php:354 +#, php-format +msgid "%1$s [zrl=%2$s]tagged you[/zrl]." +msgstr "%1$s [zrl=%2$s]le ha etiquetado[/zrl]." -#: ../../include/event.php:1371 ../../include/connections.php:725 -msgid "Home, Voice" -msgstr "Llamadas particulares" +#: ../../Zotlabs/Lib/Enotify.php:365 +#, php-format +msgid "[$Projectname:Notify] %1$s poked you" +msgstr "[$Projectname:Aviso] %1$s le ha dado un toque" -#: ../../include/event.php:1372 ../../include/connections.php:726 -msgid "Home, Fax" -msgstr "Fax particular" +#: ../../Zotlabs/Lib/Enotify.php:366 +#, php-format +msgid "%1$s poked you at %2$s" +msgstr "%1$sle ha dado un toque en %2$s" -#: ../../include/event.php:1374 ../../include/connections.php:728 -msgid "Work, Voice" -msgstr "Llamadas de trabajo" +#: ../../Zotlabs/Lib/Enotify.php:367 +#, php-format +msgid "%1$s [zrl=%2$s]poked you[/zrl]." +msgstr "%1$s [zrl=%2$s] le ha dado un toque[/zrl]." -#: ../../include/event.php:1375 ../../include/connections.php:729 -msgid "Work, Fax" -msgstr "Fax de trabajo" +#: ../../Zotlabs/Lib/Enotify.php:382 +#, php-format +msgid "[$Projectname:Notify] %s tagged your post" +msgstr "[$Projectname:Aviso] %s ha etiquetado su entrada" -#: ../../include/network.php:1729 -msgid "GNU-Social" -msgstr "GNU Social" +#: ../../Zotlabs/Lib/Enotify.php:383 +#, php-format +msgid "%1$s tagged your post at %2$s" +msgstr "%1$sha etiquetado su entrada en %2$s" -#: ../../include/network.php:1730 -msgid "RSS/Atom" -msgstr "RSS/Atom" +#: ../../Zotlabs/Lib/Enotify.php:384 +#, php-format +msgid "%1$s tagged [zrl=%2$s]your post[/zrl]" +msgstr "%1$s ha etiquetado [zrl=%2$s]su entrada[/zrl]" -#: ../../include/network.php:1734 -msgid "Facebook" -msgstr "Facebook" +#: ../../Zotlabs/Lib/Enotify.php:395 +msgid "[$Projectname:Notify] Introduction received" +msgstr "[$Projectname:Aviso] Ha recibido una solicitud de conexión" -#: ../../include/network.php:1736 -msgid "LinkedIn" -msgstr "LinkedIn" +#: ../../Zotlabs/Lib/Enotify.php:396 +#, php-format +msgid "You've received an new connection request from '%1$s' at %2$s" +msgstr "Ha recibido una nueva solicitud de conexión de '%1$s' en %2$s" -#: ../../include/network.php:1737 -msgid "XMPP/IM" -msgstr "XMPP/IM" +#: ../../Zotlabs/Lib/Enotify.php:397 +#, php-format +msgid "You've received [zrl=%1$s]a new connection request[/zrl] from %2$s." +msgstr "Ha recibido [zrl=%1$s]una nueva solicitud de conexión[/zrl] de %2$s." -#: ../../include/network.php:1738 -msgid "MySpace" -msgstr "MySpace" +#: ../../Zotlabs/Lib/Enotify.php:400 ../../Zotlabs/Lib/Enotify.php:418 +#, php-format +msgid "You may visit their profile at %s" +msgstr "Puede visitar su perfil en %s" -#: ../../include/language.php:436 -msgid "Select an alternate language" -msgstr "Seleccionar un idioma alternativo" +#: ../../Zotlabs/Lib/Enotify.php:402 +#, php-format +msgid "Please visit %s to approve or reject the connection request." +msgstr "Por favor, visite %s para permitir o rechazar la solicitad de conexión." -#: ../../include/acl_selectors.php:113 -msgid "Who can see this?" -msgstr "¿Quién puede ver esto?" +#: ../../Zotlabs/Lib/Enotify.php:409 +msgid "[$Projectname:Notify] Friend suggestion received" +msgstr "[$Projectname:Aviso] Ha recibido una sugerencia de conexión" -#: ../../include/acl_selectors.php:114 -msgid "Custom selection" -msgstr "Selección personalizada" +#: ../../Zotlabs/Lib/Enotify.php:410 +#, php-format +msgid "You've received a friend suggestion from '%1$s' at %2$s" +msgstr "Ha recibido una sugerencia de amistad de '%1$s' en %2$s" -#: ../../include/acl_selectors.php:115 +#: ../../Zotlabs/Lib/Enotify.php:411 +#, php-format msgid "" -"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" -" the scope of \"Show\"." -msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"." +"You've received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s." +msgstr "Ha recibido [zrl=%1$s]una sugerencia de amistad[/zrl] para %2$s de %3$s." -#: ../../include/acl_selectors.php:116 -msgid "Show" -msgstr "Mostrar" +#: ../../Zotlabs/Lib/Enotify.php:416 +msgid "Name:" +msgstr "Nombre:" -#: ../../include/acl_selectors.php:117 -msgid "Don't show" -msgstr "No mostrar" +#: ../../Zotlabs/Lib/Enotify.php:417 +msgid "Photo:" +msgstr "Foto:" -#: ../../include/acl_selectors.php:150 +#: ../../Zotlabs/Lib/Enotify.php:420 #, php-format -msgid "" -"Post permissions %s cannot be changed %s after a post is shared.</br />These" -" permissions set who is allowed to view the post." -msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje." +msgid "Please visit %s to approve or reject the suggestion." +msgstr "Por favor, visite %s para aprobar o rechazar la sugerencia." -#: ../../include/bbcode.php:219 ../../include/bbcode.php:1214 -#: ../../include/bbcode.php:1217 ../../include/bbcode.php:1222 -#: ../../include/bbcode.php:1225 ../../include/bbcode.php:1228 -#: ../../include/bbcode.php:1231 ../../include/bbcode.php:1236 -#: ../../include/bbcode.php:1239 ../../include/bbcode.php:1244 -#: ../../include/bbcode.php:1247 ../../include/bbcode.php:1250 -#: ../../include/bbcode.php:1253 -msgid "Image/photo" -msgstr "Imagen/foto" +#: ../../Zotlabs/Lib/Enotify.php:640 +msgid "[$Projectname:Notify]" +msgstr "[$Projectname:Aviso]" -#: ../../include/bbcode.php:258 ../../include/bbcode.php:1264 -msgid "Encrypted content" -msgstr "Contenido cifrado" +#: ../../Zotlabs/Lib/Enotify.php:808 +msgid "created a new post" +msgstr "ha creado una nueva entrada" -#: ../../include/bbcode.php:274 +#: ../../Zotlabs/Lib/Enotify.php:809 #, php-format -msgid "Install %1$s element %2$s" -msgstr "Instalar el elemento de%1$s%2$s" +msgid "commented on %s's post" +msgstr "ha comentado la entrada de %s" -#: ../../include/bbcode.php:278 +#: ../../Zotlabs/Lib/Enotify.php:812 #, php-format -msgid "" -"This post contains an installable %s element, however you lack permissions " -"to install it on this site." -msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio." - -#: ../../include/bbcode.php:358 -msgid "card" -msgstr "ficha" +msgid "repeated %s's post" +msgstr "repetida la entrada de %s" -#: ../../include/bbcode.php:360 -msgid "article" -msgstr "el artículo" +#: ../../Zotlabs/Lib/Enotify.php:821 +#, php-format +msgid "edited a post dated %s" +msgstr "ha editado una entrada con fecha de %s" -#: ../../include/bbcode.php:443 ../../include/bbcode.php:451 -msgid "Click to open/close" -msgstr "Pulsar para abrir/cerrar" +#: ../../Zotlabs/Lib/Enotify.php:825 +#, php-format +msgid "edited a comment dated %s" +msgstr "ha editado un comentario con fecha de %s" -#: ../../include/bbcode.php:451 -msgid "spoiler" -msgstr "spoiler" +#: ../../Zotlabs/Lib/Chatroom.php:23 +msgid "Missing room name" +msgstr "Sala de chat sin nombre" -#: ../../include/bbcode.php:464 -msgid "View article" -msgstr "Ver el artículo" +#: ../../Zotlabs/Lib/Chatroom.php:32 +msgid "Duplicate room name" +msgstr "Nombre de sala duplicado." -#: ../../include/bbcode.php:464 -msgid "View summary" -msgstr "Ver sumario" +#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 +msgid "Invalid room specifier." +msgstr "Especificador de sala no válido." -#: ../../include/bbcode.php:1202 -msgid "$1 wrote:" -msgstr "$1 escribió:" +#: ../../Zotlabs/Lib/Chatroom.php:122 +msgid "Room not found." +msgstr "Sala no encontrada." -#: ../../include/oembed.php:153 -msgid "View PDF" -msgstr "Ver PDF" +#: ../../Zotlabs/Lib/Chatroom.php:143 +msgid "Room is full" +msgstr "La sala está llena." -#: ../../include/oembed.php:357 -msgid " by " -msgstr "por" +#: ../../Zotlabs/Lib/NativeWiki.php:143 +msgid "Wiki updated successfully" +msgstr "El wiki se ha actualizado con éxito" -#: ../../include/oembed.php:358 -msgid " on " -msgstr "en" +#: ../../Zotlabs/Lib/NativeWiki.php:197 +msgid "Wiki files deleted successfully" +msgstr "Se han borrado con éxito los ficheros del wiki" -#: ../../include/oembed.php:387 -msgid "Embedded content" -msgstr "Contenido incorporado" +#: ../../Zotlabs/Lib/Apps.php:322 +msgid "Apps" +msgstr "Aplicaciones (apps)" -#: ../../include/oembed.php:396 -msgid "Embedding disabled" -msgstr "Incrustación deshabilitada" +#: ../../Zotlabs/Lib/Apps.php:323 +msgid "Affinity Tool" +msgstr "Herramienta de afinidad" -#: ../../include/zid.php:363 -#, php-format -msgid "OpenWebAuth: %1$s welcomes %2$s" -msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s" +#: ../../Zotlabs/Lib/Apps.php:326 +msgid "Site Admin" +msgstr "Administrador del sitio" -#: ../../include/features.php:86 -msgid "Start calendar week on Monday" -msgstr "Comenzar el calendario semanal por el lunes" +#: ../../Zotlabs/Lib/Apps.php:330 +msgid "Content Filter" +msgstr "Filtro de contenido" -#: ../../include/features.php:87 -msgid "Default is Sunday" -msgstr "Por defecto es domingo" +#: ../../Zotlabs/Lib/Apps.php:333 +msgid "Remote Diagnostics" +msgstr "Diagnóstico remoto" -#: ../../include/features.php:94 -msgid "Event Timezone Selection" -msgstr "Selección del huso horario del evento" +#: ../../Zotlabs/Lib/Apps.php:334 +msgid "Suggest Channels" +msgstr "Sugerir canales" -#: ../../include/features.php:95 -msgid "Allow event creation in timezones other than your own." -msgstr "Permitir la creación de eventos en husos horarios distintos del suyo." +#: ../../Zotlabs/Lib/Apps.php:337 +msgid "Stream" +msgstr "Stream" -#: ../../include/features.php:108 -msgid "Search by Date" -msgstr "Buscar por fecha" +#: ../../Zotlabs/Lib/Apps.php:348 +msgid "Mail" +msgstr "Correo" -#: ../../include/features.php:109 -msgid "Ability to select posts by date ranges" -msgstr "Capacidad de seleccionar entradas por rango de fechas" +#: ../../Zotlabs/Lib/Apps.php:351 +msgid "Chat" +msgstr "Chat" -#: ../../include/features.php:116 -msgid "Tag Cloud" -msgstr "Nube de etiquetas" +#: ../../Zotlabs/Lib/Apps.php:353 +msgid "Probe" +msgstr "Probar" -#: ../../include/features.php:117 -msgid "Provide a personal tag cloud on your channel page" -msgstr "Proveer nube de etiquetas personal en su página de canal" +#: ../../Zotlabs/Lib/Apps.php:354 +msgid "Suggest" +msgstr "Sugerir" -#: ../../include/features.php:124 ../../include/features.php:351 -msgid "Use blog/list mode" -msgstr "Usar el modo blog/lista" +#: ../../Zotlabs/Lib/Apps.php:355 +msgid "Random Channel" +msgstr "Canal aleatorio" -#: ../../include/features.php:125 ../../include/features.php:352 -msgid "Comments will be displayed separately" -msgstr "Los comentarios se mostrarán por separado" +#: ../../Zotlabs/Lib/Apps.php:356 +msgid "Invite" +msgstr "Invitar" -#: ../../include/features.php:137 -msgid "Connection Filtering" -msgstr "Filtrado de conexiones" +#: ../../Zotlabs/Lib/Apps.php:359 +msgid "Post" +msgstr "Publicación" -#: ../../include/features.php:138 -msgid "Filter incoming posts from connections based on keywords/content" -msgstr "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido" +#: ../../Zotlabs/Lib/Apps.php:364 +msgid "Notifications" +msgstr "Notificaciones" -#: ../../include/features.php:146 -msgid "Conversation" -msgstr "Conversación" +#: ../../Zotlabs/Lib/Apps.php:365 +msgid "Order Apps" +msgstr "Ordenar las apps" -#: ../../include/features.php:150 -msgid "Community Tagging" -msgstr "Etiquetas de la comunidad" +#: ../../Zotlabs/Lib/Apps.php:366 +msgid "CardDAV" +msgstr "CardDAV" -#: ../../include/features.php:151 -msgid "Ability to tag existing posts" -msgstr "Capacidad de etiquetar entradas" +#: ../../Zotlabs/Lib/Apps.php:368 +msgid "Guest Access" +msgstr "Acceso para invitados" -#: ../../include/features.php:158 -msgid "Emoji Reactions" -msgstr "Emoticonos \"emoji\"" +#: ../../Zotlabs/Lib/Apps.php:370 +msgid "OAuth Apps Manager" +msgstr "Administrador de apps OAuth" -#: ../../include/features.php:159 -msgid "Add emoji reaction ability to posts" -msgstr "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas" +#: ../../Zotlabs/Lib/Apps.php:371 +msgid "OAuth2 Apps Manager" +msgstr "Administrador de apps OAuth2" -#: ../../include/features.php:166 -msgid "Dislike Posts" -msgstr "Desagrado de publicaciones" +#: ../../Zotlabs/Lib/Apps.php:372 +msgid "PDL Editor" +msgstr "Editor PDL" -#: ../../include/features.php:167 -msgid "Ability to dislike posts/comments" -msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios" +#: ../../Zotlabs/Lib/Apps.php:374 +msgid "Premium Channel" +msgstr "Canal premium" -#: ../../include/features.php:174 -msgid "Star Posts" -msgstr "Entradas destacadas" +#: ../../Zotlabs/Lib/Apps.php:376 +msgid "My Chatrooms" +msgstr "Mis salas de chat" -#: ../../include/features.php:175 -msgid "Ability to mark special posts with a star indicator" -msgstr "Capacidad de marcar entradas destacadas con un indicador de estrella" +#: ../../Zotlabs/Lib/Apps.php:377 +msgid "Channel Export" +msgstr "Exportar canal" -#: ../../include/features.php:182 -msgid "Reply on comment" -msgstr "Responder a los comentarios" +#: ../../Zotlabs/Lib/Apps.php:554 +msgid "Purchase" +msgstr "Comprar" -#: ../../include/features.php:183 -msgid "Ability to reply on selected comment" -msgstr "Posibilidad de responder a los comentarios seleccionados" +#: ../../Zotlabs/Lib/Apps.php:559 +msgid "Undelete" +msgstr "Recuperar" -#: ../../include/features.php:196 -msgid "Advanced Directory Search" -msgstr "Búsqueda avanzada en el directorio" +#: ../../Zotlabs/Lib/Apps.php:568 +msgid "Add to app-tray" +msgstr "Añadir a la bandeja de aplicaciones" -#: ../../include/features.php:197 -msgid "Allows creation of complex directory search queries" -msgstr "Permitir la creación de consultas complejas en las búsquedas en el directorio" +#: ../../Zotlabs/Lib/Apps.php:569 +msgid "Remove from app-tray" +msgstr "Quitar de la bandeja de aplicaciones" -#: ../../include/features.php:206 -msgid "Editor" -msgstr "Editor" +#: ../../Zotlabs/Lib/Apps.php:570 +msgid "Pin to navbar" +msgstr "Fijar en la barra de navegación" -#: ../../include/features.php:210 -msgid "Post Categories" -msgstr "Temas de las entradas" +#: ../../Zotlabs/Lib/Apps.php:571 +msgid "Unpin from navbar" +msgstr "Quitar de la barra de navegación" -#: ../../include/features.php:211 -msgid "Add categories to your posts" -msgstr "Añadir temas a sus publicaciones" +#: ../../Zotlabs/Lib/Techlevels.php:10 +msgid "0. Beginner/Basic" +msgstr "0. Principiante/Básico" -#: ../../include/features.php:219 -msgid "Large Photos" -msgstr "Fotos de gran tamaño" +#: ../../Zotlabs/Lib/Techlevels.php:11 +msgid "1. Novice - not skilled but willing to learn" +msgstr "1. Novato: no cualificado, pero dispuesto a aprender" -#: ../../include/features.php:220 -msgid "" -"Include large (1024px) photo thumbnails in posts. If not enabled, use small " -"(640px) photo thumbnails" -msgstr "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)" +#: ../../Zotlabs/Lib/Techlevels.php:12 +msgid "2. Intermediate - somewhat comfortable" +msgstr "2. Intermedio - algo cómodo" -#: ../../include/features.php:227 -msgid "Even More Encryption" -msgstr "Más cifrado todavía" +#: ../../Zotlabs/Lib/Techlevels.php:13 +msgid "3. Advanced - very comfortable" +msgstr "3. Avanzado - muy cómodo" -#: ../../include/features.php:228 -msgid "" -"Allow optional encryption of content end-to-end with a shared secret key" -msgstr "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida." +#: ../../Zotlabs/Lib/Techlevels.php:14 +msgid "4. Expert - I can write computer code" +msgstr "4. Experto - Puedo escribir código informático" -#: ../../include/features.php:235 -msgid "Enable Voting Tools" -msgstr "Permitir entradas con votación" +#: ../../Zotlabs/Lib/Techlevels.php:15 +msgid "5. Wizard - I probably know more than you do" +msgstr "5. Colaborador - probablemente sé más que tú" -#: ../../include/features.php:236 -msgid "Provide a class of post which others can vote on" -msgstr "Proveer una clase de publicación en la que otros puedan votar" +#: ../../Zotlabs/Lib/NativeWikiPage.php:42 +#: ../../Zotlabs/Lib/NativeWikiPage.php:94 +msgid "(No Title)" +msgstr "(Sin título)" -#: ../../include/features.php:243 -msgid "Disable Comments" -msgstr "Deshabilitar comentarios" +#: ../../Zotlabs/Lib/NativeWikiPage.php:109 +msgid "Wiki page create failed." +msgstr "Se ha producido un error en la creación de la página wiki." -#: ../../include/features.php:244 -msgid "Provide the option to disable comments for a post" -msgstr "Proporcionar la opción de desactivar los comentarios para una entrada" +#: ../../Zotlabs/Lib/NativeWikiPage.php:122 +msgid "Wiki not found." +msgstr "No se ha encontrado el wiki." -#: ../../include/features.php:251 -msgid "Delayed Posting" -msgstr "Publicación aplazada" +#: ../../Zotlabs/Lib/NativeWikiPage.php:133 +msgid "Destination name already exists" +msgstr "El nombre de destino ya existe" -#: ../../include/features.php:252 -msgid "Allow posts to be published at a later date" -msgstr "Permitir mensajes que se publicarán en una fecha posterior" +#: ../../Zotlabs/Lib/NativeWikiPage.php:166 +#: ../../Zotlabs/Lib/NativeWikiPage.php:362 +msgid "Page not found" +msgstr "No se ha encontrado la página" -#: ../../include/features.php:259 -msgid "Content Expiration" -msgstr "Caducidad del contenido" +#: ../../Zotlabs/Lib/NativeWikiPage.php:197 +msgid "Error reading page content" +msgstr "Se ha producido un error al leer el contenido de la página" -#: ../../include/features.php:260 -msgid "Remove posts/comments and/or private messages at a future time" -msgstr "Eliminar publicaciones/comentarios y/o mensajes privados más adelante" +#: ../../Zotlabs/Lib/NativeWikiPage.php:353 +#: ../../Zotlabs/Lib/NativeWikiPage.php:402 +#: ../../Zotlabs/Lib/NativeWikiPage.php:469 +#: ../../Zotlabs/Lib/NativeWikiPage.php:510 +msgid "Error reading wiki" +msgstr "Se ha producido un error al leer el wiki" -#: ../../include/features.php:267 -msgid "Suppress Duplicate Posts/Comments" -msgstr "Prevenir entradas o comentarios duplicados" +#: ../../Zotlabs/Lib/NativeWikiPage.php:390 +msgid "Page update failed." +msgstr "Se ha producido un error al actualizar la página." -#: ../../include/features.php:268 -msgid "" -"Prevent posts with identical content to be published with less than two " -"minutes in between submissions." -msgstr "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo." +#: ../../Zotlabs/Lib/NativeWikiPage.php:424 +msgid "Nothing deleted" +msgstr "No se ha eliminado nada" -#: ../../include/features.php:275 -msgid "Auto-save drafts of posts and comments" -msgstr "Guardar automáticamente borradores de entradas y comentarios" +#: ../../Zotlabs/Lib/NativeWikiPage.php:490 +msgid "Compare: object not found." +msgstr "No se ha encontrado un objeto para comparar." -#: ../../include/features.php:276 -msgid "" -"Automatically saves post and comment drafts in local browser storage to help" -" prevent accidental loss of compositions" -msgstr "Guarda automáticamente los borradores de comentarios y publicaciones en el almacenamiento del navegador local para ayudar a evitar la pérdida accidental de composiciones." +#: ../../Zotlabs/Lib/NativeWikiPage.php:496 +msgid "Page updated" +msgstr "Se ha actualizado la página" -#: ../../include/features.php:285 -msgid "Manage" -msgstr "Gestionar" +#: ../../Zotlabs/Lib/NativeWikiPage.php:499 +msgid "Untitled" +msgstr "Sin título" -#: ../../include/features.php:289 -msgid "Navigation Channel Select" -msgstr "Navegación por el selector de canales" +#: ../../Zotlabs/Lib/NativeWikiPage.php:505 +msgid "Wiki resource_id required for git commit" +msgstr "Se necesita Wiki resource_id para el git commit" -#: ../../include/features.php:290 -msgid "Change channels directly from within the navigation dropdown menu" -msgstr "Cambiar de canales directamente desde el menú de navegación desplegable" +#: ../../Zotlabs/Lib/ThreadItem.php:130 +msgid "Privacy conflict. Discretion advised." +msgstr "Conflicto de privacidad. Se aconseja discreción." -#: ../../include/features.php:304 -msgid "Save search terms for re-use" -msgstr "Guardar términos de búsqueda para su reutilización" +#: ../../Zotlabs/Lib/ThreadItem.php:172 ../../Zotlabs/Storage/Browser.php:286 +msgid "Admin Delete" +msgstr "Eliminar admin" -#: ../../include/features.php:312 -msgid "Ability to file posts under folders" -msgstr "Capacidad de archivar entradas en carpetas" +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I will attend" +msgstr "Participaré" -#: ../../include/features.php:319 -msgid "Alternate Stream Order" -msgstr "Orden de stream alternativo" +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I will not attend" +msgstr "No participaré" -#: ../../include/features.php:320 -msgid "" -"Ability to order the stream by last post date, last comment date or " -"unthreaded activities" -msgstr "Posibilidad de ordenar el stream por última fecha de publicación, última fecha de comentario o actividades sin hilo" +#: ../../Zotlabs/Lib/ThreadItem.php:203 +msgid "I might attend" +msgstr "Quizá participe" -#: ../../include/features.php:327 -msgid "Contact Filter" -msgstr "Filtro de contactos" +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I agree" +msgstr "Estoy de acuerdo" -#: ../../include/features.php:328 -msgid "Ability to display only posts of a selected contact" -msgstr "Posibilidad de mostrar sólo los mensajes de un contacto seleccionado" +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I disagree" +msgstr "No estoy de acuerdo" -#: ../../include/features.php:335 -msgid "Forum Filter" -msgstr "Filtro de foro" +#: ../../Zotlabs/Lib/ThreadItem.php:213 +msgid "I abstain" +msgstr "Me abstengo" -#: ../../include/features.php:336 -msgid "Ability to display only posts of a specific forum" -msgstr "Posibilidad de mostrar sólo los mensajes de un foro específico" +#: ../../Zotlabs/Lib/ThreadItem.php:287 +msgid "Add Tag" +msgstr "Añadir etiqueta" -#: ../../include/features.php:343 -msgid "Personal Posts Filter" -msgstr "Filtro de entradas personales" +#: ../../Zotlabs/Lib/ThreadItem.php:309 +msgid "Reply on this comment" +msgstr "Responder a este comentario" -#: ../../include/features.php:344 -msgid "Ability to display only posts that you've interacted on" -msgstr "Posibilidad de mostrar sólo los mensajes en los que usted haya interactuado" +#: ../../Zotlabs/Lib/ThreadItem.php:309 +msgid "reply" +msgstr "responder" -#: ../../include/features.php:365 -msgid "Photo Location" -msgstr "Ubicación de las fotos" +#: ../../Zotlabs/Lib/ThreadItem.php:309 +msgid "Reply to" +msgstr "Responder a " -#: ../../include/features.php:366 -msgid "If location data is available on uploaded photos, link this to a map." -msgstr "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa." +#: ../../Zotlabs/Lib/ThreadItem.php:319 +msgid "Share This" +msgstr "Compartir esto" -#: ../../include/features.php:379 -msgid "Advanced Profiles" -msgstr "Perfiles avanzados" +#: ../../Zotlabs/Lib/ThreadItem.php:319 +msgid "share" +msgstr "compartir" -#: ../../include/features.php:380 -msgid "Additional profile sections and selections" -msgstr "Secciones y selecciones de perfil adicionales" +#: ../../Zotlabs/Lib/ThreadItem.php:329 +msgid "Delivery Report" +msgstr "Informe de transmisión" -#: ../../include/features.php:387 -msgid "Profile Import/Export" -msgstr "Importar/Exportar perfil" +#: ../../Zotlabs/Lib/ThreadItem.php:348 +#, php-format +msgid "%d comment" +msgid_plural "%d comments" +msgstr[0] "%d comentario" +msgstr[1] "%d comentarios" -#: ../../include/features.php:388 -msgid "Save and load profile details across sites/channels" -msgstr "Guardar y cargar detalles del perfil a través de sitios/canales" +#: ../../Zotlabs/Lib/ThreadItem.php:380 ../../Zotlabs/Lib/ThreadItem.php:381 +#, php-format +msgid "View %s's profile - %s" +msgstr "Ver el perfil de %s - %s" -#: ../../include/features.php:395 -msgid "Multiple Profiles" -msgstr "Múltiples perfiles" +#: ../../Zotlabs/Lib/ThreadItem.php:384 +msgid "to" +msgstr "a" -#: ../../include/features.php:396 -msgid "Ability to create multiple profiles" -msgstr "Capacidad de crear múltiples perfiles" +#: ../../Zotlabs/Lib/ThreadItem.php:385 +msgid "via" +msgstr "mediante" -#: ../../include/taxonomy.php:320 -msgid "Trending" -msgstr "Etiquetas populares" +#: ../../Zotlabs/Lib/ThreadItem.php:386 +msgid "Wall-to-Wall" +msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../include/taxonomy.php:550 -msgid "Keywords" -msgstr "Palabras clave" +#: ../../Zotlabs/Lib/ThreadItem.php:387 +msgid "via Wall-To-Wall:" +msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../include/taxonomy.php:571 -msgid "have" -msgstr "tener" +#: ../../Zotlabs/Lib/ThreadItem.php:413 +msgid "Attend" +msgstr "Participar o asistir" -#: ../../include/taxonomy.php:571 -msgid "has" -msgstr "tiene" +#: ../../Zotlabs/Lib/ThreadItem.php:414 +msgid "Attendance Options" +msgstr "Opciones de participación o asistencia" -#: ../../include/taxonomy.php:572 -msgid "want" -msgstr "quiero" +#: ../../Zotlabs/Lib/ThreadItem.php:415 +msgid "Vote" +msgstr "Votar" -#: ../../include/taxonomy.php:572 -msgid "wants" -msgstr "quiere" +#: ../../Zotlabs/Lib/ThreadItem.php:416 +msgid "Voting Options" +msgstr "Opciones de votación" -#: ../../include/taxonomy.php:573 -msgid "likes" -msgstr "gusta de" +#: ../../Zotlabs/Lib/ThreadItem.php:431 +msgid "Go to previous comment" +msgstr "Ir al comentario anterior" -#: ../../include/taxonomy.php:574 -msgid "dislikes" -msgstr "no gusta de" +#: ../../Zotlabs/Lib/ThreadItem.php:441 +msgid "Add to Calendar" +msgstr "Añadir al calendario" -#: ../../include/account.php:36 -msgid "Not a valid email address" -msgstr "Dirección de correo no válida" +#: ../../Zotlabs/Lib/ThreadItem.php:802 +msgid "Image" +msgstr "Imagen" -#: ../../include/account.php:38 -msgid "Your email domain is not among those allowed on this site" -msgstr "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio." +#: ../../Zotlabs/Lib/ThreadItem.php:804 +msgid "Insert Link" +msgstr "Insertar enlace" -#: ../../include/account.php:44 -msgid "Your email address is already registered at this site." -msgstr "Su dirección de correo está ya registrada en este sitio." +#: ../../Zotlabs/Lib/ThreadItem.php:805 +msgid "Video" +msgstr "Vídeo" -#: ../../include/account.php:76 -msgid "An invitation is required." -msgstr "Es obligatorio que le inviten." +#: ../../Zotlabs/Lib/ThreadItem.php:815 +msgid "Your full name (required)" +msgstr "Su nombre completo (requerido)" -#: ../../include/account.php:80 -msgid "Invitation could not be verified." -msgstr "No se ha podido verificar su invitación." +#: ../../Zotlabs/Lib/ThreadItem.php:816 +msgid "Your email address (required)" +msgstr "Su dirección de correo electrónico (requerido)" -#: ../../include/account.php:156 -msgid "Please enter the required information." -msgstr "Por favor introduzca la información requerida." +#: ../../Zotlabs/Lib/ThreadItem.php:817 +msgid "Your website URL (optional)" +msgstr "La URL de su sitio web (opcional)" -#: ../../include/account.php:223 -msgid "Failed to store account information." -msgstr "La información de la cuenta no se ha podido guardar." +#: ../../Zotlabs/Lib/DB_Upgrade.php:67 +msgid "Source code of failed update: " +msgstr "Código fuente de la actualización fallida: " -#: ../../include/account.php:311 +#: ../../Zotlabs/Lib/DB_Upgrade.php:88 #, php-format -msgid "Registration confirmation for %s" -msgstr "Confirmación de registro para %s" +msgid "Update Error at %s" +msgstr "Error de actualización en %s" -#: ../../include/account.php:380 +#: ../../Zotlabs/Lib/DB_Upgrade.php:94 #, php-format -msgid "Registration request at %s" -msgstr "Solicitud de registro en %s" +msgid "Update %s failed. See error logs." +msgstr "La actualización %s ha fallado. Mire el informe de errores." -#: ../../include/account.php:402 -msgid "your registration password" -msgstr "su contraseña de registro" +#: ../../Zotlabs/Lib/PermissionDescription.php:108 +msgid "Public" +msgstr "Público" -#: ../../include/account.php:408 ../../include/account.php:471 +#: ../../Zotlabs/Lib/PermissionDescription.php:109 +msgid "Anybody in the $Projectname network" +msgstr "Cualquiera en la red $Projectname" + +#: ../../Zotlabs/Lib/PermissionDescription.php:110 #, php-format -msgid "Registration details for %s" -msgstr "Detalles del registro de %s" +msgid "Any account on %s" +msgstr "Cualquier cuenta en %s" -#: ../../include/account.php:482 -msgid "Account approved." -msgstr "Cuenta aprobada." +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" +msgstr "Cualquiera de mis conexiones" -#: ../../include/account.php:522 -#, php-format -msgid "Registration revoked for %s" -msgstr "Registro revocado para %s" +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" +msgstr "Sólo las conexiones que yo permita de forma explícita" -#: ../../include/account.php:805 ../../include/account.php:807 -msgid "Click here to upgrade." -msgstr "Pulse aquí para actualizar" +#: ../../Zotlabs/Lib/PermissionDescription.php:113 +msgid "Anybody authenticated (could include visitors from other networks)" +msgstr "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)" -#: ../../include/account.php:813 -msgid "This action exceeds the limits set by your subscription plan." -msgstr "Esta acción supera los límites establecidos por su plan de suscripción " +#: ../../Zotlabs/Lib/PermissionDescription.php:114 +msgid "Any connections including those who haven't yet been approved" +msgstr "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas" -#: ../../include/account.php:818 -msgid "This action is not available under your subscription plan." -msgstr "Esta acción no está disponible en su plan de suscripción." +#: ../../Zotlabs/Lib/PermissionDescription.php:150 +msgid "" +"This is your default setting for the audience of your normal stream, and " +"posts." +msgstr "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones." -#: ../../include/datetime.php:140 -msgid "Birthday" -msgstr "Cumpleaños" +#: ../../Zotlabs/Lib/PermissionDescription.php:151 +msgid "" +"This is your default setting for who can view your default channel profile" +msgstr "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado" -#: ../../include/datetime.php:140 -msgid "Age: " -msgstr "Edad:" +#: ../../Zotlabs/Lib/PermissionDescription.php:152 +msgid "This is your default setting for who can view your connections" +msgstr "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones" -#: ../../include/datetime.php:140 -msgid "YYYY-MM-DD or MM-DD" -msgstr "AAAA-MM-DD o MM-DD" +#: ../../Zotlabs/Lib/PermissionDescription.php:153 +msgid "" +"This is your default setting for who can view your file storage and photos" +msgstr "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos" -#: ../../include/datetime.php:244 -msgid "less than a second ago" -msgstr "hace un instante" +#: ../../Zotlabs/Lib/PermissionDescription.php:154 +msgid "This is your default setting for the audience of your webpages" +msgstr "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web" -#: ../../include/datetime.php:262 -#, php-format -msgctxt "e.g. 22 hours ago, 1 minute ago" -msgid "%1$d %2$s ago" -msgstr "hace %1$d %2$s" +#: ../../Zotlabs/Access/PermissionRoles.php:283 +msgid "Social Networking" +msgstr "Redes sociales" -#: ../../include/datetime.php:273 -msgctxt "relative_date" -msgid "year" -msgid_plural "years" -msgstr[0] "año" -msgstr[1] "años" +#: ../../Zotlabs/Access/PermissionRoles.php:284 +msgid "Social - Federation" +msgstr "Social - Federación" -#: ../../include/datetime.php:276 -msgctxt "relative_date" -msgid "month" -msgid_plural "months" -msgstr[0] "mes" -msgstr[1] "meses" +#: ../../Zotlabs/Access/PermissionRoles.php:285 +msgid "Social - Mostly Public" +msgstr "Social - Público en su mayor parte" -#: ../../include/datetime.php:279 -msgctxt "relative_date" -msgid "week" -msgid_plural "weeks" -msgstr[0] "semana" -msgstr[1] "semanas" +#: ../../Zotlabs/Access/PermissionRoles.php:286 +msgid "Social - Restricted" +msgstr "Social - Restringido" -#: ../../include/datetime.php:282 -msgctxt "relative_date" -msgid "day" -msgid_plural "days" -msgstr[0] "día" -msgstr[1] "días" +#: ../../Zotlabs/Access/PermissionRoles.php:287 +msgid "Social - Private" +msgstr "Social - Privado" -#: ../../include/datetime.php:285 -msgctxt "relative_date" -msgid "hour" -msgid_plural "hours" -msgstr[0] "hora" -msgstr[1] "horas" +#: ../../Zotlabs/Access/PermissionRoles.php:290 +msgid "Community Forum" +msgstr "Foro de discusión" -#: ../../include/datetime.php:288 -msgctxt "relative_date" -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minuto" -msgstr[1] "minutos" +#: ../../Zotlabs/Access/PermissionRoles.php:291 +msgid "Forum - Mostly Public" +msgstr "Foro - Público en su mayor parte" -#: ../../include/datetime.php:291 -msgctxt "relative_date" -msgid "second" -msgid_plural "seconds" -msgstr[0] "segundo" -msgstr[1] "segundos" +#: ../../Zotlabs/Access/PermissionRoles.php:292 +msgid "Forum - Restricted" +msgstr "Foro - Restringido" -#: ../../include/datetime.php:520 -#, php-format -msgid "%1$s's birthday" -msgstr "Cumpleaños de %1$s" +#: ../../Zotlabs/Access/PermissionRoles.php:293 +msgid "Forum - Private" +msgstr "Foro - Privado" -#: ../../include/datetime.php:521 -#, php-format -msgid "Happy Birthday %1$s" -msgstr "Feliz cumpleaños %1$s" +#: ../../Zotlabs/Access/PermissionRoles.php:296 +msgid "Feed Republish" +msgstr "Republicar un \"feed\"" -#: ../../include/nav.php:90 -msgid "Remote authentication" -msgstr "Acceder desde su servidor" +#: ../../Zotlabs/Access/PermissionRoles.php:297 +msgid "Feed - Mostly Public" +msgstr "Feed - Público en su mayor parte" -#: ../../include/nav.php:90 -msgid "Click to authenticate to your home hub" -msgstr "Pulsar para identificarse en su servidor de inicio" +#: ../../Zotlabs/Access/PermissionRoles.php:298 +msgid "Feed - Restricted" +msgstr "Feed - Restringido" + +#: ../../Zotlabs/Access/PermissionRoles.php:301 +msgid "Special Purpose" +msgstr "Propósito especial" -#: ../../include/nav.php:96 -msgid "Manage your channels" -msgstr "Gestionar sus canales" +#: ../../Zotlabs/Access/PermissionRoles.php:302 +msgid "Special - Celebrity/Soapbox" +msgstr "Especial - Celebridad / Tribuna improvisada" -#: ../../include/nav.php:99 -msgid "Manage your privacy groups" -msgstr "Gestionar sus grupos de canales" +#: ../../Zotlabs/Access/PermissionRoles.php:303 +msgid "Special - Group Repository" +msgstr "Especial - Repositorio de grupo" -#: ../../include/nav.php:101 -msgid "Account/Channel Settings" -msgstr "Ajustes de cuenta/canales" +#: ../../Zotlabs/Access/PermissionRoles.php:307 +msgid "Custom/Expert Mode" +msgstr "Modo personalizado/experto" -#: ../../include/nav.php:107 ../../include/nav.php:136 -msgid "End this session" -msgstr "Finalizar esta sesión" +#: ../../Zotlabs/Access/Permissions.php:56 +msgid "Can view my channel stream and posts" +msgstr "Pueden verse la actividad y publicaciones de mi canal" -#: ../../include/nav.php:110 -msgid "Your profile page" -msgstr "Su página del perfil" +#: ../../Zotlabs/Access/Permissions.php:57 +msgid "Can send me their channel stream and posts" +msgstr "Se me pueden enviar entradas y contenido de un canal" -#: ../../include/nav.php:113 -msgid "Manage/Edit profiles" -msgstr "Administrar/editar perfiles" +#: ../../Zotlabs/Access/Permissions.php:58 +msgid "Can view my default channel profile" +msgstr "Puede verse mi perfil de canal predeterminado." -#: ../../include/nav.php:122 ../../include/nav.php:126 -msgid "Sign in" -msgstr "Acceder" +#: ../../Zotlabs/Access/Permissions.php:59 +msgid "Can view my connections" +msgstr "Pueden verse mis conexiones" -#: ../../include/nav.php:153 -msgid "Take me home" -msgstr "Volver a la página principal" +#: ../../Zotlabs/Access/Permissions.php:60 +msgid "Can view my file storage and photos" +msgstr "Pueden verse mi repositorio de ficheros y mis fotos" -#: ../../include/nav.php:155 -msgid "Log me out of this site" -msgstr "Salir de este sitio" +#: ../../Zotlabs/Access/Permissions.php:61 +msgid "Can upload/modify my file storage and photos" +msgstr "Se pueden subir / modificar elementos en mi repositorio de ficheros y fotos" -#: ../../include/nav.php:160 -msgid "Create an account" -msgstr "Crear una cuenta" +#: ../../Zotlabs/Access/Permissions.php:62 +msgid "Can view my channel webpages" +msgstr "Pueden verse las páginas personales de mi canal" -#: ../../include/nav.php:172 -msgid "Help and documentation" -msgstr "Ayuda y documentación" +#: ../../Zotlabs/Access/Permissions.php:63 +msgid "Can view my wiki pages" +msgstr "Pueden verse mis páginas wiki" -#: ../../include/nav.php:186 -msgid "Search site @name, !forum, #tag, ?docs, content" -msgstr "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido" +#: ../../Zotlabs/Access/Permissions.php:64 +msgid "Can create/edit my channel webpages" +msgstr "Pueden crearse / modificarse páginas personales en mi canal" -#: ../../include/nav.php:192 -msgid "Site Setup and Configuration" -msgstr "Ajustes y configuración del sitio" +#: ../../Zotlabs/Access/Permissions.php:65 +msgid "Can write to my wiki pages" +msgstr "Se pueden modificar las páginas de mi wiki" -#: ../../include/nav.php:332 -msgid "@name, !forum, #tag, ?doc, content" -msgstr "@nombre, !foro, #tag, ?docs, contenido" +#: ../../Zotlabs/Access/Permissions.php:66 +msgid "Can post on my channel (wall) page" +msgstr "Pueden crearse entradas en mi página de inicio del canal (“muro”)" -#: ../../include/nav.php:333 -msgid "Please wait..." -msgstr "Espere por favor…" +#: ../../Zotlabs/Access/Permissions.php:67 +msgid "Can comment on or like my posts" +msgstr "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'." -#: ../../include/nav.php:339 -msgid "Add Apps" -msgstr "Añadir aplicaciones" +#: ../../Zotlabs/Access/Permissions.php:68 +msgid "Can send me private mail messages" +msgstr "Se me pueden enviar mensajes privados" -#: ../../include/nav.php:340 -msgid "Arrange Apps" -msgstr "Organizar aplicaciones" +#: ../../Zotlabs/Access/Permissions.php:69 +msgid "Can like/dislike profiles and profile things" +msgstr "Se puede mostrar agrado o desagrado (Me gusta / No me gusta) en mis perfiles y sus distintos apartados" -#: ../../include/nav.php:341 -msgid "Toggle System Apps" -msgstr "Alternar aplicaciones de sistema" +#: ../../Zotlabs/Access/Permissions.php:70 +msgid "Can forward to all my channel connections via ! mentions in posts" +msgstr "Pueden reenviarse publicaciones a todas las conexiones de mi canal a través de ! menciones en las entradas" -#: ../../include/nav.php:426 -msgid "Status Messages and Posts" -msgstr "Mensajes de estado y publicaciones" +#: ../../Zotlabs/Access/Permissions.php:71 +msgid "Can chat with me" +msgstr "Se puede chatear conmigo" -#: ../../include/nav.php:439 -msgid "Profile Details" -msgstr "Detalles del perfil" +#: ../../Zotlabs/Access/Permissions.php:72 +msgid "Can source my public posts in derived channels" +msgstr "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados" -#: ../../include/nav.php:449 ../../include/photos.php:666 -msgid "Photo Albums" -msgstr "Álbumes de fotos" +#: ../../Zotlabs/Access/Permissions.php:73 +msgid "Can administer my channel" +msgstr "Se puede administrar mi canal" -#: ../../include/nav.php:457 -msgid "Files and Storage" -msgstr "Ficheros y repositorio" +#: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:295 +msgid "parent" +msgstr "padre" -#: ../../include/nav.php:495 -msgid "Saved Bookmarks" -msgstr "Marcadores guardados" +#: ../../Zotlabs/Storage/Browser.php:134 +msgid "Principal" +msgstr "Principal" -#: ../../include/nav.php:506 -msgid "View Cards" -msgstr "Ver las fichas" +#: ../../Zotlabs/Storage/Browser.php:137 +msgid "Addressbook" +msgstr "Libreta de direcciones" -#: ../../include/nav.php:517 -msgid "View Articles" -msgstr "Ver los artículos" +#: ../../Zotlabs/Storage/Browser.php:143 +msgid "Schedule Inbox" +msgstr "Programar bandeja de entrada" -#: ../../include/nav.php:529 -msgid "View Webpages" -msgstr "Ver páginas web" +#: ../../Zotlabs/Storage/Browser.php:146 +msgid "Schedule Outbox" +msgstr "Programar bandeja de salida" -#: ../../include/photos.php:151 -#, php-format -msgid "Image exceeds website size limit of %lu bytes" -msgstr "La imagen excede el límite de %lu bytes del sitio" +#: ../../Zotlabs/Storage/Browser.php:279 +msgid "Total" +msgstr "Total" -#: ../../include/photos.php:162 -msgid "Image file is empty." -msgstr "El fichero de imagen está vacío. " +#: ../../Zotlabs/Storage/Browser.php:281 +msgid "Shared" +msgstr "Compartido" -#: ../../include/photos.php:324 -msgid "Photo storage failed." -msgstr "La foto no ha podido ser guardada." +#: ../../Zotlabs/Storage/Browser.php:283 +msgid "Add Files" +msgstr "Añadir ficheros" -#: ../../include/photos.php:373 -msgid "a new photo" -msgstr "una nueva foto" +#: ../../Zotlabs/Storage/Browser.php:367 +#, php-format +msgid "You are using %1$s of your available file storage." +msgstr "Está usando %1$s de su espacio disponible para ficheros." -#: ../../include/photos.php:377 +#: ../../Zotlabs/Storage/Browser.php:372 #, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" -msgstr "%1$s ha publicado %2$s en %3$s" +msgid "You are using %1$s of %2$s available file storage. (%3$s%)" +msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s%)" -#: ../../include/photos.php:671 -msgid "Upload New Photos" -msgstr "Subir nuevas fotos" +#: ../../Zotlabs/Storage/Browser.php:383 +msgid "WARNING:" +msgstr "ATENCIÓN: " -#: ../../include/zot.php:774 -msgid "Invalid data packet" -msgstr "Paquete de datos no válido" +#: ../../Zotlabs/Storage/Browser.php:395 +msgid "Create new folder" +msgstr "Crear nueva carpeta" -#: ../../include/zot.php:4329 -msgid "invalid target signature" -msgstr "La firma recibida no es válida" +#: ../../Zotlabs/Storage/Browser.php:397 +msgid "Upload file" +msgstr "Subir fichero" -#: ../../include/connections.php:133 -msgid "New window" -msgstr "Nueva ventana" +#: ../../Zotlabs/Storage/Browser.php:410 +msgid "Drop files here to immediately upload" +msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata" -#: ../../include/connections.php:134 -msgid "Open the selected location in a different window or browser tab" -msgstr "Abrir la dirección seleccionada en una ventana o pestaña aparte" +#: ../../boot.php:1653 +msgid "Create an account to access services and applications" +msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" -#: ../../include/auth.php:192 -msgid "Delegation session ended." -msgstr "Finalizó la sesión de la delegación." +#: ../../boot.php:1677 +msgid "Login/Email" +msgstr "Inicio de sesión / Correo electrónico" -#: ../../include/auth.php:196 -msgid "Logged out." -msgstr "Desconectado/a." +#: ../../boot.php:1678 +msgid "Password" +msgstr "Contraseña" -#: ../../include/auth.php:291 -msgid "Email validation is incomplete. Please check your email." -msgstr "La validación del correo electrónico está incompleta. Por favor, compruebe su correo electrónico." +#: ../../boot.php:1679 +msgid "Remember me" +msgstr "Recordarme" -#: ../../include/auth.php:307 -msgid "Failed authentication" -msgstr "Autenticación fallida." +#: ../../boot.php:1682 +msgid "Forgot your password?" +msgstr "¿Olvidó su contraseña?" -#: ../../include/help.php:80 -msgid "Help:" -msgstr "Ayuda:" +#: ../../boot.php:2478 +#, php-format +msgid "[$Projectname] Website SSL error for %s" +msgstr "[$Projectname] Error SSL del sitio web en %s" -#: ../../include/help.php:129 -msgid "Not Found" -msgstr "No encontrado" +#: ../../boot.php:2483 +msgid "Website SSL certificate is not valid. Please correct." +msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema." + +#: ../../boot.php:2599 +#, php-format +msgid "[$Projectname] Cron tasks not running on %s" +msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s" + +#: ../../boot.php:2604 +msgid "Cron/Scheduled tasks not running." +msgstr "Las tareas del Planificador/Cron no están funcionando." diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php index 4d55b75e2..a528a052f 100644 --- a/view/es-es/hstrings.php +++ b/view/es-es/hstrings.php @@ -6,2604 +6,380 @@ function string_plural_select_es_es($n){ }} App::$rtl = 0; App::$strings["plural_function_code"] = "(n != 1 ? 1 : 0)"; -App::$strings["Can view my channel stream and posts"] = "Pueden verse la actividad y publicaciones de mi canal"; -App::$strings["Can send me their channel stream and posts"] = "Se me pueden enviar entradas y contenido de un canal"; -App::$strings["Can view my default channel profile"] = "Puede verse mi perfil de canal predeterminado."; -App::$strings["Can view my connections"] = "Pueden verse mis conexiones"; -App::$strings["Can view my file storage and photos"] = "Pueden verse mi repositorio de ficheros y mis fotos"; -App::$strings["Can upload/modify my file storage and photos"] = "Se pueden subir / modificar elementos en mi repositorio de ficheros y fotos"; -App::$strings["Can view my channel webpages"] = "Pueden verse las páginas personales de mi canal"; -App::$strings["Can view my wiki pages"] = "Pueden verse mis páginas wiki"; -App::$strings["Can create/edit my channel webpages"] = "Pueden crearse / modificarse páginas personales en mi canal"; -App::$strings["Can write to my wiki pages"] = "Se pueden modificar las páginas de mi wiki"; -App::$strings["Can post on my channel (wall) page"] = "Pueden crearse entradas en mi página de inicio del canal (“muro”)"; -App::$strings["Can comment on or like my posts"] = "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'."; -App::$strings["Can send me private mail messages"] = "Se me pueden enviar mensajes privados"; -App::$strings["Can like/dislike profiles and profile things"] = "Se puede mostrar agrado o desagrado (Me gusta / No me gusta) en mis perfiles y sus distintos apartados"; -App::$strings["Can forward to all my channel connections via ! mentions in posts"] = "Pueden reenviarse publicaciones a todas las conexiones de mi canal a través de ! menciones en las entradas"; -App::$strings["Can chat with me"] = "Se puede chatear conmigo"; -App::$strings["Can source my public posts in derived channels"] = "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados"; -App::$strings["Can administer my channel"] = "Se puede administrar mi canal"; -App::$strings["Social Networking"] = "Redes sociales"; -App::$strings["Social - Federation"] = "Social - Federación"; -App::$strings["Social - Mostly Public"] = "Social - Público en su mayor parte"; -App::$strings["Social - Restricted"] = "Social - Restringido"; -App::$strings["Social - Private"] = "Social - Privado"; -App::$strings["Community Forum"] = "Foro de discusión"; -App::$strings["Forum - Mostly Public"] = "Foro - Público en su mayor parte"; -App::$strings["Forum - Restricted"] = "Foro - Restringido"; -App::$strings["Forum - Private"] = "Foro - Privado"; -App::$strings["Feed Republish"] = "Republicar un \"feed\""; -App::$strings["Feed - Mostly Public"] = "Feed - Público en su mayor parte"; -App::$strings["Feed - Restricted"] = "Feed - Restringido"; -App::$strings["Special Purpose"] = "Propósito especial"; -App::$strings["Special - Celebrity/Soapbox"] = "Especial - Celebridad / Tribuna improvisada"; -App::$strings["Special - Group Repository"] = "Especial - Repositorio de grupo"; -App::$strings["Other"] = "Otro"; -App::$strings["Custom/Expert Mode"] = "Modo personalizado/experto"; -App::$strings["Requested profile is not available."] = "El perfil solicitado no está disponible."; -App::$strings["Permission denied."] = "Acceso denegado."; -App::$strings["Block Name"] = "Nombre del bloque"; -App::$strings["Blocks"] = "Bloques"; -App::$strings["Block Title"] = "Título del bloque"; -App::$strings["Created"] = "Creado"; -App::$strings["Edited"] = "Editado"; -App::$strings["Create"] = "Crear"; -App::$strings["Edit"] = "Editar"; -App::$strings["Share"] = "Compartir"; -App::$strings["Delete"] = "Eliminar"; -App::$strings["View"] = "Ver"; -App::$strings["Total invitation limit exceeded."] = "Se ha superado el límite máximo de invitaciones."; -App::$strings["%s : Not a valid email address."] = "%s : No es una dirección de correo electrónico válida. "; -App::$strings["Please join us on \$Projectname"] = "Únase a nosotros en \$Projectname"; -App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio."; -App::$strings["%s : Message delivery failed."] = "%s : Falló el envío del mensaje."; -App::$strings["%d message sent."] = array( - 0 => "%d mensajes enviados.", - 1 => "%d mensajes enviados.", -); -App::$strings["Invite App"] = "Solicitar una app"; -App::$strings["Not Installed"] = "No instalado/a"; -App::$strings["Send email invitations to join this network"] = "Enviar invitaciones por correo electrónico para unirse a esta red"; -App::$strings["You have no more invitations available"] = "No tiene más invitaciones disponibles"; -App::$strings["Send invitations"] = "Enviar invitaciones"; -App::$strings["Enter email addresses, one per line:"] = "Introduzca las direcciones de correo electrónico, una por línea:"; -App::$strings["Your message:"] = "Su mensaje:"; -App::$strings["Please join my community on \$Projectname."] = "Por favor, únase a mi comunidad en \$Projectname."; -App::$strings["You will need to supply this invitation code:"] = "Tendrá que suministrar este código de invitación:"; -App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Regístrese en cualquier sitio de \$Projectname (están todos interconectados)"; -App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Introduzca mi dirección \$Projectname en la caja de búsqueda del sitio."; -App::$strings["or visit"] = "o visitar"; -App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]"; +App::$strings["Default"] = "Predeterminado"; +App::$strings["Focus (Hubzilla default)"] = "Focus (predefinido)"; App::$strings["Submit"] = "Enviar"; -App::$strings["Articles App"] = "App Artículos"; -App::$strings["Create interactive articles"] = "Crear artículos interactivos"; -App::$strings["Add Article"] = "Añadir un artículo"; -App::$strings["Articles"] = "Artículos"; -App::$strings["Item not found"] = "Elemento no encontrado"; -App::$strings["Layout Name"] = "Nombre de la plantilla"; -App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)"; -App::$strings["Edit Layout"] = "Modificar la plantilla"; -App::$strings["Cancel"] = "Cancelar"; -App::$strings["Permission denied"] = "Permiso denegado"; -App::$strings["Invalid profile identifier."] = "Identificador del perfil no válido"; -App::$strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil"; -App::$strings["Profile"] = "Perfil"; -App::$strings["Click on a contact to add or remove."] = "Pulsar en un contacto para añadirlo o eliminarlo."; -App::$strings["Visible To"] = "Visible para"; -App::$strings["All Connections"] = "Todas las conexiones"; -App::$strings["Calendar entries imported."] = "Entradas de calendario importadas."; -App::$strings["No calendar entries found."] = "No se han encontrado entradas de calendario."; -App::$strings["INVALID EVENT DISMISSED!"] = "¡EVENTO NO VÁLIDO RECHAZADO!"; -App::$strings["Summary: "] = "Resumen: "; -App::$strings["Unknown"] = "Desconocido"; -App::$strings["Date: "] = "Fecha: "; -App::$strings["Reason: "] = "Razón: "; -App::$strings["INVALID CARD DISMISSED!"] = "¡TARJETA NO VÁLIDA RECHAZADA!"; -App::$strings["Name: "] = "Nombre: "; -App::$strings["CardDAV App"] = "App CarDav"; -App::$strings["CalDAV capable addressbook"] = "Libreta de direcciones compatible con CalDav"; -App::$strings["Link to source"] = "Enlace a la fuente"; -App::$strings["Event title"] = "Título del evento"; -App::$strings["Start date and time"] = "Fecha y hora de comienzo"; -App::$strings["End date and time"] = "Fecha y hora de finalización"; -App::$strings["Timezone:"] = "Zona horaria: "; -App::$strings["Description"] = "Descripción"; -App::$strings["Location"] = "Ubicación"; -App::$strings["Previous"] = "Anterior"; -App::$strings["Next"] = "Siguiente"; -App::$strings["Today"] = "Hoy"; -App::$strings["Month"] = "Mes"; -App::$strings["Week"] = "Semana"; -App::$strings["Day"] = "Día"; -App::$strings["List month"] = "Lista mensual"; -App::$strings["List week"] = "Lista semanal"; -App::$strings["List day"] = "Lista diaria"; -App::$strings["More"] = "Más"; -App::$strings["Less"] = "Menos"; -App::$strings["Update"] = "Actualizar"; -App::$strings["Select calendar"] = "Seleccionar un calendario"; -App::$strings["Channel Calendars"] = "Calendarios del canal"; -App::$strings["CalDAV Calendars"] = "Calendarios CalDAV"; -App::$strings["Delete all"] = "Eliminar todos"; -App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado."; -App::$strings["Categories"] = "Temas"; -App::$strings["Name"] = "Nombre"; -App::$strings["Organisation"] = "Organización"; -App::$strings["Title"] = "Título"; -App::$strings["Phone"] = "Teléfono"; -App::$strings["Email"] = "Correo electrónico"; -App::$strings["Instant messenger"] = "Mensajería instantánea"; -App::$strings["Website"] = "Sitio web"; -App::$strings["Address"] = "Dirección"; -App::$strings["Note"] = "Nota"; -App::$strings["Mobile"] = "Móvil"; -App::$strings["Home"] = "Inicio"; -App::$strings["Work"] = "Trabajo"; -App::$strings["Add Contact"] = "Añadir un contacto"; -App::$strings["Add Field"] = "Añadir un campo"; -App::$strings["P.O. Box"] = "Buzón de correos"; -App::$strings["Additional"] = "Adicional"; -App::$strings["Street"] = "Calle"; -App::$strings["Locality"] = "Localidad"; -App::$strings["Region"] = "Provincia, región o estado"; -App::$strings["ZIP Code"] = "Código postal"; -App::$strings["Country"] = "País"; -App::$strings["Default Calendar"] = "Calendario por defecto"; -App::$strings["Default Addressbook"] = "Agenda de direcciones por defecto"; -App::$strings["This site is not a directory server"] = "Este sitio no es un servidor de directorio"; -App::$strings["Permission category name is required."] = "El nombre de la categoría de permiso es obligatorio."; -App::$strings["Permission category saved."] = "Se ha guardado la categoría del permiso."; -App::$strings["Permission Categories App"] = "App Categorías de permisos"; -App::$strings["Create custom connection permission limits"] = "Crear límites de permisos de conexión personalizados"; -App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones."; -App::$strings["Permission Categories"] = "Tipos de permisos"; -App::$strings["Permission category name"] = "Nombre de categoría de permiso"; -App::$strings["My Settings"] = "Mis ajustes"; -App::$strings["inherited"] = "heredado"; -App::$strings["Individual Permissions"] = "Permisos individuales"; -App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí."; -App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; -App::$strings["Posts and comments"] = "Publicaciones y comentarios"; -App::$strings["Only posts"] = "Solo publicaciones"; -App::$strings["This is the home page of %s."] = "Esta es la página personal de %s."; -App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página del perfil."; -App::$strings["Search Results For:"] = "Buscar resultados para:"; -App::$strings["Reset form"] = "Reiniciar el formulario"; -App::$strings["You must enable javascript for your browser to be able to view this content."] = "Debe habilitar javascript para poder ver este contenido en su navegador."; -App::$strings["Language App"] = "App idioma"; -App::$strings["Change UI language"] = "Cambiar el idioma de la interfaz de usuario"; -App::$strings["Channel Export App"] = "App Exportación de canales"; -App::$strings["Export your channel"] = "Exportar su canal"; -App::$strings["Export Channel"] = "Exportar el canal"; -App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido."; -App::$strings["Export Content"] = "Exportar contenidos"; -App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar."; -App::$strings["Export your posts from a given year."] = "Exporta sus publicaciones de un año dado."; -App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño."; -App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1\$s\">%2\$s</a>"; -App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1\$s\">%2\$s</a>"; -App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1\$s\">%2\$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)."; -App::$strings["Welcome to Hubzilla!"] = "¡Bienvenido a Hubzilla!"; -App::$strings["You have got no unseen posts..."] = "No tiene ningún mensaje sin leer..."; -App::$strings["Public access denied."] = "Acceso público denegado."; -App::$strings["Search"] = "Buscar"; -App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s"; -App::$strings["Search results for: %s"] = "Resultados de la búsqueda para: %s"; -App::$strings["Public Stream App"] = "App Stream público"; -App::$strings["The unmoderated public stream of this hub"] = "Stream público no moderado de este hub"; -App::$strings["Public Stream"] = "\"Stream\" público"; -App::$strings["Location not found."] = "Dirección no encontrada."; -App::$strings["Location lookup failed."] = "Ha fallado la búsqueda de la dirección."; -App::$strings["Please select another location to become primary before removing the primary location."] = "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal."; -App::$strings["Syncing locations"] = "Sincronizando ubicaciones"; -App::$strings["No locations found."] = "No encontrada ninguna dirección."; -App::$strings["Manage Channel Locations"] = "Gestionar las direcciones del canal"; -App::$strings["Primary"] = "Primario"; -App::$strings["Drop"] = "Eliminar"; -App::$strings["Sync Now"] = "Sincronizar ahora"; -App::$strings["Please wait several minutes between consecutive operations."] = "Por favor, espere algunos minutos entre operaciones consecutivas."; -App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal."; -App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo."; -App::$strings["Change Order of Pinned Navbar Apps"] = "Cambiar el orden de las aplicaciones fijas en la barra de navegación"; -App::$strings["Change Order of App Tray Apps"] = "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones"; -App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Use las flechas para mover la aplicación correspondiente a la izquierda (arriba) o derecha (abajo) en la barra de navegación."; -App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Use las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la bandeja de aplicaciones."; -App::$strings["Menu not found."] = "Menú no encontrado"; -App::$strings["Unable to create element."] = "No se puede crear el elemento."; -App::$strings["Unable to update menu element."] = "No es posible actualizar el elemento del menú."; -App::$strings["Unable to add menu element."] = "No es posible añadir el elemento al menú"; -App::$strings["Not found."] = "No encontrado."; -App::$strings["Menu Item Permissions"] = "Permisos del elemento del menú"; -App::$strings["(click to open/close)"] = "(pulsar para abrir o cerrar)"; -App::$strings["Link Name"] = "Nombre del enlace"; -App::$strings["Link or Submenu Target"] = "Destino del enlace o submenú"; -App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Introducir la dirección del enlace o seleccionar el nombre de un submenú"; -App::$strings["Use magic-auth if available"] = "Usar la autenticación mágica si está disponible"; +App::$strings["Theme settings"] = "Ajustes del tema"; +App::$strings["Narrow navbar"] = "Estrechar la barra de navegación"; App::$strings["No"] = "No"; App::$strings["Yes"] = "Sí"; -App::$strings["Open link in new window"] = "Abrir el enlace en una nueva ventana"; -App::$strings["Order in list"] = "Orden en la lista"; -App::$strings["Higher numbers will sink to bottom of listing"] = "Los números más altos irán al final de la lista"; -App::$strings["Submit and finish"] = "Enviar y terminar"; -App::$strings["Submit and continue"] = "Enviar y continuar"; -App::$strings["Menu:"] = "Menú:"; -App::$strings["Link Target"] = "Destino del enlace"; -App::$strings["Edit menu"] = "Editar menú"; -App::$strings["Edit element"] = "Editar el elemento"; -App::$strings["Drop element"] = "Eliminar el elemento"; -App::$strings["New element"] = "Nuevo elemento"; -App::$strings["Edit this menu container"] = "Modificar el contenedor del menú"; -App::$strings["Add menu element"] = "Añadir un elemento al menú"; -App::$strings["Delete this menu item"] = "Eliminar este elemento del menú"; -App::$strings["Edit this menu item"] = "Modificar este elemento del menú"; -App::$strings["Menu item not found."] = "Este elemento del menú no se ha encontrado"; -App::$strings["Menu item deleted."] = "Este elemento del menú ha sido borrado"; -App::$strings["Menu item could not be deleted."] = "Este elemento del menú no puede ser borrado."; -App::$strings["Edit Menu Element"] = "Editar elemento del menú"; -App::$strings["Link text"] = "Texto del enlace"; -App::$strings["Event can not end before it has started."] = "Un evento no puede terminar antes de que haya comenzado."; -App::$strings["Unable to generate preview."] = "No se puede crear la vista previa."; -App::$strings["Event title and start time are required."] = "Se requieren el título del evento y su hora de inicio."; -App::$strings["Event not found."] = "Evento no encontrado."; -App::$strings["event"] = "el/su evento"; -App::$strings["Edit event title"] = "Editar el título del evento"; -App::$strings["Required"] = "Obligatorio"; -App::$strings["Categories (comma-separated list)"] = "Temas (lista separada por comas)"; -App::$strings["Edit Category"] = "Modificar el tema"; -App::$strings["Category"] = "Tema"; -App::$strings["Edit start date and time"] = "Modificar la fecha y hora de comienzo"; -App::$strings["Finish date and time are not known or not relevant"] = "La fecha y hora de terminación no se conocen o no son relevantes"; -App::$strings["Edit finish date and time"] = "Modificar la fecha y hora de terminación"; -App::$strings["Finish date and time"] = "Fecha y hora de terminación"; -App::$strings["Adjust for viewer timezone"] = "Ajustar para obtener el visor de los husos horarios"; -App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales."; -App::$strings["Edit Description"] = "Editar la descripción"; -App::$strings["Edit Location"] = "Modificar la dirección"; -App::$strings["Preview"] = "Previsualizar"; -App::$strings["Permission settings"] = "Configuración de permisos"; -App::$strings["Advanced Options"] = "Opciones avanzadas"; -App::$strings["l, F j"] = "l j F"; -App::$strings["Edit event"] = "Editar evento"; -App::$strings["Delete event"] = "Borrar evento"; -App::$strings["Link to Source"] = "Enlazar con la entrada en su ubicación original"; -App::$strings["calendar"] = "calendario"; -App::$strings["Edit Event"] = "Editar el evento"; -App::$strings["Create Event"] = "Crear un evento"; -App::$strings["Export"] = "Exportar"; -App::$strings["Event removed"] = "Evento borrado"; -App::$strings["Failed to remove event"] = "Error al eliminar el evento"; -App::$strings["App installed."] = "Aplicación instalada."; -App::$strings["Malformed app."] = "Aplicación con errores"; -App::$strings["Embed code"] = "Código incorporado"; -App::$strings["Edit App"] = "Modificar la aplicación"; -App::$strings["Create App"] = "Crear una aplicación"; -App::$strings["Name of app"] = "Nombre de la aplicación"; -App::$strings["Location (URL) of app"] = "Dirección (URL) de la aplicación"; -App::$strings["Photo icon URL"] = "Dirección del icono"; -App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional"; -App::$strings["Categories (optional, comma separated list)"] = "Temas (opcional, lista separada por comas)"; -App::$strings["Version ID"] = "Versión"; -App::$strings["Price of app"] = "Precio de la aplicación"; -App::$strings["Location (URL) to purchase app"] = "Dirección (URL) donde adquirir la aplicación"; -App::$strings["Please login."] = "Por favor, inicie sesión."; -App::$strings["Hub not found."] = "Servidor no encontrado"; +App::$strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; +App::$strings["Navigation bar icon color "] = "Color del icono de la barra de navegación"; +App::$strings["Navigation bar active icon color "] = "Color del icono activo de la barra de navegación"; +App::$strings["Link color"] = "Color del enlace"; +App::$strings["Set font-color for banner"] = "Ajustar el color del tipo de letra para el \"banner\""; +App::$strings["Set the background color"] = "Ajustar el color de fondo"; +App::$strings["Set the background image"] = "Ajustar la imagen de fondo"; +App::$strings["Set the background color of items"] = "Ajustar el color de los elementos de fondo"; +App::$strings["Set the background color of comments"] = "Ajustar el color de fondo de los comentarios"; +App::$strings["Set font-size for the entire application"] = "Ajustar el tamaño de letra para toda la aplicación"; +App::$strings["Examples: 1rem, 100%, 16px"] = "Ejemplos: 1rem, 100%, 16px"; +App::$strings["Set font-color for posts and comments"] = "Establecer el color de la letra para publicaciones y comentarios"; +App::$strings["Set radius of corners"] = "Establecer el radio de curvatura de las esquinas"; +App::$strings["Example: 4px"] = "Ejemplo: 4px"; +App::$strings["Set shadow depth of photos"] = "Ajustar la profundidad de sombras de las fotos"; +App::$strings["Set maximum width of content region in pixel"] = "Ajustar la anchura máxima de la región de contenido, en pixels"; +App::$strings["Leave empty for default width"] = "Dejar en blanco para la anchura predeterminada"; +App::$strings["Set size of conversation author photo"] = "Ajustar el tamaño de la foto del autor de la conversación"; +App::$strings["Set size of followup author photos"] = "Ajustar el tamaño de foto de los seguidores del autor"; +App::$strings["Show advanced settings"] = "Mostrar ajustes avanzados"; +App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen."; +App::$strings["Access Denied"] = "Acceso denegado"; +App::$strings["Enable Community Moderation"] = "Habilitar la moderación de la comunidad"; +App::$strings["Reputation automatically given to new members"] = "La reputación se otorga automáticamente a los nuevos miembros"; +App::$strings["Reputation will never fall below this value"] = "La reputación nunca caerá por debajo de este valor"; +App::$strings["Minimum reputation before posting is allowed"] = "Reputación mínima antes de que se permita el envío de entradas"; +App::$strings["Minimum reputation before commenting is allowed"] = "Mínima reputación antes de que se permitan los comentarios"; +App::$strings["Minimum reputation before a member is able to moderate other posts"] = "Reputación mínima antes de que un miembro sea capaz de moderar otros mensajes"; +App::$strings["Max ratio of moderator's reputation that can be added to/deducted from reputation of person being moderated"] = "Proporción máxima de la reputación del moderador que puede ser añadida/descontada de la reputación de la persona que está siendo moderada."; +App::$strings["Reputation \"cost\" to post"] = "\"Coste\" de la reputación a contabilizar"; +App::$strings["Reputation \"cost\" to comment"] = "\"Coste\" de la reputación para comentar"; +App::$strings["Reputation automatically recovers at this rate per hour until it reaches minimum_to_post"] = "La reputación se recupera automáticamente a esta tasa por hora hasta que alcanza el mínimo_a_post"; +App::$strings["When minimum_to_moderate > reputation > minimum_to_post reputation recovers at this rate per hour"] = "Cuando el mínimo_a_moderar > reputación > mínimo_a_publicar la reputación se recupera a esta tasa por hora "; +App::$strings["Community Moderation Settings"] = "Configuración de la moderación de la comunidad"; +App::$strings["Channel Reputation"] = "Reputación del canal"; +App::$strings["Close"] = "Cerrar"; +App::$strings["An Error has occurred."] = "Se ha producido un error."; +App::$strings["Upvote"] = "Votar a favor"; +App::$strings["Downvote"] = "Votar en contra"; +App::$strings["Can moderate reputation on my channel."] = "Se puede moderar la reputación en mi canal."; +App::$strings["Block Completely"] = "Bloquear completamente"; +App::$strings["Superblock App"] = "App Superblock"; +App::$strings["Not Installed"] = "No instalado/a"; +App::$strings["Block channels"] = "Bloquear canales"; +App::$strings["superblock settings updated"] = "se han actualizado los ajustes de superblock"; +App::$strings["Currently blocked"] = "Actualmente bloqueado"; +App::$strings["No channels currently blocked"] = "No hay canales bloqueados actualmente"; +App::$strings["Remove"] = "Eliminar"; +App::$strings["NSA Bait App"] = "App NSA Bait "; +App::$strings["Installed"] = "Instalado"; +App::$strings["Make yourself a political target"] = "Conviértase en un objetivo político"; +App::$strings["Who viewed my channel/profile"] = "Quién ha visto mi canal/perfi"; +App::$strings["Recent Channel/Profile Viewers"] = "Visitantes recientes del canal o perfil"; +App::$strings["No entries."] = "No hay entradas."; +App::$strings["System defaults:"] = "Valores predeterminados del sistema: "; +App::$strings["Preferred Clipart IDs"] = "IDs de las imágenes clipart preferidas"; +App::$strings["List of preferred clipart ids. These will be shown first."] = "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar."; +App::$strings["Default Search Term"] = "Términos de búsqueda predeterminados"; +App::$strings["The default search term. These will be shown second."] = "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar."; +App::$strings["Return After"] = "Regresar después"; +App::$strings["Page to load after image selection."] = "Página para cargar después de la selección de imágenes."; +App::$strings["View Profile"] = "Ver el perfil"; +App::$strings["Edit Profile"] = "Editar el perfil"; +App::$strings["Profile List"] = "Lista de perfiles"; +App::$strings["Order of Preferred"] = "Orden de preferencia"; +App::$strings["Sort order of preferred clipart ids."] = "Orden de clasificación de los identificadores de imágenes clipart preferidas."; +App::$strings["Newest first"] = "Las más nuevas en primer lugar"; +App::$strings["As entered"] = "Tal como se ingresaron"; +App::$strings["Order of other"] = "Orden de los demás"; +App::$strings["Sort order of other clipart ids."] = "Orden de clasificación de otros ids de imágenes clipart."; +App::$strings["Most downloaded first"] = "Las más descargadas en primer lugar"; +App::$strings["Most liked first"] = "Las más apreciadas en primer lugar"; +App::$strings["Preferred IDs Message"] = "Mensaje de IDs preferido"; +App::$strings["Message to display above preferred results."] = "Mensaje para mostrar sobre los resultados preferidos."; +App::$strings["Uploaded by: "] = "Subida por: "; +App::$strings["Drawn by: "] = "Creada por: "; +App::$strings["Use this image"] = "Usar esta imagen"; +App::$strings["Or select from a free OpenClipart.org image:"] = "O seleccionar una imagen gratuita de OpenClipart.org: "; +App::$strings["Search Term"] = "Término de búsqueda"; +App::$strings["Unknown error. Please try again later."] = "Error desconocido. Por favor, inténtelo otra vez."; +App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."; +App::$strings["Profile photo updated successfully."] = "Se ha actualizado con éxito la foto de perfil."; +App::$strings["Save Bookmarks"] = "Guardar en Marcadores"; +App::$strings["Max queueworker threads"] = "Máximo de hilos en la cola"; +App::$strings["Assume workers dead after ___ seconds"] = "Asumir que el proceso de trabajo está muerto después de ___ segundos"; +App::$strings["Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)"] = "Haga una pausa antes de comenzar la siguiente tarea: (microsegundos. Mínimo 100 =.0001 segundos)"; +App::$strings["Queueworker Settings"] = "Configuración del gestor de procesos de trabajo en cola"; +App::$strings["Save"] = "Guardar"; +App::$strings["Edit your profile and change settings."] = "Editar su perfil y cambiar los ajustes."; +App::$strings["Click here to see activity from your connections."] = "Pulsar aquí para ver la actividad de sus conexiones."; +App::$strings["Click here to see your channel home."] = "Pulsar aquí para ver la página de inicio de su canal."; +App::$strings["You can access your private messages from here."] = "Puede acceder a sus mensajes privados desde aquí."; +App::$strings["Create new events here."] = "Crear nuevos eventos aquí."; +App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Puede aceptar nuevas conexiones y cambiar permisos para las que ya existen aquí. También puede, por ejemplo, crear grupos de contactos."; +App::$strings["System notifications will arrive here"] = "Las notificaciones del sistema llegarán aquí"; +App::$strings["Search for content and users"] = "Buscar contenido y usuarios"; +App::$strings["Browse for new contacts"] = "Buscar nuevos contactos"; +App::$strings["Launch installed apps"] = "Iniciar aplicaciones instaladas"; +App::$strings["Looking for help? Click here."] = "¿Busca ayuda? Pulse aquí."; +App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "Se han producido nuevos eventos en su red. ¡Haga clic aquí para ver lo que ha sucedido!"; +App::$strings["You have received a new private message. Click here to see from who!"] = "Ha recibido un nuevo mensaje privado. Haga clic aquí para ver de quién!"; +App::$strings["There are events this week. Click here too see which!"] = "Hay eventos esta semana. Haga clic aquí para ver cuáles!"; +App::$strings["You have received a new introduction. Click here to see who!"] = "Ha recibido una nueva solicitud de conexión. ¡Pulse aquí para ver de quién!"; +App::$strings["There is a new system notification. Click here to see what has happened!"] = "Hay una nueva notificación del sistema. ¡Haga clic aquí para ver lo que ha sucedido!"; +App::$strings["Click here to share text, images, videos and sound."] = "Haga clic aquí para compartir texto, imágenes, vídeos y sonido."; +App::$strings["You can write an optional title for your update (good for long posts)."] = "Puede escribir un título opcional para su actualización (bueno para los mensajes largos)."; +App::$strings["Entering some categories here makes it easier to find your post later."] = "Al ingresar algunos temas aquí, es más fácil encontrar su publicación más tarde."; +App::$strings["Share photos, links, location, etc."] = "Compartir fotos, enlaces, ubicación, etc."; +App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "¿Solo quieres compartir contenido durante un tiempo? Haga que expire en una fecha determinada."; +App::$strings["You can password protect content."] = "Puede proteger contenido con una contraseña."; +App::$strings["Choose who you share with."] = "Elegir con quién compartir."; +App::$strings["Click here when you are done."] = "Haga clic aquí cuando haya terminado."; +App::$strings["Adjust from which channels posts should be displayed."] = "Ajustar de qué canales se deben mostrar las publicaciones."; +App::$strings["Only show posts from channels in the specified privacy group."] = "Mostrar solo las entradas de los canales de un grupo específico de canales."; +App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Encuentre fácilmente entradas que contengan etiquetas (palabras clave precedidas del símbolo \"#\")."; +App::$strings["Easily find posts in given category."] = "Encuentre fácilmente las publicaciones en una categoría dada."; +App::$strings["Easily find posts by date."] = "Encuentre fácilmente entradas por fechas."; +App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Se sugiere a los usuarios que se han ofrecido voluntariamente que se muestren como sugerencias, y que creemos que podrían resultar interesantes."; +App::$strings["Here you see channels you have connected to."] = "Aquí puede ver los canales a los que está conectado."; +App::$strings["Save your search so you can repeat it at a later date."] = "Guarde su búsqueda para poder repetirla en una fecha posterior."; +App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso."; +App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!"; +App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno"; +App::$strings["Add some colour to tag clouds"] = "Añadir color a las nubes de etiquetas"; +App::$strings["Rainbow Tag App"] = "App Etiqueta Arcoiris"; +App::$strings["Rainbow Tag"] = "Etiqueta Arcoiris"; +App::$strings["Photo Cache settings saved."] = "Se ha guardado la configuración de la caché de fotos."; +App::$strings["Photo Cache addon saves a copy of images from external sites locally to increase your anonymity in the web."] = "El complemento Photo Cache guarda localmente una copia de las imágenes de sitios externos para aumentar su anonimato en la Web."; +App::$strings["Photo Cache App"] = "App Photo Cache"; +App::$strings["Minimal photo size for caching"] = "Tamaño mínimo de la foto para el almacenamiento en caché"; +App::$strings["In pixels. From 1 up to 1024, 0 will be replaced with system default."] = "En píxeles. Desde 1 hasta 1024, 0 será reemplazado por el predeterminado del sistema."; +App::$strings["Photo Cache"] = "Photo Cache"; +App::$strings["Gallery"] = "Galería"; +App::$strings["Photo Gallery"] = "Galería de fotos"; +App::$strings["Requested profile is not available."] = "El perfil solicitado no está disponible."; +App::$strings["Gallery App"] = "App Gallery"; +App::$strings["A simple gallery for your photo albums"] = "Una galería sencilla para sus álbumes de fotos"; +App::$strings["Random Planet App"] = "App Random Planet"; +App::$strings["Set a random planet from the Star Wars Empire as your location when posting"] = "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias como su ubicación cuando publique."; +App::$strings["Permission denied."] = "Acceso denegado."; +App::$strings["Male"] = "Hombre"; +App::$strings["Female"] = "Mujer"; +App::$strings["OpenID protocol error. No ID returned."] = "Error de protocolo OpenID. No se recuperó ninguna ID."; +App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."; +App::$strings["Login failed."] = "El acceso ha fallado."; +App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito."; +App::$strings["The error message was:"] = "El mensaje de error ha sido: "; +App::$strings["First Name"] = "Nombre"; +App::$strings["Last Name"] = "Apellido"; +App::$strings["Nickname"] = "Alias"; +App::$strings["Full Name"] = "Nombre completo"; +App::$strings["Email"] = "Correo electrónico"; +App::$strings["Profile Photo"] = "Foto del perfil"; +App::$strings["Profile Photo 16px"] = "Foto del perfil 16px"; +App::$strings["Profile Photo 32px"] = "Foto del perfil 32px"; +App::$strings["Profile Photo 48px"] = "Foto del perfil 48px"; +App::$strings["Profile Photo 64px"] = "Foto del perfil 64px"; +App::$strings["Profile Photo 80px"] = "Foto del perfil 80px"; +App::$strings["Profile Photo 128px"] = "Foto del perfil 128px"; +App::$strings["Timezone"] = "Zona horaria"; +App::$strings["Homepage URL"] = "Dirección de la página personal"; +App::$strings["Language"] = "Idioma"; +App::$strings["Birth Year"] = "Año de nacimiento"; +App::$strings["Birth Month"] = "Mes de nacimiento"; +App::$strings["Birth Day"] = "Día de nacimiento"; +App::$strings["Birthdate"] = "Fecha de nacimiento"; +App::$strings["Gender"] = "Género"; +App::$strings["lonely"] = "Solo/a"; +App::$strings["drunk"] = "ebrio/a"; +App::$strings["horny"] = "caliente"; +App::$strings["stoned"] = "drogado/a"; +App::$strings["fucked up"] = "jodido/a"; +App::$strings["clusterfucked"] = "hecho/a polvo"; +App::$strings["crazy"] = "loco/a"; +App::$strings["hurt"] = "ofendido/a"; +App::$strings["sleepy"] = "soñoliento/a"; +App::$strings["grumpy"] = "gruñón/ona"; +App::$strings["high"] = "superior"; +App::$strings["semi-conscious"] = "semiconsciente"; +App::$strings["in love"] = "enamorado/a"; +App::$strings["in lust"] = "lujurioso/a"; +App::$strings["naked"] = "desnudo/a"; +App::$strings["stinky"] = "apestoso/a"; +App::$strings["sweaty"] = "sudoroso/a"; +App::$strings["bleeding out"] = "exánime"; +App::$strings["victorious"] = "victorioso/a"; +App::$strings["defeated"] = "derrotado/a"; +App::$strings["envious"] = "envidioso/a"; +App::$strings["jealous"] = "celoso/a"; +App::$strings["Hubzilla Directory Stats"] = "Estadísticas de directorio de Hubzilla"; +App::$strings["Total Hubs"] = "Número total de servidores"; +App::$strings["Hubzilla Hubs"] = "Servidores (hubs) de Hubzilla"; +App::$strings["Friendica Hubs"] = "Servidores (hubs) de Friendica"; +App::$strings["Diaspora Pods"] = "Servidores (pods) de Diaspora"; +App::$strings["Hubzilla Channels"] = "Canales de Hubzilla"; +App::$strings["Friendica Channels"] = "Canales de Friendica"; +App::$strings["Diaspora Channels"] = "Canales de Diaspora"; +App::$strings["Aged 35 and above"] = "De 35 años de edad en adelante"; +App::$strings["Aged 34 and under"] = "De 34 o menos años de edad"; +App::$strings["Average Age"] = "Promedio de edad"; +App::$strings["Known Chatrooms"] = "Salas de chat conocidas"; +App::$strings["Known Tags"] = "Etiquetas conocidas"; +App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat,"; +App::$strings["Channel is required."] = "Se requiere un canal."; +App::$strings["Invalid channel."] = "El canal no es válido."; +App::$strings["Hubzilla Crosspost Connector Settings saved."] = "Se han guardado los ajustes de Hubzilla Crosspost Connector"; +App::$strings["Hubzilla Crosspost Connector App"] = "App Hubzilla Crosspost Connector"; +App::$strings["Relay public postings to another Hubzilla channel"] = "Retransmisión de entradas a otro canal de Hubzilla"; +App::$strings["Send public postings to Hubzilla channel by default"] = "Enviar entradas públicas al canal Hubzilla por defecto"; +App::$strings["Hubzilla API Path"] = "Ruta de la API de Hubzilla"; +App::$strings["https://{sitename}/api"] = "https://{sitename}/api"; +App::$strings["Hubzilla login name"] = "Nombre de inicio de sesión en Hubzilla"; +App::$strings["Hubzilla channel name"] = "Nombre del canal de Hubzilla"; +App::$strings["Hubzilla password"] = "Contraseña de Hubzilla"; +App::$strings["Hubzilla Crosspost Connector"] = "Hubzilla Crosspost Connector"; +App::$strings["Post to Hubzilla"] = "Publicar en Hubzilla"; +App::$strings["Photos imported"] = "Se han importado las fotos"; +App::$strings["Permission denied"] = "Permiso denegado"; +App::$strings["Redmatrix Photo Album Import"] = "Importar un álbum de fotos de Redmatrix"; +App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Esto importará todos sus álbumes de fotos de Redmatrix a este canal."; +App::$strings["Redmatrix Server base URL"] = "URL base del servidor Redmatrix"; +App::$strings["Redmatrix Login Username"] = "Nombre de inicio de sesión en Redmatrix"; +App::$strings["Redmatrix Login Password"] = "Contraseña de inicio de sesión en Redmatrix"; +App::$strings["Import just this album"] = "Importar solo este álbum"; +App::$strings["Leave blank to import all albums"] = "Dejar en blanco para importar todos los álbumes"; +App::$strings["Maximum count to import"] = "Límite máximo de importación"; +App::$strings["0 or blank to import all available"] = "0 o en blanco para importar todos los disponibles"; App::$strings["photo"] = "foto"; -App::$strings["status"] = "el mensaje de estado "; -App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %3\$s de %2\$s"; -App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s ha dejado de seguir %3\$s de %2\$s"; -App::$strings["Channel not found."] = "Canal no encontrado."; +App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Por favor, contacte con el administrador de su sitio.<br />La URL de la API proporcionada no es válida."; +App::$strings["We could not contact the GNU social API with the Path you entered."] = "No podemos conectar con la API de GNU social con la ruta que ha proporcionado."; +App::$strings["GNU social settings updated."] = "Se han guardado los ajustes de GNU social."; +App::$strings["Relay public postings to a connected GNU social account (formerly StatusNet)"] = "Retransmisión de entradas públicas a una cuenta conectada de GNU social (antiguo StarusNet)"; +App::$strings["Globally Available GNU social OAuthKeys"] = "OAuthKeys globales de GNU social disponibles"; +App::$strings["There are preconfigured OAuth key pairs for some GNU social servers available. If you are using one of them, please use these credentials.<br />If not feel free to connect to any other GNU social instance (see below)."] = "Existen pares de claves OAuth preconfiguradas disponibles para algunos servidores libres de GNU social. Si está usando uno de ellos, utilice estas credenciales.<br />Si no se siente libre de conectarse a cualquier otra instancia de GNU social (vea a continuación)."; +App::$strings["Provide your own OAuth Credentials"] = "Proporcione sus propias credenciales de OAuth"; +App::$strings["No consumer key pair for GNU social found. Register your Hubzilla Account as an desktop client on your GNU social account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Hubzilla installation at your favourite GNU social installation."] = "No se ha encontrado un par de claves de consumidor para GNU social. Registre su cuenta de Hubzilla como un cliente de escritorio en su cuenta social GNU, copie el par de claves de consumidor aquí y escriba la dirección raíz de la API.<br />Antes de registrar su propio par de claves OAuth, pregunte al administrador si ya hay un par de claves para esta instalación de Hubzilla en su instalación GNU social favorita."; +App::$strings["OAuth Consumer Key"] = "OAuth Consumer Key"; +App::$strings["OAuth Consumer Secret"] = "OAuth Consumer Secret"; +App::$strings["Base API Path"] = "Ruta base de la API"; +App::$strings["Remember the trailing /"] = "Recuerde la barra /"; +App::$strings["GNU social application name"] = "Nombre de la aplicación de GNU social"; +App::$strings["To connect to your GNU social account click the button below to get a security code from GNU social which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to GNU social."] = "Para conectarse a su cuenta de GNU social, haga clic en el botón de abajo para obtener un código de seguridad de GNU social que tiene que copiar en el cuadro de entrada a continuación y envíe el formulario. Solo sus <strong>entradas</strong> públicas aparecerán en GNU social."; +App::$strings["Log in with GNU social"] = "Inicio de sesión en GNU social"; +App::$strings["Copy the security code from GNU social here"] = "Copiar aquí el código de seguridad de GNU social"; +App::$strings["Cancel Connection Process"] = "Cancelar el proceso de conexión"; +App::$strings["Current GNU social API is"] = "La API actual de GNU social es "; +App::$strings["Cancel GNU social Connection"] = "Cancelar la conexión de GNU social"; +App::$strings["Currently connected to: "] = "Actualmente está conectado a: "; +App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to GNU social will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Aviso</strong>: Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>) el vínculo potencialmente incluido en las entradas públicas retransmitidas a GNU social llevará al visitante a una página en blanco que le informará de que el acceso a su perfil ha sido restringido."; +App::$strings["Post to GNU social by default"] = "Publicar en GNU social por defecto"; +App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta GNU-social asociada de forma predeterminada"; +App::$strings["Clear OAuth configuration"] = "Limpiar la configuración de OAuth"; +App::$strings["GNU-Social Crosspost Connector"] = "GNU-Social Crosspost Connector"; +App::$strings["Post to GNU social"] = "Publicar en GNU social"; +App::$strings["Site name"] = "Nombre del sitio"; +App::$strings["API URL"] = "URL de la API"; +App::$strings["Consumer Secret"] = "Consumer Secret"; +App::$strings["Consumer Key"] = "Consumer Key"; +App::$strings["Application name"] = "Nombre de la aplicación"; +App::$strings["Friendica Photo Album Import"] = "Importar un álbum de fotos de Friendica"; +App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla."; +App::$strings["Friendica Server base URL"] = "URL base del servidor de Friendica"; +App::$strings["Friendica Login Username"] = "Nombre de inicio de sesión en Friendica"; +App::$strings["Friendica Login Password"] = "Contraseña de inicio de sesión en Friendica"; +App::$strings["Friendica Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada con Friendica."; +App::$strings["Friendica Crosspost Connector App"] = "App Friendica Crosspost Connector"; +App::$strings["Relay public postings to a connected Friendica account"] = "Retransmisión de entradas públicas a una cuenta Friendica conectada"; +App::$strings["Send public postings to Friendica by default"] = "Enviar entradas públicas a Friendica por defecto"; +App::$strings["Friendica API Path"] = "Ruta a la API de Friendica"; +App::$strings["Friendica login name"] = "Nombre de inicio de sesión en Friendica"; +App::$strings["Friendica password"] = "Contraseña de Friendica"; +App::$strings["Friendica Crosspost Connector"] = "Friendica Crosspost Connector"; +App::$strings["Post to Friendica"] = "Publicar en Friendica"; +App::$strings["Post to WordPress"] = "Publicar en WordPress"; +App::$strings["Wordpress Settings saved."] = "Se han guardado los ajustes de WordPress."; +App::$strings["Wordpress Post App"] = "App Publicar en Wordpress"; +App::$strings["Post to WordPress or anything else which uses the wordpress XMLRPC API"] = "Publicar en WordPress o cualquier otra cosa que utilice la API XMLRPC de wordpress"; +App::$strings["WordPress username"] = "Nombre de usuario de WordPress"; +App::$strings["WordPress password"] = "Contraseña de WordPress"; +App::$strings["WordPress API URL"] = "URL de la API de WordPress"; +App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Habitualmente https://your-blog.tld/xmlrpc.php"; +App::$strings["WordPress blogid"] = "Blog de WordPress"; +App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco"; +App::$strings["Post to WordPress by default"] = "Publicar en WordPress por defecto"; +App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Reenviar comentarios (requerido por el plugin hubzilla_wp)"; +App::$strings["Wordpress Post"] = "Publicar en Wordpress"; +App::$strings["No server specified"] = "No se ha especificado ningún servidor"; +App::$strings["Posts imported"] = "Entradas importadas"; +App::$strings["Files imported"] = "Ficheros importados"; +App::$strings["This addon app copies existing content and file storage to a cloned/copied channel. Once the app is installed, visit the newly installed app. This will allow you to set the location of your original channel and an optional date range of files/conversations to copy."] = "Este complemento copia el contenido existente y el almacenamiento de ficheros en un canal clonado/copiado. Una vez instalada la aplicación, visite la aplicación recién instalada. Esto le permitirá establecer la ubicación de su canal original y un rango de fechas opcional de ficheros/conversaciones para copiar."; +App::$strings["Content Import"] = "Importación de contenidos"; +App::$strings["This will import all your conversations and cloud files from a cloned channel on another server. This may take a while if you have lots of posts and or files."] = "Esto importará todas sus conversaciones y archivos de nube de un canal clonado en otro servidor. El proceso puede tardar un poco si tiene muchos mensajes y/o ficheros."; +App::$strings["Include posts"] = "Incluir entradas"; +App::$strings["Conversations, Articles, Cards, and other posted content"] = "Conversaciones, artículos, fichas y otros contenidos publicados"; +App::$strings["Include files"] = "Incluir ficheros"; +App::$strings["Files, Photos and other cloud storage"] = "Archivos, fotos y otro tipo de almacenamiento en la nube"; +App::$strings["Original Server base URL"] = "URL base del servidor original"; +App::$strings["Since modified date yyyy-mm-dd"] = "Modificado desde la fecha yyyy-mm-dd"; +App::$strings["Until modified date yyyy-mm-dd"] = "Modificado hasta la fecha yyyy-mm-dd"; +App::$strings["Set your location"] = "Establecer su ubicación"; +App::$strings["Clear browser location"] = "Eliminar los datos de localización geográfica del navegador"; App::$strings["Insert web link"] = "Insertar enlace web"; +App::$strings["Embed (existing) photo from your photo albums"] = "Insertar una foto de sus álbumes"; +App::$strings["Please enter a link URL:"] = "Por favor, introduzca la dirección del enlace:"; +App::$strings["Tag term:"] = "Término de la etiqueta:"; +App::$strings["Where are you right now?"] = "¿Donde está ahora?"; +App::$strings["Choose images to embed"] = "Elegir imágenes para incluir"; +App::$strings["Choose an album"] = "Elegir un álbum"; +App::$strings["Choose a different album..."] = "Elegir un álbum diferente..."; +App::$strings["Error getting album list"] = "Error al obtener la lista de álbumes"; +App::$strings["Error getting photo link"] = "Error al obtener el enlace de la foto"; +App::$strings["Error getting album"] = "Error al obtener el álbum"; +App::$strings["Comments enabled"] = "Comentarios habilitados"; +App::$strings["Comments disabled"] = "Comentarios deshabilitados"; +App::$strings["Preview"] = "Previsualizar"; +App::$strings["Share"] = "Compartir"; +App::$strings["Page link name"] = "Nombre del enlace de la página"; +App::$strings["Post as"] = "Publicar como"; +App::$strings["Bold"] = "Negrita"; +App::$strings["Italic"] = "Itálico "; +App::$strings["Underline"] = "Subrayar"; +App::$strings["Quote"] = "Citar"; +App::$strings["Code"] = "Código"; +App::$strings["Attach/Upload file"] = "Adjuntar/cargar fichero"; +App::$strings["Embed an image from your albums"] = "Incluir una imagen de sus álbumes"; +App::$strings["Cancel"] = "Cancelar"; +App::$strings["OK"] = "OK"; +App::$strings["Toggle voting"] = "Cambiar votación"; +App::$strings["Disable comments"] = "Dehabilitar los comentarios"; +App::$strings["Toggle comments"] = "Activar o desactivar los comentarios"; App::$strings["Title (optional)"] = "Título (opcional)"; -App::$strings["Edit Article"] = "Editar el artículo"; -App::$strings["Nothing to import."] = "No hay nada para importar."; -App::$strings["Unable to download data from old server"] = "No se han podido descargar datos de su antiguo servidor"; -App::$strings["Imported file is empty."] = "El fichero importado está vacío."; -App::$strings["Warning: Database versions differ by %1\$d updates."] = "Atención: Las versiones de la base de datos difieren en %1\$d actualizaciones."; -App::$strings["Import completed"] = "Importación completada"; -App::$strings["Import Items"] = "Importar elementos"; -App::$strings["Use this form to import existing posts and content from an export file."] = "Utilice este formulario para importar entradas y contenido desde un archivo de exportación."; -App::$strings["File to Upload"] = "Fichero para subir"; -App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Ha creado %1$.0f de %2$.0f canales permitidos."; -App::$strings["Loading"] = "Cargando"; -App::$strings["Your real name is recommended."] = "Se recomienda su nombre real."; -App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\""; -App::$strings["This will be used to create a unique network address (like an email address)."] = "Esto se utilizará para crear una dirección de red única (como una dirección de correo electrónico)."; -App::$strings["Allowed characters are a-z 0-9, - and _"] = "Los caracteres permitidos son a-z 0-9, - and _"; -App::$strings["Channel name"] = "Nombre del canal"; -App::$strings["Choose a short nickname"] = "Elija un alias corto"; -App::$strings["Channel role and privacy"] = "Clase de canal y privacidad"; -App::$strings["Select a channel permission role compatible with your usage needs and privacy requirements."] = "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad."; -App::$strings["Read more about channel permission roles"] = "Leer más sobre los roles y permisos"; -App::$strings["Create a Channel"] = "Crear un canal"; -App::$strings["A channel is a unique network identity. It can represent a person (social network profile), a forum (group), a business or celebrity page, a newsfeed, and many other things."] = "Un canal es una identidad única en la red. Puede representar a una persona (un perfil de una red social), un foro o grupo, un negocio o una página de una celebridad, un \"feed\" de noticias, y muchas otras cosas."; -App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "O <a href=\"import\">importar un canal </a> desde otro lugar."; -App::$strings["Validate"] = "Validar"; -App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña."; -App::$strings["Remove This Channel"] = "Eliminar este canal"; -App::$strings["WARNING: "] = "ATENCIÓN:"; -App::$strings["This channel will be completely removed from the network. "] = "Este canal va a ser completamente eliminado de la red. "; -App::$strings["This action is permanent and can not be undone!"] = "¡Esta acción tiene carácter definitivo y no se puede deshacer!"; -App::$strings["Please enter your password for verification:"] = "Por favor, introduzca su contraseña para su verificación:"; -App::$strings["Remove this channel and all its clones from the network"] = "Eliminar este canal y todos sus clones de la red"; -App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"; -App::$strings["Remove Channel"] = "Eliminar el canal"; -App::$strings["Files: shared with me"] = "Ficheros: compartidos conmigo"; -App::$strings["NEW"] = "NUEVO"; -App::$strings["Size"] = "Tamaño"; -App::$strings["Last Modified"] = "Última modificación"; -App::$strings["Remove all files"] = "Eliminar todos los ficheros"; -App::$strings["Remove this file"] = "Eliminar este fichero"; -App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Instalación"; -App::$strings["Could not connect to database."] = "No se ha podido conectar a la base de datos."; -App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS."; -App::$strings["Could not create table."] = "No se puede crear la tabla."; -App::$strings["Your site database has been installed."] = "La base de datos del sitio ha sido instalada."; -App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos."; -App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Por favor, lea el fichero \"install/INSTALL.txt\"."; -App::$strings["System check"] = "Verificación del sistema"; -App::$strings["Check again"] = "Verificar de nuevo"; -App::$strings["Database connection"] = "Conexión a la base de datos"; -App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Para instalar \$Projectname es necesario saber cómo conectar con su base de datos."; -App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes."; -App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir."; -App::$strings["Database Server Name"] = "Nombre del servidor de base de datos"; -App::$strings["Default is 127.0.0.1"] = "De forma predeterminada es 127.0.0.1"; -App::$strings["Database Port"] = "Puerto de la base de datos"; -App::$strings["Communication port number - use 0 for default"] = "Número del puerto de comunicaciones - use 0 como valor por defecto"; -App::$strings["Database Login Name"] = "Usuario de la base de datos"; -App::$strings["Database Login Password"] = "Contraseña de acceso a la base de datos"; -App::$strings["Database Name"] = "Nombre de la base de datos"; -App::$strings["Database Type"] = "Tipo de base de datos"; -App::$strings["Site administrator email address"] = "Dirección de correo electrónico del administrador del sitio"; -App::$strings["Your account email address must match this in order to use the web admin panel."] = "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web."; -App::$strings["Website URL"] = "Dirección del sitio web"; -App::$strings["Please use SSL (https) URL if available."] = "Por favor, use SSL (https) si está disponible."; -App::$strings["Please select a default timezone for your website"] = "Por favor, selecciones el huso horario por defecto de su sitio web"; -App::$strings["Site settings"] = "Ajustes del sitio"; -App::$strings["PHP version 7.1 or greater is required."] = "Se requiere la versión 7.1 o superior de PHP."; -App::$strings["PHP version"] = "Versión de PHP"; -App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web."; -App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron."; -App::$strings["PHP executable path"] = "Ruta del ejecutable PHP"; -App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación."; -App::$strings["Command line PHP"] = "PHP en línea de comandos"; -App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado."; -App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"."; -App::$strings["This is required for message delivery to work."] = "Esto es necesario para que funcione la transmisión de mensajes."; -App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv"; -App::$strings["This is not sufficient to upload larger images or files. You should be able to upload at least 4 MB at once."] = "Esto no es suficiente para subir imágenes o archivos más grandes. Usted debe ser capaz de subir al menos 4 MB a la vez."; -App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez."; -App::$strings["You can adjust these settings in the server php.ini file."] = "Puede ajustar estos valores en el fichero php.ini de su servidor."; -App::$strings["PHP upload limits"] = "Límites PHP de subida"; -App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado."; -App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"."; -App::$strings["Generate encryption keys"] = "Generar claves de cifrado"; -App::$strings["libCurl PHP module"] = "módulo libCurl PHP"; -App::$strings["GD graphics PHP module"] = "módulo PHP GD graphics"; -App::$strings["OpenSSL PHP module"] = "módulo PHP OpenSSL"; -App::$strings["PDO database PHP module"] = "Módulo PHP de la base de datos PDO "; -App::$strings["mb_string PHP module"] = "módulo PHP mb_string"; -App::$strings["xml PHP module"] = "módulo PHP xml"; -App::$strings["zip PHP module"] = "Módulo zip PHP"; -App::$strings["Apache mod_rewrite module"] = "módulo Apache mod_rewrite "; -App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado."; -App::$strings["exec"] = "ejecutable"; -App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini"; -App::$strings["shell_exec"] = "shell_exec"; -App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini"; -App::$strings["Error: libCURL PHP module required but not installed."] = "Error: se necesita el módulo PHP libCURL pero no está instalado."; -App::$strings["Error: GD PHP module with JPEG support or ImageMagick graphics library required but not installed."] = "Error: Se requiere el módulo GD PHP con soporte para JPEG o la biblioteca de gráficos ImageMagick, pero no está instalado."; -App::$strings["Error: openssl PHP module required but not installed."] = "Error: el módulo PHP openssl es necesario, pero no está instalado."; -App::$strings["Error: PDO database PHP module missing a driver for either mysql or pgsql."] = "Error: El módulo PHP de la base de datos PDO carece de un controlador para mysql o pgsql."; -App::$strings["Error: PDO database PHP module required but not installed."] = "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado."; -App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el módulo PHP mb_string es necesario, pero no está instalado."; -App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el módulo PHP xml es necesario para DAV, pero no está instalado."; -App::$strings["Error: zip PHP module required but not installed."] = "Error: se requiere el módulo zip PHP pero no está instalado."; -App::$strings[".htconfig.php is writable"] = ".htconfig.php tiene permisos de escritura"; -App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor."; -App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos."; -App::$strings["Please see install/INSTALL.txt for additional information."] = "Por favor, consulte install/INSTALL.txt para más información."; -App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización."; -App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal."; -App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)."; -App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene."; -App::$strings["%s is writable"] = "%s tiene permisos de escritura"; -App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior"; -App::$strings["store is writable"] = "\"store\" tiene permisos de escritura"; -App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio."; -App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo."; -App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor."; -App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web."; -App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos."; -App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos."; -App::$strings["If you are confident that the certificate is valid and signed by a trusted authority, check to see if you have failed to install an intermediate cert. These are not normally required by browsers, but are required for server-to-server communications."] = "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor."; -App::$strings["SSL certificate validation"] = "validación del certificado SSL"; -App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:"; -App::$strings["Url rewrite is working"] = "La reescritura de las direcciones funciona correctamente"; -App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor."; -App::$strings["Errors encountered creating database tables."] = "Se han encontrado errores al crear las tablas de la base de datos."; -App::$strings["<h1>What next?</h1>"] = "<h1>¿Qué sigue?</h1>"; -App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"."; -App::$strings["Continue"] = "Continuar"; -App::$strings["Premium Channel App"] = "App Canal premium"; -App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal"; -App::$strings["Premium Channel Setup"] = "Configuración del canal premium"; -App::$strings["Enable premium channel connection restrictions"] = "Habilitar restricciones de conexión del canal premium"; -App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc."; -App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:"; -App::$strings["Potential connections will then see the following text before proceeding:"] = "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:"; -App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página."; -App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)"; -App::$strings["Restricted or Premium Channel"] = "Canal premium o restringido"; -App::$strings["Queue Statistics"] = "Estadísticas de la cola"; -App::$strings["Total Entries"] = "Total de entradas"; -App::$strings["Priority"] = "Prioridad"; -App::$strings["Destination URL"] = "Dirección de destino"; -App::$strings["Mark hub permanently offline"] = "Marcar el servidor como permanentemente fuera de línea"; -App::$strings["Empty queue for this hub"] = "Vaciar la cola para este servidor"; -App::$strings["Last known contact"] = "Último contacto conocido"; -App::$strings["Off"] = "Desactivado"; -App::$strings["On"] = "Activado"; -App::$strings["Lock feature %s"] = "Bloquear la funcionalidad %s"; -App::$strings["Manage Additional Features"] = "Gestionar las funcionalidades"; -App::$strings["Update has been marked successful"] = "La actualización ha sido marcada como exitosa"; -App::$strings["Verification of update %s failed. Check system logs."] = "Error en la verificación de la actualización %s. Compruebe los registros del sistema."; -App::$strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente."; -App::$strings["Verifying update %s did not return a status. Unknown if it succeeded."] = "La verificación de la actualización %s no devuelve un estado. Desconocido si tuvo éxito."; -App::$strings["Update %s does not contain a verification function."] = "La actualización %s no contiene una función de verificación."; -App::$strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s."; -App::$strings["Executing update procedure %s failed. Check system logs."] = "Error al ejecutar el procedimiento de actualización %s. Compruebe los registros del sistema."; -App::$strings["Update %s did not return a status. It cannot be determined if it was successful."] = "La actualización %s no devuelve un estado. No se puede determinar si tuvo éxito."; -App::$strings["Failed Updates"] = "Han fallado las actualizaciones"; -App::$strings["Mark success (if update was manually applied)"] = "Marcar como exitosa (si la actualización se ha hecho manualmente)"; -App::$strings["Attempt to verify this update if a verification procedure exists"] = "Intentar verificar esta actualización si existe un procedimiento de verificación."; -App::$strings["Attempt to execute this update step automatically"] = "Intentar ejecutar este paso de actualización automáticamente"; -App::$strings["No failed updates."] = "No ha fallado ninguna actualización."; -App::$strings["%s account blocked/unblocked"] = array( - 0 => "%s cuenta bloqueada/desbloqueada", - 1 => "%s cuenta bloqueada/desbloqueada", -); -App::$strings["%s account deleted"] = array( - 0 => "%s cuentas eliminadas", - 1 => "%s cuentas eliminadas", -); -App::$strings["Account not found"] = "Cuenta no encontrada"; -App::$strings["Account '%s' deleted"] = "La cuenta '%s' ha sido eliminada"; -App::$strings["Account '%s' blocked"] = "La cuenta '%s' ha sido bloqueada"; -App::$strings["Account '%s' unblocked"] = "La cuenta '%s' ha sido desbloqueada"; -App::$strings["Administration"] = "Administración"; -App::$strings["Accounts"] = "Cuentas"; -App::$strings["select all"] = "seleccionar todo"; -App::$strings["Registrations waiting for confirm"] = "Inscripciones en espera de confirmación"; -App::$strings["Request date"] = "Fecha de solicitud"; -App::$strings["No registrations."] = "Sin registros."; -App::$strings["Approve"] = "Aprobar"; -App::$strings["Deny"] = "Rechazar"; -App::$strings["Block"] = "Bloquear"; -App::$strings["Unblock"] = "Desbloquear"; -App::$strings["ID"] = "ID"; -App::$strings["All Channels"] = "Todos los canales"; -App::$strings["Register date"] = "Fecha de registro"; -App::$strings["Last login"] = "Último acceso"; -App::$strings["Expires"] = "Caduca"; -App::$strings["Service Class"] = "Clase de servicio"; -App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"; -App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"; -App::$strings["Log settings updated."] = "Actualizado el informe de configuraciones."; -App::$strings["Logs"] = "Informes"; -App::$strings["Clear"] = "Vaciar"; -App::$strings["Debugging"] = "Depuración"; -App::$strings["Log file"] = "Fichero de informe"; -App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal."; -App::$strings["Log level"] = "Nivel de depuración"; -App::$strings["%s channel censored/uncensored"] = array( - 0 => "%s canales censurados/no censurados", - 1 => "%s canales censurados/no censurados", -); -App::$strings["%s channel code allowed/disallowed"] = array( - 0 => "%s código permitido/no permitido al canal", - 1 => "%s código permitido/no permitido al canal", -); -App::$strings["%s channel deleted"] = array( - 0 => "%s canales eliminados", - 1 => "%s canales eliminados", -); -App::$strings["Channel not found"] = "Canal no encontrado"; -App::$strings["Channel '%s' deleted"] = "Canal '%s' eliminado"; -App::$strings["Channel '%s' censored"] = "Canal '%s' censurado"; -App::$strings["Channel '%s' uncensored"] = "Canal '%s' no censurado"; -App::$strings["Channel '%s' code allowed"] = "Código permitido al canal '%s'"; -App::$strings["Channel '%s' code disallowed"] = "Código no permitido al canal '%s'"; -App::$strings["Channels"] = "Canales"; -App::$strings["Censor"] = "Censurar"; -App::$strings["Uncensor"] = "No censurar"; -App::$strings["Allow Code"] = "Permitir código"; -App::$strings["Disallow Code"] = "No permitir código"; -App::$strings["Channel"] = "Canal"; -App::$strings["UID"] = "UID"; -App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?"; -App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?"; -App::$strings["Theme settings updated."] = "Ajustes del tema actualizados."; -App::$strings["No themes found."] = "No se han encontrado temas."; -App::$strings["Item not found."] = "Elemento no encontrado."; -App::$strings["Disable"] = "Desactivar"; -App::$strings["Enable"] = "Activar"; -App::$strings["Screenshot"] = "Instantánea de pantalla"; -App::$strings["Themes"] = "Temas"; -App::$strings["Toggle"] = "Cambiar"; -App::$strings["Settings"] = "Ajustes"; -App::$strings["Author: "] = "Autor:"; -App::$strings["Maintainer: "] = "Mantenedor:"; -App::$strings["[Experimental]"] = "[Experimental]"; -App::$strings["[Unsupported]"] = "[No soportado]"; -App::$strings["Site settings updated."] = "Ajustes del sitio actualizados."; -App::$strings["Default"] = "Predeterminado"; -App::$strings["%s - (Incompatible)"] = "%s - (Incompatible)"; -App::$strings["mobile"] = "móvil"; -App::$strings["experimental"] = "experimental"; -App::$strings["unsupported"] = "no soportado"; -App::$strings["Yes - with approval"] = "Sí - con aprobación"; -App::$strings["My site is not a public server"] = "Mi sitio no es un servidor público"; -App::$strings["My site has paid access only"] = "Mi sitio es un servicio de pago"; -App::$strings["My site has free access only"] = "Mi sitio es un servicio gratuito"; -App::$strings["My site offers free accounts with optional paid upgrades"] = "Mi sitio ofrece cuentas gratuitas con opciones extra de pago"; -App::$strings["Default permission role for new accounts"] = "Permisos de rol por defecto para las nuevas cuentas"; -App::$strings["This role will be used for the first channel created after registration."] = "Este rol se utilizará para el primer canal creado después del registro."; -App::$strings["Site"] = "Sitio"; -App::$strings["Registration"] = "Registro"; -App::$strings["File upload"] = "Subir fichero"; -App::$strings["Policies"] = "Políticas"; -App::$strings["Advanced"] = "Avanzado"; -App::$strings["Site name"] = "Nombre del sitio"; -App::$strings["Banner/Logo"] = "Banner/Logo"; -App::$strings["Unfiltered HTML/CSS/JS is allowed"] = "Se permite HTML/CSS/JS sin filtrar"; -App::$strings["Administrator Information"] = "Información del Administrador"; -App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"; -App::$strings["Site Information"] = "Información sobre el sitio"; -App::$strings["Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here"] = "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"; -App::$strings["System language"] = "Idioma del sistema"; -App::$strings["System theme"] = "Tema gráfico del sistema"; -App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>"; -App::$strings["Allow Feeds as Connections"] = "Permitir contenidos RSS como conexiones"; -App::$strings["(Heavy system resource usage)"] = "(Uso intenso de los recursos del sistema)"; -App::$strings["Maximum image size"] = "Tamaño máximo de la imagen"; -App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites."; -App::$strings["Does this site allow new member registration?"] = "¿Debe este sitio permitir el registro de nuevos miembros?"; -App::$strings["Invitation only"] = "Solo con una invitación"; -App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"."; -App::$strings["Minimum age"] = "Edad mínima"; -App::$strings["Minimum age (in years) for who may register on this site."] = "Edad mínima (en años) para poder registrarse en este sitio."; -App::$strings["Which best describes the types of account offered by this hub?"] = "¿Cómo describiría el tipo de servicio ofrecido por este servidor?"; -App::$strings["This is displayed on the public server site list."] = "Esto se muestra en la lista de sitios de servidores públicos."; -App::$strings["Register text"] = "Texto del registro"; -App::$strings["Will be displayed prominently on the registration page."] = "Se mostrará de forma destacada en la página de registro."; -App::$strings["Site homepage to show visitors (default: login box)"] = "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)"; -App::$strings["example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "ejemplo: 'pubstream' para mostrar el stream público, 'page/sys/home' para mostrar una página web del sistema llamada 'home' o 'include:home.html' para incluir un archivo."; -App::$strings["Preserve site homepage URL"] = "Preservar la dirección de la página personal"; -App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla."; -App::$strings["Accounts abandoned after x days"] = "Cuentas abandonadas después de x días"; -App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo."; -App::$strings["Allowed friend domains"] = "Dominios amigos permitidos"; -App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio."; -App::$strings["Verify Email Addresses"] = "Verificar las direcciones de correo electrónico"; -App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)."; -App::$strings["Force publish"] = "Forzar la publicación"; -App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio."; -App::$strings["Import Public Streams"] = "Importar contenido público"; -App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas."; -App::$strings["Site only Public Streams"] = "Solo contenido público en este sitio"; -App::$strings["Allow access to public content originating only from this site if Imported Public Streams are disabled."] = "Permitir el acceso al contenido público originado sólo desde este sitio si los \"streams\" públicos Importados están deshabilitados."; -App::$strings["Allow anybody on the internet to access the Public streams"] = "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos"; -App::$strings["Disable to require authentication before viewing. Warning: this content is unmoderated."] = "Desactivar para requerir autenticación antes de la visualización. Advertencia: este contenido no está moderado."; -App::$strings["Only import Public stream posts with this text"] = "Importar solo entradas del stream púlbico con este texto "; -App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo"; -App::$strings["Do not import Public stream posts with this text"] = "No importar entradas del stream público con este texto "; -App::$strings["Login on Homepage"] = "Iniciar sesión en la página personal"; -App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido."; -App::$strings["Enable context help"] = "Habilitar la ayuda contextual"; -App::$strings["Display contextual help for the current page when the help button is pressed."] = "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda."; -App::$strings["Reply-to email address for system generated email."] = "Dirección de respuesta para el correo electrónico generado por el sistema."; -App::$strings["Sender (From) email address for system generated email."] = "Dirección del remitente (From) para el correo electrónico generado por el sistema."; -App::$strings["Name of email sender for system generated email."] = "Nombre del remitente del correo electrónico generado por el sistema."; -App::$strings["Directory Server URL"] = "URL del servidor de directorio"; -App::$strings["Default directory server"] = "Servidor de directorio predeterminado"; -App::$strings["Proxy user"] = "Usuario del proxy"; -App::$strings["Proxy URL"] = "Dirección del proxy"; -App::$strings["Network timeout"] = "Tiempo de espera de la red"; -App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)"; -App::$strings["Delivery interval"] = "Intervalo de entrega"; -App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados."; -App::$strings["Deliveries per process"] = "Intentos de envío por proceso"; -App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5."; -App::$strings["Queue Threshold"] = "Umbral de la cola de espera"; -App::$strings["Always defer immediate delivery if queue contains more than this number of entries."] = "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas."; -App::$strings["Poll interval"] = "Intervalo máximo de tiempo entre dos mensajes sucesivos"; -App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega."; -App::$strings["Path to ImageMagick convert program"] = "Ruta al programa de conversión de ImageMagick"; -App::$strings["If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert"] = "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert"; -App::$strings["Allow SVG thumbnails in file browser"] = "Permitir miniaturas SVG en el navegador de archivos"; -App::$strings["WARNING: SVG images may contain malicious code."] = "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso."; -App::$strings["Maximum Load Average"] = "Carga media máxima"; -App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."; -App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)"; -App::$strings["0 for no expiration of imported content"] = "0 para que no caduque el contenido importado"; -App::$strings["Do not expire any posts which have comments less than this many days ago"] = "No caduque ningún mensaje que tenga menos comentarios que este hace muchos días"; -App::$strings["Public servers: Optional landing (marketing) webpage for new registrants"] = "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros"; -App::$strings["Create this page first. Default is %s/register"] = "Crear esta página primero. Por defecto es %s/register"; -App::$strings["Page to display after creating a new channel"] = "Página a mostrar después de la creación de un nuevo canal"; -App::$strings["Default: profiles"] = "Perfiles predeterminados"; -App::$strings["Optional: site location"] = "Opcional: ubicación del sitio"; -App::$strings["Region or country"] = "Región o país"; -App::$strings["Plugin %s disabled."] = "Extensión %s desactivada."; -App::$strings["Plugin %s enabled."] = "Extensión %s activada."; -App::$strings["Addons"] = "Addons"; -App::$strings["Minimum project version: "] = "Versión mínima del proyecto:"; -App::$strings["Maximum project version: "] = "Versión máxima del proyecto:"; -App::$strings["Minimum PHP version: "] = "Versión mínima de PHP:"; -App::$strings["Compatible Server Roles: "] = "Configuraciones compatibles con este servidor:"; -App::$strings["Requires: "] = "Se requiere:"; -App::$strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles"; -App::$strings["Enter the public git repository URL of the addon repo."] = "Introduzca la URL del repositorio público de git del addon repo."; -App::$strings["Addon repo git URL"] = "URL del repositorio git del addon"; -App::$strings["Custom repo name"] = "Nombre personalizado del repositorio"; -App::$strings["(optional)"] = "(opcional)"; -App::$strings["Download Addon Repo"] = "Descargar el repositorio"; -App::$strings["Install new repo"] = "Instalar un nuevo repositorio"; -App::$strings["Install"] = "Instalar"; -App::$strings["Manage Repos"] = "Gestionar los repositorios"; -App::$strings["Installed Addon Repositories"] = "Repositorioe de addons instalados"; -App::$strings["Install a New Addon Repository"] = "Instalar un nuevo repositorio de addons"; -App::$strings["Switch branch"] = "Cambiar la rama"; -App::$strings["Remove"] = "Eliminar"; -App::$strings["New Profile Field"] = "Nuevo campo en el perfil"; -App::$strings["Field nickname"] = "Alias del campo"; -App::$strings["System name of field"] = "Nombre del campo en el sistema"; -App::$strings["Input type"] = "Tipo de entrada"; -App::$strings["Field Name"] = "Nombre del campo"; -App::$strings["Label on profile pages"] = "Etiqueta a mostrar en la página del perfil"; -App::$strings["Help text"] = "Texto de ayuda"; -App::$strings["Additional info (optional)"] = "Información adicional (opcional)"; -App::$strings["Save"] = "Guardar"; -App::$strings["Field definition not found"] = "Definición del campo no encontrada"; -App::$strings["Edit Profile Field"] = "Modificar el campo del perfil"; -App::$strings["Profile Fields"] = "Campos del perfil"; -App::$strings["Basic Profile Fields"] = "Campos básicos del perfil"; -App::$strings["Advanced Profile Fields"] = "Campos avanzados del perfil"; -App::$strings["(In addition to basic fields)"] = "(Además de los campos básicos)"; -App::$strings["All available fields"] = "Todos los campos disponibles"; -App::$strings["Custom Fields"] = "Campos personalizados"; -App::$strings["Create Custom Field"] = "Crear un campo personalizado"; -App::$strings["Password changed for account %d."] = "Ha cambiado la contraseña para la cuenta %d."; -App::$strings["Account settings updated."] = "Se han actualizado los ajustes de la cuenta."; -App::$strings["Account not found."] = "No se ha encontrado la cuenta."; -App::$strings["Account Edit"] = "Editar la cuenta"; -App::$strings["New Password"] = "Nueva contraseña"; -App::$strings["New Password again"] = "Nueva contraseña otra vez"; -App::$strings["Account language (for emails)"] = "Idioma de la cuenta (para los correos electrónicos)"; -App::$strings["Service class"] = "Clase de servicio"; -App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro."; -App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: "; -App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"; -App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita."; -App::$strings["Security"] = "Seguridad"; -App::$strings["Block public"] = "Bloquear páginas públicas"; -App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado."; -App::$strings["Provide a cloud root directory"] = "Proporcionar un directorio raíz de la nube"; -App::$strings["The cloud root directory lists all channel names which provide public files"] = "El directorio raíz de la nube lista todos los nombres de canales que proporcionan archivos públicos"; -App::$strings["Show total disk space available to cloud uploads"] = "Mostrar el espacio total disponible en el disco para las cargas en la nube"; -App::$strings["Set \"Transport Security\" HTTP header"] = "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP"; -App::$strings["Set \"Content Security Policy\" HTTP header"] = "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP"; -App::$strings["Allowed email domains"] = "Se aceptan dominios de correo electrónico"; -App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. "; -App::$strings["Not allowed email domains"] = "No se permiten dominios de correo electrónico"; -App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado."; -App::$strings["Allow communications only from these sites"] = "Permitir la comunicación solo desde estos sitios"; -App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; -App::$strings["Block communications from these sites"] = "Bloquear la comunicación desde estos sitios"; -App::$strings["Allow communications only from these channels"] = "Permitir la comunicación solo desde estos canales"; -App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; -App::$strings["Block communications from these channels"] = "Bloquear la comunicación desde estos canales"; -App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)."; -App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Permitir contenido HTML sin filtrar sólo desde estos dominios "; -App::$strings["One site per line. By default embedded content is filtered."] = "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada."; -App::$strings["Block embedded HTML from these domains"] = "Bloquear contenido con HTML incorporado desde estos dominios"; -App::$strings["Remote privacy information not available."] = "La información privada remota no está disponible."; -App::$strings["Visible to:"] = "Visible para:"; -App::$strings["__ctx:acl__ Profile"] = "Perfil"; -App::$strings["Comment approved"] = "El comentario ha sido aprobado"; -App::$strings["Comment deleted"] = "Se ha eliminado el comentario"; -App::$strings["Friends"] = "Amigos/as"; -App::$strings["Settings updated."] = "Ajustes actualizados."; -App::$strings["Nobody except yourself"] = "Nadie excepto usted"; -App::$strings["Only those you specifically allow"] = "Solo aquellos a los que usted permita explícitamente"; -App::$strings["Approved connections"] = "Conexiones aprobadas"; -App::$strings["Any connections"] = "Cualquier conexión"; -App::$strings["Anybody on this website"] = "Cualquiera en este sitio web"; -App::$strings["Anybody in this network"] = "Cualquiera en esta red"; -App::$strings["Anybody authenticated"] = "Cualquiera que esté autenticado"; -App::$strings["Anybody on the internet"] = "Cualquiera en internet"; -App::$strings["Publish your default profile in the network directory"] = "Publicar su perfil principal en el directorio de la red"; -App::$strings["Allow us to suggest you as a potential friend to new members?"] = "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?"; -App::$strings["or"] = "o"; -App::$strings["Your channel address is"] = "Su dirección de canal es"; -App::$strings["Your files/photos are accessible via WebDAV at"] = "Sus archivos y fotos son accesibles a través de WebDAV en "; -App::$strings["Automatic membership approval"] = "Aprobación automática de nuevos miembros"; -App::$strings["If enabled, connection requests will be approved without your interaction"] = "Si está habilitado, las solicitudes de conexión serán aprobadas sin su intervención."; -App::$strings["Channel Settings"] = "Ajustes del canal"; -App::$strings["Basic Settings"] = "Configuración básica"; -App::$strings["Full Name:"] = "Nombre completo:"; -App::$strings["Email Address:"] = "Dirección de correo electrónico:"; -App::$strings["Your Timezone:"] = "Su huso horario:"; -App::$strings["Default Post Location:"] = "Localización geográfica predeterminada para sus publicaciones:"; -App::$strings["Geographical location to display on your posts"] = "Localización geográfica que debe mostrarse en sus publicaciones"; -App::$strings["Use Browser Location:"] = "Usar la localización geográfica del navegador:"; -App::$strings["Adult Content"] = "Contenido solo para adultos"; -App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)"; -App::$strings["Security and Privacy Settings"] = "Configuración de seguridad y privacidad"; -App::$strings["Your permissions are already configured. Click to view/adjust"] = "Sus permisos ya están configurados. Pulse para ver/ajustar"; -App::$strings["Hide my online presence"] = "Ocultar mi presencia en línea"; -App::$strings["Prevents displaying in your profile that you are online"] = "Evitar mostrar en su perfil que está en línea"; -App::$strings["Simple Privacy Settings:"] = "Configuración de privacidad sencilla:"; -App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>"; -App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>"; -App::$strings["Private - <em>default private, never open or public</em>"] = "Privado - <em>por defecto, privado, nunca abierto o público</em>"; -App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>"; -App::$strings["Allow others to tag your posts"] = "Permitir a otros etiquetar sus publicaciones"; -App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva."; -App::$strings["Channel Permission Limits"] = "Límites de los permisos del canal"; -App::$strings["Expire other channel content after this many days"] = "Caducar contenido de otros canales después de este número de días"; -App::$strings["0 or blank to use the website limit."] = "0 o en blanco para usar el límite del sitio web."; -App::$strings["This website expires after %d days."] = "Este sitio web caduca después de %d días."; -App::$strings["This website does not expire imported content."] = "Este sitio web no caduca el contenido importado."; -App::$strings["The website limit takes precedence if lower than your limit."] = "El límite del sitio web tiene prioridad si es inferior a su propio límite."; -App::$strings["Maximum Friend Requests/Day:"] = "Máximo de solicitudes de amistad por día:"; -App::$strings["May reduce spam activity"] = "Podría reducir la actividad de spam"; -App::$strings["Default Privacy Group"] = "Grupo de canales predeterminado"; -App::$strings["Use my default audience setting for the type of object published"] = "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación"; -App::$strings["Default permissions category"] = "Categoría de permisos por defecto"; -App::$strings["Maximum private messages per day from unknown people:"] = "Máximo de mensajes privados por día de gente desconocida:"; -App::$strings["Useful to reduce spamming"] = "Útil para reducir el envío de correo no deseado"; -App::$strings["Notification Settings"] = "Configuración de las notificaciones"; -App::$strings["By default post a status message when:"] = "Por defecto, enviar un mensaje de estado cuando:"; -App::$strings["accepting a friend request"] = "Acepte una solicitud de amistad"; -App::$strings["joining a forum/community"] = "al unirse a un foro o comunidad"; -App::$strings["making an <em>interesting</em> profile change"] = "Realice un cambio <em>interesante</em> en su perfil"; -App::$strings["Send a notification email when:"] = "Enviar una notificación por correo electrónico cuando:"; -App::$strings["You receive a connection request"] = "Reciba una solicitud de conexión"; -App::$strings["Your connections are confirmed"] = "Sus conexiones hayan sido confirmadas"; -App::$strings["Someone writes on your profile wall"] = "Alguien escriba en la página de su perfil (\"muro\")"; -App::$strings["Someone writes a followup comment"] = "Alguien escriba un comentario sobre sus publicaciones"; -App::$strings["You receive a private message"] = "Reciba un mensaje privado"; -App::$strings["You receive a friend suggestion"] = "Reciba una sugerencia de amistad"; -App::$strings["You are tagged in a post"] = "Usted sea etiquetado en una publicación"; -App::$strings["You are poked/prodded/etc. in a post"] = "Reciba un toque o incitación en una publicación"; -App::$strings["Someone likes your post/comment"] = "Alguien muestre agrado por su entrada o comentario"; -App::$strings["Show visual notifications including:"] = "Mostrar notificaciones visuales que incluyan:"; -App::$strings["Unseen stream activity"] = "Actividad del stream no vista"; -App::$strings["Unseen channel activity"] = "Actividad no vista en el canal"; -App::$strings["Unseen private messages"] = "Mensajes privados no leídos"; -App::$strings["Recommended"] = "Recomendado"; -App::$strings["Upcoming events"] = "Próximos eventos"; -App::$strings["Events today"] = "Eventos de hoy"; -App::$strings["Upcoming birthdays"] = "Próximos cumpleaños"; -App::$strings["Not available in all themes"] = "No disponible en todos los temas"; -App::$strings["System (personal) notifications"] = "Notificaciones del sistema (personales)"; -App::$strings["System info messages"] = "Mensajes de información del sistema"; -App::$strings["System critical alerts"] = "Alertas críticas del sistema"; -App::$strings["New connections"] = "Nuevas conexiones"; -App::$strings["System Registrations"] = "Registros del sistema"; -App::$strings["Unseen shared files"] = "Ficheros compartidos no vistos"; -App::$strings["Unseen public stream activity"] = "Actividad del stream público no vista"; -App::$strings["Unseen likes and dislikes"] = "Los \"me gusta\" y \"no me gusta\" no vistos"; -App::$strings["Unseen forum posts"] = "Entradas no vistas en el foro"; -App::$strings["Email notification hub (hostname)"] = "Email de notificación del hub (nombre del host)"; -App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s"; -App::$strings["Show new wall posts, private messages and connections under Notices"] = "Mostrar nuevos mensajes en el muro, mensajes privados y conexiones en Avisos"; -App::$strings["Notify me of events this many days in advance"] = "Avisarme de los eventos con algunos días de antelación"; -App::$strings["Must be greater than 0"] = "Debe ser mayor que 0"; -App::$strings["Advanced Account/Page Type Settings"] = "Ajustes avanzados de la cuenta y de los tipos de página"; -App::$strings["Change the behaviour of this account for special situations"] = "Cambiar el comportamiento de esta cuenta en situaciones especiales"; -App::$strings["Miscellaneous Settings"] = "Ajustes diversos"; -App::$strings["Default photo upload folder"] = "Carpeta por defecto de las fotos subidas"; -App::$strings["%Y - current year, %m - current month"] = "%Y - año en curso, %m - mes actual"; -App::$strings["Default file upload folder"] = "Carpeta por defecto de los ficheros subidos"; -App::$strings["Remove this channel."] = "Eliminar este canal."; -App::$strings["Additional Features"] = "Funcionalidades"; -App::$strings["Events Settings"] = "Gestión de eventos"; -App::$strings["Calendar Settings"] = "Ajustes del calendario"; -App::$strings["Settings saved."] = "Configuración guardada."; -App::$strings["Settings saved. Reload page please."] = "Ajustes guardados. Recargue la página, por favor."; -App::$strings["Conversation Settings"] = "Ajustes de conversación"; -App::$strings["Connections Settings"] = "Gestión de las conexiones"; -App::$strings["Photos Settings"] = "Gestión de las fotos"; -App::$strings["Not valid email."] = "Correo electrónico no válido."; -App::$strings["Protected email address. Cannot change to that email."] = "Dirección de correo electrónico protegida. No se puede cambiar a ella."; -App::$strings["System failure storing new email. Please try again."] = "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo."; -App::$strings["Password verification failed."] = "La comprobación de la contraseña ha fallado."; -App::$strings["Passwords do not match. Password unchanged."] = "Las contraseñas no coinciden. La contraseña no se ha cambiado."; -App::$strings["Empty passwords are not allowed. Password unchanged."] = "No se permiten contraseñas vacías. La contraseña no se ha cambiado."; -App::$strings["Password changed."] = "Contraseña cambiada."; -App::$strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo."; -App::$strings["Account Settings"] = "Configuración de la cuenta"; -App::$strings["Current Password"] = "Contraseña actual"; -App::$strings["Enter New Password"] = "Escribir una nueva contraseña"; -App::$strings["Confirm New Password"] = "Confirmar la nueva contraseña"; -App::$strings["Leave password fields blank unless changing"] = "Dejar en blanco la contraseña a menos que desee cambiarla."; -App::$strings["Remove Account"] = "Eliminar cuenta"; -App::$strings["Remove this account including all its channels"] = "Eliminar esta cuenta incluyendo todos sus canales"; -App::$strings["Profiles Settings"] = "Gestión de los perfiles"; -App::$strings["Channel Manager Settings"] = "Ajustes del administrador de canales"; -App::$strings["No feature settings configured"] = "No se ha establecido la configuración de los complementos"; -App::$strings["Addon Settings"] = "Ajustes de los complementos"; -App::$strings["Please save/submit changes to any panel before opening another."] = "Guarde o envíe los cambios a cualquier panel antes de abrir otro."; -App::$strings["Max height of content (in pixels)"] = "Altura máxima del contenido (en píxeles)"; -App::$strings["Click to expand content exceeding this height"] = "Haga clic para expandir el contenido que exceda esta altura"; -App::$strings["Personal menu to display in your channel pages"] = "Menú personal que debe mostrarse en las páginas de su canal"; -App::$strings["Channel Home Settings"] = "Ajustes del canal"; -App::$strings["Directory Settings"] = "Configuración del directorio"; -App::$strings["Editor Settings"] = "Ajustes del editor"; -App::$strings["%s - (Experimental)"] = "%s - (Experimental)"; -App::$strings["Display Settings"] = "Ajustes de visualización"; -App::$strings["Theme Settings"] = "Ajustes del tema"; -App::$strings["Custom Theme Settings"] = "Ajustes personalizados del tema"; -App::$strings["Content Settings"] = "Ajustes del contenido"; -App::$strings["Display Theme:"] = "Tema gráfico del perfil:"; -App::$strings["Select scheme"] = "Elegir un esquema"; -App::$strings["Preload images before rendering the page"] = "Carga previa de las imágenes antes de generar la página"; -App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre."; -App::$strings["Enable user zoom on mobile devices"] = "Habilitar zoom de usuario en dispositivos móviles"; -App::$strings["Update browser every xx seconds"] = "Actualizar navegador cada xx segundos"; -App::$strings["Minimum of 10 seconds, no maximum"] = "Mínimo de 10 segundos, sin máximo"; -App::$strings["Maximum number of conversations to load at any time:"] = "Máximo número de conversaciones a cargar en cualquier momento:"; -App::$strings["Maximum of 100 items"] = "Máximo de 100 elementos"; -App::$strings["Show emoticons (smilies) as images"] = "Mostrar emoticonos (smilies) como imágenes"; -App::$strings["Provide channel menu in navigation bar"] = "Proporcionar un menú de canales en la barra de navegación"; -App::$strings["Default: channel menu located in app menu"] = "Predeterminado: menú de canales ubicado en el menú de aplicaciones"; -App::$strings["Manual conversation updates"] = "Actualizaciones manuales de la conversación"; -App::$strings["Default is on, turning this off may increase screen jumping"] = "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla"; -App::$strings["Link post titles to source"] = "Enlazar título de la publicación a la fuente original"; -App::$strings["New Member Links"] = "Enlaces para nuevos miembros"; -App::$strings["Display new member quick links menu"] = "Mostrar el menú de enlaces rápidos para nuevos miembros"; -App::$strings["Stream Settings"] = "Ajustes del stream"; -App::$strings["View Photo"] = "Ver foto"; -App::$strings["Edit Album"] = "Editar álbum"; -App::$strings["Upload"] = "Subir"; -App::$strings["This channel is limited to %d tokens"] = "Este canal tiene un límite de %d tokens"; -App::$strings["Name and Password are required."] = "Se requiere el nombre y la contraseña."; -App::$strings["Token saved."] = "Token salvado."; -App::$strings["Guest Access App"] = "App Acceso para invitados"; -App::$strings["Create access tokens so that non-members can access private content"] = "Crear tokens de acceso para que los no miembros puedan acceder a contenido privado"; -App::$strings["Use this form to create temporary access identifiers to share things with non-members. These identities may be used in Access Control Lists and visitors may login using these credentials to access private content."] = "Utilice este formulario para crear identificadores de acceso temporal para compartir cosas con los no miembros de Hubzilla. Estas identidades se pueden usar en las Listas de control de acceso (ACL) y así los visitantes pueden iniciar sesión, utilizando estas credenciales, para acceder a su contenido privado."; -App::$strings["You may also provide <em>dropbox</em> style access links to friends and associates by adding the Login Password to any specific site URL as shown. Examples:"] = "También puede proporcionar, con el estilo <em>dropbox</em>, enlaces de acceso a sus amigos y asociados añadiendo la contraseña de inicio de sesión a cualquier dirección URL, como se muestra. Ejemplos: "; -App::$strings["Guest Access Tokens"] = "Tokens de acceso para invitados"; -App::$strings["Login Name"] = "Nombre de inicio de sesión"; -App::$strings["Login Password"] = "Contraseña de inicio de sesión"; -App::$strings["Expires (yyyy-mm-dd)"] = "Expira (aaaa-mm-dd)"; -App::$strings["Their Settings"] = "Sus ajustes"; -App::$strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí"; -App::$strings["Thing updated"] = "Elemento actualizado."; -App::$strings["Object store: failed"] = "Guardar objeto: ha fallado"; -App::$strings["Thing added"] = "Elemento añadido"; -App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s"; -App::$strings["Show Thing"] = "Mostrar elemento"; -App::$strings["item not found."] = "elemento no encontrado."; -App::$strings["Edit Thing"] = "Editar elemento"; -App::$strings["Select a profile"] = "Seleccionar un perfil"; -App::$strings["Post an activity"] = "Publicar una actividad"; -App::$strings["Only sends to viewers of the applicable profile"] = "Sólo enviar a espectadores del perfil pertinente."; -App::$strings["Name of thing e.g. something"] = "Nombre del elemento, p. ej.:. \"algo\""; -App::$strings["URL of thing (optional)"] = "Dirección del elemento (opcional)"; -App::$strings["URL for photo of thing (optional)"] = "Dirección para la foto o elemento (opcional)"; -App::$strings["Permissions"] = "Permisos"; -App::$strings["Add Thing to your Profile"] = "Añadir alguna cosa a su perfil"; -App::$strings["No more system notifications."] = "No hay más notificaciones del sistema"; -App::$strings["System Notifications"] = "Notificaciones del sistema"; -App::$strings["Connection added."] = "Se ha incorporado una conexión."; -App::$strings["Your service plan only allows %d channels."] = "Su paquete de servicios solo permite %d canales."; -App::$strings["No channel. Import failed."] = "No hay canal. La importación ha fallado"; -App::$strings["Import completed."] = "Importación completada."; -App::$strings["You must be logged in to use this feature."] = "Debe estar registrado para poder usar esta funcionalidad."; -App::$strings["Import Channel"] = "Importar canal"; -App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación."; -App::$strings["Or provide the old server/hub details"] = "O proporcione los detalles de su antiguo servidor/hub"; -App::$strings["Your old identity address (xyz@example.com)"] = "Su identidad en el antiguo servidor (canal@ejemplo.com)"; -App::$strings["Your old login email address"] = "Su antigua dirección de correo electrónico"; -App::$strings["Your old login password"] = "Su antigua contraseña"; -App::$strings["Import a few months of posts if possible (limited by available memory"] = "Importar unos meses de mensajes si es posible (limitado por la memoria disponible"; -App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos."; -App::$strings["Make this hub my primary location"] = "Convertir este servidor en mi ubicación primaria"; -App::$strings["Move this channel (disable all previous locations)"] = "Mover este canal (desactivar todas las ubicaciones anteriores)"; -App::$strings["Use this channel nickname instead of the one provided"] = "Usa este alias de canal en lugar del que se proporciona"; -App::$strings["Leave blank to keep your existing channel nickname. You will be randomly assigned a similar nickname if either name is already allocated on this site."] = "Dejar en blanco para mantener su alias de canal . Se le asignará aleatoriamente uno similar si cualquiera de los dos nombres ya está asignado en este sitio."; -App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine."; -App::$strings["Authentication failed."] = "Falló la autenticación."; -App::$strings["Remote Authentication"] = "Acceso desde su servidor"; -App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)"; -App::$strings["Authenticate"] = "Acceder"; -App::$strings["Name and Secret are required"] = "\"Key\" y \"Secret\" son obligatorios"; -App::$strings["OAuth2 Apps Manager App"] = "Aplicación del administrador de apps OAuth2"; -App::$strings["OAuth2 authenticatication tokens for mobile and remote apps"] = "Tokens de autenticación de OAuth2 para aplicaciones móviles y remotas"; -App::$strings["Add OAuth2 application"] = "Añadir aplicación OAuth2"; -App::$strings["Name of application"] = "Nombre de la aplicación"; -App::$strings["Consumer Secret"] = "Consumer Secret"; -App::$strings["Automatically generated - change if desired. Max length 20"] = "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20"; -App::$strings["Redirect"] = "Redirigir"; -App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera"; -App::$strings["Grant Types"] = "Tipos de permisos"; -App::$strings["leave blank unless your application sepcifically requires this"] = "Dejar en blanco a menos que su aplicación lo requiera específicamente"; -App::$strings["Authorization scope"] = "Alcance de la autorización"; -App::$strings["OAuth2 Application not found."] = "No se ha encontrado la aplicación OAuth2."; -App::$strings["Add application"] = "Añadir aplicación"; -App::$strings["leave blank unless your application specifically requires this"] = "dejar en blanco a menos que su aplicación lo requiera específicamente"; -App::$strings["Connected OAuth2 Apps"] = "Aplicaciones OAuth2 conectadas"; -App::$strings["Client key starts with"] = "La \"client key\" empieza por"; -App::$strings["No name"] = "Sin nombre"; -App::$strings["Remove authorization"] = "Eliminar autorización"; -App::$strings["Permissions denied."] = "Permisos denegados."; -App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación"; -App::$strings["Return to your app and insert this Security Code:"] = "Vuelva a su aplicación e introduzca este código de seguridad: "; -App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar."; -App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?"; -App::$strings["Item not available."] = "Elemento no disponible"; -App::$strings["Random Channel App"] = "App Canal aleatorio"; -App::$strings["Visit a random channel in the \$Projectname network"] = "Visitar un canal aleatorio en la red \$Projectname"; -App::$strings["Edit Block"] = "Modificar este bloque"; -App::$strings["vcard"] = "vcard"; -App::$strings["Available Apps"] = "Aplicaciones disponibles"; -App::$strings["Installed Apps"] = "Apps instaladas"; -App::$strings["Manage Apps"] = "Administrar apps"; -App::$strings["Create Custom App"] = "Crear una app personalizada"; -App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s"; -App::$strings["Mood App"] = "App Estados de ánimo"; -App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos"; -App::$strings["Mood"] = "Estado de ánimo"; -App::$strings["Active"] = "Activo/a"; -App::$strings["Blocked"] = "Bloqueadas"; -App::$strings["Ignored"] = "Ignoradas"; -App::$strings["Hidden"] = "Ocultas"; -App::$strings["Archived/Unreachable"] = "Archivadas o inaccesibles"; -App::$strings["New"] = "Nuevas"; -App::$strings["All"] = "Todos/as"; -App::$strings["Active Connections"] = "Conexiones activas"; -App::$strings["Show active connections"] = "Mostrar las conexiones activas"; -App::$strings["New Connections"] = "Nuevas conexiones"; -App::$strings["Show pending (new) connections"] = "Mostrar conexiones (nuevas) pendientes"; -App::$strings["Only show blocked connections"] = "Mostrar solo las conexiones bloqueadas"; -App::$strings["Only show ignored connections"] = "Mostrar solo conexiones ignoradas"; -App::$strings["Only show archived/unreachable connections"] = "Mostrar solo las conexiones archivadas o no localizables"; -App::$strings["Only show hidden connections"] = "Mostrar solo las conexiones ocultas"; -App::$strings["Show all connections"] = "Mostrar todas las conexiones"; -App::$strings["Pending approval"] = "Pendiente de aprobación"; -App::$strings["Archived"] = "Archivadas"; -App::$strings["Not connected at this location"] = "No está conectado/a en esta ubicación"; -App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]"; -App::$strings["Edit connection"] = "Editar conexión"; -App::$strings["Delete connection"] = "Eliminar conexión"; -App::$strings["Channel address"] = "Dirección del canal"; -App::$strings["Network"] = "Red"; -App::$strings["Call"] = "Llamar"; -App::$strings["Status"] = "Estado"; -App::$strings["Connected"] = "Conectado/a"; -App::$strings["Approve connection"] = "Aprobar esta conexión"; -App::$strings["Ignore connection"] = "Ignorar esta conexión"; -App::$strings["Ignore"] = "Ignorar"; -App::$strings["Recent activity"] = "Actividad reciente"; -App::$strings["Connections"] = "Conexiones"; -App::$strings["Search your connections"] = "Buscar sus conexiones"; -App::$strings["Connections search"] = "Buscar conexiones"; -App::$strings["Find"] = "Encontrar"; -App::$strings["item"] = "elemento"; -App::$strings["Bookmark added"] = "Marcador añadido"; -App::$strings["Bookmarks App"] = "App Marcadores"; -App::$strings["Bookmark links from posts and manage them"] = "Añadir enlaces de las entradas a Marcadores y administrarlos"; -App::$strings["My Bookmarks"] = "Mis marcadores"; -App::$strings["My Connections Bookmarks"] = "Marcadores de mis conexiones"; -App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña."; -App::$strings["Remove This Account"] = "Eliminar esta cuenta"; -App::$strings["This account and all its channels will be completely removed from the network. "] = "Esta cuenta y todos sus canales van a ser eliminados de la red."; -App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Remover esta cuenta, todos sus canales y clones de la red"; -App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red"; -App::$strings["Page owner information could not be retrieved."] = "La información del propietario de la página no pudo ser recuperada."; -App::$strings["Album not found."] = "Álbum no encontrado."; -App::$strings["Delete Album"] = "Borrar álbum"; -App::$strings["Delete Photo"] = "Borrar foto"; -App::$strings["No photos selected"] = "No hay fotos seleccionadas"; -App::$strings["Access to this item is restricted."] = "El acceso a este elemento está restringido."; -App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado."; -App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB de almacenamiento de fotos utilizado."; -App::$strings["Upload Photos"] = "Subir fotos"; -App::$strings["Enter an album name"] = "Introducir un nombre de álbum"; -App::$strings["or select an existing album (doubleclick)"] = "o seleccionar un álbum (con un doble click)"; -App::$strings["Create a status post for this upload"] = "Crear un mensaje de estado para esta subida"; -App::$strings["Description (optional)"] = "Descripción (opcional)"; -App::$strings["Show Newest First"] = "Mostrar lo más reciente primero"; -App::$strings["Show Oldest First"] = "Mostrar lo más antiguo primero"; -App::$strings["Add Photos"] = "Añadir fotos"; -App::$strings["Permission denied. Access to this item may be restricted."] = "Permiso denegado. El acceso a este elemento puede estar restringido."; -App::$strings["Photo not available"] = "Foto no disponible"; -App::$strings["Use as profile photo"] = "Usar como foto del perfil"; -App::$strings["Use as cover photo"] = "Usar como imagen de portada del perfil"; -App::$strings["Private Photo"] = "Foto privada"; -App::$strings["View Full Size"] = "Ver tamaño completo"; -App::$strings["Edit photo"] = "Editar foto"; -App::$strings["Rotate CW (right)"] = "Girar CW (a la derecha)"; -App::$strings["Rotate CCW (left)"] = "Girar CCW (a la izquierda)"; -App::$strings["Move photo to album"] = "Mover la foto a un álbum"; -App::$strings["Enter a new album name"] = "Introducir un nuevo nombre de álbum"; -App::$strings["or select an existing one (doubleclick)"] = "o seleccionar un álbum (con un doble click)"; -App::$strings["Add a Tag"] = "Añadir una etiqueta"; -App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"; -App::$strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum"; -App::$strings["I like this (toggle)"] = "Me gusta (cambiar)"; -App::$strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; -App::$strings["Please wait"] = "Espere por favor"; -App::$strings["This is you"] = "Este es usted"; -App::$strings["Comment"] = "Comentar"; -App::$strings["__ctx:title__ Likes"] = "Me gusta"; -App::$strings["__ctx:title__ Dislikes"] = "No me gusta"; -App::$strings["__ctx:title__ Agree"] = "De acuerdo"; -App::$strings["__ctx:title__ Disagree"] = "En desacuerdo"; -App::$strings["__ctx:title__ Abstain"] = "Abstención"; -App::$strings["__ctx:title__ Attending"] = "Participaré"; -App::$strings["__ctx:title__ Not attending"] = "No participaré"; -App::$strings["__ctx:title__ Might attend"] = "Quizá participe"; -App::$strings["View all"] = "Ver todo"; -App::$strings["__ctx:noun__ Like"] = array( - 0 => "Me gusta", - 1 => "Me gusta", -); -App::$strings["__ctx:noun__ Dislike"] = array( - 0 => "No me gusta", - 1 => "No me gusta", -); -App::$strings["Photo Tools"] = "Gestión de las fotos"; -App::$strings["In This Photo:"] = "En esta foto:"; -App::$strings["Map"] = "Mapa"; -App::$strings["__ctx:noun__ Likes"] = "Me gusta"; -App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; -App::$strings["Close"] = "Cerrar"; -App::$strings["Recent Photos"] = "Fotos recientes"; -App::$strings["Profile Unavailable."] = "Perfil no disponible"; -App::$strings["Wiki App"] = "App Wiki"; -App::$strings["Provide a wiki for your channel"] = "Proporcionar un wiki para su canal"; -App::$strings["Invalid channel"] = "Canal no válido"; -App::$strings["Error retrieving wiki"] = "Error al recuperar el wiki"; -App::$strings["Error creating zip file export folder"] = "Error al crear el fichero comprimido zip de la carpeta a exportar"; -App::$strings["Error downloading wiki: "] = "Error al descargar el wiki: "; -App::$strings["Wikis"] = "Wikis"; -App::$strings["Download"] = "Descargar"; -App::$strings["Create New"] = "Crear"; -App::$strings["Wiki name"] = "Nombre del wiki"; -App::$strings["Content type"] = "Tipo de contenido"; -App::$strings["Markdown"] = "Markdown"; -App::$strings["BBcode"] = "BBcode"; -App::$strings["Text"] = "Texto"; -App::$strings["Type"] = "Tipo"; -App::$strings["Any type"] = "Cualquier tipo"; -App::$strings["Lock content type"] = "Tipo de contenido bloqueado"; -App::$strings["Create a status post for this wiki"] = "Crear un mensaje de estado para este wiki"; -App::$strings["Edit Wiki Name"] = "Editar el nombre del wiki"; -App::$strings["Wiki not found"] = "Wiki no encontrado"; -App::$strings["Rename page"] = "Renombrar la página"; -App::$strings["Error retrieving page content"] = "Error al recuperar el contenido de la página"; -App::$strings["New page"] = "Nueva página"; -App::$strings["Revision Comparison"] = "Comparación de revisiones"; -App::$strings["Revert"] = "Revertir"; -App::$strings["Short description of your changes (optional)"] = "Breve descripción de sus cambios (opcional)"; -App::$strings["Source"] = "Fuente"; -App::$strings["New page name"] = "Nombre de la nueva página"; -App::$strings["Embed image from photo albums"] = "Incluir una imagen de los álbumes de fotos"; -App::$strings["Embed an image from your albums"] = "Incluir una imagen de sus álbumes"; -App::$strings["OK"] = "OK"; -App::$strings["Choose images to embed"] = "Elegir imágenes para incluir"; -App::$strings["Choose an album"] = "Elegir un álbum"; -App::$strings["Choose a different album"] = "Elegir un álbum diferente..."; -App::$strings["Error getting album list"] = "Error al obtener la lista de álbumes"; -App::$strings["Error getting photo link"] = "Error al obtener el enlace de la foto"; -App::$strings["Error getting album"] = "Error al obtener el álbum"; -App::$strings["History"] = "Historial"; -App::$strings["Error creating wiki. Invalid name."] = "Error al crear el wiki: el nombre no es válido."; -App::$strings["A wiki with this name already exists."] = "Ya hay un wiki con este nombre."; -App::$strings["Wiki created, but error creating Home page."] = "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio."; -App::$strings["Error creating wiki"] = "Error al crear el wiki"; -App::$strings["Error updating wiki. Invalid name."] = "Error al actualizar el wiki. Nombre no válido."; -App::$strings["Error updating wiki"] = "Error al actualizar el wiki"; -App::$strings["Wiki delete permission denied."] = "Se ha denegado el permiso para eliminar el wiki."; -App::$strings["Error deleting wiki"] = "Se ha producido un error al eliminar el wiki"; -App::$strings["New page created"] = "Se ha creado la nueva página"; -App::$strings["Cannot delete Home"] = "No se puede eliminar la página principal"; -App::$strings["Current Revision"] = "Revisión actual"; -App::$strings["Selected Revision"] = "Revisión seleccionada"; -App::$strings["You must be authenticated."] = "Debe estar autenticado."; -App::$strings["🔁 Repeated %1\$s's %2\$s"] = "🔁 Repetidos %2\$sde %1\$s"; -App::$strings["Post repeated"] = "Entrada repetida"; -App::$strings["toggle full screen mode"] = "cambiar al modo de pantalla completa"; -App::$strings["Layout updated."] = "Plantilla actualizada."; -App::$strings["PDL Editor App"] = "App Editor PDL"; -App::$strings["Provides the ability to edit system page layouts"] = "Proporciona la capacidad de editar los diseños de página del sistema"; -App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripción de Páginas"; -App::$strings["(modified)"] = "(modificado)"; -App::$strings["Reset"] = "Reiniciar"; -App::$strings["Layout not found."] = "Plantilla no encontrada"; -App::$strings["Module Name:"] = "Nombre del módulo:"; -App::$strings["Layout Help"] = "Ayuda para el diseño de plantillas de página"; -App::$strings["Edit another layout"] = "Editar otro diseño"; -App::$strings["System layout"] = "Diseño del sistema"; -App::$strings["Poke App"] = "App Toques"; -App::$strings["Poke somebody in your addressbook"] = "Dar un toque a alguien en su libreta de direcciones"; -App::$strings["Poke"] = "Toques y otras cosas"; -App::$strings["Poke somebody"] = "Dar un toque a alguien"; -App::$strings["Poke/Prod"] = "Toque/Incitación"; -App::$strings["Poke, prod or do other things to somebody"] = "Dar un toque, incitar o hacer otras cosas a alguien"; -App::$strings["Recipient"] = "Destinatario"; -App::$strings["Choose what you wish to do to recipient"] = "Elegir qué desea enviar al destinatario"; -App::$strings["Make this post private"] = "Convertir en privado este envío"; -App::$strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. "; -App::$strings["Profile Photos"] = "Fotos del perfil"; -App::$strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado."; -App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."; -App::$strings["Unable to process image"] = "No ha sido posible procesar la imagen"; -App::$strings["Image upload failed."] = "La carga de la imagen ha fallado."; -App::$strings["Unable to process image."] = "No ha sido posible procesar la imagen."; -App::$strings["Photo not available."] = "Foto no disponible."; -App::$strings["Your default profile photo is visible to anybody on the internet. Profile photos for alternate profiles will inherit the permissions of the profile"] = "Su foto de perfil predeterminada es visible para cualquiera en Internet. Las fotos de perfil para perfiles alternativos heredarán los permisos del predeterminado."; -App::$strings["Your profile photo is visible to anybody on the internet and may be distributed to other websites."] = "La foto de su perfil es visible para cualquiera en Internet y puede ser distribuida en otros sitios web."; -App::$strings["Upload File:"] = "Subir fichero:"; -App::$strings["Select a profile:"] = "Seleccionar un perfil:"; -App::$strings["Use Photo for Profile"] = "Usar la fotografía para el perfil"; -App::$strings["Change Profile Photo"] = "Cambiar la foto del perfil"; -App::$strings["Use"] = "Usar"; -App::$strings["Use a photo from your albums"] = "Usar una foto de sus álbumes"; -App::$strings["Select existing photo"] = "Seleccionar una foto"; -App::$strings["Crop Image"] = "Recortar imagen"; -App::$strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima."; -App::$strings["Done Editing"] = "Edición completada"; -App::$strings["Away"] = "Ausente"; -App::$strings["Online"] = "Conectado/a"; -App::$strings["Unable to locate original post."] = "No ha sido posible encontrar la entrada original."; -App::$strings["Empty post discarded."] = "La entrada vacía ha sido desechada."; -App::$strings["Duplicate post suppressed."] = "Se ha suprimido la entrada duplicada."; -App::$strings["System error. Post not saved."] = "Error del sistema. La entrada no se ha podido salvar."; -App::$strings["Your comment is awaiting approval."] = "Su comentario está pendiente de aprobación."; -App::$strings["Unable to obtain post information from database."] = "No ha sido posible obtener información de la entrada en la base de datos."; -App::$strings["You have reached your limit of %1$.0f top level posts."] = "Ha alcanzado su límite de %1$.0f entradas en la página principal."; -App::$strings["You have reached your limit of %1$.0f webpages."] = "Ha alcanzado su límite de %1$.0f páginas web."; -App::$strings["sent you a private message"] = "le ha enviado un mensaje privado"; -App::$strings["added your channel"] = "añadió este canal a sus conexiones"; -App::$strings["requires approval"] = "requiere aprobación"; -App::$strings["g A l F d"] = "g A l d F"; -App::$strings["[today]"] = "[hoy]"; -App::$strings["posted an event"] = "publicó un evento"; -App::$strings["shared a file with you"] = "compartió un archivo con usted"; -App::$strings["Private forum"] = "Foro privado"; -App::$strings["Public forum"] = "Foro público"; -App::$strings["Invalid item."] = "Elemento no válido."; -App::$strings["Page not found."] = "Página no encontrada."; -App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; -App::$strings["Could not access contact record."] = "No se ha podido acceder al registro de contacto."; -App::$strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado."; -App::$strings["Connection updated."] = "Conexión actualizada."; -App::$strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión."; -App::$strings["is now connected to"] = "ahora está conectado/a"; -App::$strings["Could not access address book record."] = "No se pudo acceder al registro en su libreta de direcciones."; -App::$strings["Refresh failed - channel is currently unavailable."] = "Recarga fallida - no se puede encontrar el canal en este momento."; -App::$strings["Unable to set address book parameters."] = "No ha sido posible establecer los parámetros de la libreta de direcciones."; -App::$strings["Connection has been removed."] = "La conexión ha sido eliminada."; -App::$strings["View Profile"] = "Ver el perfil"; -App::$strings["View %s's profile"] = "Ver el perfil de %s"; -App::$strings["Refresh Permissions"] = "Recargar los permisos"; -App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; -App::$strings["Refresh Photo"] = "Actualizar la foto"; -App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; -App::$strings["Recent Activity"] = "Actividad reciente"; -App::$strings["View recent posts and comments"] = "Ver publicaciones y comentarios recientes"; -App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquear (o desbloquear) todas las comunicaciones con esta conexión"; -App::$strings["This connection is blocked!"] = "¡Esta conexión está bloqueada!"; -App::$strings["Unignore"] = "Dejar de ignorar"; -App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión"; -App::$strings["This connection is ignored!"] = "¡Esta conexión es ignorada!"; -App::$strings["Unarchive"] = "Desarchivar"; -App::$strings["Archive"] = "Archivar"; -App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos"; -App::$strings["This connection is archived!"] = "¡Esta conexión esta archivada!"; -App::$strings["Unhide"] = "Mostrar"; -App::$strings["Hide"] = "Ocultar"; -App::$strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones"; -App::$strings["This connection is hidden!"] = "¡Esta conexión está oculta!"; -App::$strings["Delete this connection"] = "Eliminar esta conexión"; -App::$strings["Fetch Vcard"] = "Obtener una vcard"; -App::$strings["Fetch electronic calling card for this connection"] = "Obtener una tarjeta de llamada electrónica para esta conexión"; -App::$strings["Open Individual Permissions section by default"] = "Abrir la sección de permisos individuales por defecto"; -App::$strings["Affinity"] = "Afinidad"; -App::$strings["Open Set Affinity section by default"] = "Abrir por defecto la sección para definir la afinidad"; -App::$strings["Me"] = "Yo"; -App::$strings["Family"] = "Familia"; -App::$strings["Acquaintances"] = "Conocidos/as"; -App::$strings["Filter"] = "Filtrar"; -App::$strings["Open Custom Filter section by default"] = "Abrir por defecto la sección de personalización de filtros"; -App::$strings["Approve this connection"] = "Aprobar esta conexión"; -App::$strings["Accept connection to allow communication"] = "Aceptar la conexión para permitir la comunicación"; -App::$strings["Set Affinity"] = "Ajustar la afinidad"; -App::$strings["Set Profile"] = "Ajustar el perfil"; -App::$strings["Set Affinity & Profile"] = "Ajustar la afinidad y el perfil"; -App::$strings["This connection is unreachable from this location."] = "No se puede acceder a la conexión desde este sitio."; -App::$strings["This connection may be unreachable from other channel locations."] = "Esta conexión puede ser inaccesible desde otras ubicaciones del canal."; -App::$strings["Location independence is not supported by their network."] = "La independencia de ubicación no es compatible con su red."; -App::$strings["This connection is unreachable from this location. Location independence is not supported by their network."] = "Esta conexión no es accesible desde este sitio. La independencia de ubicación no es compatible con su red."; -App::$strings["Connection Default Permissions"] = "Permisos predeterminados de conexión"; -App::$strings["Connection: %s"] = "Conexión: %s"; -App::$strings["Apply these permissions automatically"] = "Aplicar estos permisos automaticamente"; -App::$strings["Connection requests will be approved without your interaction"] = "Las solicitudes de conexión serán aprobadas sin su intervención"; -App::$strings["Permission role"] = "Permisos de rol"; -App::$strings["Add permission role"] = "Añadir permisos de rol"; -App::$strings["This connection's primary address is"] = "La dirección primaria de esta conexión es"; -App::$strings["Available locations:"] = "Ubicaciones disponibles:"; -App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones."; -App::$strings["Connection Tools"] = "Gestión de las conexiones"; -App::$strings["Slide to adjust your degree of friendship"] = "Deslizar para ajustar el grado de amistad"; -App::$strings["Rating"] = "Valoración"; -App::$strings["Slide to adjust your rating"] = "Deslizar para ajustar su valoración"; -App::$strings["Optionally explain your rating"] = "Opcionalmente, puede explicar su valoración"; -App::$strings["Custom Filter"] = "Filtro personalizado"; -App::$strings["Only import posts with this text"] = "Importar solo entradas que contengan este texto"; -App::$strings["Do not import posts with this text"] = "No importar entradas que contengan este texto"; -App::$strings["This information is public!"] = "¡Esta información es pública!"; -App::$strings["Connection Pending Approval"] = "Conexión pendiente de aprobación"; -App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura."; -App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados."; -App::$strings["Last update:"] = "Última actualización:"; -App::$strings["Details"] = "Detalles"; -App::$strings["Chatrooms App"] = "App Salas de chat"; -App::$strings["Access Controlled Chatrooms"] = "Salas de chat moderadas"; -App::$strings["Room not found"] = "Sala no encontrada"; -App::$strings["Leave Room"] = "Abandonar la sala"; -App::$strings["Delete Room"] = "Eliminar esta sala"; -App::$strings["I am away right now"] = "Estoy ausente momentáneamente"; -App::$strings["I am online"] = "Estoy conectado/a"; -App::$strings["Bookmark this room"] = "Añadir esta sala a Marcadores"; -App::$strings["Please enter a link URL:"] = "Por favor, introduzca la dirección del enlace:"; -App::$strings["Encrypt text"] = "Cifrar texto"; -App::$strings["New Chatroom"] = "Nueva sala de chat"; -App::$strings["Chatroom name"] = "Nombre de la sala de chat"; -App::$strings["Expiration of chats (minutes)"] = "Caducidad de los mensajes en los chats (en minutos)"; -App::$strings["%1\$s's Chatrooms"] = "Salas de chat de %1\$s"; -App::$strings["No chatrooms available"] = "No hay salas de chat disponibles"; -App::$strings["Expiration"] = "Caducidad"; -App::$strings["min"] = "min"; -App::$strings["Photos"] = "Fotos"; -App::$strings["Files"] = "Ficheros"; -App::$strings["Unable to update menu."] = "No se puede actualizar el menú."; -App::$strings["Unable to create menu."] = "No se puede crear el menú."; -App::$strings["Menu Name"] = "Nombre del menú"; -App::$strings["Unique name (not visible on webpage) - required"] = "Nombre único (no será visible en la página web) - requerido"; -App::$strings["Menu Title"] = "Título del menú"; -App::$strings["Visible on webpage - leave empty for no title"] = "Visible en la página web - no ponga nada si no desea un título"; -App::$strings["Allow Bookmarks"] = "Permitir marcadores"; -App::$strings["Menu may be used to store saved bookmarks"] = "El menú se puede usar para guardar marcadores"; -App::$strings["Submit and proceed"] = "Enviar y proceder"; -App::$strings["Menus"] = "Menús"; -App::$strings["Bookmarks allowed"] = "Marcadores permitidos"; -App::$strings["Delete this menu"] = "Borrar este menú"; -App::$strings["Edit menu contents"] = "Editar los contenidos del menú"; -App::$strings["Edit this menu"] = "Modificar este menú"; -App::$strings["Menu could not be deleted."] = "El menú no puede ser eliminado."; -App::$strings["Edit Menu"] = "Modificar el menú"; -App::$strings["Add or remove entries to this menu"] = "Añadir o quitar entradas en este menú"; -App::$strings["Menu name"] = "Nombre del menú"; -App::$strings["Must be unique, only seen by you"] = "Debe ser único, solo será visible para usted"; -App::$strings["Menu title"] = "Título del menú"; -App::$strings["Menu title as seen by others"] = "El título del menú tal como será visto por los demás"; -App::$strings["Allow bookmarks"] = "Permitir marcadores"; -App::$strings["Layouts"] = "Plantillas"; -App::$strings["Help"] = "Ayuda"; -App::$strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche"; -App::$strings["Layout Description"] = "Descripción de la plantilla"; -App::$strings["Download PDL file"] = "Descargar el fichero PDL"; -App::$strings["Notes App"] = "App Notas"; -App::$strings["A simple notes app with a widget (note: notes are not encrypted)"] = "Una simple aplicación de notas con un widget (aviso: las notas no están encriptadas)"; -App::$strings["Not found"] = "No encontrado"; -App::$strings["Please refresh page"] = "Por favor, recargue la página"; -App::$strings["Unknown error"] = "Error desconocido"; -App::$strings["Token verification failed."] = "Ha fallado el token de verificación."; -App::$strings["Email Verification Required"] = "Verificación obligatoria del correo electrónico"; -App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "Se ha enviado un token de verificación a su dirección de correo electrónico [%s]. Ingrese ese símbolo aquí para completar el paso de verificación de cuenta. Por favor, espere unos minutos para el envío, y revise su carpeta de spam si no ve el mensaje."; -App::$strings["Resend Email"] = "Reenvío de correo electrónico"; -App::$strings["Validation token"] = "Token de validación"; -App::$strings["Post not found."] = "Mensaje no encontrado."; -App::$strings["post"] = "la entrada"; -App::$strings["comment"] = "el comentario"; -App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado %3\$s de %2\$s con %4\$s"; -App::$strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada."; -App::$strings["Configuration Editor"] = "Editor de configuración"; -App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."; -App::$strings["Affinity Tool settings updated."] = "Actualización de los ajustes de Affinity Tool."; -App::$strings["This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream."] = "Esta aplicación presenta un control deslizante en su editor de conexión y también en su página de red. El control deslizante representa su grado de amistad (afinidad) con cada conexión. Le permite acercar o alejar y mostrar conversaciones sólo de sus amigos más cercanos o de todo el mundo en su stream."; -App::$strings["Affinity Tool App"] = "App Affinity Tool "; -App::$strings["The numbers below represent the minimum and maximum slider default positions for your network/stream page as a percentage."] = "Los números que aparecen a continuación representan las posiciones predeterminadas mínimas y máximas de los controles deslizantes para su red/stream en forma de porcentaje."; -App::$strings["Default maximum affinity level"] = "Nivel máximo de afinidad por defecto"; -App::$strings["0-99 default 99"] = "0-99 por defecto 99"; -App::$strings["Default minimum affinity level"] = "Nivel mínimo de afinidad por defecto"; -App::$strings["0-99 - default 0"] = "0-99 - por defecto 0"; -App::$strings["Persistent affinity levels"] = "Niveles de afinidad persistentes"; -App::$strings["If disabled the max and min levels will be reset to default after page reload"] = "Si está desactivado, los niveles máximo y mínimo se restablecerán a los valores predeterminados después de recargar la página."; -App::$strings["Affinity Tool Settings"] = "Ajustes de Affinity Tool"; -App::$strings["Default Permissions App"] = "App Permisos por defecto"; -App::$strings["Set custom default permissions for new connections"] = "Establecer permisos predeterminados personalizados para nuevas conexiones"; -App::$strings["Automatic approval settings"] = "Opciones de autorización automática"; -App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Es posible que se hayan preestablecido o bloqueado algunos permisos individuales según el tipo de canal y la configuración de privacidad."; -App::$strings["Unknown App"] = "Aplicación desconocida"; -App::$strings["Authorize"] = "Autorizar"; -App::$strings["Do you authorize the app %s to access your channel data?"] = "¿Autoriza a la aplicación %s a acceder a los datos de su canal?"; -App::$strings["Allow"] = "Permitir"; -App::$strings["Privacy group created."] = "El grupo de canales ha sido creado."; -App::$strings["Could not create privacy group."] = "No se puede crear el grupo de canales"; -App::$strings["Privacy group not found."] = "Grupo de canales no encontrado."; -App::$strings["Privacy group updated."] = "Grupo de canales actualizado."; -App::$strings["Privacy Groups App"] = "App Grupos de canales"; -App::$strings["Management of privacy groups"] = "Gestión de grupos de canales"; -App::$strings["Privacy Groups"] = "Grupos de canales"; -App::$strings["Add Group"] = "Agregar un grupo"; -App::$strings["Privacy group name"] = "Nombre del grupo"; -App::$strings["Members are visible to other channels"] = "Los miembros son visibles para otros canales"; -App::$strings["Members"] = "Miembros"; -App::$strings["Privacy group removed."] = "Grupo de canales eliminado."; -App::$strings["Unable to remove privacy group."] = "No se puede eliminar el grupo de canales."; -App::$strings["Privacy Group: %s"] = "Grupo privado %s"; -App::$strings["Privacy group name: "] = "Nombre del grupo de canales:"; -App::$strings["Delete Group"] = "Eliminar grupo"; -App::$strings["Group members"] = "Miembros del grupo"; -App::$strings["Not in this group"] = "No en este grupo"; -App::$strings["Click a channel to toggle membership"] = "Haga clic en un canal para cambiar los miembros"; -App::$strings["Profile not found."] = "Perfil no encontrado."; -App::$strings["Profile deleted."] = "Perfil eliminado."; -App::$strings["Profile-"] = "Perfil-"; -App::$strings["New profile created."] = "El nuevo perfil ha sido creado."; -App::$strings["Profile unavailable to clone."] = "Perfil no disponible para clonar."; -App::$strings["Profile unavailable to export."] = "Perfil no disponible para exportar."; -App::$strings["Profile Name is required."] = "Se necesita el nombre del perfil."; -App::$strings["Marital Status"] = "Estado civil"; -App::$strings["Romantic Partner"] = "Pareja sentimental"; -App::$strings["Likes"] = "Me gusta"; -App::$strings["Dislikes"] = "No me gusta"; -App::$strings["Work/Employment"] = "Trabajo:"; -App::$strings["Religion"] = "Religión"; -App::$strings["Political Views"] = "Ideas políticas"; -App::$strings["Gender"] = "Género"; -App::$strings["Sexual Preference"] = "Preferencia sexual"; -App::$strings["Homepage"] = "Página personal"; -App::$strings["Interests"] = "Intereses"; -App::$strings["Profile updated."] = "Perfil actualizado."; -App::$strings["Hide your connections list from viewers of this profile"] = "Ocultar la lista de conexiones a los visitantes del perfil"; -App::$strings["Edit Profile Details"] = "Modificar los detalles de este perfil"; -App::$strings["View this profile"] = "Ver este perfil"; -App::$strings["Edit visibility"] = "Editar visibilidad"; -App::$strings["Profile Tools"] = "Gestión del perfil"; -App::$strings["Change cover photo"] = "Cambiar la imagen de portada del perfil"; -App::$strings["Change profile photo"] = "Cambiar la foto del perfil"; -App::$strings["Create a new profile using these settings"] = "Crear un nuevo perfil usando estos ajustes"; -App::$strings["Clone this profile"] = "Clonar este perfil"; -App::$strings["Delete this profile"] = "Eliminar este perfil"; -App::$strings["Add profile things"] = "Añadir cosas al perfil"; -App::$strings["Personal"] = "Personales"; -App::$strings["Relationship"] = "Relación"; -App::$strings["Miscellaneous"] = "Varios"; -App::$strings["Import profile from file"] = "Importar perfil desde un fichero"; -App::$strings["Export profile to file"] = "Exportar perfil a un fichero"; -App::$strings["Your gender"] = "Género"; -App::$strings["Marital status"] = "Estado civil"; -App::$strings["Sexual preference"] = "Preferencia sexual"; -App::$strings["Profile name"] = "Nombre del perfil"; -App::$strings["This is your default profile."] = "Este es su perfil principal."; -App::$strings["Your full name"] = "Nombre completo"; -App::$strings["Title/Description"] = "Título o descripción"; -App::$strings["Street address"] = "Dirección"; -App::$strings["Locality/City"] = "Ciudad"; -App::$strings["Region/State"] = "Región o Estado"; -App::$strings["Postal/Zip code"] = "Código postal"; -App::$strings["Who (if applicable)"] = "Quién (si es pertinente)"; -App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Por ejemplo: ana123, María González, sara@ejemplo.com"; -App::$strings["Since (date)"] = "Desde (fecha)"; -App::$strings["Tell us about yourself"] = "Háblenos de usted"; -App::$strings["Homepage URL"] = "Dirección de la página personal"; -App::$strings["Hometown"] = "Lugar de nacimiento"; -App::$strings["Political views"] = "Ideas políticas"; -App::$strings["Religious views"] = "Creencias religiosas"; -App::$strings["Keywords used in directory listings"] = "Palabras clave utilizadas en los listados de directorios"; -App::$strings["Example: fishing photography software"] = "Por ejemplo: software de fotografía submarina"; -App::$strings["Musical interests"] = "Preferencias musicales"; -App::$strings["Books, literature"] = "Libros, literatura"; -App::$strings["Television"] = "Televisión"; -App::$strings["Film/Dance/Culture/Entertainment"] = "Cine, danza, cultura, entretenimiento"; -App::$strings["Hobbies/Interests"] = "Aficiones o intereses"; -App::$strings["Love/Romance"] = "Vida sentimental o amorosa"; -App::$strings["School/Education"] = "Estudios"; -App::$strings["Contact information and social networks"] = "Información de contacto y redes sociales"; -App::$strings["My other channels"] = "Mis otros canales"; -App::$strings["Communications"] = "Comunicaciones"; -App::$strings["Profile Image"] = "Imagen del perfil"; -App::$strings["Edit Profiles"] = "Editar perfiles"; -App::$strings["This page is available only to site members"] = "Esta página está disponible sólo para los miembros del sitio"; -App::$strings["Welcome"] = "Bienvenido/a"; -App::$strings["What would you like to do?"] = "¿Qué le gustaría hacer?"; -App::$strings["Please bookmark this page if you would like to return to it in the future"] = "Por favor añada esta página a sus marcadores si desea volver a ella en el futuro."; -App::$strings["Upload a profile photo"] = "Subir una foto de perfil"; -App::$strings["Upload a cover photo"] = "Subir una foto de portada del perfil"; -App::$strings["Edit your default profile"] = "Editar su perfil por defecto"; -App::$strings["View friend suggestions"] = "Ver sugerencias de amistad"; -App::$strings["View the channel directory"] = "Ver el directorio de canales"; -App::$strings["View/edit your channel settings"] = "Ver o modificar los ajustes de su canal"; -App::$strings["View the site or project documentation"] = "Ver el sitio o la documentación del proyecto"; -App::$strings["Visit your channel homepage"] = "Visitar la página principal de su canal"; -App::$strings["View your connections and/or add somebody whose address you already know"] = "Vea sus conexiones y/o agregue a alguien cuya dirección ya conozca"; -App::$strings["View your personal stream (this may be empty until you add some connections)"] = "Ver su \"stream\" personal (puede que esté vacío hasta que agregue algunas conexiones)"; -App::$strings["View the public stream. Warning: this content is not moderated"] = "Ver el \"stream\" público. Advertencia: este contenido no está moderado"; -App::$strings["Page link"] = "Enlace de la página"; -App::$strings["Edit Webpage"] = "Editar la página web"; -App::$strings["Create a new channel"] = "Crear un nuevo canal"; -App::$strings["Channel Manager"] = "Administración de canales"; -App::$strings["Current Channel"] = "Canal actual"; -App::$strings["Switch to one of your channels by selecting it."] = "Cambiar a uno de sus canales seleccionándolo."; -App::$strings["Default Channel"] = "Canal principal"; -App::$strings["Make Default"] = "Convertir en predeterminado"; -App::$strings["%d new messages"] = "%d mensajes nuevos"; -App::$strings["%d new introductions"] = "%d nuevas solicitudes de conexión"; -App::$strings["Delegated Channel"] = "Canal delegado"; -App::$strings["Cards App"] = "App de Fichas"; -App::$strings["Create personal planning cards"] = "Crear fichas de planificación personal"; -App::$strings["Add Card"] = "Añadir una ficha"; -App::$strings["Cards"] = "Fichas"; -App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso"; -App::$strings["About this site"] = "Acerca de este sitio"; -App::$strings["Site Name"] = "Nombre del sitio"; -App::$strings["Administrator"] = "Administrador"; -App::$strings["Terms of Service"] = "Términos del servicio"; -App::$strings["Software and Project information"] = "Información sobre el software y el proyecto"; -App::$strings["This site is powered by \$Projectname"] = "Este sitio funciona con \$Projectname"; -App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Servicios federados y descentralizados de identidad y redes proporcionados por Zot"; -App::$strings["Additional federated transport protocols:"] = "Protocolos adicionales de transporte federado: "; -App::$strings["Version %s"] = "Versión %s"; -App::$strings["Project homepage"] = "Página principal del proyecto"; -App::$strings["Developer homepage"] = "Página principal del desarrollador"; -App::$strings["No ratings"] = "Ninguna valoración"; -App::$strings["Ratings"] = "Valoraciones"; -App::$strings["Rating: "] = "Valoración:"; -App::$strings["Website: "] = "Sitio web:"; -App::$strings["Description: "] = "Descripción:"; -App::$strings["Webpages App"] = "App de Páginas web"; -App::$strings["Provide managed web pages on your channel"] = "Proveer páginas web gestionadas en su canal"; -App::$strings["Import Webpage Elements"] = "Importar elementos de una página web"; -App::$strings["Import selected"] = "Importar elementos seleccionados"; -App::$strings["Export Webpage Elements"] = "Exportar elementos de una página web"; -App::$strings["Export selected"] = "Exportar los elementos seleccionados"; -App::$strings["Webpages"] = "Páginas web"; -App::$strings["Actions"] = "Acciones"; -App::$strings["Page Link"] = "Vínculo de la página"; -App::$strings["Page Title"] = "Título de página"; -App::$strings["Invalid file type."] = "Tipo de fichero no válido."; -App::$strings["Error opening zip file"] = "Error al abrir el fichero comprimido zip"; -App::$strings["Invalid folder path."] = "La ruta de la carpeta no es válida."; -App::$strings["No webpage elements detected."] = "No se han detectado elementos de ninguna página web."; -App::$strings["Import complete."] = "Importación completada."; -App::$strings["Channel name changes are not allowed within 48 hours of changing the account password."] = "Los cambios en el nombre de un canal no está permitida hasta pasadas 48 horas desde el cambio de contraseña de la cuenta."; -App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro."; -App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio."; -App::$strings["Change channel nickname/address"] = "Cambiar el alias o la dirección del canal"; -App::$strings["Any/all connections on other networks will be lost!"] = "¡Cualquier/todas las conexiones en otras redes se perderán!"; -App::$strings["New channel address"] = "Nueva dirección del canal"; -App::$strings["Rename Channel"] = "Renombrar el canal"; -App::$strings["Item is not editable"] = "El elemento no es editable"; -App::$strings["Edit post"] = "Editar la entrada"; -App::$strings["Invalid message"] = "Mensaje no válido"; -App::$strings["no results"] = "sin resultados"; -App::$strings["channel sync processed"] = "se ha realizado la sincronización del canal"; -App::$strings["queued"] = "encolado"; -App::$strings["posted"] = "enviado"; -App::$strings["accepted for delivery"] = "aceptado para el envío"; -App::$strings["updated"] = "actualizado"; -App::$strings["update ignored"] = "actualización ignorada"; -App::$strings["permission denied"] = "permiso denegado"; -App::$strings["recipient not found"] = "destinatario no encontrado"; -App::$strings["mail recalled"] = "mensaje de correo revocado"; -App::$strings["duplicate mail received"] = "se ha recibido mensaje duplicado"; -App::$strings["mail delivered"] = "correo enviado"; -App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s"; -App::$strings["Options"] = "Opciones"; -App::$strings["Redeliver"] = "Volver a enviar"; -App::$strings["Failed to create source. No channel selected."] = "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal."; -App::$strings["Source created."] = "Fuente creada."; -App::$strings["Source updated."] = "Fuente actualizada."; -App::$strings["Sources App"] = "App de Fuentes"; -App::$strings["Automatically import channel content from other channels or feeds"] = "Importar automáticamente contenido de otros canales o \"feeds\""; -App::$strings["*"] = "*"; -App::$strings["Channel Sources"] = "Orígenes de los contenidos del canal"; -App::$strings["Manage remote sources of content for your channel."] = "Gestionar contenido de origen remoto para su canal."; -App::$strings["New Source"] = "Nueva fuente"; -App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes."; -App::$strings["Only import content with these words (one per line)"] = "Importar solo contenido que contenga estas palabras (una por línea)"; -App::$strings["Leave blank to import all public content"] = "Dejar en blanco para importar todo el contenido público"; -App::$strings["Channel Name"] = "Nombre del canal"; -App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)"; -App::$strings["Optional"] = "Opcional"; -App::$strings["Resend posts with this channel as author"] = "Reenviar mensajes con este canal como autor"; -App::$strings["Copyrights may apply"] = "Se pueden aplicar los derechos de autor"; -App::$strings["Source not found."] = "Fuente no encontrada"; -App::$strings["Edit Source"] = "Editar fuente"; -App::$strings["Delete Source"] = "Eliminar fuente"; -App::$strings["Source removed"] = "Fuente eliminada"; -App::$strings["Unable to remove source."] = "No se puede eliminar la fuente."; -App::$strings["Like/Dislike"] = "Me gusta/No me gusta"; -App::$strings["This action is restricted to members."] = "Esta acción está restringida solo para miembros."; -App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Por favor, <a href=\"rmagic\">identifíquese con su \$Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo \$Projectname member</a> para continuar."; -App::$strings["Invalid request."] = "Solicitud incorrecta."; -App::$strings["channel"] = "el canal"; -App::$strings["thing"] = "elemento"; -App::$strings["Channel unavailable."] = "Canal no disponible."; -App::$strings["Previous action reversed."] = "Acción anterior revocada."; -App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; -App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; -App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s está de acuerdo"; -App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no está de acuerdo"; -App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s se abstiene"; -App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s participa"; -App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no participa"; -App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s quizá participe"; -App::$strings["Action completed."] = "Acción completada."; -App::$strings["Thank you."] = "Gracias."; -App::$strings["No default suggestions were found."] = "No se encontraron sugerencias por defecto."; -App::$strings["%d rating"] = array( - 0 => "%d valoración", - 1 => "%d valoraciones", -); -App::$strings["Gender: "] = "Género:"; -App::$strings["Status: "] = "Estado:"; -App::$strings["Homepage: "] = "Página personal:"; -App::$strings["Age:"] = "Edad:"; -App::$strings["Location:"] = "Ubicación:"; -App::$strings["Description:"] = "Descripción:"; -App::$strings["Hometown:"] = "Lugar de nacimiento:"; -App::$strings["About:"] = "Sobre mí:"; -App::$strings["Connect"] = "Conectar"; -App::$strings["Public Forum:"] = "Foro público:"; -App::$strings["Keywords: "] = "Palabras clave:"; -App::$strings["Don't suggest"] = "No sugerir:"; -App::$strings["Common connections (estimated):"] = "Conexiones comunes (estimadas): "; -App::$strings["Global Directory"] = "Directorio global:"; -App::$strings["Local Directory"] = "Directorio local:"; -App::$strings["Finding:"] = "Encontrar:"; -App::$strings["Channel Suggestions"] = "Sugerencias de canales"; -App::$strings["next page"] = "siguiente página"; -App::$strings["previous page"] = "página anterior"; -App::$strings["Sort options"] = "Ordenar opciones"; -App::$strings["Alphabetic"] = "Alfabético"; -App::$strings["Reverse Alphabetic"] = "Alfabético inverso"; -App::$strings["Newest to Oldest"] = "De más nuevo a más antiguo"; -App::$strings["Oldest to Newest"] = "De más antiguo a más nuevo"; -App::$strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas entradas pueden estar ocultas)."; -App::$strings["Xchan Lookup"] = "Búsqueda de canales"; -App::$strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o un \"webbie\") que comience por:"; -App::$strings["Suggest Channels App"] = "App Sugerencia de canales"; -App::$strings["Suggestions for channels in the \$Projectname network you might be interested in"] = "Sugerencias de los canales de la red \$Projectname en los que puede estar interesado"; -App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo."; -App::$strings["Ignore/Hide"] = "Ignorar/Ocultar"; -App::$strings["Unable to find your hub."] = "No se puede encontrar su servidor."; -App::$strings["Post successful."] = "Enviado con éxito."; -App::$strings["Unable to lookup recipient."] = "No se puede asociar a un destinatario."; -App::$strings["Unable to communicate with requested channel."] = "No se puede establecer la comunicación con el canal solicitado."; -App::$strings["Cannot verify requested channel."] = "No se puede verificar el canal solicitado."; -App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."; -App::$strings["Messages"] = "Mensajes"; -App::$strings["message"] = "mensaje"; -App::$strings["Message recalled."] = "Mensaje revocado."; -App::$strings["Conversation removed."] = "Conversación eliminada."; -App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM"; -App::$strings["Requested channel is not in this network"] = "El canal solicitado no existe en esta red"; -App::$strings["Send Private Message"] = "Enviar un mensaje privado"; -App::$strings["To:"] = "Para:"; -App::$strings["Subject:"] = "Asunto:"; -App::$strings["Attach file"] = "Adjuntar fichero"; -App::$strings["Send"] = "Enviar"; -App::$strings["Set expiration date"] = "Configurar fecha de caducidad"; -App::$strings["Delete message"] = "Borrar mensaje"; -App::$strings["Delivery report"] = "Informe de transmisión"; -App::$strings["Recall message"] = "Revocar el mensaje"; -App::$strings["Message has been recalled."] = "El mensaje ha sido revocado."; -App::$strings["Delete Conversation"] = "Eliminar conversación"; -App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente."; -App::$strings["Send Reply"] = "Responder"; -App::$strings["Your message for %s (%s):"] = "Su mensaje para %s (%s):"; -App::$strings["Public Hubs"] = "Servidores públicos"; -App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público en la red \$Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales."; -App::$strings["Hub URL"] = "Dirección del hub"; -App::$strings["Access Type"] = "Tipo de acceso"; -App::$strings["Registration Policy"] = "Normas de registro"; -App::$strings["Stats"] = "Estadísticas"; -App::$strings["Software"] = "Software"; -App::$strings["Rate"] = "Valorar"; -App::$strings["webpage"] = "página web"; -App::$strings["block"] = "bloque"; -App::$strings["layout"] = "plantilla"; -App::$strings["menu"] = "menú"; -App::$strings["%s element installed"] = "%s elemento instalado"; -App::$strings["%s element installation failed"] = "Elemento con instalación fallida: %s"; -App::$strings["Select a bookmark folder"] = "Seleccionar una carpeta de marcadores"; -App::$strings["Save Bookmark"] = "Guardar marcador"; -App::$strings["URL of bookmark"] = "Dirección del marcador"; -App::$strings["Or enter new bookmark folder name"] = "O introduzca un nuevo nombre para la carpeta de marcadores"; -App::$strings["Enter a folder name"] = "Escriba un nombre de carpeta"; -App::$strings["or select an existing folder (doubleclick)"] = "o seleccione una (con un doble click)"; -App::$strings["Save to Folder"] = "Guardar en carpeta"; -App::$strings["Remote Diagnostics App"] = "App Diagnósticos remotos"; -App::$strings["Perform diagnostics on remote channels"] = "Realizar diagnósticos en canales remotos"; -App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana."; -App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado."; -App::$strings["Passwords do not match."] = "Las contraseñas no coinciden."; -App::$strings["Registration successful. Continue to create your first channel..."] = "Registro exitoso. Continúe creando tu primer canal..."; -App::$strings["Registration successful. Please check your email for validation instructions."] = "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo."; -App::$strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio."; -App::$strings["Your registration can not be processed."] = "Su registro no puede ser procesado."; -App::$strings["Registration on this hub is disabled."] = "El registro está deshabilitado en este sitio."; -App::$strings["Registration on this hub is by approval only."] = "El registro en este hub está sometido a aprobación previa."; -App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>"; -App::$strings["Registration on this hub is by invitation only."] = "La inscripción en este hub es sólo posible por invitación."; -App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana."; -App::$strings["I accept the %s for this website"] = "Acepto los %s de este sitio"; -App::$strings["I am over %s years of age and accept the %s for this website"] = "Tengo más de %s años de edad y acepto los %s de este sitio web"; -App::$strings["Your email address"] = "Su dirección de correo electrónico"; -App::$strings["Choose a password"] = "Elija una contraseña"; -App::$strings["Please re-enter your password"] = "Por favor, vuelva a escribir su contraseña"; -App::$strings["Please enter your invitation code"] = "Por favor, introduzca el código de su invitación"; -App::$strings["Your Name"] = "Su nombre"; -App::$strings["Real names are preferred."] = "Se prefieren los nombres reales"; -App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Su alias se usará para crear una dirección de canal fácil de recordar, p. ej.: alias%s"; -App::$strings["Select a channel permission role for your usage needs and privacy requirements."] = "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad."; -App::$strings["no"] = "no"; -App::$strings["yes"] = "sí"; -App::$strings["Register"] = "Registrarse"; -App::$strings["This site requires email verification. After completing this form, please check your email for further instructions."] = "Este sitio requiere verificación por correo electrónico. Después de completar este formulario, por favor revise su correo electrónico para más instrucciones."; -App::$strings["Cover Photos"] = "Imágenes de portada del perfil"; -App::$strings["female"] = "mujer"; -App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["male"] = "hombre"; -App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["cover photo"] = "Imagen de portada del perfil"; -App::$strings["Your cover photo may be visible to anybody on the internet"] = "La foto de la portada puede ser visible para cualquiera en Internet"; -App::$strings["Change Cover Photo"] = "Cambiar la foto de portada del perfil"; -App::$strings["Documentation Search"] = "Búsqueda de Documentación"; -App::$strings["About"] = "Mi perfil"; -App::$strings["Administrators"] = "Administradores"; -App::$strings["Developers"] = "Desarrolladores"; -App::$strings["Tutorials"] = "Tutoriales"; -App::$strings["\$Projectname Documentation"] = "Documentación de \$Projectname"; -App::$strings["Contents"] = "Contenidos"; -App::$strings["Article"] = "Artículo"; -App::$strings["Item has been removed."] = "Se ha eliminado el elemento."; -App::$strings["Tag removed"] = "Etiqueta eliminada."; -App::$strings["Remove Item Tag"] = "Eliminar etiqueta del elemento."; -App::$strings["Select a tag to remove: "] = "Seleccionar una etiqueta para eliminar:"; -App::$strings["No such group"] = "No se encuentra el grupo"; -App::$strings["No such channel"] = "No se encuentra el canal"; -App::$strings["Privacy group is empty"] = "El grupo de canales está vacío"; -App::$strings["Privacy group: "] = "Grupo de canales: "; -App::$strings["Invalid channel."] = "El canal no es válido."; -App::$strings["network"] = "red"; -App::$strings["\$Projectname"] = "\$Projectname"; -App::$strings["Welcome to %s"] = "Bienvenido a %s"; -App::$strings["File not found."] = "Fichero no encontrado."; -App::$strings["Permission Denied."] = "Permiso denegado"; -App::$strings["Edit file permissions"] = "Modificar los permisos del fichero"; -App::$strings["Set/edit permissions"] = "Establecer/editar los permisos"; -App::$strings["Include all files and sub folders"] = "Incluir todos los ficheros y subcarpetas"; -App::$strings["Return to file list"] = "Volver a la lista de ficheros"; -App::$strings["Copy/paste this code to attach file to a post"] = "Copiar/pegar este código para adjuntar el fichero al envío"; -App::$strings["Copy/paste this URL to link file from a web page"] = "Copiar/pegar esta dirección para enlazar el fichero desde una página web"; -App::$strings["Share this file"] = "Compartir este fichero"; -App::$strings["Show URL to this file"] = "Mostrar la dirección de este fichero"; -App::$strings["Show in your contacts shared folder"] = "Mostrar en la carpeta compartida con sus contactos"; -App::$strings["No channel."] = "Ningún canal."; -App::$strings["No connections in common."] = "Ninguna conexión en común."; -App::$strings["View Common Connections"] = "Ver las conexiones comunes"; -App::$strings["Email verification resent"] = "Reenvío del email de verificación"; -App::$strings["Unable to resend email verification message."] = "No se puede reenviar el mensaje de verificación por correo electrónico."; -App::$strings["No connections."] = "Sin conexiones."; -App::$strings["Visit %s's profile [%s]"] = "Visitar el perfil de %s [%s]"; -App::$strings["View Connections"] = "Ver conexiones"; -App::$strings["Blocked accounts"] = "Cuentas bloqueadas"; -App::$strings["Expired accounts"] = "Cuentas caducadas"; -App::$strings["Expiring accounts"] = "Cuentas que caducan"; -App::$strings["Message queues"] = "Mensajes en cola"; -App::$strings["Your software should be updated"] = "Debe actualizar su software"; -App::$strings["Summary"] = "Sumario"; -App::$strings["Registered accounts"] = "Cuentas registradas"; -App::$strings["Pending registrations"] = "Registros pendientes"; -App::$strings["Registered channels"] = "Canales registrados"; -App::$strings["Active addons"] = "Addons acivos"; -App::$strings["Version"] = "Versión"; -App::$strings["Repository version (master)"] = "Versión del repositorio (master)"; -App::$strings["Repository version (dev)"] = "Versión del repositorio (dev)"; -App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio."; -App::$strings["Website:"] = "Sitio web:"; -App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal remoto [%s] (aún no es conocido en este sitio)"; -App::$strings["Rating (this information is public)"] = "Valoración (esta información es pública)"; -App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalmente puede explicar su valoración (esta información es pública)"; -App::$strings["Edit Card"] = "Editar la ficha"; -App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida."; -App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."; -App::$strings["Site Member (%s)"] = "Usuario del sitio (%s)"; -App::$strings["Password reset requested at %s"] = "Se ha solicitado restablecer la contraseña en %s"; -App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."; -App::$strings["Password Reset"] = "Restablecer la contraseña"; -App::$strings["Your password has been reset as requested."] = "Su contraseña ha sido restablecida según lo solicitó."; -App::$strings["Your new password is"] = "Su nueva contraseña es"; -App::$strings["Save or copy your new password - and then"] = "Guarde o copie su nueva contraseña - y después"; -App::$strings["click here to login"] = "pulse aquí para conectarse"; -App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión."; -App::$strings["Your password has changed at %s"] = "Su contraseña en %s ha sido cambiada"; -App::$strings["Forgot your Password?"] = "¿Ha olvidado su contraseña?"; -App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones."; -App::$strings["Email Address"] = "Dirección de correo electrónico"; -App::$strings["Name is required"] = "El nombre es obligatorio"; -App::$strings["Key and Secret are required"] = "\"Key\" y \"Secret\" son obligatorios"; -App::$strings["OAuth Apps Manager App"] = "App Gestión de apps OAuth"; -App::$strings["OAuth authentication tokens for mobile and remote apps"] = "Tokens de autenticación de OAuth para aplicaciones móviles y remotas"; -App::$strings["Consumer Key"] = "Consumer Key"; -App::$strings["Icon url"] = "Dirección del icono"; -App::$strings["Application not found."] = "Aplicación no encontrada."; -App::$strings["Connected OAuth Apps"] = "Apps OAuth conectadas"; -App::$strings["Mark all seen"] = "Marcar todo como visto"; -App::$strings["Likes %1\$s's %2\$s"] = "Gusta de %2\$sde %1\$s"; -App::$strings["Doesn't like %1\$s's %2\$s"] = "No le gusta %2\$sde %1\$s"; -App::$strings["Will attend %1\$s's %2\$s"] = "Asistirá %2\$sde %1\$s"; -App::$strings["Will not attend %1\$s's %2\$s"] = "No asistirá %2\$sde %1\$s"; -App::$strings["May attend %1\$s's %2\$s"] = "Puede asistir %2\$sde %1\$s"; -App::$strings["ActivityPub"] = "ActivityPub"; -App::$strings["0. Beginner/Basic"] = "0. Principiante/Básico"; -App::$strings["1. Novice - not skilled but willing to learn"] = "1. Novato: no cualificado, pero dispuesto a aprender"; -App::$strings["2. Intermediate - somewhat comfortable"] = "2. Intermedio - algo cómodo"; -App::$strings["3. Advanced - very comfortable"] = "3. Avanzado - muy cómodo"; -App::$strings["4. Expert - I can write computer code"] = "4. Experto - Puedo escribir código informático"; -App::$strings["5. Wizard - I probably know more than you do"] = "5. Colaborador - probablemente sé más que tú"; -App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal"; -App::$strings["Apps"] = "Aplicaciones (apps)"; -App::$strings["Affinity Tool"] = "Herramienta de afinidad"; -App::$strings["Site Admin"] = "Administrador del sitio"; -App::$strings["Report Bug"] = "Informe de errores"; -App::$strings["Bookmarks"] = "Marcadores"; -App::$strings["Chatrooms"] = "Salas de chat"; -App::$strings["Content Filter"] = "Filtro de contenido"; -App::$strings["Content Import"] = "Importación de contenidos"; -App::$strings["Remote Diagnostics"] = "Diagnóstico remoto"; -App::$strings["Suggest Channels"] = "Sugerir canales"; -App::$strings["Login"] = "Iniciar sesión"; -App::$strings["Stream"] = "Stream"; -App::$strings["Wiki"] = "Wiki"; -App::$strings["Channel Home"] = "Mi canal"; -App::$strings["Calendar"] = "Calendario"; -App::$strings["Directory"] = "Directorio"; -App::$strings["Mail"] = "Correo"; -App::$strings["Chat"] = "Chat"; -App::$strings["Probe"] = "Probar"; -App::$strings["Suggest"] = "Sugerir"; -App::$strings["Random Channel"] = "Canal aleatorio"; -App::$strings["Invite"] = "Invitar"; -App::$strings["Features"] = "Funcionalidades"; -App::$strings["Language"] = "Idioma"; -App::$strings["Post"] = "Publicación"; -App::$strings["Profile Photo"] = "Foto del perfil"; -App::$strings["Profiles"] = "Perfiles"; -App::$strings["Notifications"] = "Notificaciones"; -App::$strings["Order Apps"] = "Ordenar las apps"; -App::$strings["CardDAV"] = "CardDAV"; -App::$strings["Guest Access"] = "Acceso para invitados"; -App::$strings["Notes"] = "Notas"; -App::$strings["OAuth Apps Manager"] = "Administrador de apps OAuth"; -App::$strings["OAuth2 Apps Manager"] = "Administrador de apps OAuth2"; -App::$strings["PDL Editor"] = "Editor PDL"; -App::$strings["Premium Channel"] = "Canal premium"; -App::$strings["My Chatrooms"] = "Mis salas de chat"; -App::$strings["Channel Export"] = "Exportar canal"; -App::$strings["Purchase"] = "Comprar"; -App::$strings["Undelete"] = "Recuperar"; -App::$strings["Add to app-tray"] = "Añadir a la bandeja de aplicaciones"; -App::$strings["Remove from app-tray"] = "Quitar de la bandeja de aplicaciones"; -App::$strings["Pin to navbar"] = "Fijar en la barra de navegación"; -App::$strings["Unpin from navbar"] = "Quitar de la barra de navegación"; -App::$strings["__ctx:permcat__ default"] = "por defecto"; -App::$strings["__ctx:permcat__ follower"] = "seguidor"; -App::$strings["__ctx:permcat__ contributor"] = "contribuidor"; -App::$strings["__ctx:permcat__ publisher"] = "editor"; -App::$strings["(No Title)"] = "(Sin título)"; -App::$strings["Wiki page create failed."] = "Se ha producido un error en la creación de la página wiki."; -App::$strings["Wiki not found."] = "No se ha encontrado el wiki."; -App::$strings["Destination name already exists"] = "El nombre de destino ya existe"; -App::$strings["Page not found"] = "No se ha encontrado la página"; -App::$strings["Error reading page content"] = "Se ha producido un error al leer el contenido de la página"; -App::$strings["Error reading wiki"] = "Se ha producido un error al leer el wiki"; -App::$strings["Page update failed."] = "Se ha producido un error al actualizar la página."; -App::$strings["Nothing deleted"] = "No se ha eliminado nada"; -App::$strings["Compare: object not found."] = "No se ha encontrado un objeto para comparar."; -App::$strings["Page updated"] = "Se ha actualizado la página"; -App::$strings["Untitled"] = "Sin título"; -App::$strings["Wiki resource_id required for git commit"] = "Se necesita Wiki resource_id para el git commit"; -App::$strings["__ctx:wiki_history__ Message"] = "Mensaje"; -App::$strings["Date"] = "Fecha"; -App::$strings["Compare"] = "Comparar"; -App::$strings["Different viewers will see this text differently"] = "Visitantes diferentes verán este texto de forma distinta"; -App::$strings["Visible to your default audience"] = "Visible para su público predeterminado."; -App::$strings["Only me"] = "Sólo yo"; -App::$strings["Public"] = "Público"; -App::$strings["Anybody in the \$Projectname network"] = "Cualquiera en la red \$Projectname"; -App::$strings["Any account on %s"] = "Cualquier cuenta en %s"; -App::$strings["Any of my connections"] = "Cualquiera de mis conexiones"; -App::$strings["Only connections I specifically allow"] = "Sólo las conexiones que yo permita de forma explícita"; -App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)"; -App::$strings["Any connections including those who haven't yet been approved"] = "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas"; -App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones."; -App::$strings["This is your default setting for who can view your default channel profile"] = "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado"; -App::$strings["This is your default setting for who can view your connections"] = "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones"; -App::$strings["This is your default setting for who can view your file storage and photos"] = "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos"; -App::$strings["This is your default setting for the audience of your webpages"] = "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web"; -App::$strings["Directory Options"] = "Opciones del directorio"; -App::$strings["Safe Mode"] = "Modo seguro"; -App::$strings["Public Forums Only"] = "Solo foros públicos"; -App::$strings["This Website Only"] = "Solo este sitio web"; -App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos que ya existen sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente."; -App::$strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales"; -App::$strings["edit"] = "editar"; -App::$strings["Edit group"] = "Editar grupo"; -App::$strings["Add privacy group"] = "Añadir un grupo de canales"; -App::$strings["Channels not in any privacy group"] = "Sin canales en ningún grupo"; -App::$strings["add"] = "añadir"; -App::$strings["Missing room name"] = "Sala de chat sin nombre"; -App::$strings["Duplicate room name"] = "Nombre de sala duplicado."; -App::$strings["Invalid room specifier."] = "Especificador de sala no válido."; -App::$strings["Room not found."] = "Sala no encontrada."; -App::$strings["Room is full"] = "La sala está llena."; -App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s"; -App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname"; -App::$strings["\$projectname"] = "\$projectname"; -App::$strings["Thank You,"] = "Gracias,"; -App::$strings["%s Administrator"] = "%s Administrador"; -App::$strings["This email was sent by %1\$s at %2\$s."] = "Este email ha sido enviado por %1\$s a %2\$s."; -App::$strings["To stop receiving these messages, please adjust your Notification Settings at %s"] = "Para dejar de recibir estos mensajes, por favor ajuste la configuración de notificación en %s"; -App::$strings["To stop receiving these messages, please adjust your %s."] = "Para dejar de recibir estos mensajes, por favor, ajuste su %s"; -App::$strings["%s <!item_type!>"] = "%s <!item_type!>"; -App::$strings["[\$Projectname:Notify] New mail received at %s"] = "[\$Projectname:Aviso] Nuevo correo recibido en %s"; -App::$strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s le ha enviado un nuevo mensaje privado en %2\$s."; -App::$strings["%1\$s sent you %2\$s."] = "%1\$s le ha enviado %2\$s."; -App::$strings["a private message"] = "un mensaje privado"; -App::$strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visite %s para ver y/o responder a su mensaje privado."; -App::$strings["commented on"] = "ha comentado sobre "; -App::$strings["liked"] = "ha gustado de "; -App::$strings["disliked"] = "no ha gustado de "; -App::$strings["%1\$s %2\$s [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s%2\$s [zrl=%3\$s ]un %4\$s[/zrl]"; -App::$strings["%1\$s %2\$s [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s %2\$s[zrl=%3\$s]%5\$s de %4\$s[/zrl]"; -App::$strings["%1\$s %2\$s [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s %2\$s [zrl=%3\$s]su %4\$s[/zrl]"; -App::$strings["[\$Projectname:Notify] Moderated Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] Comentario moderado en la conversación #%1\$d por %2\$s"; -App::$strings["[\$Projectname:Notify] Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] Nuevo comentario de %2\$s en la conversación #%1\$d"; -App::$strings["%1\$s commented on an item/conversation you have been following."] = "%1\$sha comentado un elemento/conversación que ha estado siguiendo."; -App::$strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visite %s"; -App::$strings["Please visit %s to approve or reject this comment."] = "Por favor, visite %s para aprobar o rechazar este comentario."; -App::$strings["%1\$s liked [zrl=%2\$s]your %3\$s[/zrl]"] = "A %1\$sle ha gustado [zrl=%2\$s]su %3\$s [/zrl]"; -App::$strings["[\$Projectname:Notify] Like received to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] \"Me gusta\" de %2\$s en la conversación #%1\$d"; -App::$strings["%1\$s liked an item/conversation you created."] = "A %1\$s le ha gustado un elemento o conversación que ha creado usted."; -App::$strings["[\$Projectname:Notify] %s posted to your profile wall"] = "[\$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")"; -App::$strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s ha publicado en su muro en %2\$s"; -App::$strings["%1\$s posted to [zrl=%2\$s]your wall[/zrl]"] = "%1\$sha publicado en [zrl=%2\$s]su muro[/zrl]"; -App::$strings["[\$Projectname:Notify] %s tagged you"] = "[\$Projectname:Aviso] %s le ha etiquetado"; -App::$strings["%1\$s tagged you at %2\$s"] = "%1\$sle ha etiquetado en %2\$s"; -App::$strings["%1\$s [zrl=%2\$s]tagged you[/zrl]."] = "%1\$s [zrl=%2\$s]le ha etiquetado[/zrl]."; -App::$strings["[\$Projectname:Notify] %1\$s poked you"] = "[\$Projectname:Aviso] %1\$s le ha dado un toque"; -App::$strings["%1\$s poked you at %2\$s"] = "%1\$sle ha dado un toque en %2\$s"; -App::$strings["%1\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s [zrl=%2\$s] le ha dado un toque[/zrl]."; -App::$strings["[\$Projectname:Notify] %s tagged your post"] = "[\$Projectname:Aviso] %s ha etiquetado su entrada"; -App::$strings["%1\$s tagged your post at %2\$s"] = "%1\$sha etiquetado su entrada en %2\$s"; -App::$strings["%1\$s tagged [zrl=%2\$s]your post[/zrl]"] = "%1\$s ha etiquetado [zrl=%2\$s]su entrada[/zrl]"; -App::$strings["[\$Projectname:Notify] Introduction received"] = "[\$Projectname:Aviso] Ha recibido una solicitud de conexión"; -App::$strings["You've received an new connection request from '%1\$s' at %2\$s"] = "Ha recibido una nueva solicitud de conexión de '%1\$s' en %2\$s"; -App::$strings["You've received [zrl=%1\$s]a new connection request[/zrl] from %2\$s."] = "Ha recibido [zrl=%1\$s]una nueva solicitud de conexión[/zrl] de %2\$s."; -App::$strings["You may visit their profile at %s"] = "Puede visitar su perfil en %s"; -App::$strings["Please visit %s to approve or reject the connection request."] = "Por favor, visite %s para permitir o rechazar la solicitad de conexión."; -App::$strings["[\$Projectname:Notify] Friend suggestion received"] = "[\$Projectname:Aviso] Ha recibido una sugerencia de conexión"; -App::$strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Ha recibido una sugerencia de amistad de '%1\$s' en %2\$s"; -App::$strings["You've received [zrl=%1\$s]a friend suggestion[/zrl] for %2\$s from %3\$s."] = "Ha recibido [zrl=%1\$s]una sugerencia de amistad[/zrl] para %2\$s de %3\$s."; -App::$strings["Name:"] = "Nombre:"; -App::$strings["Photo:"] = "Foto:"; -App::$strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprobar o rechazar la sugerencia."; -App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Aviso]"; -App::$strings["created a new post"] = "ha creado una nueva entrada"; -App::$strings["commented on %s's post"] = "ha comentado la entrada de %s"; -App::$strings["repeated %s's post"] = "repetida la entrada de %s"; -App::$strings["edited a post dated %s"] = "ha editado una entrada fechada el %s"; -App::$strings["edited a comment dated %s"] = "ha editado un comentario fechado el %s"; -App::$strings["Wiki updated successfully"] = "El wiki se ha actualizado con éxito"; -App::$strings["Wiki files deleted successfully"] = "Se han borrado con éxito los ficheros del wiki"; -App::$strings["Source code of failed update: "] = "Código fuente de la actualización fallida: "; -App::$strings["Update Error at %s"] = "Error de actualización en %s"; -App::$strings["Update %s failed. See error logs."] = "La actualización %s ha fallado. Mire el informe de errores."; -App::$strings["Private Message"] = "Mensaje Privado"; -App::$strings["Privacy conflict. Discretion advised."] = "Conflicto de privacidad. Se aconseja discreción."; -App::$strings["Admin Delete"] = "Eliminar admin"; -App::$strings["Select"] = "Seleccionar"; -App::$strings["I will attend"] = "Participaré"; -App::$strings["I will not attend"] = "No participaré"; -App::$strings["I might attend"] = "Quizá participe"; -App::$strings["I agree"] = "Estoy de acuerdo"; -App::$strings["I disagree"] = "No estoy de acuerdo"; -App::$strings["I abstain"] = "Me abstengo"; -App::$strings["Toggle Star Status"] = "Activar o desactivar el estado de entrada preferida"; -App::$strings["Message signature validated"] = "Firma de mensaje validada"; -App::$strings["Message signature incorrect"] = "Firma de mensaje incorrecta"; -App::$strings["Add Tag"] = "Añadir etiqueta"; -App::$strings["Conversation Tools"] = "Herramientas de conversación"; -App::$strings["like"] = "me gusta"; -App::$strings["dislike"] = "no me gusta"; -App::$strings["Reply on this comment"] = "Responder a este comentario"; -App::$strings["reply"] = "responder"; -App::$strings["Reply to"] = "Responder a "; -App::$strings["Share This"] = "Compartir esto"; -App::$strings["share"] = "compartir"; -App::$strings["Delivery Report"] = "Informe de transmisión"; -App::$strings["%d comment"] = array( - 0 => "%d comentario", - 1 => "%d comentarios", -); -App::$strings["View %s's profile - %s"] = "Ver el perfil de %s - %s"; -App::$strings["to"] = "a"; -App::$strings["via"] = "mediante"; -App::$strings["Wall-to-Wall"] = "De página del perfil a página del perfil (de \"muro\" a \"muro\")"; -App::$strings["via Wall-To-Wall:"] = "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")"; -App::$strings["from %s"] = "desde %s"; -App::$strings["last edited: %s"] = "último cambio: %s"; -App::$strings["Expires: %s"] = "Caduca: %s"; -App::$strings["Attend"] = "Participar o asistir"; -App::$strings["Attendance Options"] = "Opciones de participación o asistencia"; -App::$strings["Vote"] = "Votar"; -App::$strings["Voting Options"] = "Opciones de votación"; -App::$strings["Go to previous comment"] = "Ir al comentario anterior"; -App::$strings["Save Bookmarks"] = "Guardar en Marcadores"; -App::$strings["Add to Calendar"] = "Añadir al calendario"; -App::$strings["This is an unsaved preview"] = "Esta es una previsualización sin guardar"; -App::$strings["%s show all"] = "%s mostrar todo"; -App::$strings["Bold"] = "Negrita"; -App::$strings["Italic"] = "Itálico "; -App::$strings["Underline"] = "Subrayar"; -App::$strings["Quote"] = "Citar"; -App::$strings["Code"] = "Código"; -App::$strings["Image"] = "Imagen"; -App::$strings["Attach/Upload file"] = "Adjuntar/cargar fichero"; -App::$strings["Insert Link"] = "Insertar enlace"; -App::$strings["Video"] = "Vídeo"; -App::$strings["Your full name (required)"] = "Su nombre completo (requerido)"; -App::$strings["Your email address (required)"] = "Su dirección de correo electrónico (requerido)"; -App::$strings["Your website URL (optional)"] = "La URL de su sitio web (opcional)"; -App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."; -App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."; -App::$strings["parent"] = "padre"; -App::$strings["Collection"] = "Colección"; -App::$strings["Principal"] = "Principal"; -App::$strings["Addressbook"] = "Libreta de direcciones"; -App::$strings["Schedule Inbox"] = "Programar bandeja de entrada"; -App::$strings["Schedule Outbox"] = "Programar bandeja de salida"; -App::$strings["Total"] = "Total"; -App::$strings["Shared"] = "Compartido"; -App::$strings["Add Files"] = "Añadir ficheros"; -App::$strings["You are using %1\$s of your available file storage."] = "Está usando %1\$s de su espacio disponible para ficheros."; -App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s%)"] = "Está usando %1\$s de %2\$s que tiene a su disposición para ficheros. (%3\$s%)"; -App::$strings["WARNING:"] = "ATENCIÓN: "; -App::$strings["Create new folder"] = "Crear nueva carpeta"; -App::$strings["Upload file"] = "Subir fichero"; -App::$strings["Drop files here to immediately upload"] = "Arrastre los ficheros aquí para subirlos de forma inmediata"; -App::$strings["Forums"] = "Foros"; -App::$strings["Select Channel"] = "Seleccionar un canal"; -App::$strings["Read-write"] = "Lectura y escritura"; -App::$strings["Read-only"] = "Sólo lectura"; -App::$strings["Channel Calendar"] = "Calendario del canal"; -App::$strings["Shared CalDAV Calendars"] = "Calendarios CalDAV compartidos"; -App::$strings["Share this calendar"] = "Compartir este calendario"; -App::$strings["Calendar name and color"] = "Nombre y color del calendario"; -App::$strings["Create new CalDAV calendar"] = "Crear un nuevo calendario CalDAV"; -App::$strings["Calendar Name"] = "Nombre del calendario"; -App::$strings["Calendar Tools"] = "Gestión de calendarios"; -App::$strings["Import calendar"] = "Importar un calendario"; -App::$strings["Select a calendar to import to"] = "Seleccionar un calendario para importarlo"; -App::$strings["Addressbooks"] = "Agenda de direcciones"; -App::$strings["Addressbook name"] = "Nombre de la agenda"; -App::$strings["Create new addressbook"] = "Crear una nueva agenda de direcciones"; -App::$strings["Addressbook Name"] = "Nombre de la agenda"; -App::$strings["Addressbook Tools"] = "Gestión de agendas de direcciones"; -App::$strings["Import addressbook"] = "Importar una agenda de direcciones"; -App::$strings["Select an addressbook to import to"] = "Seleccionar una agenda para importarla"; -App::$strings["Everything"] = "Todo"; -App::$strings["Events Tools"] = "Gestión de eventos"; -App::$strings["Export Calendar"] = "Exportar el calendario"; -App::$strings["Import Calendar"] = "Importar un calendario"; -App::$strings["Suggested Chatrooms"] = "Salas de chat sugeridas"; -App::$strings["HQ Control Panel"] = "Panel de control de HQ"; -App::$strings["Create a new post"] = "Crear una nueva entrada"; -App::$strings["Private Mail Menu"] = "Menú de correo privado"; -App::$strings["Combined View"] = "Vista combinada"; -App::$strings["Inbox"] = "Bandeja de entrada"; -App::$strings["Outbox"] = "Bandeja de salida"; -App::$strings["New Message"] = "Nuevo mensaje"; -App::$strings["Overview"] = "Resumen"; -App::$strings["Rating Tools"] = "Valoraciones"; -App::$strings["Rate Me"] = "Valorar este canal"; -App::$strings["View Ratings"] = "Mostrar las valoraciones"; -App::$strings["__ctx:widget__ Activity"] = "Actividad"; -App::$strings["Show posts related to the %s privacy group"] = "Mostrar entradas relacionadas con el grupo %s"; -App::$strings["Show my privacy groups"] = "Mostrar mis grupos de canales"; -App::$strings["Show posts to this forum"] = "Mostrar las entradas en este foro"; -App::$strings["Show forums"] = "Mostrar los foros"; -App::$strings["Starred Posts"] = "Entradas preferidas"; -App::$strings["Show posts that I have starred"] = "Mostrar entradas que he señalado como preferidas"; -App::$strings["Personal Posts"] = "Entradas personales"; -App::$strings["Show posts that mention or involve me"] = "Mostrar entradas que me mencionen o involucren"; -App::$strings["Show posts that I have filed to %s"] = "Mostrar las entradas que he enviado a %s"; -App::$strings["Saved Folders"] = "Carpetas guardadas"; -App::$strings["Show filed post categories"] = "Mostrar los temas de las entradas archivadas"; -App::$strings["Panel search"] = "Panel de búsqueda"; -App::$strings["Filter by name"] = "Filtrar por nombre"; -App::$strings["Remove active filter"] = "Eliminar el filtro activo"; -App::$strings["Stream Filters"] = "Filtros del stream"; -App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas."; -App::$strings["Add New Connection"] = "Añadir nueva conexión"; -App::$strings["Enter channel address"] = "Dirección del canal"; -App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen"; -App::$strings["Archives"] = "Hemeroteca"; -App::$strings["Received Messages"] = "Mensajes recibidos"; -App::$strings["Sent Messages"] = "Enviar mensajes"; -App::$strings["Conversations"] = "Conversaciones"; -App::$strings["No messages."] = "Sin mensajes."; -App::$strings["Delete conversation"] = "Eliminar conversación"; -App::$strings["Chat Members"] = "Miembros del chat"; -App::$strings["photo/image"] = "foto/imagen"; -App::$strings["Remove term"] = "Eliminar término"; -App::$strings["Saved Searches"] = "Búsquedas guardadas"; -App::$strings["Add new page"] = "Añadir una nueva página"; -App::$strings["Wiki Pages"] = "Páginas del wiki"; -App::$strings["Page name"] = "Nombre de la página"; -App::$strings["Refresh"] = "Recargar"; -App::$strings["Tasks"] = "Tareas"; -App::$strings["Suggestions"] = "Sugerencias"; -App::$strings["See more..."] = "Ver más..."; -App::$strings["Commented Date"] = "Fecha de los comentarios"; -App::$strings["Order by last commented date"] = "Ordenar por la última fecha de los comentarios"; -App::$strings["Posted Date"] = "Fecha de publicación"; -App::$strings["Order by last posted date"] = "Ordenar por la ultima fecha de publicación"; -App::$strings["Date Unthreaded"] = "Sin enhebrar por fecha"; -App::$strings["Order unthreaded by date"] = "Ordenar sin enhebrar por fecha"; -App::$strings["Stream Order"] = "Orden del stream"; -App::$strings["Click to show more"] = "Hacer clic para ver más"; -App::$strings["Tags"] = "Etiquetas"; -App::$strings["App Collections"] = "Colección de aplicaciones"; -App::$strings["Installed apps"] = "Aplicaciones instaladas"; -App::$strings["Profile Creation"] = "Creación de perfiles"; -App::$strings["Upload profile photo"] = "Cargar la foto del perfil"; -App::$strings["Upload cover photo"] = "Cargar la foto de portada del perfil"; -App::$strings["Edit your profile"] = "Editar su perfil"; -App::$strings["Find and Connect with others"] = "Encontrar y conectarse con otros"; -App::$strings["View the directory"] = "Ver el directorio"; -App::$strings["Manage your connections"] = "Gestionar sus conexiones"; -App::$strings["Communicate"] = "Comunicarse"; -App::$strings["View your channel homepage"] = "Ver la página principal de su canal"; -App::$strings["View your network stream"] = "Ver el \"stream\" de su red"; -App::$strings["Documentation"] = "Documentación"; -App::$strings["Missing Features?"] = "¿Faltan Características?"; -App::$strings["Pin apps to navigation bar"] = "Fijar apps a la barra de navegación"; -App::$strings["Install more apps"] = "Instalar más apps"; -App::$strings["View public stream"] = "Ver el \"stream\" público"; -App::$strings["Member registrations waiting for confirmation"] = "Inscripciones de nuevos miembros pendientes de aprobación"; -App::$strings["Inspect queue"] = "Examinar la cola"; -App::$strings["DB updates"] = "Actualizaciones de la base de datos"; -App::$strings["Admin"] = "Administrador"; -App::$strings["Addon Features"] = "Características del addon"; -App::$strings["Account settings"] = "Configuración de la cuenta"; -App::$strings["Channel settings"] = "Configuración del canal"; -App::$strings["Display settings"] = "Ajustes de visualización"; -App::$strings["Manage locations"] = "Gestión de ubicaciones (clones) del canal"; -App::$strings["Bookmarked Chatrooms"] = "Salas de chat preferidas"; -App::$strings["New Network Activity"] = "Nueva actividad en la red"; -App::$strings["New Network Activity Notifications"] = "Avisos de nueva actividad en la red"; -App::$strings["View your network activity"] = "Ver su actividad en la red"; -App::$strings["Mark all notifications read"] = "Marcar todas las notificaciones como leídas"; -App::$strings["Show new posts only"] = "Mostrar solo las entradas nuevas"; -App::$strings["Filter by name or address"] = "Filtrar por nombre o dirección"; -App::$strings["New Home Activity"] = "Nueva actividad en su página principal"; -App::$strings["New Home Activity Notifications"] = "Avisos de nueva actividad en su página principal"; -App::$strings["View your home activity"] = "Ver su actividad en su página principal"; -App::$strings["Mark all notifications seen"] = "Marcar todas las notificaciones como vistas"; -App::$strings["New Mails"] = "Nuevos mensajes de correo"; -App::$strings["New Mails Notifications"] = "Avisos de nuevos mensajes de correo"; -App::$strings["View your private mails"] = "Ver sus correos privados"; -App::$strings["Mark all messages seen"] = "Marcar todos los mensajes como vistos"; -App::$strings["New Events"] = "Eventos nuevos"; -App::$strings["New Events Notifications"] = "Avisos de nuevos eventos"; -App::$strings["View events"] = "Ver los eventos"; -App::$strings["Mark all events seen"] = "Marcar todos los eventos como leidos"; -App::$strings["New Connections Notifications"] = "Avisos de nuevas conexiones"; -App::$strings["View all connections"] = "Ver todas las conexiones"; -App::$strings["New Files"] = "Ficheros nuevos"; -App::$strings["New Files Notifications"] = "Avisos de nuevos ficheros"; -App::$strings["Notices"] = "Avisos"; -App::$strings["View all notices"] = "Ver todos los avisos"; -App::$strings["Mark all notices seen"] = "Marcar como leídos todos los avisos"; -App::$strings["New Registrations"] = "Registros nuevos"; -App::$strings["New Registrations Notifications"] = "Notificaciones de nuevos registros"; -App::$strings["Public Stream Notifications"] = "Avisos del \"stream\" público"; -App::$strings["View the public stream"] = "Ver el \"stream\" público"; -App::$strings["Sorry, you have got no notifications at the moment"] = "Lo sentimos, por el momento no ha recibido ninguna notificación"; -App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen."; -App::$strings["Network/Protocol"] = "Red / Protocolo"; -App::$strings["Zot"] = "Zot"; -App::$strings["Diaspora"] = "Diaspora"; -App::$strings["Friendica"] = "Friendica"; -App::$strings["OStatus"] = "OStatus"; -App::$strings["Create an account to access services and applications"] = "Crear una cuenta para acceder a los servicios y aplicaciones"; -App::$strings["Logout"] = "Finalizar sesión"; -App::$strings["Login/Email"] = "Inicio de sesión / Correo electrónico"; -App::$strings["Password"] = "Contraseña"; -App::$strings["Remember me"] = "Recordarme"; -App::$strings["Forgot your password?"] = "¿Olvidó su contraseña?"; -App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Error SSL del sitio web en %s"; -App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificado SSL del sitio web no es válido. Por favor, solucione el problema."; -App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Las tareas de Cron no están funcionando en %s"; -App::$strings["Cron/Scheduled tasks not running."] = "Las tareas del Planificador/Cron no están funcionando."; -App::$strings["never"] = "nunca"; -App::$strings["Cover Photo"] = "Imagen de portada del perfil"; -App::$strings["Focus (Hubzilla default)"] = "Focus (predefinido)"; -App::$strings["Theme settings"] = "Ajustes del tema"; -App::$strings["Narrow navbar"] = "Estrechar la barra de navegación"; -App::$strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; -App::$strings["Navigation bar icon color "] = "Color del icono de la barra de navegación"; -App::$strings["Navigation bar active icon color "] = "Color del icono activo de la barra de navegación"; -App::$strings["Link color"] = "Color del enlace"; -App::$strings["Set font-color for banner"] = "Ajustar el color del tipo de letra para el \"banner\""; -App::$strings["Set the background color"] = "Ajustar el color de fondo"; -App::$strings["Set the background image"] = "Ajustar la imagen de fondo"; -App::$strings["Set the background color of items"] = "Ajustar el color de los elementos de fondo"; -App::$strings["Set the background color of comments"] = "Ajustar el color de fondo de los comentarios"; -App::$strings["Set font-size for the entire application"] = "Ajustar el tamaño de letra para toda la aplicación"; -App::$strings["Examples: 1rem, 100%, 16px"] = "Ejemplos: 1rem, 100%, 16px"; -App::$strings["Set font-color for posts and comments"] = "Establecer el color de la letra para publicaciones y comentarios"; -App::$strings["Set radius of corners"] = "Establecer el radio de curvatura de las esquinas"; -App::$strings["Example: 4px"] = "Ejemplo: 4px"; -App::$strings["Set shadow depth of photos"] = "Ajustar la profundidad de sombras de las fotos"; -App::$strings["Set maximum width of content region in pixel"] = "Ajustar la anchura máxima de la región de contenido, en pixels"; -App::$strings["Leave empty for default width"] = "Dejar en blanco para la anchura predeterminada"; -App::$strings["Left align page content"] = "Alinear a la izquierda el contenido de la página"; -App::$strings["Set size of conversation author photo"] = "Ajustar el tamaño de la foto del autor de la conversación"; -App::$strings["Set size of followup author photos"] = "Ajustar el tamaño de foto de los seguidores del autor"; -App::$strings["Show advanced settings"] = "Mostrar ajustes avanzados"; -App::$strings["Errors encountered deleting database table "] = "Errores encontrados al eliminar la tabla de la base de datos"; -App::$strings["Submit Settings"] = "Enviar los ajustes"; -App::$strings["Drop tables when uninstalling?"] = "¿Eliminar tablas al desinstalar?"; -App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin."; -App::$strings["Mapbox Access Token"] = "Token de acceso de Mapbox"; -App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado."; -App::$strings["Rendezvous"] = "Rendezvous"; -App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre."; -App::$strings["Welcome to Rendezvous!"] = "¡Bienvenido/a a Rendevous!"; -App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa."; -App::$strings["Let's meet here"] = "Reunámonos aquí"; -App::$strings["New marker"] = "Nuevo marcador"; -App::$strings["Edit marker"] = "Editar un marcador"; -App::$strings["New identity"] = "Nueva identidad"; -App::$strings["Delete marker"] = "Eliminar un marcador"; -App::$strings["Delete member"] = "Eliminar un miembro"; -App::$strings["Edit proximity alert"] = "Editar alerta de proximidad"; -App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; -App::$strings["distance"] = "distancia"; -App::$strings["Proximity alert distance (meters)"] = "Distancia (en metros) para la alerta de proximidad"; -App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; -App::$strings["Marker proximity alert"] = "Marcador de alerta de proximidad"; -App::$strings["Reminder note"] = "Recordatorio"; -App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..."; -App::$strings["Add new rendezvous"] = "Añadir una nueva cita"; -App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo."; -App::$strings["You have no rendezvous. Press the button above to create a rendezvous!"] = "No tiene ninguna cita. ¡Presione el botón de arriba para crear una!"; -App::$strings["Skeleton App"] = "App Skeleton"; -App::$strings["A skeleton for addons, you can copy/paste"] = "Skeleton para los addons, puede copiar/pegar"; -App::$strings["Some setting"] = "Algunos ajustes"; -App::$strings["A setting"] = "Un ajuste"; -App::$strings["Skeleton Settings"] = "Ajustes de Skeleton"; -App::$strings["The GNU-Social protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo de GNU-Social no admite la independencia de la ubicación. Las\n conexiones que realice dentro de esa red pueden ser inaccesibles desde \nubicaciones de canales alternativos."; -App::$strings["GNU-Social Protocol App"] = "App Protocolo GNU-Social"; -App::$strings["GNU-Social Protocol"] = "Protocolo GNU-Social"; -App::$strings["Follow"] = "Seguir"; -App::$strings["%1\$s is now following %2\$s"] = "%1\$s está siguiendo ahora a %2\$s"; -App::$strings["Random Planet App"] = "App Random Planet"; -App::$strings["Installed"] = "Instalado"; -App::$strings["Set a random planet from the Star Wars Empire as your location when posting"] = "Establecer un planeta aleatorio del Imperio de la Guerra de las Galaxias como su ubicación cuando publique."; -App::$strings["System defaults:"] = "Valores predeterminados del sistema: "; -App::$strings["Preferred Clipart IDs"] = "IDs de las imágenes clipart preferidas"; -App::$strings["List of preferred clipart ids. These will be shown first."] = "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar."; -App::$strings["Default Search Term"] = "Términos de búsqueda predeterminados"; -App::$strings["The default search term. These will be shown second."] = "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar."; -App::$strings["Return After"] = "Regresar después"; -App::$strings["Page to load after image selection."] = "Página para cargar después de la selección de imágenes."; -App::$strings["Edit Profile"] = "Editar el perfil"; -App::$strings["Profile List"] = "Lista de perfiles"; -App::$strings["Order of Preferred"] = "Orden de preferencia"; -App::$strings["Sort order of preferred clipart ids."] = "Orden de clasificación de los identificadores de imágenes clipart preferidas."; -App::$strings["Newest first"] = "Las más nuevas en primer lugar"; -App::$strings["As entered"] = "Tal como se ingresaron"; -App::$strings["Order of other"] = "Orden de los demás"; -App::$strings["Sort order of other clipart ids."] = "Orden de clasificación de otros ids de imágenes clipart."; -App::$strings["Most downloaded first"] = "Las más descargadas en primer lugar"; -App::$strings["Most liked first"] = "Las más apreciadas en primer lugar"; -App::$strings["Preferred IDs Message"] = "Mensaje de IDs preferido"; -App::$strings["Message to display above preferred results."] = "Mensaje para mostrar sobre los resultados preferidos."; -App::$strings["Uploaded by: "] = "Subida por: "; -App::$strings["Drawn by: "] = "Creada por: "; -App::$strings["Use this image"] = "Usar esta imagen"; -App::$strings["Or select from a free OpenClipart.org image:"] = "O seleccionar una imagen gratuita de OpenClipart.org: "; -App::$strings["Search Term"] = "Término de búsqueda"; -App::$strings["Unknown error. Please try again later."] = "Error desconocido. Por favor, inténtelo otra vez."; -App::$strings["Profile photo updated successfully."] = "Se ha actualizado con éxito la foto de perfil."; -App::$strings["Flag Adult Photos"] = "Indicador (\"flag\") de fotos de adultos"; -App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada"; -App::$strings["You haven't set a TOTP secret yet.\nPlease click the button below to generate one and register this site\nwith your preferred authenticator app."] = "Aún no ha establecido un TOTP secret.\nPor favor, haga clic en el botón de abajo para generar uno y registrar este sitio\ncon su aplicación de autenticación preferida."; -App::$strings["Your TOTP secret is"] = "Su TOTP secret es "; -App::$strings["Be sure to save it somewhere in case you lose or replace your mobile device.\nUse your mobile device to scan the QR code below to register this site\nwith your preferred authenticator app."] = "Asegúrese de guardarlo en algún lugar en caso de que pierda o reemplace su dispositivo móvil.\nUtilice su dispositivo móvil para escanear el código QR a continuación para registrar este sitio\ncon su aplicación de autenticación preferida."; -App::$strings["Test"] = "Test"; -App::$strings["Generate New Secret"] = "Generar un nuevo Secret"; -App::$strings["Go"] = "Ir"; -App::$strings["Enter your password"] = "Introduzca su contraseña"; -App::$strings["enter TOTP code from your device"] = "introduzca el código TOTP desde su dispositivo"; -App::$strings["Pass!"] = "¡Pase!"; -App::$strings["Fail"] = "Fallo"; -App::$strings["Incorrect password, try again."] = "Contraseña incorrecta, inténtelo de nuevo."; -App::$strings["Record your new TOTP secret and rescan the QR code above."] = "Registre su nuevo TOTP secret y vuelva a escanear el código QR de arriba"; -App::$strings["TOTP Settings"] = "Ajustes de TOTP"; -App::$strings["TOTP Two-Step Verification"] = "Verificación en dos pasos de TOTP"; -App::$strings["Enter the 2-step verification generated by your authenticator app:"] = "Introduzca la verificación en 2 pasos generada por su app de autenticación: "; -App::$strings["Success!"] = "¡Éxito!"; -App::$strings["Invalid code, please try again."] = "Código inválido, por favor inténtelo de nuevo."; -App::$strings["Too many invalid codes..."] = "Demasiados códigos no válidos..."; -App::$strings["Verify"] = "Verficar"; -App::$strings["Wordpress Settings saved."] = "Se han guardado los ajustes de WordPress."; -App::$strings["Wordpress Post App"] = "App Publicar en Wordpress"; -App::$strings["Post to WordPress or anything else which uses the wordpress XMLRPC API"] = "Publicar en WordPress o cualquier otra cosa que utilice la API XMLRPC de wordpress"; -App::$strings["WordPress username"] = "Nombre de usuario de WordPress"; -App::$strings["WordPress password"] = "Contraseña de WordPress"; -App::$strings["WordPress API URL"] = "URL de la API de WordPress"; -App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Habitualmente https://your-blog.tld/xmlrpc.php"; -App::$strings["WordPress blogid"] = "Blog de WordPress"; -App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco"; -App::$strings["Post to WordPress by default"] = "Publicar en WordPress por defecto"; -App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Reenviar comentarios (requerido por el plugin hubzilla_wp)"; -App::$strings["Wordpress Post"] = "Publicar en Wordpress"; -App::$strings["Post to WordPress"] = "Publicar en WordPress"; -App::$strings["Possible adult content"] = "Posible contenido para adultos"; -App::$strings["%s - view"] = "ver - %s"; -App::$strings["NSFW Settings saved."] = "Se han guardado los ajustes de NSFW."; -App::$strings["NSFW App"] = "App NSFW"; -App::$strings["Collapse content that contains predefined words"] = "Ocultar el contenido que contiene palabras predefinidas"; -App::$strings["This app looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Esta aplicación busca en los mensajes las palabras o texto que especifique a continuación, y oculta cualquier contenido que contenga esas palabras clave, para que no se muestren en momentos inapropiados, como insinuaciones sexuales que puedan ser inapropiadas en un entorno laboral. Es cortés y recomendable etiquetar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como filtro de contenido de propósito general."; -App::$strings["Comma separated list of keywords to hide"] = "Lista separada por comas de palabras clave para ocultar"; -App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "Palabra, /expresión regular/, lang=xx, lang!=xx"; -App::$strings["NSFW"] = "NSFW"; -App::$strings["Not allowed."] = "No permitido/a."; -App::$strings["Max queueworker threads"] = "Máximo de hilos en la cola"; -App::$strings["Assume workers dead after ___ seconds"] = "Asumir que el proceso de trabajo está muerto después de ___ segundos"; -App::$strings["Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)"] = "Haga una pausa antes de comenzar la siguiente tarea: (microsegundos. Mínimo 100 =.0001 segundos)"; -App::$strings["Queueworker Settings"] = "Configuración del gestor de procesos de trabajo en cola"; -App::$strings["Insane Journal Crosspost Connector Settings saved."] = "Se han guardado los ajustes del Conector de publicación cruzada de InsaneJournal."; -App::$strings["Insane Journal Crosspost Connector App"] = "App Ajustes del Conector de publicación cruzada de InsaneJournal"; -App::$strings["Relay public postings to Insane Journal"] = "Retransmisión de entradas públicas a Insane Journal"; -App::$strings["InsaneJournal username"] = "Nombre de usuario en InsaneJournal"; -App::$strings["InsaneJournal password"] = "Contraseña en InsaneJournal"; -App::$strings["Post to InsaneJournal by default"] = "Publicar por defecto en InsaneJournal"; -App::$strings["Insane Journal Crosspost Connector"] = "Conector de publicación cruzada de InsaneJournal"; -App::$strings["Post to Insane Journal"] = "Publicar en Insane Journal"; -App::$strings["Post to Dreamwidth"] = "Publicar en Dreamwidth"; -App::$strings["Dreamwidth Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada Dreamwidth."; -App::$strings["Dreamwidth Crosspost Connector App"] = "App Dreamwidth Crosspost Connector"; -App::$strings["Relay public postings to Dreamwidth"] = "Retransmisión de entradas públicas a Dreamwidth"; -App::$strings["Dreamwidth username"] = "Nombre de usuario en Dreamwidth"; -App::$strings["Dreamwidth password"] = "Contraseña en Dreamwidth"; -App::$strings["Post to Dreamwidth by default"] = "Publicar en Dreamwidth de forma predeterminada"; -App::$strings["Dreamwidth Crosspost Connector"] = "Dreamwidth Crosspost Connector"; -App::$strings["New registration"] = "Nuevo registro"; -App::$strings["Message sent to %s. New account registration: %s"] = "Mensaje enviado a %s. Registro de una nueva cuenta: %s"; -App::$strings["Hubzilla Directory Stats"] = "Estadísticas de directorio de Hubzilla"; -App::$strings["Total Hubs"] = "Número total de servidores"; -App::$strings["Hubzilla Hubs"] = "Servidores (hubs) de Hubzilla"; -App::$strings["Friendica Hubs"] = "Servidores (hubs) de Friendica"; -App::$strings["Diaspora Pods"] = "Servidores (pods) de Diaspora"; -App::$strings["Hubzilla Channels"] = "Canales de Hubzilla"; -App::$strings["Friendica Channels"] = "Canales de Friendica"; -App::$strings["Diaspora Channels"] = "Canales de Diaspora"; -App::$strings["Aged 35 and above"] = "De 35 años de edad en adelante"; -App::$strings["Aged 34 and under"] = "De 34 o menos años de edad"; -App::$strings["Average Age"] = "Promedio de edad"; -App::$strings["Known Chatrooms"] = "Salas de chat conocidas"; -App::$strings["Known Tags"] = "Etiquetas conocidas"; -App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat,"; -App::$strings["Your Webbie:"] = "Su webbie: "; -App::$strings["Fontsize (px):"] = "Tamaño de fuente (px): "; -App::$strings["Link:"] = "Enlace: "; -App::$strings["Like us on Hubzilla"] = "Múestrenos su agrado en Hubzilla"; -App::$strings["Embed:"] = "Incorporado: "; -App::$strings["Photos imported"] = "Se han importado las fotos"; -App::$strings["Redmatrix Photo Album Import"] = "Importar un álbum de fotos de Redmatrix"; -App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Esto importará todos sus álbumes de fotos de Redmatrix a este canal."; -App::$strings["Redmatrix Server base URL"] = "URL base del servidor Redmatrix"; -App::$strings["Redmatrix Login Username"] = "Nombre de inicio de sesión en Redmatrix"; -App::$strings["Redmatrix Login Password"] = "Contraseña de inicio de sesión en Redmatrix"; -App::$strings["Import just this album"] = "Importar solo este álbum"; -App::$strings["Leave blank to import all albums"] = "Dejar en blanco para importar todos los álbumes"; -App::$strings["Maximum count to import"] = "Límite máximo de importación"; -App::$strings["0 or blank to import all available"] = "0 o en blanco para importar todos los disponibles"; -App::$strings["Popular Channels"] = "Canales populares"; -App::$strings["Channels to auto connect"] = "Canales para conexión automática"; -App::$strings["Comma separated list"] = "Lista separada por comas"; -App::$strings["IRC Settings"] = "Ajustes de IRC"; -App::$strings["IRC settings saved."] = "Se han guardado los ajustes de IRC."; -App::$strings["IRC Chatroom"] = "Sala de chat IRC"; -App::$strings["Gallery"] = "Galería"; -App::$strings["Photo Gallery"] = "Galería de fotos"; -App::$strings["Gallery App"] = "App Gallery"; -App::$strings["A simple gallery for your photo albums"] = "Una galería sencilla para sus álbumes de fotos"; -App::$strings["Livejournal Crosspost Connector App"] = "App Livejournal Crosspost Connector"; -App::$strings["Relay public posts to Livejournal"] = "Retransmisión de entradas públicas a Livejournal"; -App::$strings["Livejournal username"] = "Nombre de usuario en Livejournal"; -App::$strings["Livejournal password"] = "Contraseña en Livejournal"; -App::$strings["Post to Livejournal by default"] = "Publicar en Livejournal por defecto"; -App::$strings["Livejournal Crosspost Connector"] = "Livejournal Crosspost Connector"; -App::$strings["Post to Livejournal"] = "Publicar en Livejournal"; -App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito."; -App::$strings["The error message was:"] = "El mensaje de error ha sido: "; -App::$strings["First Name"] = "Nombre"; -App::$strings["Last Name"] = "Apellido"; -App::$strings["Nickname"] = "Alias"; -App::$strings["Full Name"] = "Nombre completo"; -App::$strings["Profile Photo 16px"] = "Foto del perfil 16px"; -App::$strings["Profile Photo 32px"] = "Foto del perfil 32px"; -App::$strings["Profile Photo 48px"] = "Foto del perfil 48px"; -App::$strings["Profile Photo 64px"] = "Foto del perfil 64px"; -App::$strings["Profile Photo 80px"] = "Foto del perfil 80px"; -App::$strings["Profile Photo 128px"] = "Foto del perfil 128px"; -App::$strings["Timezone"] = "Zona horaria"; -App::$strings["Birth Year"] = "Año de nacimiento"; -App::$strings["Birth Month"] = "Mes de nacimiento"; -App::$strings["Birth Day"] = "Día de nacimiento"; -App::$strings["Birthdate"] = "Fecha de nacimiento"; -App::$strings["OpenID protocol error. No ID returned."] = "Error de protocolo OpenID. No se recuperó ninguna ID."; -App::$strings["Login failed."] = "El acceso ha fallado."; -App::$strings["Male"] = "Hombre"; -App::$strings["Female"] = "Mujer"; -App::$strings["You're welcome."] = "Bienvenido."; -App::$strings["Ah shucks..."] = "Ah, joder..."; -App::$strings["Don't mention it."] = "No lo menciones."; -App::$strings["<blush>"] = "<sonrojo>"; -App::$strings["Startpage App"] = "App Startpage"; -App::$strings["Set a preferred page to load on login from home page"] = "Establecer una página preferida para cargar al iniciar sesión desde la página de inicio"; -App::$strings["Page to load after login"] = "Página para cargar tras el inicio de sesión"; -App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)."; -App::$strings["Startpage"] = "Startpage"; -App::$strings["bitchslap"] = "una bofetada humillante"; -App::$strings["bitchslapped"] = "ha abofeteado de forma humillante a"; -App::$strings["shag"] = "un polvo"; -App::$strings["shagged"] = "ha dejado exhausto/a a"; -App::$strings["patent"] = "una patente"; -App::$strings["patented"] = "ha patentado a"; -App::$strings["hug"] = "un abrazo"; -App::$strings["hugged"] = "ha abrazado a"; -App::$strings["murder"] = "un asesinato"; -App::$strings["murdered"] = "ha asesinado a"; -App::$strings["worship"] = "una alabanza"; -App::$strings["worshipped"] = "ha elogiado a"; -App::$strings["kiss"] = "un beso"; -App::$strings["kissed"] = "ha besado a"; -App::$strings["tempt"] = "una tentación"; -App::$strings["tempted"] = "ha tentado a"; -App::$strings["raise eyebrows at"] = "un levantamiento de cejas"; -App::$strings["raised their eyebrows at"] = "ha levantado las cejas a"; -App::$strings["insult"] = "un insulto"; -App::$strings["insulted"] = "ha insultado a"; -App::$strings["praise"] = "un elogio"; -App::$strings["praised"] = "ha elogiado a"; -App::$strings["be dubious of"] = "una indecisión"; -App::$strings["was dubious of"] = "estaba dudoso de"; -App::$strings["eat"] = "una comida"; -App::$strings["ate"] = "ha comido"; -App::$strings["giggle and fawn at"] = "una sonrisa aduladora"; -App::$strings["giggled and fawned at"] = "ha sonreído y adulado a"; -App::$strings["doubt"] = "una duda"; -App::$strings["doubted"] = "ha dudado de"; -App::$strings["glare"] = "una mirada furiosa"; -App::$strings["glared at"] = "ha mirado con furia"; -App::$strings["fuck"] = "una mierda"; -App::$strings["fucked"] = "ha mandado a la mierda a"; -App::$strings["bonk"] = "un golpe"; -App::$strings["bonked"] = "ha golpeado a"; -App::$strings["declare undying love for"] = "una declaración de amor eterno"; -App::$strings["declared undying love for"] = "ha declarado amor eterno a"; -App::$strings["%1\$s dislikes %2\$s's %3\$s"] = "a %1\$s no le gusta el %3\$s de %2\$s"; -App::$strings["Diaspora Protocol Settings updated."] = "Los ajustes del protocolo de Diaspora se han actualizado."; -App::$strings["The diaspora protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo de Diaspora no admite la independencia de la ubicación. Las conexiones que realice dentro de esa red pueden ser inaccesibles desde ubicaciones de canales alternativos."; -App::$strings["Diaspora Protocol App"] = "App Protocolo Diaspora"; -App::$strings["Allow any Diaspora member to comment on your public posts"] = "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas"; -App::$strings["Prevent your hashtags from being redirected to other sites"] = "Impedir que sus \"hashtags\" sean redirigidos a otros sitios "; -App::$strings["Sign and forward posts and comments with no existing Diaspora signature"] = "Firmar y enviar entradas y comentarios sin firma de Diaspora"; -App::$strings["Followed hashtags (comma separated, do not include the #)"] = "\"Hashtags\" seguidos (separados por comas, sin incluir #)"; -App::$strings["Diaspora Protocol"] = "Protocolo Diaspora"; -App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero de importación."; -App::$strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación."; -App::$strings["Photo Cache settings saved."] = "Se ha guardado la configuración de la caché de fotos."; -App::$strings["Photo Cache addon saves a copy of images from external sites locally to increase your anonymity in the web."] = "El complemento Photo Cache guarda localmente una copia de las imágenes de sitios externos para aumentar su anonimato en la Web."; -App::$strings["Photo Cache App"] = "App Photo Cache"; -App::$strings["Minimal photo size for caching"] = "Tamaño mínimo de la foto para el almacenamiento en caché"; -App::$strings["In pixels. From 1 up to 1024, 0 will be replaced with system default."] = "En píxeles. Desde 1 hasta 1024, 0 será reemplazado por el predeterminado del sistema."; -App::$strings["Photo Cache"] = "Photo Cache"; -App::$strings["Your account on %s will expire in a few days."] = "Su cuenta en %s caducará en unos pocos días."; -App::$strings["Your $Productname test account is about to expire."] = "Su cuenta de prueba de $Productname está a punto de caducar."; -App::$strings["Add some colour to tag clouds"] = "Añadir color a las nubes de etiquetas"; -App::$strings["Rainbow Tag App"] = "App Etiqueta Arcoiris"; -App::$strings["Rainbow Tag"] = "Etiqueta Arcoiris"; -App::$strings["Show Upload Limits"] = "Mostrar los límites de subida"; -App::$strings["Hubzilla configured maximum size: "] = "Tamaño máximo configurado por Hubzilla: "; -App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize: "; -App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (debe ser mayor que upload_max_filesize): "; -App::$strings["generic profile image"] = "imagen del perfil general"; -App::$strings["random geometric pattern"] = "patrón geométrico aleatorio"; -App::$strings["monster face"] = "cara de monstruo"; -App::$strings["computer generated face"] = "cara generada por ordenador"; -App::$strings["retro arcade style face"] = "cara de estilo retro arcade"; -App::$strings["Hub default profile photo"] = "Foto del perfil por defecto del hub"; -App::$strings["Information"] = "Información"; -App::$strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "El addon Libravatar también está instalado. Por favor deshabilite el addon de Libravatar o este addon de Gravatar.<br> El addon de Libravatar volverá a Gravatar si no se encuentra nada en Libravatar."; -App::$strings["Save Settings"] = "Guardar ajustes"; -App::$strings["Default avatar image"] = "Imagen del avatar por defecto"; -App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "Selecciona la imagen de avatar predeterminada si no se encontró ninguna en Gravatar. Ver README"; -App::$strings["Rating of images"] = "Valoración de las imágenes"; -App::$strings["Select the appropriate avatar rating for your site. See README"] = "Seleccione la valoración adecuada del avatar para su sitio. Ver README"; -App::$strings["Gravatar settings updated."] = "Se han actualizado los ajustes de Gravatar."; -App::$strings["Hubzilla File Storage Import"] = "Importar del depósito de ficheros de Hubzilla"; -App::$strings["This will import all your cloud files from another server."] = "Esto importará todos sus ficheros en la nube desde otro servidor."; -App::$strings["Hubzilla Server base URL"] = "URL base del servidor Hubzilla"; -App::$strings["Since modified date yyyy-mm-dd"] = "Modificado desde la fecha yyyy-mm-dd"; -App::$strings["Until modified date yyyy-mm-dd"] = "Modificado hasta la fecha yyyy-mm-dd"; -App::$strings["Who viewed my channel/profile"] = "Quién ha visto mi canal/perfi"; -App::$strings["Recent Channel/Profile Viewers"] = "Visitantes recientes del canal o perfil"; -App::$strings["No entries."] = "No hay entradas."; -App::$strings["NSA Bait App"] = "App NSA Bait "; -App::$strings["Make yourself a political target"] = "Conviértase en un objetivo político"; -App::$strings["Send test email"] = "Enviar un correo electrónico de prueba"; -App::$strings["No recipients found."] = "No se han encontrado destinatarios."; -App::$strings["Mail sent."] = "El correo electrónico ha sido enviado."; -App::$strings["Sending of mail failed."] = "No se pudo enviar el correo."; -App::$strings["Mail Test"] = "Prueba de correo"; -App::$strings["Message subject"] = "Asunto del mensaje"; -App::$strings["Use markdown for editing posts"] = "Usar markdown para editar las entradas"; -App::$strings["View Larger"] = "Ver más grande"; -App::$strings["Tile Server URL"] = "URL del servidor de mosaicos de imágenes "; -App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>"; -App::$strings["Nominatim (reverse geocoding) Server URL"] = "URL del servidor nominatim (geocodificación inversa)"; -App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim servers</a>"] = "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">servidores nominatim</a>"; -App::$strings["Default zoom"] = "Zoom predeterminado"; -App::$strings["The default zoom level. (1:world, 18:highest, also depends on tile server)"] = "El nivel de zoom predeterminado. (1: mundo, 18: el más alto, también depende del servidor del mosaico de imágenes)"; -App::$strings["Include marker on map"] = "Incluir un marcador en el mapa"; -App::$strings["Include a marker on the map."] = "Incluir un marcador en el mapa."; -App::$strings["text to include in all outgoing posts from this site"] = "texto a incluir en todos los mensajes salientes de este sitio"; -App::$strings["Fuzzloc Settings updated."] = "Los ajustes de Fuzzloc se han actualizado."; -App::$strings["Fuzzy Location App"] = "App Fuzzy Location"; -App::$strings["Blur your precise location if your channel uses browser location mapping"] = "Desdibujar su ubicación precisa si su canal utiliza el mapeo de ubicación del navegador"; -App::$strings["Minimum offset in meters"] = "Offset mínimo en metros"; -App::$strings["Maximum offset in meters"] = "Offset máximo en metros"; -App::$strings["Fuzzy Location"] = "Fuzzy Location"; -App::$strings["Post to Friendica"] = "Publicar en Friendica"; -App::$strings["Friendica Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada con Friendica."; -App::$strings["Friendica Crosspost Connector App"] = "App Friendica Crosspost Connector"; -App::$strings["Relay public postings to a connected Friendica account"] = "Retransmisión de entradas públicas a una cuenta Friendica conectada"; -App::$strings["Send public postings to Friendica by default"] = "Enviar entradas públicas a Friendica por defecto"; -App::$strings["Friendica API Path"] = "Ruta a la API de Friendica"; -App::$strings["https://{sitename}/api"] = "https://{sitename}/api"; -App::$strings["Friendica login name"] = "Nombre de inicio de sesión en Friendica"; -App::$strings["Friendica password"] = "Contraseña de Friendica"; -App::$strings["Friendica Crosspost Connector"] = "Friendica Crosspost Connector"; -App::$strings["Jappixmini App"] = "App Jappixmini"; -App::$strings["Provides a Facebook-like chat using Jappix Mini"] = "Proporciona un chat similar al de Facebook utilizando Jappix Mini"; -App::$strings["Status:"] = "Estado:"; -App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Ocultar el widget de chat Jappixmini en la interfaz web"; -App::$strings["Jabber username"] = "Nombre de usuario en Jabber"; -App::$strings["Jabber server"] = "Servidor de Jabber"; -App::$strings["Jabber BOSH host URL"] = "URL del host BOSH de Jabber"; -App::$strings["Jabber password"] = "Contraseña en Jabber"; -App::$strings["Encrypt Jabber password with Hubzilla password"] = "Cifrar la contraseña de Jabber con la contraseña de Hubzilla"; -App::$strings["Hubzilla password"] = "Contraseña de Hubzilla"; -App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla"; -App::$strings["Purge internal list of jabber addresses of contacts"] = "Purgar la lista interna de las direcciones de contactos de jabber"; -App::$strings["Configuration Help"] = "Ayuda para los ajustes"; -App::$strings["Jappixmini Settings"] = "Ajustes de Jappixmini"; -App::$strings["Your channel has been upgraded to \$Projectname version"] = "Su canal ha sido actualizado a la versión \$Projectname"; -App::$strings["Please have a look at the"] = "Por favor, eche un vistazo a la "; -App::$strings["git history"] = "historial del git"; -App::$strings["change log"] = "lista de cambios"; -App::$strings["for further info."] = "para más información."; -App::$strings["Upgrade Info"] = "Información de actualización"; -App::$strings["Do not show this again"] = "No mostrar esto de nuevo"; -App::$strings["Access Denied"] = "Acceso denegado"; -App::$strings["Enable Community Moderation"] = "Habilitar la moderación de la comunidad"; -App::$strings["Reputation automatically given to new members"] = "La reputación se otorga automáticamente a los nuevos miembros"; -App::$strings["Reputation will never fall below this value"] = "La reputación nunca caerá por debajo de este valor"; -App::$strings["Minimum reputation before posting is allowed"] = "Reputación mínima antes de que se permita el envío de entradas"; -App::$strings["Minimum reputation before commenting is allowed"] = "Mínima reputación antes de que se permitan los comentarios"; -App::$strings["Minimum reputation before a member is able to moderate other posts"] = "Reputación mínima antes de que un miembro sea capaz de moderar otros mensajes"; -App::$strings["Max ratio of moderator's reputation that can be added to/deducted from reputation of person being moderated"] = "Proporción máxima de la reputación del moderador que puede ser añadida/descontada de la reputación de la persona que está siendo moderada."; -App::$strings["Reputation \"cost\" to post"] = "\"Coste\" de la reputación a contabilizar"; -App::$strings["Reputation \"cost\" to comment"] = "\"Coste\" de la reputación para comentar"; -App::$strings["Reputation automatically recovers at this rate per hour until it reaches minimum_to_post"] = "La reputación se recupera automáticamente a esta tasa por hora hasta que alcanza el mínimo_a_post"; -App::$strings["When minimum_to_moderate > reputation > minimum_to_post reputation recovers at this rate per hour"] = "Cuando el mínimo_a_moderar > reputación > mínimo_a_publicar la reputación se recupera a esta tasa por hora "; -App::$strings["Community Moderation Settings"] = "Configuración de la moderación de la comunidad"; -App::$strings["Channel Reputation"] = "Reputación del canal"; -App::$strings["An Error has occurred."] = "Se ha producido un error."; -App::$strings["Upvote"] = "Votar a favor"; -App::$strings["Downvote"] = "Votar en contra"; -App::$strings["Can moderate reputation on my channel."] = "Se puede moderar la reputación en mi canal."; -App::$strings["Block Completely"] = "Bloquear completamente"; -App::$strings["Superblock App"] = "App Superblock"; -App::$strings["Block channels"] = "Bloquear canales"; -App::$strings["superblock settings updated"] = "se han actualizado los ajustes de superblock"; -App::$strings["Currently blocked"] = "Actualmente bloqueado"; -App::$strings["No channels currently blocked"] = "No hay canales bloqueados actualmente"; -App::$strings["nofed Settings saved."] = "Se han guardado los ajustes de nofed."; -App::$strings["No Federation App"] = "App No Federation"; -App::$strings["Prevent posting from being federated to anybody. It will exist only on your channel page."] = "Evitar que la entrada sea federada con nadie. Sólo existirá en la página de su canal."; -App::$strings["Federate posts by default"] = "Federar las publicaciones por defecto"; -App::$strings["No Federation"] = "No Federation"; -App::$strings["Federate"] = "Federar"; -App::$strings["Channel is required."] = "Se requiere un canal."; -App::$strings["Hubzilla Crosspost Connector Settings saved."] = "Se han guardado los ajustes de Hubzilla Crosspost Connector"; -App::$strings["Hubzilla Crosspost Connector App"] = "App Hubzilla Crosspost Connector"; -App::$strings["Relay public postings to another Hubzilla channel"] = "Retransmisión de entradas a otro canal de Hubzilla"; -App::$strings["Send public postings to Hubzilla channel by default"] = "Enviar entradas públicas al canal Hubzilla por defecto"; -App::$strings["Hubzilla API Path"] = "Ruta de la API de Hubzilla"; -App::$strings["Hubzilla login name"] = "Nombre de inicio de sesión en Hubzilla"; -App::$strings["Hubzilla channel name"] = "Nombre del canal de Hubzilla"; -App::$strings["Hubzilla Crosspost Connector"] = "Hubzilla Crosspost Connector"; -App::$strings["Post to Hubzilla"] = "Publicar en Hubzilla"; -App::$strings["Logfile archive directory"] = "Directorio de los ficheros de informe"; -App::$strings["Directory to store rotated logs"] = "Directorio para almacenar los informes rotados"; -App::$strings["Logfile size in bytes before rotating"] = "Tamaño del fichero de informe en bytes antes de rotarlo"; -App::$strings["Number of logfiles to retain"] = "Número de ficheros de informe que se deben retener"; -App::$strings["No server specified"] = "No se ha especificado ningún servidor"; -App::$strings["Posts imported"] = "Entradas importadas"; -App::$strings["Files imported"] = "Ficheros importados"; -App::$strings["This addon app copies existing content and file storage to a cloned/copied channel. Once the app is installed, visit the newly installed app. This will allow you to set the location of your original channel and an optional date range of files/conversations to copy."] = "Este complemento copia el contenido existente y el almacenamiento de ficheros en un canal clonado/copiado. Una vez instalada la aplicación, visite la aplicación recién instalada. Esto le permitirá establecer la ubicación de su canal original y un rango de fechas opcional de ficheros/conversaciones para copiar."; -App::$strings["This will import all your conversations and cloud files from a cloned channel on another server. This may take a while if you have lots of posts and or files."] = "Esto importará todas sus conversaciones y archivos de nube de un canal clonado en otro servidor. El proceso puede tardar un poco si tiene muchos mensajes y/o ficheros."; -App::$strings["Include posts"] = "Incluir entradas"; -App::$strings["Conversations, Articles, Cards, and other posted content"] = "Conversaciones, artículos, fichas y otros contenidos publicados"; -App::$strings["Include files"] = "Incluir ficheros"; -App::$strings["Files, Photos and other cloud storage"] = "Archivos, fotos y otro tipo de almacenamiento en la nube"; -App::$strings["Original Server base URL"] = "URL base del servidor original"; -App::$strings["Friendica Photo Album Import"] = "Importar un álbum de fotos de Friendica"; -App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla."; -App::$strings["Friendica Server base URL"] = "URL base del servidor de Friendica"; -App::$strings["Friendica Login Username"] = "Nombre de inicio de sesión en Friendica"; -App::$strings["Friendica Login Password"] = "Contraseña de inicio de sesión en Friendica"; -App::$strings["WYSIWYG status editor"] = "Editor de estado de WYSIWYG"; -App::$strings["WYSIWYG Status App"] = "App WYSIWYG Status"; -App::$strings["WYSIWYG Status"] = "Estado de WYSIWYG"; -App::$strings["Set your location"] = "Establecer su ubicación"; -App::$strings["Clear browser location"] = "Eliminar los datos de localización geográfica del navegador"; -App::$strings["Embed (existing) photo from your photo albums"] = "Insertar una foto de sus álbumes"; -App::$strings["Tag term:"] = "Término de la etiqueta:"; -App::$strings["Where are you right now?"] = "¿Donde está ahora?"; -App::$strings["Choose a different album..."] = "Elegir un álbum diferente..."; -App::$strings["Comments enabled"] = "Comentarios habilitados"; -App::$strings["Comments disabled"] = "Comentarios deshabilitados"; -App::$strings["Page link name"] = "Nombre del enlace de la página"; -App::$strings["Post as"] = "Publicar como"; -App::$strings["Toggle voting"] = "Cambiar votación"; -App::$strings["Disable comments"] = "Dehabilitar los comentarios"; -App::$strings["Toggle comments"] = "Activar o desactivar los comentarios"; App::$strings["Categories (optional, comma-separated list)"] = "Temas (opcional, lista separada por comas)"; +App::$strings["Permission settings"] = "Configuración de permisos"; App::$strings["Other networks and post services"] = "Otras redes y servicios de publicación"; +App::$strings["Set expiration date"] = "Configurar fecha de caducidad"; App::$strings["Set publish date"] = "Establecer la fecha de publicación"; +App::$strings["Encrypt text"] = "Cifrar texto"; +App::$strings["WYSIWYG status editor"] = "Editor de estado de WYSIWYG"; +App::$strings["WYSIWYG Status App"] = "App WYSIWYG Status"; +App::$strings["WYSIWYG Status"] = "Estado de WYSIWYG"; +App::$strings["View Larger"] = "Ver más grande"; +App::$strings["Tile Server URL"] = "URL del servidor de mosaicos de imágenes "; +App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>"; +App::$strings["Nominatim (reverse geocoding) Server URL"] = "URL del servidor nominatim (geocodificación inversa)"; +App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">Nominatim servers</a>"] = "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">servidores nominatim</a>"; +App::$strings["Default zoom"] = "Zoom predeterminado"; +App::$strings["The default zoom level. (1:world, 18:highest, also depends on tile server)"] = "El nivel de zoom predeterminado. (1: mundo, 18: el más alto, también depende del servidor del mosaico de imágenes)"; +App::$strings["Include marker on map"] = "Incluir un marcador en el mapa"; +App::$strings["Include a marker on the map."] = "Incluir un marcador en el mapa."; +App::$strings["Settings updated."] = "Ajustes actualizados."; +App::$strings["Insane Journal Crosspost Connector Settings saved."] = "Se han guardado los ajustes del Conector de publicación cruzada de InsaneJournal."; +App::$strings["Insane Journal Crosspost Connector App"] = "App Ajustes del Conector de publicación cruzada de InsaneJournal"; +App::$strings["Relay public postings to Insane Journal"] = "Retransmisión de entradas públicas a Insane Journal"; +App::$strings["InsaneJournal username"] = "Nombre de usuario en InsaneJournal"; +App::$strings["InsaneJournal password"] = "Contraseña en InsaneJournal"; +App::$strings["Post to InsaneJournal by default"] = "Publicar por defecto en InsaneJournal"; +App::$strings["Insane Journal Crosspost Connector"] = "Conector de publicación cruzada de InsaneJournal"; +App::$strings["Post to Insane Journal"] = "Publicar en Insane Journal"; +App::$strings["Who likes me?"] = "¿Quién me ha puesto \"Me gusta\"?"; +App::$strings["QR code"] = "Código QR"; +App::$strings["QR Generator"] = "Generador QR"; +App::$strings["Enter some text"] = "Escribir algún texto"; +App::$strings["Unknown"] = "Desconocido"; +App::$strings["ActivityPub"] = "ActivityPub"; +App::$strings["status"] = "el mensaje de estado "; +App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; +App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; App::$strings["ActivityPub Protocol Settings updated."] = "Se han actualizado los ajustes del protocolo ActivityPub."; App::$strings["The activitypub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo ActivityPub no soporta la independencia de ubicación. Las conexiones que realice dentro de esa red pueden no ser accesibles desde ubicaciones de canales alternativos."; App::$strings["Activitypub Protocol App"] = "App Protocolo Activitypub"; @@ -2612,94 +388,98 @@ App::$strings["May result in a large number of mentions and expose all the membe App::$strings["Send multi-media HTML articles"] = "Enviar artículos multimedia en HTML"; App::$strings["Not supported by some microblog services such as Mastodon"] = "No soportado por algunos servicios de microblog como Mastodon"; App::$strings["Activitypub Protocol"] = "Protocolo Activitypub"; -App::$strings["Project Servers and Resources"] = "Servidores y recursos del proyecto"; -App::$strings["Project Creator and Tech Lead"] = "Creador del proyecto y director técnico"; -App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla."; -App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros."; -App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)"; -App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad."; -App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada."; -App::$strings["Donate"] = "Donar"; -App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez"; -App::$strings["Donate Now"] = "Donar ahora"; -App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)"; -App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores"; -App::$strings["Sponsor"] = "Patrocinador"; -App::$strings["Special thanks to: "] = "Agradecimiento especial a: "; -App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc."; -App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales."; -App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."; -App::$strings["Guitar Chords"] = "Acordes de guitarra"; -App::$strings["The complete online chord dictionary"] = "El diccionario completo de acordes en línea"; -App::$strings["Tuning"] = "Afinación"; -App::$strings["Chord name: example: Em7"] = "Nombre del acorde, por ejemplo: Em7"; -App::$strings["Show for left handed stringing"] = "Mostrar para tocadores zurdos"; -App::$strings["Quick Reference"] = "Referencia rápida"; -App::$strings["Post to Libertree"] = "Publicar en Libertree"; -App::$strings["Libertree Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada con Libertree."; -App::$strings["Libertree Crosspost Connector App"] = "App Libertree Crosspost Connector"; -App::$strings["Relay public posts to Libertree"] = "Retransmisión de entradas públicas a Libertree"; -App::$strings["Libertree API token"] = "Token de la API de Libertree"; -App::$strings["Libertree site URL"] = "URL del servidor de Libertree"; -App::$strings["Post to Libertree by default"] = "Publicar en Libertree por defecto"; -App::$strings["Libertree Crosspost Connector"] = "Libertree Crosspost Connector"; -App::$strings["Flattr widget settings updated."] = "Los ajustes del widget Flattr han sido actualizados."; -App::$strings["Flattr Widget App"] = "App Flattr Widget"; -App::$strings["Add a Flattr button to your channel page"] = "Proporcionar un botón Flattr a la página de su canal"; -App::$strings["Flattr user"] = "Usuario en Flattr"; -App::$strings["URL of the Thing to flattr"] = "URL de la Cosa para apoyar en flattr"; -App::$strings["If empty channel URL is used"] = "Si está vacío, se usa la URL del canal"; -App::$strings["Title of the Thing to flattr"] = "Título de la Cosa para apoyar en flattr"; -App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Si está vacío, se usará \"nombre del canal en Hubzilla\""; -App::$strings["Static or dynamic flattr button"] = "Botón de flattr estático o dinámico"; -App::$strings["static"] = "estático"; -App::$strings["dynamic"] = "dinámico"; -App::$strings["Alignment of the widget"] = "Alineamiento del widget"; -App::$strings["left"] = "izquierda"; -App::$strings["right"] = "derecha"; -App::$strings["Flattr Widget"] = "Flattr Widget"; -App::$strings["Flattr this!"] = "¡Apoyar esto en Flattr!"; -App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Por favor, contacte con el administrador de su sitio.<br />La URL de la API proporcionada no es válida."; -App::$strings["We could not contact the GNU social API with the Path you entered."] = "No podemos conectar con la API de GNU social con la ruta que ha proporcionado."; -App::$strings["GNU social settings updated."] = "Se han guardado los ajustes de GNU social."; -App::$strings["Relay public postings to a connected GNU social account (formerly StatusNet)"] = "Retransmisión de entradas públicas a una cuenta conectada de GNU social (antiguo StarusNet)"; -App::$strings["Globally Available GNU social OAuthKeys"] = "OAuthKeys globales de GNU social disponibles"; -App::$strings["There are preconfigured OAuth key pairs for some GNU social servers available. If you are using one of them, please use these credentials.<br />If not feel free to connect to any other GNU social instance (see below)."] = "Existen pares de claves OAuth preconfiguradas disponibles para algunos servidores libres de GNU social. Si está usando uno de ellos, utilice estas credenciales.<br />Si no se siente libre de conectarse a cualquier otra instancia de GNU social (vea a continuación)."; -App::$strings["Provide your own OAuth Credentials"] = "Proporcione sus propias credenciales de OAuth"; -App::$strings["No consumer key pair for GNU social found. Register your Hubzilla Account as an desktop client on your GNU social account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Hubzilla installation at your favourite GNU social installation."] = "No se ha encontrado un par de claves de consumidor para GNU social. Registre su cuenta de Hubzilla como un cliente de escritorio en su cuenta social GNU, copie el par de claves de consumidor aquí y escriba la dirección raíz de la API.<br />Antes de registrar su propio par de claves OAuth, pregunte al administrador si ya hay un par de claves para esta instalación de Hubzilla en su instalación GNU social favorita."; -App::$strings["OAuth Consumer Key"] = "OAuth Consumer Key"; -App::$strings["OAuth Consumer Secret"] = "OAuth Consumer Secret"; -App::$strings["Base API Path"] = "Ruta base de la API"; -App::$strings["Remember the trailing /"] = "Recuerde la barra /"; -App::$strings["GNU social application name"] = "Nombre de la aplicación de GNU social"; -App::$strings["To connect to your GNU social account click the button below to get a security code from GNU social which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to GNU social."] = "Para conectarse a su cuenta de GNU social, haga clic en el botón de abajo para obtener un código de seguridad de GNU social que tiene que copiar en el cuadro de entrada a continuación y envíe el formulario. Solo sus <strong>entradas</strong> públicas aparecerán en GNU social."; -App::$strings["Log in with GNU social"] = "Inicio de sesión en GNU social"; -App::$strings["Copy the security code from GNU social here"] = "Copiar aquí el código de seguridad de GNU social"; -App::$strings["Cancel Connection Process"] = "Cancelar el proceso de conexión"; -App::$strings["Current GNU social API is"] = "La API actual de GNU social es "; -App::$strings["Cancel GNU social Connection"] = "Cancelar la conexión de GNU social"; -App::$strings["Currently connected to: "] = "Actualmente está conectado a: "; -App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to GNU social will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Aviso</strong>: Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>) el vínculo potencialmente incluido en las entradas públicas retransmitidas a GNU social llevará al visitante a una página en blanco que le informará de que el acceso a su perfil ha sido restringido."; -App::$strings["Post to GNU social by default"] = "Publicar en GNU social por defecto"; -App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta GNU-social asociada de forma predeterminada"; -App::$strings["Clear OAuth configuration"] = "Limpiar la configuración de OAuth"; -App::$strings["GNU-Social Crosspost Connector"] = "GNU-Social Crosspost Connector"; -App::$strings["Post to GNU social"] = "Publicar en GNU social"; -App::$strings["API URL"] = "URL de la API"; -App::$strings["Application name"] = "Nombre de la aplicación"; -App::$strings["QR code"] = "Código QR"; -App::$strings["QR Generator"] = "Generador QR"; -App::$strings["Enter some text"] = "Escribir algún texto"; -App::$strings["Invalid game."] = "Juego no válido."; -App::$strings["You are not a player in this game."] = "Usted no participa en este juego."; -App::$strings["You must be a local channel to create a game."] = "Debe ser un canal local para crear un juego"; -App::$strings["You must select one opponent that is not yourself."] = "Debe seleccionar un oponente que no sea usted mismo."; -App::$strings["Random color chosen."] = "Elegido un color aleatorio."; -App::$strings["Error creating new game."] = "Error al crear un nuevo juego."; -App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible."; -App::$strings["Chess not installed."] = "Chess no está instalado."; -App::$strings["You must select a local channel /chess/channelname"] = "Debe seleccionar un canal local /chess/nombredelcanal"; -App::$strings["Enable notifications"] = "Habilitar notificaciones"; +App::$strings["An account has been created for you."] = "Se ha creado una cuenta para usted."; +App::$strings["Authentication successful but rejected: account creation is disabled."] = "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada."; +App::$strings["Dreamwidth Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada Dreamwidth."; +App::$strings["Dreamwidth Crosspost Connector App"] = "App Dreamwidth Crosspost Connector"; +App::$strings["Relay public postings to Dreamwidth"] = "Retransmisión de entradas públicas a Dreamwidth"; +App::$strings["Dreamwidth username"] = "Nombre de usuario en Dreamwidth"; +App::$strings["Dreamwidth password"] = "Contraseña en Dreamwidth"; +App::$strings["Post to Dreamwidth by default"] = "Publicar en Dreamwidth de forma predeterminada"; +App::$strings["Dreamwidth Crosspost Connector"] = "Dreamwidth Crosspost Connector"; +App::$strings["Post to Dreamwidth"] = "Publicar en Dreamwidth"; +App::$strings["bitchslap"] = "una bofetada humillante"; +App::$strings["bitchslapped"] = "ha abofeteado de forma humillante a"; +App::$strings["shag"] = "un polvo"; +App::$strings["shagged"] = "ha dejado exhausto/a a"; +App::$strings["patent"] = "una patente"; +App::$strings["patented"] = "ha patentado a"; +App::$strings["hug"] = "un abrazo"; +App::$strings["hugged"] = "ha abrazado a"; +App::$strings["murder"] = "un asesinato"; +App::$strings["murdered"] = "ha asesinado a"; +App::$strings["worship"] = "una alabanza"; +App::$strings["worshipped"] = "ha elogiado a"; +App::$strings["kiss"] = "un beso"; +App::$strings["kissed"] = "ha besado a"; +App::$strings["tempt"] = "una tentación"; +App::$strings["tempted"] = "ha tentado a"; +App::$strings["raise eyebrows at"] = "un levantamiento de cejas"; +App::$strings["raised their eyebrows at"] = "ha levantado las cejas a"; +App::$strings["insult"] = "un insulto"; +App::$strings["insulted"] = "ha insultado a"; +App::$strings["praise"] = "un elogio"; +App::$strings["praised"] = "ha elogiado a"; +App::$strings["be dubious of"] = "una indecisión"; +App::$strings["was dubious of"] = "estaba dudoso de"; +App::$strings["eat"] = "una comida"; +App::$strings["ate"] = "ha comido"; +App::$strings["giggle and fawn at"] = "una sonrisa aduladora"; +App::$strings["giggled and fawned at"] = "ha sonreído y adulado a"; +App::$strings["doubt"] = "una duda"; +App::$strings["doubted"] = "ha dudado de"; +App::$strings["glare"] = "una mirada furiosa"; +App::$strings["glared at"] = "ha mirado con furia"; +App::$strings["fuck"] = "una mierda"; +App::$strings["fucked"] = "ha mandado a la mierda a"; +App::$strings["bonk"] = "un golpe"; +App::$strings["bonked"] = "ha golpeado a"; +App::$strings["declare undying love for"] = "una declaración de amor eterno"; +App::$strings["declared undying love for"] = "ha declarado amor eterno a"; +App::$strings["Errors encountered deleting database table "] = "Errores encontrados al eliminar la tabla de la base de datos"; +App::$strings["Submit Settings"] = "Enviar los ajustes"; +App::$strings["Drop tables when uninstalling?"] = "¿Eliminar tablas al desinstalar?"; +App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin."; +App::$strings["Mapbox Access Token"] = "Token de acceso de Mapbox"; +App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado."; +App::$strings["Rendezvous"] = "Rendezvous"; +App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre."; +App::$strings["Welcome to Rendezvous!"] = "¡Bienvenido/a a Rendevous!"; +App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa."; +App::$strings["Let's meet here"] = "Reunámonos aquí"; +App::$strings["Name"] = "Nombre"; +App::$strings["Description"] = "Descripción"; +App::$strings["New marker"] = "Nuevo marcador"; +App::$strings["Edit marker"] = "Editar un marcador"; +App::$strings["New identity"] = "Nueva identidad"; +App::$strings["Delete marker"] = "Eliminar un marcador"; +App::$strings["Delete member"] = "Eliminar un miembro"; +App::$strings["Edit proximity alert"] = "Editar alerta de proximidad"; +App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; +App::$strings["distance"] = "distancia"; +App::$strings["Proximity alert distance (meters)"] = "Distancia (en metros) para la alerta de proximidad"; +App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; +App::$strings["Marker proximity alert"] = "Marcador de alerta de proximidad"; +App::$strings["Reminder note"] = "Recordatorio"; +App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..."; +App::$strings["Add new rendezvous"] = "Añadir una nueva cita"; +App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo."; +App::$strings["You have no rendezvous. Press the button above to create a rendezvous!"] = "No tiene ninguna cita. ¡Presione el botón de arriba para crear una!"; +App::$strings["Errors encountered creating database tables."] = "Se han encontrado errores al crear las tablas de la base de datos."; +App::$strings["Startpage App"] = "App Startpage"; +App::$strings["Set a preferred page to load on login from home page"] = "Establecer una página preferida para cargar al iniciar sesión desde la página de inicio"; +App::$strings["Page to load after login"] = "Página para cargar tras el inicio de sesión"; +App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)."; +App::$strings["Startpage"] = "Startpage"; +App::$strings["Flag Adult Photos"] = "Indicador (\"flag\") de fotos de adultos"; +App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada"; +App::$strings["Your channel has been upgraded to \$Projectname version"] = "Su canal ha sido actualizado a la versión \$Projectname"; +App::$strings["Please have a look at the"] = "Por favor, eche un vistazo a la "; +App::$strings["git history"] = "historial del git"; +App::$strings["change log"] = "lista de cambios"; +App::$strings["for further info."] = "para más información."; +App::$strings["Upgrade Info"] = "Información de actualización"; +App::$strings["Do not show this again"] = "No mostrar esto de nuevo"; App::$strings["Twitter settings updated."] = "Se han actualizado los ajustes de Twitter."; App::$strings["Twitter Crosspost Connector App"] = "App Twitter Crosspost Connector"; App::$strings["Relay public posts to Twitter"] = "Retransmisión de entradas públicas a Twitter"; @@ -2714,68 +494,130 @@ App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes p App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada."; App::$strings["Twitter Crosspost Connector"] = "Twitter Crosspost Connector"; App::$strings["Post to Twitter"] = "Publicar en Twitter"; -App::$strings["Smileybutton App"] = "App Smileybutton"; -App::$strings["Adds a smileybutton to the jot editor"] = "Añade un botón de emoticonos al editor jot"; -App::$strings["Hide the button and show the smilies directly."] = "Ocultar el botón y mostrar los smilies directamente."; -App::$strings["Smileybutton Settings"] = "Ajustes de Smileybutton"; +App::$strings["You are now authenticated to pumpio."] = "Ahora está autenticado en pump.io."; +App::$strings["return to the featured settings page"] = "Volver a la página de configuración destacada"; +App::$strings["Post to Pump.io"] = "Publicar en Pump.io"; +App::$strings["Pump.io Settings saved."] = "Se han guardado los ajustes de Pump.io"; +App::$strings["Pump.io Crosspost Connector App"] = "App Pump.io Crosspost Connector"; +App::$strings["Relay public posts to pump.io"] = "Retransmisión de entradas públicas a pump.io"; +App::$strings["Pump.io servername"] = "Nombre del servidor de Pump.io"; +App::$strings["Without \"http://\" or \"https://\""] = "Sin \"http://\" or \"https://\""; +App::$strings["Pump.io username"] = "Nombre de usuario en Pump.io"; +App::$strings["Without the servername"] = "Sin el nombre del servidor"; +App::$strings["You are not authenticated to pumpio"] = "No está autenticado en pump.io"; +App::$strings["(Re-)Authenticate your pump.io connection"] = "(Re-)Autenticar su conexión en pump.io"; +App::$strings["Post to pump.io by default"] = "Publicar por defecto en pump.io"; +App::$strings["Should posts be public"] = "¿Las entradas deben ser públicas?"; +App::$strings["Mirror all public posts"] = "Reflejar todos los mensajes públicos"; +App::$strings["Pump.io Crosspost Connector"] = "Pump.io Crosspost Connector"; +App::$strings["generic profile image"] = "imagen del perfil general"; +App::$strings["random geometric pattern"] = "patrón geométrico aleatorio"; +App::$strings["monster face"] = "cara de monstruo"; +App::$strings["computer generated face"] = "cara generada por ordenador"; +App::$strings["retro arcade style face"] = "cara de estilo retro arcade"; +App::$strings["Hub default profile photo"] = "Foto del perfil por defecto del hub"; +App::$strings["Information"] = "Información"; +App::$strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "El addon Libravatar también está instalado. Por favor deshabilite el addon de Libravatar o este addon de Gravatar.<br> El addon de Libravatar volverá a Gravatar si no se encuentra nada en Libravatar."; +App::$strings["Save Settings"] = "Guardar ajustes"; +App::$strings["Default avatar image"] = "Imagen del avatar por defecto"; +App::$strings["Select default avatar image if none was found at Gravatar. See README"] = "Selecciona la imagen de avatar predeterminada si no se encontró ninguna en Gravatar. Ver README"; +App::$strings["Rating of images"] = "Valoración de las imágenes"; +App::$strings["Select the appropriate avatar rating for your site. See README"] = "Seleccione la valoración adecuada del avatar para su sitio. Ver README"; +App::$strings["Gravatar settings updated."] = "Se han actualizado los ajustes de Gravatar."; +App::$strings["text to include in all outgoing posts from this site"] = "texto a incluir en todos los mensajes salientes de este sitio"; +App::$strings["Send your identity to all websites"] = "Enviar su identidad a todos los sitios web"; +App::$strings["Sendzid App"] = "App Sendzid"; +App::$strings["Send ZID"] = "Enviar ZID"; +App::$strings["Price"] = "Precio"; +App::$strings["Error: order mismatch. Please try again."] = "Error: desajuste de pedidos. Por favor, inténtelo de nuevo."; +App::$strings["Manual payments are not enabled."] = "Los pagos manuales no están habilitados."; +App::$strings["Order not found."] = "El pedido no se ha encontrado."; +App::$strings["Finished"] = "Terminado"; +App::$strings["Invalid channel"] = "Canal no válido"; +App::$strings["Enable Subscription Management Module"] = "Habilitar el módulo de gestión de suscripciones"; +App::$strings["Cannot include subscription items with different terms in the same order."] = "No se pueden incluir artículos de suscripción con términos diferentes en el mismo orden."; +App::$strings["Select Subscription to Edit"] = "Seleccione suscripción a editar"; +App::$strings["Edit Subscriptions"] = "Editar suscripciones"; +App::$strings["Subscription SKU"] = "SKU de la suscripción"; +App::$strings["Catalog Description"] = "Descripción del catálogo"; +App::$strings["Subscription available for purchase."] = "Suscripción disponible para la compra."; +App::$strings["Maximum active subscriptions to this item per account."] = "Máximo de suscripciones activas a este artículo por cuenta."; +App::$strings["Subscription price."] = "Precio de la suscripción."; +App::$strings["Quantity"] = "Cuantía"; +App::$strings["Term"] = "Condición"; +App::$strings["Enable Hubzilla Services Module"] = "Habilitar el Módulo de Servicios de Hubzilla"; +App::$strings["New Sku"] = "Nuevo SKU (número de referencia)"; +App::$strings["Cannot save edits to locked item."] = "No se pueden guardar las ediciones en el elemento bloqueado."; +App::$strings["SKU not found."] = "No se ha encontrado el SKU"; +App::$strings["Invalid Activation Directive."] = "Directiva de activación no válida."; +App::$strings["Invalid Deactivation Directive."] = "Directiva de desactivación no válida"; +App::$strings["Add to this privacy group"] = "Añadir a este grupo de canales"; +App::$strings["Set user service class"] = "Configurar la clase de servicio al usuario"; +App::$strings["You must be using a local account to purchase this service."] = "Usted debe estar usando una cuenta local para comprar este servicio."; +App::$strings["Changes Locked"] = "Cambios bloqueados"; +App::$strings["Item available for purchase."] = "Artículo disponible para la compra."; +App::$strings["Photo URL"] = "URL de la foto"; +App::$strings["Add buyer to privacy group"] = "Agregar comprador al grupo de canales"; +App::$strings["Add buyer as connection"] = "Añadir comprador como conexión"; +App::$strings["Set Service Class"] = "Establecer clase de servicio"; +App::$strings["Enable Paypal Button Module"] = "Habilitar el módulo del botón de Paypal"; +App::$strings["Use Production Key"] = "Utilizar clave en entorno de producción"; +App::$strings["Paypal Sandbox Client Key"] = "Clave de cliente en el entorno de pruebas de Paypal"; +App::$strings["Paypal Sandbox Secret Key"] = "Clave secreta en el entorno de pruebas de Paypal"; +App::$strings["Paypal Production Client Key"] = "Clave de cliente en el entorno de producción de Paypal"; +App::$strings["Paypal Production Secret Key"] = "Clave secreta en el entorno de producción de Paypal"; +App::$strings["Paypal button payments are not enabled."] = "Los pagos con el botón de Paypal no están habilitados."; +App::$strings["Paypal button payments are not properly configured. Please choose another payment option."] = "Los pagos con el botón de Paypal no están configurados correctamente. Por favor, elija otra opción de pago."; +App::$strings["Enable Manual Cart Module"] = "Habilitar el módulo de carro manual"; +App::$strings["Access Denied."] = "Acceso denegado"; +App::$strings["Order Not Found"] = "No se ha encontrado el pedido"; +App::$strings["Invalid Item"] = "Elemento no válido"; App::$strings["Enable Test Catalog"] = "Habilitar el catálogo de pruebas"; App::$strings["Enable Manual Payments"] = "Permitir pagos manuales"; App::$strings["Base Merchant Currency"] = "Divida base del vendedor"; App::$strings["Cart Settings"] = "Configuración del carro de la compra"; -App::$strings["Access Denied."] = "Acceso denegado"; -App::$strings["Order Not Found"] = "No se ha encontrado el pedido"; -App::$strings["Invalid Item"] = "Elemento no válido"; App::$strings["DB Cleanup Failure"] = "Fallo de limpieza de la base de datos"; App::$strings["[cart] Item Added"] = "[cesta] Artículo añadido"; App::$strings["Order already checked out."] = "El pedido ya ha sido revisado"; App::$strings["Drop database tables when uninstalling."] = "Eliminar tablas de la base de datos al desinstalar."; App::$strings["Shop"] = "Comprar"; +App::$strings["Profile Unavailable."] = "Perfil no disponible"; App::$strings["Cart utilities for orders and payments"] = "Utilidades del carro para pedidos y pagos"; App::$strings["You must be logged into the Grid to shop."] = "Debe iniciar sesión en la red para comprar."; -App::$strings["Order not found."] = "El pedido no se ha encontrado."; App::$strings["Access denied."] = "Acceso denegado"; App::$strings["No Order Found"] = "No se ha encontrado ningún pedido"; App::$strings["An unknown error has occurred Please start again."] = "Se ha producido un error desconocido Vuelva a empezar."; App::$strings["Invalid Payment Type. Please start again."] = "Tipo de pago no válido. Por favor, empiece de nuevo."; App::$strings["Order not found"] = "El pedido no se ha encontrado"; -App::$strings["Enable Paypal Button Module"] = "Habilitar el módulo del botón de Paypal"; -App::$strings["Use Production Key"] = "Utilizar clave en entorno de producción"; -App::$strings["Paypal Sandbox Client Key"] = "Clave de cliente en el entorno de pruebas de Paypal"; -App::$strings["Paypal Sandbox Secret Key"] = "Clave secreta en el entorno de pruebas de Paypal"; -App::$strings["Paypal Production Client Key"] = "Clave de cliente en el entorno de producción de Paypal"; -App::$strings["Paypal Production Secret Key"] = "Clave secreta en el entorno de producción de Paypal"; -App::$strings["Paypal button payments are not enabled."] = "Los pagos con el botón de Paypal no están habilitados."; -App::$strings["Paypal button payments are not properly configured. Please choose another payment option."] = "Los pagos con el botón de Paypal no están configurados correctamente. Por favor, elija otra opción de pago."; -App::$strings["Enable Manual Cart Module"] = "Habilitar el módulo de carro manual"; -App::$strings["New Sku"] = "Nuevo SKU (número de referencia)"; -App::$strings["Cannot save edits to locked item."] = "No se pueden guardar las ediciones en el elemento bloqueado."; -App::$strings["Changes Locked"] = "Cambios bloqueados"; -App::$strings["Item available for purchase."] = "Artículo disponible para la compra."; -App::$strings["Price"] = "Precio"; -App::$strings["Enable Hubzilla Services Module"] = "Habilitar el Módulo de Servicios de Hubzilla"; -App::$strings["SKU not found."] = "No se ha encontrado el SKU"; -App::$strings["Invalid Activation Directive."] = "Directiva de activación no válida."; -App::$strings["Invalid Deactivation Directive."] = "Directiva de desactivación no válida"; -App::$strings["Add to this privacy group"] = "Añadir a este grupo de canales"; -App::$strings["Set user service class"] = "Configurar la clase de servicio al usuario"; -App::$strings["You must be using a local account to purchase this service."] = "Usted debe estar usando una cuenta local para comprar este servicio."; -App::$strings["Add buyer to privacy group"] = "Agregar comprador al grupo de canales"; -App::$strings["Add buyer as connection"] = "Añadir comprador como conexión"; -App::$strings["Set Service Class"] = "Establecer clase de servicio"; -App::$strings["Enable Subscription Management Module"] = "Habilitar el módulo de gestión de suscripciones"; -App::$strings["Cannot include subscription items with different terms in the same order."] = "No se pueden incluir artículos de suscripción con términos diferentes en el mismo orden."; -App::$strings["Select Subscription to Edit"] = "Seleccione suscripción a editar"; -App::$strings["Edit Subscriptions"] = "Editar suscripciones"; -App::$strings["Subscription SKU"] = "SKU de la suscripción"; -App::$strings["Catalog Description"] = "Descripción del catálogo"; -App::$strings["Subscription available for purchase."] = "Suscripción disponible para la compra."; -App::$strings["Maximum active subscriptions to this item per account."] = "Máximo de suscripciones activas a este artículo por cuenta."; -App::$strings["Subscription price."] = "Precio de la suscripción."; -App::$strings["Quantity"] = "Cuantía"; -App::$strings["Term"] = "Condición"; -App::$strings["Error: order mismatch. Please try again."] = "Error: desajuste de pedidos. Por favor, inténtelo de nuevo."; -App::$strings["Manual payments are not enabled."] = "Los pagos manuales no están habilitados."; -App::$strings["Finished"] = "Terminado"; +App::$strings["nofed Settings saved."] = "Se han guardado los ajustes de nofed."; +App::$strings["No Federation App"] = "App No Federation"; +App::$strings["Prevent posting from being federated to anybody. It will exist only on your channel page."] = "Evitar que la entrada sea federada con nadie. Sólo existirá en la página de su canal."; +App::$strings["Federate posts by default"] = "Federar las publicaciones por defecto"; +App::$strings["No Federation"] = "No Federation"; +App::$strings["Federate"] = "Federar"; +App::$strings["Smileybutton App"] = "App Smileybutton"; +App::$strings["Adds a smileybutton to the jot editor"] = "Añade un botón de emoticonos al editor jot"; +App::$strings["Hide the button and show the smilies directly."] = "Ocultar el botón y mostrar los smilies directamente."; +App::$strings["Smileybutton Settings"] = "Ajustes de Smileybutton"; +App::$strings["file"] = "fichero"; +App::$strings["Redmatrix File Storage Import"] = "Importar repositorio de ficheros de Redmatrix"; +App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Esto importará todos sus ficheros de la nube de Redmatrix a este canal."; +App::$strings["\$projectname"] = "\$projectname"; +App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero de importación."; +App::$strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación."; +App::$strings["Import completed."] = "Importación completada."; +App::$strings["Diaspora Protocol Settings updated."] = "Los ajustes del protocolo de Diaspora se han actualizado."; +App::$strings["The diaspora protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo de Diaspora no admite la independencia de la ubicación. Las conexiones que realice dentro de esa red pueden ser inaccesibles desde ubicaciones de canales alternativos."; +App::$strings["Diaspora Protocol App"] = "App Protocolo Diaspora"; +App::$strings["Allow any Diaspora member to comment on your public posts"] = "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas"; +App::$strings["Prevent your hashtags from being redirected to other sites"] = "Impedir que sus \"hashtags\" sean redirigidos a otros sitios "; +App::$strings["Sign and forward posts and comments with no existing Diaspora signature"] = "Firmar y enviar entradas y comentarios sin firma de Diaspora"; +App::$strings["Followed hashtags (comma separated, do not include the #)"] = "\"Hashtags\" seguidos (separados por comas, sin incluir #)"; +App::$strings["Diaspora Protocol"] = "Protocolo Diaspora"; +App::$strings["%1\$s dislikes %2\$s's %3\$s"] = "a %1\$s no le gusta el %3\$s de %2\$s"; +App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s participa"; +App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no participa"; +App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s quizá participe"; App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Este sitio es rastreado mediante la herramienta analítica <a href='http://www.piwik.org'>Piwik</a>."; App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Si usted no quiere que sus visitas se registren de esta manera <a href='%s'>puede establecer una cookie para evitar que Piwik rastree otras visitas del sitio</a> (opt-out)."; App::$strings["Piwik Base URL"] = "URL base de Piwik"; @@ -2785,44 +627,145 @@ App::$strings["Show opt-out cookie link?"] = "Mostrar el enlace de la cookie opt App::$strings["Asynchronous tracking"] = "Rastreo asíncrono"; App::$strings["Enable frontend JavaScript error tracking"] = "Habilitar la interfaz JavaScript de seguimiento de errores"; App::$strings["This feature requires Piwik >= 2.2.0"] = "Esta funcionalidad requiere Piwik >= 2.2.0"; -App::$strings["Edit your profile and change settings."] = "Editar su perfil y cambiar los ajustes."; -App::$strings["Click here to see activity from your connections."] = "Pulsar aquí para ver la actividad de sus conexiones."; -App::$strings["Click here to see your channel home."] = "Pulsar aquí para ver la página de inicio de su canal."; -App::$strings["You can access your private messages from here."] = "Puede acceder a sus mensajes privados desde aquí."; -App::$strings["Create new events here."] = "Crear nuevos eventos aquí."; -App::$strings["You can accept new connections and change permissions for existing ones here. You can also e.g. create groups of contacts."] = "Puede aceptar nuevas conexiones y cambiar permisos para las que ya existen aquí. También puede, por ejemplo, crear grupos de contactos."; -App::$strings["System notifications will arrive here"] = "Las notificaciones del sistema llegarán aquí"; -App::$strings["Search for content and users"] = "Buscar contenido y usuarios"; -App::$strings["Browse for new contacts"] = "Buscar nuevos contactos"; -App::$strings["Launch installed apps"] = "Iniciar aplicaciones instaladas"; -App::$strings["Looking for help? Click here."] = "¿Busca ayuda? Pulse aquí."; -App::$strings["New events have occurred in your network. Click here to see what has happened!"] = "Se han producido nuevos eventos en su red. ¡Haga clic aquí para ver lo que ha sucedido!"; -App::$strings["You have received a new private message. Click here to see from who!"] = "Ha recibido un nuevo mensaje privado. Haga clic aquí para ver de quién!"; -App::$strings["There are events this week. Click here too see which!"] = "Hay eventos esta semana. Haga clic aquí para ver cuáles!"; -App::$strings["You have received a new introduction. Click here to see who!"] = "Ha recibido una nueva solicitud de conexión. ¡Pulse aquí para ver de quién!"; -App::$strings["There is a new system notification. Click here to see what has happened!"] = "Hay una nueva notificación del sistema. ¡Haga clic aquí para ver lo que ha sucedido!"; -App::$strings["Click here to share text, images, videos and sound."] = "Haga clic aquí para compartir texto, imágenes, vídeos y sonido."; -App::$strings["You can write an optional title for your update (good for long posts)."] = "Puede escribir un título opcional para su actualización (bueno para los mensajes largos)."; -App::$strings["Entering some categories here makes it easier to find your post later."] = "Al ingresar algunos temas aquí, es más fácil encontrar su publicación más tarde."; -App::$strings["Share photos, links, location, etc."] = "Compartir fotos, enlaces, ubicación, etc."; -App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "¿Solo quieres compartir contenido durante un tiempo? Haga que expire en una fecha determinada."; -App::$strings["You can password protect content."] = "Puede proteger contenido con una contraseña."; -App::$strings["Choose who you share with."] = "Elegir con quién compartir."; -App::$strings["Click here when you are done."] = "Haga clic aquí cuando haya terminado."; -App::$strings["Adjust from which channels posts should be displayed."] = "Ajustar de qué canales se deben mostrar las publicaciones."; -App::$strings["Only show posts from channels in the specified privacy group."] = "Mostrar solo las entradas de los canales de un grupo específico de canales."; -App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Encuentre fácilmente entradas que contengan etiquetas (palabras clave precedidas del símbolo \"#\")."; -App::$strings["Easily find posts in given category."] = "Encuentre fácilmente las publicaciones en una categoría dada."; -App::$strings["Easily find posts by date."] = "Encuentre fácilmente entradas por fechas."; -App::$strings["Suggested users who have volounteered to be shown as suggestions, and who we think you might find interesting."] = "Se sugiere a los usuarios que se han ofrecido voluntariamente que se muestren como sugerencias, y que creemos que podrían resultar interesantes."; -App::$strings["Here you see channels you have connected to."] = "Aquí puede ver los canales a los que está conectado."; -App::$strings["Save your search so you can repeat it at a later date."] = "Guarde su búsqueda para poder repetirla en una fecha posterior."; -App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso."; -App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!"; -App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno"; -App::$strings["Send your identity to all websites"] = "Enviar su identidad a todos los sitios web"; -App::$strings["Sendzid App"] = "App Sendzid"; -App::$strings["Send ZID"] = "Enviar ZID"; +App::$strings["Workflow user."] = "Usuario de Workflow."; +App::$strings["This channel"] = "Este canal"; +App::$strings["Primary"] = "Primario"; +App::$strings["Workflow"] = "Workflow"; +App::$strings["Add item to which workflow"] = "A qué Workflow añadir un elemento"; +App::$strings["Create Workflow Item"] = "Crear elemento de Workflow"; +App::$strings["Link"] = "Enlazar"; +App::$strings["Web link."] = "Enlace Web."; +App::$strings["Title"] = "Título"; +App::$strings["Brief description or title"] = "Breve descripción o título"; +App::$strings["Notes"] = "Notas"; +App::$strings["Notes and Info"] = "Notas e información"; +App::$strings["Body"] = "Cuerpo"; +App::$strings["Workflow Settings"] = "Ajustes de Workflow"; +App::$strings["Project Servers and Resources"] = "Servidores y recursos del proyecto"; +App::$strings["Project Creator and Tech Lead"] = "Creador del proyecto y director técnico"; +App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla."; +App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros."; +App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)"; +App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad."; +App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada."; +App::$strings["Donate"] = "Donar"; +App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez"; +App::$strings["Donate Now"] = "Donar ahora"; +App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)"; +App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores"; +App::$strings["Sponsor"] = "Patrocinador"; +App::$strings["Special thanks to: "] = "Agradecimiento especial a: "; +App::$strings["Your Webbie:"] = "Su webbie: "; +App::$strings["Fontsize (px):"] = "Tamaño de fuente (px): "; +App::$strings["Link:"] = "Enlace: "; +App::$strings["Like us on Hubzilla"] = "Múestrenos su agrado en Hubzilla"; +App::$strings["Embed:"] = "Incorporado: "; +App::$strings["Quick Reference"] = "Referencia rápida"; +App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc."; +App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales."; +App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."; +App::$strings["Guitar Chords"] = "Acordes de guitarra"; +App::$strings["The complete online chord dictionary"] = "El diccionario completo de acordes en línea"; +App::$strings["Tuning"] = "Afinación"; +App::$strings["Chord name: example: Em7"] = "Nombre del acorde, por ejemplo: Em7"; +App::$strings["Show for left handed stringing"] = "Mostrar para tocadores zurdos"; +App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Buscar %1\$s (%2\$s)"; +App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname"; +App::$strings["\$Projectname"] = "\$Projectname"; +App::$strings["Search \$Projectname"] = "Buscar \$Projectname"; +App::$strings["Fuzzloc Settings updated."] = "Los ajustes de Fuzzloc se han actualizado."; +App::$strings["Fuzzy Location App"] = "App Fuzzy Location"; +App::$strings["Blur your precise location if your channel uses browser location mapping"] = "Desdibujar su ubicación precisa si su canal utiliza el mapeo de ubicación del navegador"; +App::$strings["Minimum offset in meters"] = "Offset mínimo en metros"; +App::$strings["Maximum offset in meters"] = "Offset máximo en metros"; +App::$strings["Fuzzy Location"] = "Fuzzy Location"; +App::$strings["Flattr this!"] = "¡Apoyar esto en Flattr!"; +App::$strings["Flattr widget settings updated."] = "Los ajustes del widget Flattr han sido actualizados."; +App::$strings["Flattr Widget App"] = "App Flattr Widget"; +App::$strings["Add a Flattr button to your channel page"] = "Proporcionar un botón Flattr a la página de su canal"; +App::$strings["Flattr user"] = "Usuario en Flattr"; +App::$strings["URL of the Thing to flattr"] = "URL de la Cosa para apoyar en flattr"; +App::$strings["If empty channel URL is used"] = "Si está vacío, se usa la URL del canal"; +App::$strings["Title of the Thing to flattr"] = "Título de la Cosa para apoyar en flattr"; +App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Si está vacío, se usará \"nombre del canal en Hubzilla\""; +App::$strings["Static or dynamic flattr button"] = "Botón de flattr estático o dinámico"; +App::$strings["static"] = "estático"; +App::$strings["dynamic"] = "dinámico"; +App::$strings["Alignment of the widget"] = "Alineamiento del widget"; +App::$strings["left"] = "izquierda"; +App::$strings["right"] = "derecha"; +App::$strings["Flattr Widget"] = "Flattr Widget"; +App::$strings["Send email to all members"] = "Enviar un correo electrónico a todos los miembros"; +App::$strings["%s Administrator"] = "%s Administrador"; +App::$strings["No recipients found."] = "No se han encontrado destinatarios."; +App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d de %2\$d mensajes enviados."; +App::$strings["Send email to all hub members."] = "Enviar un correo electrónico a todos los miembros del hub."; +App::$strings["Message subject"] = "Asunto del mensaje"; +App::$strings["Sender Email address"] = "Dirección de correo electrónico del remitente"; +App::$strings["Test mode (only send to hub administrator)"] = "Modo de prueba (enviar sólo al administrador del hub)"; +App::$strings["New registration"] = "Nuevo registro"; +App::$strings["%s : Message delivery failed."] = "%s : Falló el envío del mensaje."; +App::$strings["Message sent to %s. New account registration: %s"] = "Mensaje enviado a %s. Registro de una nueva cuenta: %s"; +App::$strings["Not allowed."] = "No permitido/a."; +App::$strings["Permissions"] = "Permisos"; +App::$strings["Set/edit permissions"] = "Establecer/editar los permisos"; +App::$strings["Item not found."] = "Elemento no encontrado."; +App::$strings["Post to Libertree"] = "Publicar en Libertree"; +App::$strings["Libertree Crosspost Connector Settings saved."] = "Se han guardado los ajustes del conector de publicación cruzada con Libertree."; +App::$strings["Libertree Crosspost Connector App"] = "App Libertree Crosspost Connector"; +App::$strings["Relay public posts to Libertree"] = "Retransmisión de entradas públicas a Libertree"; +App::$strings["Libertree API token"] = "Token de la API de Libertree"; +App::$strings["Libertree site URL"] = "URL del servidor de Libertree"; +App::$strings["Post to Libertree by default"] = "Publicar en Libertree por defecto"; +App::$strings["Libertree Crosspost Connector"] = "Libertree Crosspost Connector"; +App::$strings["You're welcome."] = "Bienvenido."; +App::$strings["Ah shucks..."] = "Ah, joder..."; +App::$strings["Don't mention it."] = "No lo menciones."; +App::$strings["<blush>"] = "<sonrojo>"; +App::$strings["Report Bug"] = "Informe de errores"; +App::$strings["TOTP Two-Step Verification"] = "Verificación en dos pasos de TOTP"; +App::$strings["Enter the 2-step verification generated by your authenticator app:"] = "Introduzca la verificación en 2 pasos generada por su app de autenticación: "; +App::$strings["Success!"] = "¡Éxito!"; +App::$strings["Invalid code, please try again."] = "Código inválido, por favor inténtelo de nuevo."; +App::$strings["Too many invalid codes..."] = "Demasiados códigos no válidos..."; +App::$strings["Verify"] = "Verficar"; +App::$strings["You haven't set a TOTP secret yet.\nPlease click the button below to generate one and register this site\nwith your preferred authenticator app."] = "Aún no ha establecido un TOTP secret.\nPor favor, haga clic en el botón de abajo para generar uno y registrar este sitio\ncon su aplicación de autenticación preferida."; +App::$strings["Your TOTP secret is"] = "Su TOTP secret es "; +App::$strings["Be sure to save it somewhere in case you lose or replace your mobile device.\nUse your mobile device to scan the QR code below to register this site\nwith your preferred authenticator app."] = "Asegúrese de guardarlo en algún lugar en caso de que pierda o reemplace su dispositivo móvil.\nUtilice su dispositivo móvil para escanear el código QR a continuación para registrar este sitio\ncon su aplicación de autenticación preferida."; +App::$strings["Test"] = "Test"; +App::$strings["Generate New Secret"] = "Generar un nuevo Secret"; +App::$strings["Go"] = "Ir"; +App::$strings["Enter your password"] = "Introduzca su contraseña"; +App::$strings["enter TOTP code from your device"] = "introduzca el código TOTP desde su dispositivo"; +App::$strings["Pass!"] = "¡Pase!"; +App::$strings["Fail"] = "Fallo"; +App::$strings["Incorrect password, try again."] = "Contraseña incorrecta, inténtelo de nuevo."; +App::$strings["Record your new TOTP secret and rescan the QR code above."] = "Registre su nuevo TOTP secret y vuelva a escanear el código QR de arriba"; +App::$strings["TOTP Settings"] = "Ajustes de TOTP"; +App::$strings["Logfile archive directory"] = "Directorio de los ficheros de informe"; +App::$strings["Directory to store rotated logs"] = "Directorio para almacenar los informes rotados"; +App::$strings["Logfile size in bytes before rotating"] = "Tamaño del fichero de informe en bytes antes de rotarlo"; +App::$strings["Number of logfiles to retain"] = "Número de ficheros de informe que se deben retener"; +App::$strings["Your account on %s will expire in a few days."] = "Su cuenta en %s caducará en unos pocos días."; +App::$strings["Your $Productname test account is about to expire."] = "Su cuenta de prueba de $Productname está a punto de caducar."; +App::$strings["Skeleton App"] = "App Skeleton"; +App::$strings["A skeleton for addons, you can copy/paste"] = "Skeleton para los addons, puede copiar/pegar"; +App::$strings["Some setting"] = "Algunos ajustes"; +App::$strings["A setting"] = "Un ajuste"; +App::$strings["Skeleton Settings"] = "Ajustes de Skeleton"; +App::$strings["Possible adult content"] = "Posible contenido para adultos"; +App::$strings["%s - view"] = "ver - %s"; +App::$strings["NSFW Settings saved."] = "Se han guardado los ajustes de NSFW."; +App::$strings["NSFW App"] = "App NSFW"; +App::$strings["Collapse content that contains predefined words"] = "Ocultar el contenido que contiene palabras predefinidas"; +App::$strings["This app looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Esta aplicación busca en los mensajes las palabras o texto que especifique a continuación, y oculta cualquier contenido que contenga esas palabras clave, para que no se muestren en momentos inapropiados, como insinuaciones sexuales que puedan ser inapropiadas en un entorno laboral. Es cortés y recomendable etiquetar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como filtro de contenido de propósito general."; +App::$strings["Comma separated list of keywords to hide"] = "Lista separada por comas de palabras clave para ocultar"; +App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "Palabra, /expresión regular/, lang=xx, lang!=xx"; +App::$strings["NSFW"] = "NSFW"; +App::$strings["Show Upload Limits"] = "Mostrar los límites de subida"; +App::$strings["Hubzilla configured maximum size: "] = "Tamaño máximo configurado por Hubzilla: "; +App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize: "; +App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (debe ser mayor que upload_max_filesize): "; App::$strings["Three Dimensional Tic-Tac-Toe"] = "Juego en 3D Tic-Tac-Toe"; App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe"; App::$strings["New game"] = "Nuevo juego"; @@ -2835,153 +778,564 @@ App::$strings["I'm going first this time..."] = "Yo voy primero esta vez..."; App::$strings["You won!"] = "¡Usted ha ganado!"; App::$strings["\"Cat\" game!"] = "¡El juego del \"gato\"!"; App::$strings["I won!"] = "¡He ganado yo!"; -App::$strings["pageheader Settings saved."] = "Se han guardado los ajustes del encabezado de página."; -App::$strings["Page Header App"] = "App Page Header"; -App::$strings["Inserts a page header"] = "Inserta un encabezado de página"; -App::$strings["Message to display on every page on this server"] = "Mensaje para mostrar en todas las páginas de este servidor"; -App::$strings["Page Header"] = "Page Header"; -App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Permitir la autenticación mágica sólo a los sitios web de sus conexiones próximas"; -App::$strings["Authchoose App"] = "App Authchoose"; -App::$strings["Authchoose"] = "Autoseleccionar"; -App::$strings["lonely"] = "Solo/a"; -App::$strings["drunk"] = "ebrio/a"; -App::$strings["horny"] = "caliente"; -App::$strings["stoned"] = "drogado/a"; -App::$strings["fucked up"] = "jodido/a"; -App::$strings["clusterfucked"] = "hecho/a polvo"; -App::$strings["crazy"] = "loco/a"; -App::$strings["hurt"] = "ofendido/a"; -App::$strings["sleepy"] = "soñoliento/a"; -App::$strings["grumpy"] = "gruñón/ona"; -App::$strings["high"] = "superior"; -App::$strings["semi-conscious"] = "semiconsciente"; -App::$strings["in love"] = "enamorado/a"; -App::$strings["in lust"] = "lujurioso/a"; -App::$strings["naked"] = "desnudo/a"; -App::$strings["stinky"] = "apestoso/a"; -App::$strings["sweaty"] = "sudoroso/a"; -App::$strings["bleeding out"] = "exánime"; -App::$strings["victorious"] = "victorioso/a"; -App::$strings["defeated"] = "derrotado/a"; -App::$strings["envious"] = "envidioso/a"; -App::$strings["jealous"] = "celoso/a"; -App::$strings["XMPP settings updated."] = "Se han actualizado los ajustes de XMPP."; -App::$strings["XMPP App"] = "App XMPP"; -App::$strings["Embedded XMPP (Jabber) client"] = "Cliente XMPP (Jabber) integrado"; -App::$strings["Individual credentials"] = "Credenciales individuales"; -App::$strings["Jabber BOSH server"] = "Servidor BOSH de Jabber"; -App::$strings["XMPP Settings"] = "Ajustes de XMPP"; -App::$strings["Jabber BOSH host"] = "BOSH de Jabber"; -App::$strings["Use central userbase"] = "Usar la base de usuarios central"; -App::$strings["If enabled, members will automatically login to an ejabberd server that has to be installed on this machine with synchronized credentials via the \"auth_ejabberd.php\" script."] = "Si está habilitado, los miembros se conectarán automáticamente a un servidor ejabberd que debe instalarse en esta máquina con credenciales sincronizadas a través del script \"auth ejabberd.php\"."; -App::$strings["Who likes me?"] = "¿Quién me ha puesto \"Me gusta\"?"; -App::$strings["Pump.io Settings saved."] = "Se han guardado los ajustes de Pump.io"; -App::$strings["Pump.io Crosspost Connector App"] = "App Pump.io Crosspost Connector"; -App::$strings["Relay public posts to pump.io"] = "Retransmisión de entradas públicas a pump.io"; -App::$strings["Pump.io servername"] = "Nombre del servidor de Pump.io"; -App::$strings["Without \"http://\" or \"https://\""] = "Sin \"http://\" or \"https://\""; -App::$strings["Pump.io username"] = "Nombre de usuario en Pump.io"; -App::$strings["Without the servername"] = "Sin el nombre del servidor"; -App::$strings["You are not authenticated to pumpio"] = "No está autenticado en pump.io"; -App::$strings["(Re-)Authenticate your pump.io connection"] = "(Re-)Autenticar su conexión en pump.io"; -App::$strings["Post to pump.io by default"] = "Publicar por defecto en pump.io"; -App::$strings["Should posts be public"] = "¿Las entradas deben ser públicas?"; -App::$strings["Mirror all public posts"] = "Reflejar todos los mensajes públicos"; -App::$strings["Pump.io Crosspost Connector"] = "Pump.io Crosspost Connector"; -App::$strings["You are now authenticated to pumpio."] = "Ahora está autenticado en pump.io."; -App::$strings["return to the featured settings page"] = "Volver a la página de configuración destacada"; -App::$strings["Post to Pump.io"] = "Publicar en Pump.io"; -App::$strings["An account has been created for you."] = "Se ha creado una cuenta para usted."; -App::$strings["Authentication successful but rejected: account creation is disabled."] = "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada."; -App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Buscar %1\$s (%2\$s)"; -App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname"; -App::$strings["Search \$Projectname"] = "Buscar \$Projectname"; -App::$strings["Redmatrix File Storage Import"] = "Importar repositorio de ficheros de Redmatrix"; -App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Esto importará todos sus ficheros de la nube de Redmatrix a este canal."; -App::$strings["file"] = "fichero"; -App::$strings["Send email to all members"] = "Enviar un correo electrónico a todos los miembros"; -App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d de %2\$d mensajes enviados."; -App::$strings["Send email to all hub members."] = "Enviar un correo electrónico a todos los miembros del hub."; -App::$strings["Sender Email address"] = "Dirección de correo electrónico del remitente"; -App::$strings["Test mode (only send to hub administrator)"] = "Modo de prueba (enviar sólo al administrador del hub)"; -App::$strings["Profile to assign new connections"] = "Perfil para asignar a las nuevas conexiones"; -App::$strings["Frequently"] = "Frecuentemente"; -App::$strings["Hourly"] = "Cada hora"; -App::$strings["Twice daily"] = "Dos veces al día"; -App::$strings["Daily"] = "Diariamente"; -App::$strings["Weekly"] = "Semanalmente"; -App::$strings["Monthly"] = "Mensualmente"; -App::$strings["Currently Male"] = "Actualmente hombre"; -App::$strings["Currently Female"] = "Actualmente mujer"; -App::$strings["Mostly Male"] = "Generalmente hombre"; -App::$strings["Mostly Female"] = "Generalmente mujer"; -App::$strings["Transgender"] = "Transgénero"; -App::$strings["Intersex"] = "Intersexual"; -App::$strings["Transsexual"] = "Transexual"; -App::$strings["Hermaphrodite"] = "Hermafrodita"; -App::$strings["Neuter"] = "Neutral"; -App::$strings["Non-specific"] = "No especificado"; -App::$strings["Undecided"] = "Indeciso/a"; -App::$strings["Males"] = "Hombres"; -App::$strings["Females"] = "Mujeres"; -App::$strings["Gay"] = "Homosexual"; -App::$strings["Lesbian"] = "Lesbiana"; -App::$strings["No Preference"] = "Sin preferencias"; -App::$strings["Bisexual"] = "Bisexual"; -App::$strings["Autosexual"] = "Autosexual"; -App::$strings["Abstinent"] = "Casto/a"; -App::$strings["Virgin"] = "Virgen"; -App::$strings["Deviant"] = "Fuera de lo común"; -App::$strings["Fetish"] = "Fetichista"; -App::$strings["Oodles"] = "Orgías"; -App::$strings["Nonsexual"] = "Asexual"; -App::$strings["Single"] = "Soltero/a"; -App::$strings["Lonely"] = "Solo/a"; -App::$strings["Available"] = "Disponible"; -App::$strings["Unavailable"] = "No disponible"; -App::$strings["Has crush"] = "Enamorado/a"; -App::$strings["Infatuated"] = "Apasionado/a"; -App::$strings["Dating"] = "Saliendo con alguien"; -App::$strings["Unfaithful"] = "Infiel"; -App::$strings["Sex Addict"] = "Con adicción al sexo"; -App::$strings["Friends/Benefits"] = "Amigos con algo extra"; -App::$strings["Casual"] = "Casual"; -App::$strings["Engaged"] = "Prometido/a"; -App::$strings["Married"] = "Casado/a"; -App::$strings["Imaginarily married"] = "Casado/a en sueños"; -App::$strings["Partners"] = "Pareja"; -App::$strings["Cohabiting"] = "Cohabitando"; -App::$strings["Common law"] = "Matrimonio tradicional"; -App::$strings["Happy"] = "Felíz"; -App::$strings["Not looking"] = "No estoy buscando"; -App::$strings["Swinger"] = "Libertino"; -App::$strings["Betrayed"] = "Engañado/a"; -App::$strings["Separated"] = "Separado/a"; -App::$strings["Unstable"] = "Inestable"; -App::$strings["Divorced"] = "Divorciado/a"; -App::$strings["Imaginarily divorced"] = "Divorciado/a en sueños"; -App::$strings["Widowed"] = "Viudo/a"; -App::$strings["Uncertain"] = "Indeterminado"; -App::$strings["It's complicated"] = "Es complicado"; -App::$strings["Don't care"] = "No me importa"; -App::$strings["Ask me"] = "Pregúnteme"; +App::$strings["Follow"] = "Seguir"; +App::$strings["%1\$s is now following %2\$s"] = "%1\$s está siguiendo ahora a %2\$s"; +App::$strings["The GNU-Social protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "El protocolo de GNU-Social no admite la independencia de la ubicación. Las\n conexiones que realice dentro de esa red pueden ser inaccesibles desde \nubicaciones de canales alternativos."; +App::$strings["GNU-Social Protocol App"] = "App Protocolo GNU-Social"; +App::$strings["GNU-Social Protocol"] = "Protocolo GNU-Social"; +App::$strings["Send test email"] = "Enviar un correo electrónico de prueba"; +App::$strings["Mail sent."] = "El correo electrónico ha sido enviado."; +App::$strings["Sending of mail failed."] = "No se pudo enviar el correo."; +App::$strings["Mail Test"] = "Prueba de correo"; +App::$strings["Livejournal Crosspost Connector App"] = "App Livejournal Crosspost Connector"; +App::$strings["Relay public posts to Livejournal"] = "Retransmisión de entradas públicas a Livejournal"; +App::$strings["Livejournal username"] = "Nombre de usuario en Livejournal"; +App::$strings["Livejournal password"] = "Contraseña en Livejournal"; +App::$strings["Post to Livejournal by default"] = "Publicar en Livejournal por defecto"; +App::$strings["Send wall-to-wall posts to Livejournal"] = "Enviar entradas de Muro-Muro a Livejournal"; +App::$strings["Livejournal Crosspost Connector"] = "Livejournal Crosspost Connector"; +App::$strings["Post to Livejournal"] = "Publicar en Livejournal"; +App::$strings["Posted by"] = "Publicado por "; +App::$strings["Invalid game."] = "Juego no válido."; +App::$strings["You are not a player in this game."] = "Usted no participa en este juego."; +App::$strings["You must be a local channel to create a game."] = "Debe ser un canal local para crear un juego"; +App::$strings["You must select one opponent that is not yourself."] = "Debe seleccionar un oponente que no sea usted mismo."; +App::$strings["Random color chosen."] = "Elegido un color aleatorio."; +App::$strings["Error creating new game."] = "Error al crear un nuevo juego."; +App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible."; +App::$strings["Chess not installed."] = "Chess no está instalado."; +App::$strings["You must select a local channel /chess/channelname"] = "Debe seleccionar un canal local /chess/nombredelcanal"; +App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; +App::$strings["Page not found."] = "Página no encontrada."; +App::$strings["Enable notifications"] = "Habilitar notificaciones"; +App::$strings["Markdown"] = "Markdown"; +App::$strings["Use markdown for editing posts"] = "Usar markdown para editar las entradas"; +App::$strings["Hubzilla File Storage Import"] = "Importar del depósito de ficheros de Hubzilla"; +App::$strings["This will import all your cloud files from another server."] = "Esto importará todos sus ficheros en la nube desde otro servidor."; +App::$strings["Hubzilla Server base URL"] = "URL base del servidor Hubzilla"; +App::$strings["Jappixmini App"] = "App Jappixmini"; +App::$strings["Provides a Facebook-like chat using Jappix Mini"] = "Proporciona un chat similar al de Facebook utilizando Jappix Mini"; +App::$strings["Status:"] = "Estado:"; +App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Ocultar el widget de chat Jappixmini en la interfaz web"; +App::$strings["Jabber username"] = "Nombre de usuario en Jabber"; +App::$strings["Jabber server"] = "Servidor de Jabber"; +App::$strings["Jabber BOSH host URL"] = "URL del host BOSH de Jabber"; +App::$strings["Jabber password"] = "Contraseña en Jabber"; +App::$strings["Encrypt Jabber password with Hubzilla password"] = "Cifrar la contraseña de Jabber con la contraseña de Hubzilla"; +App::$strings["Recommended"] = "Recomendado"; +App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla"; +App::$strings["Purge internal list of jabber addresses of contacts"] = "Purgar la lista interna de las direcciones de contactos de jabber"; +App::$strings["Configuration Help"] = "Ayuda para los ajustes"; +App::$strings["Add Contact"] = "Añadir un contacto"; +App::$strings["Jappixmini Settings"] = "Ajustes de Jappixmini"; +App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Permitir la autenticación mágica sólo a los sitios web de sus conexiones próximas"; +App::$strings["Authchoose App"] = "App Authchoose"; +App::$strings["Authchoose"] = "Autoseleccionar"; +App::$strings["pageheader Settings saved."] = "Se han guardado los ajustes del encabezado de página."; +App::$strings["Page Header App"] = "App Page Header"; +App::$strings["Inserts a page header"] = "Inserta un encabezado de página"; +App::$strings["Message to display on every page on this server"] = "Mensaje para mostrar en todas las páginas de este servidor"; +App::$strings["Page Header"] = "Page Header"; +App::$strings["Popular Channels"] = "Canales populares"; +App::$strings["Channels to auto connect"] = "Canales para conexión automática"; +App::$strings["Comma separated list"] = "Lista separada por comas"; +App::$strings["IRC Settings"] = "Ajustes de IRC"; +App::$strings["IRC settings saved."] = "Se han guardado los ajustes de IRC."; +App::$strings["IRC Chatroom"] = "Sala de chat IRC"; +App::$strings["Jabber BOSH host"] = "BOSH de Jabber"; +App::$strings["Use central userbase"] = "Usar la base de usuarios central"; +App::$strings["If enabled, members will automatically login to an ejabberd server that has to be installed on this machine with synchronized credentials via the \"auth_ejabberd.php\" script."] = "Si está habilitado, los miembros se conectarán automáticamente a un servidor ejabberd que debe instalarse en esta máquina con credenciales sincronizadas a través del script \"auth ejabberd.php\"."; +App::$strings["XMPP settings updated."] = "Se han actualizado los ajustes de XMPP."; +App::$strings["XMPP App"] = "App XMPP"; +App::$strings["Embedded XMPP (Jabber) client"] = "Cliente XMPP (Jabber) integrado"; +App::$strings["Individual credentials"] = "Credenciales individuales"; +App::$strings["Jabber BOSH server"] = "Servidor BOSH de Jabber"; +App::$strings["XMPP Settings"] = "Ajustes de XMPP"; +App::$strings["Invalid data packet"] = "Paquete de datos no válido"; +App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal"; +App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s"; +App::$strings["invalid target signature"] = "La firma recibida no es válida"; +App::$strings["prev"] = "anterior"; +App::$strings["first"] = "primera"; +App::$strings["last"] = "última"; +App::$strings["next"] = "próxima"; +App::$strings["older"] = "más antiguas"; +App::$strings["newer"] = "más recientes"; +App::$strings["No connections"] = "Sin conexiones"; +App::$strings["Connections"] = "Conexiones"; +App::$strings["View all %s connections"] = "Ver todas las %s conexiones"; +App::$strings["Network: %s"] = "Red %s"; +App::$strings["Search"] = "Buscar"; +App::$strings["poke"] = "un toque"; +App::$strings["poked"] = "ha dado un toque a"; +App::$strings["ping"] = "un \"ping\""; +App::$strings["pinged"] = "ha enviado un \"ping\" a"; +App::$strings["prod"] = "una incitación "; +App::$strings["prodded"] = "ha incitado a "; +App::$strings["slap"] = "una bofetada "; +App::$strings["slapped"] = "ha abofeteado a "; +App::$strings["finger"] = "un \"finger\" "; +App::$strings["fingered"] = "envió un \"finger\" a"; +App::$strings["rebuff"] = "un reproche"; +App::$strings["rebuffed"] = "ha hecho un reproche a "; +App::$strings["happy"] = "feliz "; +App::$strings["sad"] = "triste "; +App::$strings["mellow"] = "tranquilo/a"; +App::$strings["tired"] = "cansado/a "; +App::$strings["perky"] = "vivaz"; +App::$strings["angry"] = "enfadado/a"; +App::$strings["stupefied"] = "asombrado/a"; +App::$strings["puzzled"] = "perplejo/a"; +App::$strings["interested"] = "interesado/a"; +App::$strings["bitter"] = "amargado/a"; +App::$strings["cheerful"] = "alegre"; +App::$strings["alive"] = "animado/a"; +App::$strings["annoyed"] = "molesto/a"; +App::$strings["anxious"] = "ansioso/a"; +App::$strings["cranky"] = "de mal humor"; +App::$strings["disturbed"] = "perturbado/a"; +App::$strings["frustrated"] = "frustrado/a"; +App::$strings["depressed"] = "deprimido/a"; +App::$strings["motivated"] = "motivado/a"; +App::$strings["relaxed"] = "relajado/a"; +App::$strings["surprised"] = "sorprendido/a"; +App::$strings["Monday"] = "lunes"; +App::$strings["Tuesday"] = "martes"; +App::$strings["Wednesday"] = "miércoles"; +App::$strings["Thursday"] = "jueves"; +App::$strings["Friday"] = "viernes"; +App::$strings["Saturday"] = "sábado"; +App::$strings["Sunday"] = "domingo"; +App::$strings["January"] = "enero"; +App::$strings["February"] = "febrero"; +App::$strings["March"] = "marzo"; +App::$strings["April"] = "abril"; +App::$strings["May"] = "mayo"; +App::$strings["June"] = "junio"; +App::$strings["July"] = "julio"; +App::$strings["August"] = "agosto"; +App::$strings["September"] = "septiembre"; +App::$strings["October"] = "octubre"; +App::$strings["November"] = "noviembre"; +App::$strings["December"] = "diciembre"; +App::$strings["Unknown Attachment"] = "Adjunto no reconocido"; +App::$strings["Size"] = "Tamaño"; +App::$strings["unknown"] = "desconocido"; +App::$strings["remove category"] = "eliminar el tema"; +App::$strings["remove from file"] = "eliminar del fichero"; +App::$strings["Download binary/encrypted content"] = "Descargar contenido binario o cifrado"; +App::$strings["Link to Source"] = "Enlazar con la entrada en su ubicación original"; +App::$strings["default"] = "por defecto"; +App::$strings["Page layout"] = "Plantilla de la página"; +App::$strings["You can create your own with the layouts tool"] = "Puede crear su propia disposición gráfica con la herramienta de plantillas"; +App::$strings["BBcode"] = "BBcode"; +App::$strings["HTML"] = "HTML"; +App::$strings["Text"] = "Texto"; +App::$strings["Comanche Layout"] = "Plantilla de Comanche"; +App::$strings["PHP"] = "PHP"; +App::$strings["Page content type"] = "Tipo de contenido de la página"; +App::$strings["event"] = "el/su evento"; +App::$strings["comment"] = "el comentario"; +App::$strings["activity"] = "la/su actividad"; +App::$strings["a-z, 0-9, -, and _ only"] = "a-z, 0-9, -, and _ only"; +App::$strings["Design Tools"] = "Herramientas de diseño web"; +App::$strings["Blocks"] = "Bloques"; +App::$strings["Menus"] = "Menús"; +App::$strings["Layouts"] = "Plantillas"; +App::$strings["Pages"] = "Páginas"; +App::$strings["Import"] = "Importar"; +App::$strings["Import website..."] = "Importar un sitio web..."; +App::$strings["Select folder to import"] = "Seleccionar la carpeta que se va a importar"; +App::$strings["Import from a zipped folder:"] = "Importar desde una carpeta comprimida: "; +App::$strings["Import from cloud files:"] = "Importar desde los ficheros en la nube: "; +App::$strings["/cloud/channel/path/to/folder"] = "/cloud/canal/ruta/a la/carpeta"; +App::$strings["Enter path to website files"] = "Ruta a los ficheros del sitio web"; +App::$strings["Select folder"] = "Seleccionar la carpeta"; +App::$strings["Export website..."] = "Exportar un sitio web..."; +App::$strings["Export to a zip file"] = "Exportar a un fichero comprimido .zip"; +App::$strings["website.zip"] = "sitio_web.zip"; +App::$strings["Enter a name for the zip file."] = "Escriba un nombre para el fichero zip."; +App::$strings["Export to cloud files"] = "Exportar a la nube de ficheros"; +App::$strings["/path/to/export/folder"] = "/ruta/para/exportar/carpeta"; +App::$strings["Enter a path to a cloud files destination."] = "Escriba una ruta de destino a la nube de ficheros."; +App::$strings["Specify folder"] = "Especificar una carpeta"; +App::$strings["Collection"] = "Colección"; +App::$strings["This is the home page of %s."] = "Esta es la página personal de %s."; +App::$strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i"; +App::$strings["Starts:"] = "Comienza:"; +App::$strings["Finishes:"] = "Finaliza:"; +App::$strings["Location:"] = "Ubicación:"; +App::$strings["l F d, Y"] = "l F d, Y"; +App::$strings["Start:"] = "Iniciar: "; +App::$strings["End:"] = "Finalizar: "; +App::$strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario."; +App::$strings["Not specified"] = "Sin especificar"; +App::$strings["Needs Action"] = "Necesita de una intervención"; +App::$strings["Completed"] = "Completado/a"; +App::$strings["In Process"] = "En proceso"; +App::$strings["Cancelled"] = "Cancelado/a"; +App::$strings["Mobile"] = "Móvil"; +App::$strings["Home"] = "Inicio"; +App::$strings["Home, Voice"] = "Llamadas particulares"; +App::$strings["Home, Fax"] = "Fax particular"; +App::$strings["Work"] = "Trabajo"; +App::$strings["Work, Voice"] = "Llamadas de trabajo"; +App::$strings["Work, Fax"] = "Fax de trabajo"; +App::$strings["Other"] = "Otro"; +App::$strings["Off"] = "Desactivado"; +App::$strings["On"] = "Activado"; +App::$strings["Calendar"] = "Calendario"; +App::$strings["Start calendar week on Monday"] = "Comenzar el calendario semanal por el lunes"; +App::$strings["Default is Sunday"] = "Por defecto es domingo"; +App::$strings["Event Timezone Selection"] = "Selección del huso horario del evento"; +App::$strings["Allow event creation in timezones other than your own."] = "Permitir la creación de eventos en husos horarios distintos del suyo."; +App::$strings["Channel Home"] = "Mi canal"; +App::$strings["Search by Date"] = "Buscar por fecha"; +App::$strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas"; +App::$strings["Tag Cloud"] = "Nube de etiquetas"; +App::$strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal"; +App::$strings["Use blog/list mode"] = "Usar el modo blog/lista"; +App::$strings["Comments will be displayed separately"] = "Los comentarios se mostrarán por separado"; +App::$strings["Connection Filtering"] = "Filtrado de conexiones"; +App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido"; +App::$strings["Conversation"] = "Conversación"; +App::$strings["Community Tagging"] = "Etiquetas de la comunidad"; +App::$strings["Ability to tag existing posts"] = "Capacidad de etiquetar entradas"; +App::$strings["Emoji Reactions"] = "Emoticonos \"emoji\""; +App::$strings["Add emoji reaction ability to posts"] = "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas"; +App::$strings["Dislike Posts"] = "Desagrado de publicaciones"; +App::$strings["Ability to dislike posts/comments"] = "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios"; +App::$strings["Star Posts"] = "Entradas destacadas"; +App::$strings["Ability to mark special posts with a star indicator"] = "Capacidad de marcar entradas destacadas con un indicador de estrella"; +App::$strings["Reply on comment"] = "Responder a los comentarios"; +App::$strings["Ability to reply on selected comment"] = "Posibilidad de responder a los comentarios seleccionados"; +App::$strings["Directory"] = "Directorio"; +App::$strings["Advanced Directory Search"] = "Búsqueda avanzada en el directorio"; +App::$strings["Allows creation of complex directory search queries"] = "Permitir la creación de consultas complejas en las búsquedas en el directorio"; +App::$strings["Editor"] = "Editor"; +App::$strings["Post Categories"] = "Temas de las entradas"; +App::$strings["Add categories to your posts"] = "Añadir temas a sus publicaciones"; +App::$strings["Large Photos"] = "Fotos de gran tamaño"; +App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)"; +App::$strings["Even More Encryption"] = "Más cifrado todavía"; +App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida."; +App::$strings["Enable Voting Tools"] = "Permitir entradas con votación"; +App::$strings["Provide a class of post which others can vote on"] = "Proveer una clase de publicación en la que otros puedan votar"; +App::$strings["Disable Comments"] = "Deshabilitar comentarios"; +App::$strings["Provide the option to disable comments for a post"] = "Proporcionar la opción de desactivar los comentarios para una entrada"; +App::$strings["Delayed Posting"] = "Publicación aplazada"; +App::$strings["Allow posts to be published at a later date"] = "Permitir mensajes que se publicarán en una fecha posterior"; +App::$strings["Content Expiration"] = "Caducidad del contenido"; +App::$strings["Remove posts/comments and/or private messages at a future time"] = "Eliminar publicaciones/comentarios y/o mensajes privados más adelante"; +App::$strings["Suppress Duplicate Posts/Comments"] = "Prevenir entradas o comentarios duplicados"; +App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo."; +App::$strings["Auto-save drafts of posts and comments"] = "Guardar automáticamente borradores de entradas y comentarios"; +App::$strings["Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions"] = "Guarda automáticamente los borradores de comentarios y publicaciones en el almacenamiento del navegador local para ayudar a evitar la pérdida accidental de composiciones."; +App::$strings["Manage"] = "Gestionar"; +App::$strings["Navigation Channel Select"] = "Navegación por el selector de canales"; +App::$strings["Change channels directly from within the navigation dropdown menu"] = "Cambiar de canales directamente desde el menú de navegación desplegable"; +App::$strings["Network"] = "Red"; +App::$strings["Saved Searches"] = "Búsquedas guardadas"; +App::$strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización"; +App::$strings["Saved Folders"] = "Carpetas guardadas"; +App::$strings["Ability to file posts under folders"] = "Capacidad de archivar entradas en carpetas"; +App::$strings["Alternate Stream Order"] = "Orden de stream alternativo"; +App::$strings["Ability to order the stream by last post date, last comment date or unthreaded activities"] = "Posibilidad de ordenar el stream por última fecha de publicación, última fecha de comentario o actividades sin hilo"; +App::$strings["Contact Filter"] = "Filtro de contactos"; +App::$strings["Ability to display only posts of a selected contact"] = "Posibilidad de mostrar sólo los mensajes de un contacto seleccionado"; +App::$strings["Forum Filter"] = "Filtro de foro"; +App::$strings["Ability to display only posts of a specific forum"] = "Posibilidad de mostrar sólo los mensajes de un foro específico"; +App::$strings["Personal Posts Filter"] = "Filtro de entradas personales"; +App::$strings["Ability to display only posts that you've interacted on"] = "Posibilidad de mostrar sólo los mensajes en los que usted haya interactuado"; +App::$strings["Photos"] = "Fotos"; +App::$strings["Photo Location"] = "Ubicación de las fotos"; +App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa."; +App::$strings["Profiles"] = "Perfiles"; +App::$strings["Advanced Profiles"] = "Perfiles avanzados"; +App::$strings["Additional profile sections and selections"] = "Secciones y selecciones de perfil adicionales"; +App::$strings["Profile Import/Export"] = "Importar/Exportar perfil"; +App::$strings["Save and load profile details across sites/channels"] = "Guardar y cargar detalles del perfil a través de sitios/canales"; +App::$strings["Multiple Profiles"] = "Múltiples perfiles"; +App::$strings["Ability to create multiple profiles"] = "Capacidad de crear múltiples perfiles"; +App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"; +App::$strings["Delete this item?"] = "¿Borrar este elemento?"; +App::$strings["Comment"] = "Comentar"; +App::$strings["%s show all"] = "%s mostrar todo"; +App::$strings["%s show less"] = "%s mostrar menos"; +App::$strings["%s expand"] = "%s expandir"; +App::$strings["%s collapse"] = "%s contraer"; +App::$strings["Password too short"] = "Contraseña demasiado corta"; +App::$strings["Passwords do not match"] = "Las contraseñas no coinciden"; +App::$strings["everybody"] = "cualquiera"; +App::$strings["Secret Passphrase"] = "Contraseña secreta"; +App::$strings["Passphrase hint"] = "Pista de contraseña"; +App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Aviso: los permisos han cambiado pero aún no han sido enviados."; +App::$strings["close all"] = "cerrar todo"; +App::$strings["Nothing new here"] = "Nada nuevo por aquí"; +App::$strings["Rate This Channel (this is public)"] = "Valorar este canal (esto es público)"; +App::$strings["Rating"] = "Valoración"; +App::$strings["Describe (optional)"] = "Describir (opcional)"; +App::$strings["Please enter a link URL"] = "Por favor, introduzca una dirección de enlace"; +App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro de que desea abandonar la página?"; +App::$strings["Location"] = "Ubicación"; +App::$strings["lovely"] = "encantador"; +App::$strings["wonderful"] = "fabuloso"; +App::$strings["fantastic"] = "fantástico"; +App::$strings["great"] = "grandioso"; +App::$strings["Your chosen nickname was either already taken or not valid. Please use our suggestion ("] = "El nombre de usuario elegido ya está en uso o no es válido. Por favor, utilice nuestra sugerencia ("; +App::$strings[") or enter a new one."] = ") o introduzca uno nuevo."; +App::$strings["Thank you, this nickname is valid."] = "Gracias, este alias es válido."; +App::$strings["A channel name is required."] = "Se requiere un nombre de canal"; +App::$strings["This is a "] = "Esto es un "; +App::$strings[" channel name"] = "nombre de canal"; +App::$strings["Back to reply"] = "Volver a la respuesta"; +App::$strings["%d minutes"] = array( + 0 => "%d minutos", + 1 => "%d minutos", +); +App::$strings["about %d hours"] = array( + 0 => "alrededor de %d horas", + 1 => "alrededor de %d horas", +); +App::$strings["%d days"] = array( + 0 => "%d días", + 1 => "%d días", +); +App::$strings["%d months"] = array( + 0 => "%d meses", + 1 => "%d meses", +); +App::$strings["%d years"] = array( + 0 => "%d años", + 1 => "%d años", +); +App::$strings["timeago.prefixAgo"] = "hace "; +App::$strings["timeago.prefixFromNow"] = "en "; +App::$strings["timeago.suffixAgo"] = "NONE"; +App::$strings["timeago.suffixFromNow"] = "NONE"; +App::$strings["less than a minute"] = "menos de un minuto"; +App::$strings["about a minute"] = "alrededor de un minuto"; +App::$strings["about an hour"] = "alrededor de una hora"; +App::$strings["a day"] = "un día"; +App::$strings["about a month"] = "alrededor de un mes"; +App::$strings["about a year"] = "alrededor de un año"; +App::$strings[" "] = " "; +App::$strings["timeago.numbers"] = "timeago.numbers"; +App::$strings["__ctx:long__ May"] = "mayo"; +App::$strings["Jan"] = "ene"; +App::$strings["Feb"] = "feb"; +App::$strings["Mar"] = "mar"; +App::$strings["Apr"] = "abr"; +App::$strings["__ctx:short__ May"] = "may"; +App::$strings["Jun"] = "jun"; +App::$strings["Jul"] = "jul"; +App::$strings["Aug"] = "ago"; +App::$strings["Sep"] = "sep"; +App::$strings["Oct"] = "oct"; +App::$strings["Nov"] = "nov"; +App::$strings["Dec"] = "dic"; +App::$strings["Sun"] = "dom"; +App::$strings["Mon"] = "lun"; +App::$strings["Tue"] = "mar"; +App::$strings["Wed"] = "mié"; +App::$strings["Thu"] = "jue"; +App::$strings["Fri"] = "vie"; +App::$strings["Sat"] = "sáb"; +App::$strings["__ctx:calendar__ today"] = "hoy"; +App::$strings["__ctx:calendar__ month"] = "mes"; +App::$strings["__ctx:calendar__ week"] = "semana"; +App::$strings["__ctx:calendar__ day"] = "día"; +App::$strings["__ctx:calendar__ All day"] = "Todos los días"; +App::$strings["Help:"] = "Ayuda:"; +App::$strings["Help"] = "Ayuda"; +App::$strings["Not Found"] = "No encontrado"; +App::$strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio"; +App::$strings["Image file is empty."] = "El fichero de imagen está vacío. "; +App::$strings["Unable to process image"] = "No ha sido posible procesar la imagen"; +App::$strings["Photo storage failed."] = "La foto no ha podido ser guardada."; +App::$strings["a new photo"] = "una nueva foto"; +App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s"; +App::$strings["Photo Albums"] = "Álbumes de fotos"; +App::$strings["Recent Photos"] = "Fotos recientes"; +App::$strings["Upload New Photos"] = "Subir nuevas fotos"; +App::$strings["Friendica"] = "Friendica"; +App::$strings["OStatus"] = "OStatus"; +App::$strings["GNU-Social"] = "GNU Social"; +App::$strings["RSS/Atom"] = "RSS/Atom"; +App::$strings["Diaspora"] = "Diaspora"; +App::$strings["Facebook"] = "Facebook"; +App::$strings["Zot"] = "Zot"; +App::$strings["LinkedIn"] = "LinkedIn"; +App::$strings["XMPP/IM"] = "XMPP/IM"; +App::$strings["MySpace"] = "MySpace"; +App::$strings[" and "] = " y "; +App::$strings["public profile"] = "el perfil público"; +App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s ha cambiado %2\$s a “%3\$s”"; +App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s"; +App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s."; +App::$strings["%d invitation available"] = array( + 0 => "%d invitación pendiente", + 1 => "%d invitaciones disponibles", +); +App::$strings["Advanced"] = "Avanzado"; +App::$strings["Find Channels"] = "Encontrar canales"; +App::$strings["Enter name or interest"] = "Introducir nombre o interés"; +App::$strings["Connect/Follow"] = "Conectar/Seguir"; +App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: José Fernández, Pesca"; +App::$strings["Find"] = "Encontrar"; +App::$strings["Channel Suggestions"] = "Sugerencias de canales"; +App::$strings["Random Profile"] = "Perfil aleatorio"; +App::$strings["Invite Friends"] = "Invitar a amigos"; +App::$strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=juan y país=españa"; +App::$strings["Everything"] = "Todo"; +App::$strings["Categories"] = "Temas"; +App::$strings["Common Connections"] = "Conexiones comunes"; +App::$strings["View all %d common connections"] = "Ver todas las %d conexiones comunes"; +App::$strings["Select an alternate language"] = "Seleccionar un idioma alternativo"; +App::$strings["Unable to import a removed channel."] = "No se puede importar un canal eliminado."; +App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado."; +App::$strings["Cloned channel not found. Import failed."] = "No se ha podido importar el canal porque el canal clonado no se ha encontrado."; +App::$strings["Remote authentication"] = "Acceder desde su servidor"; +App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio"; +App::$strings["Channel Manager"] = "Administración de canales"; +App::$strings["Manage your channels"] = "Gestionar sus canales"; +App::$strings["Privacy Groups"] = "Grupos de canales"; +App::$strings["Manage your privacy groups"] = "Gestionar sus grupos de canales"; +App::$strings["Settings"] = "Ajustes"; +App::$strings["Account/Channel Settings"] = "Ajustes de cuenta/canales"; +App::$strings["Logout"] = "Finalizar sesión"; +App::$strings["End this session"] = "Finalizar esta sesión"; +App::$strings["Your profile page"] = "Su página del perfil"; +App::$strings["Edit Profiles"] = "Editar perfiles"; +App::$strings["Manage/Edit profiles"] = "Administrar/editar perfiles"; +App::$strings["Edit your profile"] = "Editar su perfil"; +App::$strings["Login"] = "Iniciar sesión"; +App::$strings["Sign in"] = "Acceder"; +App::$strings["Take me home"] = "Volver a la página principal"; +App::$strings["Log me out of this site"] = "Salir de este sitio"; +App::$strings["Register"] = "Registrarse"; +App::$strings["Create an account"] = "Crear una cuenta"; +App::$strings["Help and documentation"] = "Ayuda y documentación"; +App::$strings["Search site @name, !forum, #tag, ?docs, content"] = "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido"; +App::$strings["Admin"] = "Administrador"; +App::$strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio"; +App::$strings["Loading"] = "Cargando"; +App::$strings["@name, !forum, #tag, ?doc, content"] = "@nombre, !foro, #tag, ?docs, contenido"; +App::$strings["Please wait..."] = "Espere por favor…"; +App::$strings["Add Apps"] = "Añadir aplicaciones"; +App::$strings["Arrange Apps"] = "Organizar aplicaciones"; +App::$strings["Toggle System Apps"] = "Alternar aplicaciones de sistema"; +App::$strings["Channel"] = "Canal"; +App::$strings["Status Messages and Posts"] = "Mensajes de estado y publicaciones"; +App::$strings["About"] = "Mi perfil"; +App::$strings["Profile Details"] = "Detalles del perfil"; +App::$strings["Files"] = "Ficheros"; +App::$strings["Files and Storage"] = "Ficheros y repositorio"; +App::$strings["Chatrooms"] = "Salas de chat"; +App::$strings["Bookmarks"] = "Marcadores"; +App::$strings["Saved Bookmarks"] = "Marcadores guardados"; +App::$strings["Cards"] = "Fichas"; +App::$strings["View Cards"] = "Ver las fichas"; +App::$strings["Articles"] = "Artículos"; +App::$strings["View Articles"] = "Ver los artículos"; +App::$strings["Webpages"] = "Páginas web"; +App::$strings["View Webpages"] = "Ver páginas web"; +App::$strings["Wikis"] = "Wikis"; +App::$strings["Wiki"] = "Wiki"; +App::$strings["Delegation session ended."] = "Finalizó la sesión de la delegación."; +App::$strings["Logged out."] = "Desconectado/a."; +App::$strings["Email validation is incomplete. Please check your email."] = "La validación del correo electrónico está incompleta. Por favor, compruebe su correo electrónico."; +App::$strings["Failed authentication"] = "Autenticación fallida."; +App::$strings["Miscellaneous"] = "Varios"; +App::$strings["Birthday"] = "Cumpleaños"; +App::$strings["Age: "] = "Edad:"; +App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD"; +App::$strings["Required"] = "Obligatorio"; +App::$strings["never"] = "nunca"; +App::$strings["less than a second ago"] = "hace un instante"; +App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s"; +App::$strings["__ctx:relative_date__ year"] = array( + 0 => "año", + 1 => "años", +); +App::$strings["__ctx:relative_date__ month"] = array( + 0 => "mes", + 1 => "meses", +); +App::$strings["__ctx:relative_date__ week"] = array( + 0 => "semana", + 1 => "semanas", +); +App::$strings["__ctx:relative_date__ day"] = array( + 0 => "día", + 1 => "días", +); +App::$strings["__ctx:relative_date__ hour"] = array( + 0 => "hora", + 1 => "horas", +); +App::$strings["__ctx:relative_date__ minute"] = array( + 0 => "minuto", + 1 => "minutos", +); +App::$strings["__ctx:relative_date__ second"] = array( + 0 => "segundo", + 1 => "segundos", +); +App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s"; +App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s"; +App::$strings["Channel is blocked on this site."] = "El canal está bloqueado en este sitio."; +App::$strings["Channel location missing."] = "Falta la dirección del canal."; +App::$strings["Response from remote channel was incomplete."] = "Respuesta incompleta del canal."; +App::$strings["Premium channel - please visit:"] = "Canal Premium - por favor visite:"; +App::$strings["Channel was deleted and no longer exists."] = "El canal ha sido eliminado y ya no existe."; +App::$strings["Remote channel or protocol unavailable."] = "Canal remoto o protocolo no disponible."; +App::$strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado."; +App::$strings["Protocol disabled."] = "Protocolo deshabilitado."; +App::$strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo."; +App::$strings["channel"] = "el canal"; App::$strings["likes %1\$s's %2\$s"] = "gusta de %2\$s de %1\$s"; App::$strings["doesn't like %1\$s's %2\$s"] = "no gusta de %2\$s de %1\$s"; App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s"; App::$strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %2\$s"; -App::$strings["poked"] = "ha dado un toque a"; +App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s"; +App::$strings["This is an unsaved preview"] = "Esta es una previsualización sin guardar"; +App::$strings["__ctx:title__ Likes"] = "Me gusta"; +App::$strings["__ctx:title__ Dislikes"] = "No me gusta"; +App::$strings["__ctx:title__ Agree"] = "De acuerdo"; +App::$strings["__ctx:title__ Disagree"] = "En desacuerdo"; +App::$strings["__ctx:title__ Abstain"] = "Abstención"; +App::$strings["__ctx:title__ Attending"] = "Participaré"; +App::$strings["__ctx:title__ Not attending"] = "No participaré"; +App::$strings["__ctx:title__ Might attend"] = "Quizá participe"; +App::$strings["Select"] = "Seleccionar"; +App::$strings["Delete"] = "Eliminar"; +App::$strings["Toggle Star Status"] = "Activar o desactivar el estado de entrada preferida"; +App::$strings["Private Message"] = "Mensaje Privado"; +App::$strings["Message signature validated"] = "Firma de mensaje validada"; +App::$strings["Message signature incorrect"] = "Firma de mensaje incorrecta"; +App::$strings["Approve"] = "Aprobar"; App::$strings["View %s's profile @ %s"] = "Ver el perfil @ %s de %s"; App::$strings["Categories:"] = "Temas:"; App::$strings["Filed under:"] = "Archivado bajo:"; +App::$strings["from %s"] = "desde %s"; +App::$strings["last edited: %s"] = "último cambio: %s"; +App::$strings["Expires: %s"] = "Caduca: %s"; App::$strings["View in context"] = "Mostrar en su contexto"; +App::$strings["Please wait"] = "Espere por favor"; App::$strings["remove"] = "eliminar"; App::$strings["Loading..."] = "Cargando..."; +App::$strings["Conversation Tools"] = "Herramientas de conversación"; App::$strings["Delete Selected Items"] = "Eliminar elementos seleccionados"; App::$strings["View Source"] = "Ver el código fuente de la entrada"; App::$strings["Follow Thread"] = "Seguir este hilo"; App::$strings["Unfollow Thread"] = "Dejar de seguir este hilo"; +App::$strings["Recent Activity"] = "Actividad reciente"; +App::$strings["Connect"] = "Conectar"; App::$strings["Edit Connection"] = "Editar conexión"; App::$strings["Message"] = "Mensaje"; +App::$strings["Ratings"] = "Valoraciones"; +App::$strings["Poke"] = "Toques y otras cosas"; App::$strings["%s likes this."] = "A %s le gusta esto."; App::$strings["%s doesn't like this."] = "A %s no le gusta esto."; App::$strings["<span %1\$s>%2\$d people</span> like this."] = array( @@ -2999,6 +1353,14 @@ App::$strings[", and %d other people"] = array( ); App::$strings["%s like this."] = "A %s le gusta esto."; App::$strings["%s don't like this."] = "A %s no le gusta esto."; +App::$strings["__ctx:noun__ Like"] = array( + 0 => "Me gusta", + 1 => "Me gusta", +); +App::$strings["__ctx:noun__ Dislike"] = array( + 0 => "No me gusta", + 1 => "No me gusta", +); App::$strings["__ctx:noun__ Attending"] = array( 0 => "Participaré", 1 => "Participaré", @@ -3023,235 +1385,88 @@ App::$strings["__ctx:noun__ Abstain"] = array( 0 => "se abstiene", 1 => "Se abstienen", ); -App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s"; -App::$strings["Unable to import a removed channel."] = "No se puede importar un canal eliminado."; -App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado."; -App::$strings["Cloned channel not found. Import failed."] = "No se ha podido importar el canal porque el canal clonado no se ha encontrado."; -App::$strings["prev"] = "anterior"; -App::$strings["first"] = "primera"; -App::$strings["last"] = "última"; -App::$strings["next"] = "próxima"; -App::$strings["older"] = "más antiguas"; -App::$strings["newer"] = "más recientes"; -App::$strings["No connections"] = "Sin conexiones"; -App::$strings["View all %s connections"] = "Ver todas las %s conexiones"; -App::$strings["Network: %s"] = "Red %s"; -App::$strings["poke"] = "un toque"; -App::$strings["ping"] = "un \"ping\""; -App::$strings["pinged"] = "ha enviado un \"ping\" a"; -App::$strings["prod"] = "una incitación "; -App::$strings["prodded"] = "ha incitado a "; -App::$strings["slap"] = "una bofetada "; -App::$strings["slapped"] = "ha abofeteado a "; -App::$strings["finger"] = "un \"finger\" "; -App::$strings["fingered"] = "envió un \"finger\" a"; -App::$strings["rebuff"] = "un reproche"; -App::$strings["rebuffed"] = "ha hecho un reproche a "; -App::$strings["happy"] = "feliz "; -App::$strings["sad"] = "triste "; -App::$strings["mellow"] = "tranquilo/a"; -App::$strings["tired"] = "cansado/a "; -App::$strings["perky"] = "vivaz"; -App::$strings["angry"] = "enfadado/a"; -App::$strings["stupefied"] = "asombrado/a"; -App::$strings["puzzled"] = "perplejo/a"; -App::$strings["interested"] = "interesado/a"; -App::$strings["bitter"] = "amargado/a"; -App::$strings["cheerful"] = "alegre"; -App::$strings["alive"] = "animado/a"; -App::$strings["annoyed"] = "molesto/a"; -App::$strings["anxious"] = "ansioso/a"; -App::$strings["cranky"] = "de mal humor"; -App::$strings["disturbed"] = "perturbado/a"; -App::$strings["frustrated"] = "frustrado/a"; -App::$strings["depressed"] = "deprimido/a"; -App::$strings["motivated"] = "motivado/a"; -App::$strings["relaxed"] = "relajado/a"; -App::$strings["surprised"] = "sorprendido/a"; -App::$strings["Monday"] = "lunes"; -App::$strings["Tuesday"] = "martes"; -App::$strings["Wednesday"] = "miércoles"; -App::$strings["Thursday"] = "jueves"; -App::$strings["Friday"] = "viernes"; -App::$strings["Saturday"] = "sábado"; -App::$strings["Sunday"] = "domingo"; -App::$strings["January"] = "enero"; -App::$strings["February"] = "febrero"; -App::$strings["March"] = "marzo"; -App::$strings["April"] = "abril"; -App::$strings["May"] = "mayo"; -App::$strings["June"] = "junio"; -App::$strings["July"] = "julio"; -App::$strings["August"] = "agosto"; -App::$strings["September"] = "septiembre"; -App::$strings["October"] = "octubre"; -App::$strings["November"] = "noviembre"; -App::$strings["December"] = "diciembre"; -App::$strings["Unknown Attachment"] = "Adjunto no reconocido"; -App::$strings["unknown"] = "desconocido"; -App::$strings["remove category"] = "eliminar el tema"; -App::$strings["remove from file"] = "eliminar del fichero"; -App::$strings["Download binary/encrypted content"] = "Descargar contenido binario o cifrado"; -App::$strings["default"] = "por defecto"; -App::$strings["Page layout"] = "Plantilla de la página"; -App::$strings["You can create your own with the layouts tool"] = "Puede crear su propia disposición gráfica con la herramienta de plantillas"; -App::$strings["HTML"] = "HTML"; -App::$strings["Comanche Layout"] = "Plantilla de Comanche"; -App::$strings["PHP"] = "PHP"; -App::$strings["Page content type"] = "Tipo de contenido de la página"; -App::$strings["activity"] = "la/su actividad"; -App::$strings["a-z, 0-9, -, and _ only"] = "a-z, 0-9, -, and _ only"; -App::$strings["Design Tools"] = "Herramientas de diseño web"; -App::$strings["Pages"] = "Páginas"; -App::$strings["Import"] = "Importar"; -App::$strings["Import website..."] = "Importar un sitio web..."; -App::$strings["Select folder to import"] = "Seleccionar la carpeta que se va a importar"; -App::$strings["Import from a zipped folder:"] = "Importar desde una carpeta comprimida: "; -App::$strings["Import from cloud files:"] = "Importar desde los ficheros en la nube: "; -App::$strings["/cloud/channel/path/to/folder"] = "/cloud/canal/ruta/a la/carpeta"; -App::$strings["Enter path to website files"] = "Ruta a los ficheros del sitio web"; -App::$strings["Select folder"] = "Seleccionar la carpeta"; -App::$strings["Export website..."] = "Exportar un sitio web..."; -App::$strings["Export to a zip file"] = "Exportar a un fichero comprimido .zip"; -App::$strings["website.zip"] = "sitio_web.zip"; -App::$strings["Enter a name for the zip file."] = "Escriba un nombre para el fichero zip."; -App::$strings["Export to cloud files"] = "Exportar a la nube de ficheros"; -App::$strings["/path/to/export/folder"] = "/ruta/para/exportar/carpeta"; -App::$strings["Enter a path to a cloud files destination."] = "Escriba una ruta de destino a la nube de ficheros."; -App::$strings["Specify folder"] = "Especificar una carpeta"; -App::$strings["%d invitation available"] = array( - 0 => "%d invitación pendiente", - 1 => "%d invitaciones disponibles", -); -App::$strings["Find Channels"] = "Encontrar canales"; -App::$strings["Enter name or interest"] = "Introducir nombre o interés"; -App::$strings["Connect/Follow"] = "Conectar/Seguir"; -App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: José Fernández, Pesca"; -App::$strings["Random Profile"] = "Perfil aleatorio"; -App::$strings["Invite Friends"] = "Invitar a amigos"; -App::$strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=juan y país=españa"; -App::$strings["Common Connections"] = "Conexiones comunes"; -App::$strings["View all %d common connections"] = "Ver todas las %d conexiones comunes"; -App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió %2\$s siguiente %3\$s"; -App::$strings["Channel is blocked on this site."] = "El canal está bloqueado en este sitio."; -App::$strings["Channel location missing."] = "Falta la dirección del canal."; -App::$strings["Response from remote channel was incomplete."] = "Respuesta incompleta del canal."; -App::$strings["Premium channel - please visit:"] = "Canal Premium - por favor visite:"; -App::$strings["Channel was deleted and no longer exists."] = "El canal ha sido eliminado y ya no existe."; -App::$strings["Remote channel or protocol unavailable."] = "Canal remoto o protocolo no disponible."; -App::$strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado."; -App::$strings["Protocol disabled."] = "Protocolo deshabilitado."; -App::$strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo."; -App::$strings["Delete this item?"] = "¿Borrar este elemento?"; -App::$strings["%s show less"] = "%s mostrar menos"; -App::$strings["%s expand"] = "%s expandir"; -App::$strings["%s collapse"] = "%s contraer"; -App::$strings["Password too short"] = "Contraseña demasiado corta"; -App::$strings["Passwords do not match"] = "Las contraseñas no coinciden"; -App::$strings["everybody"] = "cualquiera"; -App::$strings["Secret Passphrase"] = "Contraseña secreta"; -App::$strings["Passphrase hint"] = "Pista de contraseña"; -App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Aviso: los permisos han cambiado pero aún no han sido enviados."; -App::$strings["close all"] = "cerrar todo"; -App::$strings["Nothing new here"] = "Nada nuevo por aquí"; -App::$strings["Rate This Channel (this is public)"] = "Valorar este canal (esto es público)"; -App::$strings["Describe (optional)"] = "Describir (opcional)"; -App::$strings["Please enter a link URL"] = "Por favor, introduzca una dirección de enlace"; -App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro de que desea abandonar la página?"; -App::$strings["lovely"] = "encantador"; -App::$strings["wonderful"] = "fabuloso"; -App::$strings["fantastic"] = "fantástico"; -App::$strings["great"] = "grandioso"; -App::$strings["Your chosen nickname was either already taken or not valid. Please use our suggestion ("] = "El nombre de usuario elegido ya está en uso o no es válido. Por favor, utilice nuestra sugerencia ("; -App::$strings[") or enter a new one."] = ") o introduzca uno nuevo."; -App::$strings["Thank you, this nickname is valid."] = "Gracias, este alias es válido."; -App::$strings["A channel name is required."] = "Se requiere un nombre de canal"; -App::$strings["This is a "] = "Esto es un "; -App::$strings[" channel name"] = "nombre de canal"; -App::$strings["Back to reply"] = "Volver a la respuesta"; -App::$strings["%d minutes"] = array( - 0 => "%d minutos", - 1 => "%d minutos", -); -App::$strings["about %d hours"] = array( - 0 => "alrededor de %d horas", - 1 => "alrededor de %d horas", -); -App::$strings["%d days"] = array( - 0 => "%d días", - 1 => "%d días", -); -App::$strings["%d months"] = array( - 0 => "%d meses", - 1 => "%d meses", -); -App::$strings["%d years"] = array( - 0 => "%d años", - 1 => "%d años", -); -App::$strings["timeago.prefixAgo"] = "hace "; -App::$strings["timeago.prefixFromNow"] = "en "; -App::$strings["timeago.suffixAgo"] = "NONE"; -App::$strings["timeago.suffixFromNow"] = "NONE"; -App::$strings["less than a minute"] = "menos de un minuto"; -App::$strings["about a minute"] = "alrededor de un minuto"; -App::$strings["about an hour"] = "alrededor de una hora"; -App::$strings["a day"] = "un día"; -App::$strings["about a month"] = "alrededor de un mes"; -App::$strings["about a year"] = "alrededor de un año"; -App::$strings[" "] = " "; -App::$strings["timeago.numbers"] = "timeago.numbers"; -App::$strings["__ctx:long__ May"] = "mayo"; -App::$strings["Jan"] = "ene"; -App::$strings["Feb"] = "feb"; -App::$strings["Mar"] = "mar"; -App::$strings["Apr"] = "abr"; -App::$strings["__ctx:short__ May"] = "may"; -App::$strings["Jun"] = "jun"; -App::$strings["Jul"] = "jul"; -App::$strings["Aug"] = "ago"; -App::$strings["Sep"] = "sep"; -App::$strings["Oct"] = "oct"; -App::$strings["Nov"] = "nov"; -App::$strings["Dec"] = "dic"; -App::$strings["Sun"] = "dom"; -App::$strings["Mon"] = "lun"; -App::$strings["Tue"] = "mar"; -App::$strings["Wed"] = "mié"; -App::$strings["Thu"] = "jue"; -App::$strings["Fri"] = "vie"; -App::$strings["Sat"] = "sáb"; -App::$strings["__ctx:calendar__ today"] = "hoy"; -App::$strings["__ctx:calendar__ month"] = "mes"; -App::$strings["__ctx:calendar__ week"] = "semana"; -App::$strings["__ctx:calendar__ day"] = "día"; -App::$strings["__ctx:calendar__ All day"] = "Todos los días"; -App::$strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. "; -App::$strings["No recipient provided."] = "No se ha especificado ningún destinatario."; -App::$strings["[no subject]"] = "[sin asunto]"; -App::$strings["Stored post could not be verified."] = "No se han podido verificar las publicaciones guardadas."; -App::$strings[" and "] = " y "; -App::$strings["public profile"] = "el perfil público"; -App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s ha cambiado %2\$s a “%3\$s”"; -App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s"; -App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s."; -App::$strings["Item was not found."] = "Elemento no encontrado."; -App::$strings["Unknown error."] = "Error desconocido"; -App::$strings["No source file."] = "Ningún fichero de origen"; -App::$strings["Cannot locate file to replace"] = "No se puede localizar el fichero que va a ser sustituido."; -App::$strings["Cannot locate file to revise/update"] = "No se puede localizar el fichero para revisar/actualizar"; -App::$strings["File exceeds size limit of %d"] = "El fichero supera el limite de tamaño de %d"; -App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos."; -App::$strings["File upload failed. Possible system limit or action terminated."] = "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado."; -App::$strings["Stored file could not be verified. Upload failed."] = "El fichero almacenado no ha podido ser verificado. El envío ha fallado."; -App::$strings["Path not available."] = "Ruta no disponible."; -App::$strings["Empty pathname"] = "Ruta vacía"; -App::$strings["duplicate filename or path"] = "Nombre duplicado de ruta o fichero"; -App::$strings["Path not found."] = "Ruta no encontrada"; -App::$strings["mkdir failed."] = "mkdir ha fallado."; -App::$strings["database storage failed."] = "el almacenamiento en la base de datos ha fallado."; -App::$strings["Empty path"] = "Ruta vacía"; -App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"; +App::$strings["Profile to assign new connections"] = "Perfil para asignar a las nuevas conexiones"; +App::$strings["Frequently"] = "Frecuentemente"; +App::$strings["Hourly"] = "Cada hora"; +App::$strings["Twice daily"] = "Dos veces al día"; +App::$strings["Daily"] = "Diariamente"; +App::$strings["Weekly"] = "Semanalmente"; +App::$strings["Monthly"] = "Mensualmente"; +App::$strings["Currently Male"] = "Actualmente hombre"; +App::$strings["Currently Female"] = "Actualmente mujer"; +App::$strings["Mostly Male"] = "Generalmente hombre"; +App::$strings["Mostly Female"] = "Generalmente mujer"; +App::$strings["Transgender"] = "Transgénero"; +App::$strings["Intersex"] = "Intersexual"; +App::$strings["Transsexual"] = "Transexual"; +App::$strings["Hermaphrodite"] = "Hermafrodita"; +App::$strings["Neuter"] = "Neutral"; +App::$strings["Non-specific"] = "No especificado"; +App::$strings["Undecided"] = "Indeciso/a"; +App::$strings["Males"] = "Hombres"; +App::$strings["Females"] = "Mujeres"; +App::$strings["Gay"] = "Homosexual"; +App::$strings["Lesbian"] = "Lesbiana"; +App::$strings["No Preference"] = "Sin preferencias"; +App::$strings["Bisexual"] = "Bisexual"; +App::$strings["Autosexual"] = "Autosexual"; +App::$strings["Abstinent"] = "Casto/a"; +App::$strings["Virgin"] = "Virgen"; +App::$strings["Deviant"] = "Fuera de lo común"; +App::$strings["Fetish"] = "Fetichista"; +App::$strings["Oodles"] = "Orgías"; +App::$strings["Nonsexual"] = "Asexual"; +App::$strings["Single"] = "Soltero/a"; +App::$strings["Lonely"] = "Solo/a"; +App::$strings["Available"] = "Disponible"; +App::$strings["Unavailable"] = "No disponible"; +App::$strings["Has crush"] = "Enamorado/a"; +App::$strings["Infatuated"] = "Apasionado/a"; +App::$strings["Dating"] = "Saliendo con alguien"; +App::$strings["Unfaithful"] = "Infiel"; +App::$strings["Sex Addict"] = "Con adicción al sexo"; +App::$strings["Friends"] = "Amigos/as"; +App::$strings["Friends/Benefits"] = "Amigos con algo extra"; +App::$strings["Casual"] = "Casual"; +App::$strings["Engaged"] = "Prometido/a"; +App::$strings["Married"] = "Casado/a"; +App::$strings["Imaginarily married"] = "Casado/a en sueños"; +App::$strings["Partners"] = "Pareja"; +App::$strings["Cohabiting"] = "Cohabitando"; +App::$strings["Common law"] = "Matrimonio tradicional"; +App::$strings["Happy"] = "Felíz"; +App::$strings["Not looking"] = "No estoy buscando"; +App::$strings["Swinger"] = "Libertino"; +App::$strings["Betrayed"] = "Engañado/a"; +App::$strings["Separated"] = "Separado/a"; +App::$strings["Unstable"] = "Inestable"; +App::$strings["Divorced"] = "Divorciado/a"; +App::$strings["Imaginarily divorced"] = "Divorciado/a en sueños"; +App::$strings["Widowed"] = "Viudo/a"; +App::$strings["Uncertain"] = "Indeterminado"; +App::$strings["It's complicated"] = "Es complicado"; +App::$strings["Don't care"] = "No me importa"; +App::$strings["Ask me"] = "Pregúnteme"; +App::$strings["New window"] = "Nueva ventana"; +App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte"; +App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos que ya existen sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente."; +App::$strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales"; +App::$strings["edit"] = "editar"; +App::$strings["Edit group"] = "Editar grupo"; +App::$strings["Add privacy group"] = "Añadir un grupo de canales"; +App::$strings["Channels not in any privacy group"] = "Sin canales en ningún grupo"; +App::$strings["add"] = "añadir"; +App::$strings["Trending"] = "Etiquetas populares"; +App::$strings["Tags"] = "Etiquetas"; +App::$strings["Keywords"] = "Palabras clave"; +App::$strings["have"] = "tener"; +App::$strings["has"] = "tiene"; +App::$strings["want"] = "quiero"; +App::$strings["wants"] = "quiere"; +App::$strings["like"] = "me gusta"; +App::$strings["likes"] = "gusta de"; +App::$strings["dislike"] = "no me gusta"; +App::$strings["dislikes"] = "no gusta de"; App::$strings["(Unknown)"] = "(Desconocido)"; App::$strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet."; App::$strings["Visible to you only."] = "Visible sólo para usted."; @@ -3261,169 +1476,20 @@ App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s."; App::$strings["Visible to all connections."] = "Visible para todas las conexiones."; App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas."; App::$strings["Visible to specific connections."] = "Visible para conexiones específicas."; +App::$strings["Privacy group not found."] = "Grupo de canales no encontrado."; App::$strings["Privacy group is empty."] = "El grupo de canales está vacío."; App::$strings["Privacy group: %s"] = "Grupo de canales: %s"; +App::$strings["Connection: %s"] = "Conexión: %s"; App::$strings["Connection not found."] = "Conexión no encontrada"; +App::$strings["female"] = "mujer"; +App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s"; +App::$strings["male"] = "hombre"; +App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s"; +App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s"; App::$strings["profile photo"] = "foto del perfil"; App::$strings["[Edited %s]"] = "[se ha editado %s]"; App::$strings["__ctx:edit_activity__ Post"] = "Publicar"; App::$strings["__ctx:edit_activity__ Comment"] = "Comentar"; -App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos"; -App::$strings["Empty name"] = "Nombre vacío"; -App::$strings["Name too long"] = "Nombre demasiado largo"; -App::$strings["No account identifier"] = "Ningún identificador de la cuenta"; -App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias)."; -App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada"; -App::$strings["Default Profile"] = "Perfil principal"; -App::$strings["Unable to retrieve modified identity"] = "No se puede recuperar la identidad modficada"; -App::$strings["Create New Profile"] = "Crear un nuevo perfil"; -App::$strings["Visible to everybody"] = "Visible para todos"; -App::$strings["Gender:"] = "Género:"; -App::$strings["Homepage:"] = "Página personal:"; -App::$strings["Online Now"] = "Ahora en línea"; -App::$strings["Change your profile photo"] = "Cambiar su foto del perfil"; -App::$strings["Trans"] = "Trans"; -App::$strings["Like this channel"] = "Me gusta este canal"; -App::$strings["j F, Y"] = "j F Y"; -App::$strings["j F"] = "j F"; -App::$strings["Birthday:"] = "Cumpleaños:"; -App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s"; -App::$strings["Tags:"] = "Etiquetas:"; -App::$strings["Sexual Preference:"] = "Orientación sexual:"; -App::$strings["Political Views:"] = "Posición política:"; -App::$strings["Religion:"] = "Religión:"; -App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:"; -App::$strings["Likes:"] = "Me gusta:"; -App::$strings["Dislikes:"] = "No me gusta:"; -App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:"; -App::$strings["My other channels:"] = "Mis otros canales:"; -App::$strings["Musical interests:"] = "Preferencias musicales:"; -App::$strings["Books, literature:"] = "Libros, literatura:"; -App::$strings["Television:"] = "Televisión:"; -App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:"; -App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:"; -App::$strings["Work/employment:"] = "Trabajo:"; -App::$strings["School/education:"] = "Estudios:"; -App::$strings["Like this thing"] = "Me gusta esto"; -App::$strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i"; -App::$strings["Starts:"] = "Comienza:"; -App::$strings["Finishes:"] = "Finaliza:"; -App::$strings["l F d, Y"] = "l F d, Y"; -App::$strings["Start:"] = "Iniciar: "; -App::$strings["End:"] = "Finalizar: "; -App::$strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario."; -App::$strings["Not specified"] = "Sin especificar"; -App::$strings["Needs Action"] = "Necesita de una intervención"; -App::$strings["Completed"] = "Completado/a"; -App::$strings["In Process"] = "En proceso"; -App::$strings["Cancelled"] = "Cancelado/a"; -App::$strings["Home, Voice"] = "Llamadas particulares"; -App::$strings["Home, Fax"] = "Fax particular"; -App::$strings["Work, Voice"] = "Llamadas de trabajo"; -App::$strings["Work, Fax"] = "Fax de trabajo"; -App::$strings["GNU-Social"] = "GNU Social"; -App::$strings["RSS/Atom"] = "RSS/Atom"; -App::$strings["Facebook"] = "Facebook"; -App::$strings["LinkedIn"] = "LinkedIn"; -App::$strings["XMPP/IM"] = "XMPP/IM"; -App::$strings["MySpace"] = "MySpace"; -App::$strings["Select an alternate language"] = "Seleccionar un idioma alternativo"; -App::$strings["Who can see this?"] = "¿Quién puede ver esto?"; -App::$strings["Custom selection"] = "Selección personalizada"; -App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."; -App::$strings["Show"] = "Mostrar"; -App::$strings["Don't show"] = "No mostrar"; -App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."; -App::$strings["Image/photo"] = "Imagen/foto"; -App::$strings["Encrypted content"] = "Contenido cifrado"; -App::$strings["Install %1\$s element %2\$s"] = "Instalar el elemento de%1\$s%2\$s"; -App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."; -App::$strings["card"] = "ficha"; -App::$strings["article"] = "el artículo"; -App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar"; -App::$strings["spoiler"] = "spoiler"; -App::$strings["View article"] = "Ver el artículo"; -App::$strings["View summary"] = "Ver sumario"; -App::$strings["$1 wrote:"] = "$1 escribió:"; -App::$strings["View PDF"] = "Ver PDF"; -App::$strings[" by "] = "por"; -App::$strings[" on "] = "en"; -App::$strings["Embedded content"] = "Contenido incorporado"; -App::$strings["Embedding disabled"] = "Incrustación deshabilitada"; -App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s da la bienvenida a %2\$s"; -App::$strings["Start calendar week on Monday"] = "Comenzar el calendario semanal por el lunes"; -App::$strings["Default is Sunday"] = "Por defecto es domingo"; -App::$strings["Event Timezone Selection"] = "Selección del huso horario del evento"; -App::$strings["Allow event creation in timezones other than your own."] = "Permitir la creación de eventos en husos horarios distintos del suyo."; -App::$strings["Search by Date"] = "Buscar por fecha"; -App::$strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas"; -App::$strings["Tag Cloud"] = "Nube de etiquetas"; -App::$strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal"; -App::$strings["Use blog/list mode"] = "Usar el modo blog/lista"; -App::$strings["Comments will be displayed separately"] = "Los comentarios se mostrarán por separado"; -App::$strings["Connection Filtering"] = "Filtrado de conexiones"; -App::$strings["Filter incoming posts from connections based on keywords/content"] = "Filtrar publicaciones entrantes de conexiones por palabras clave o contenido"; -App::$strings["Conversation"] = "Conversación"; -App::$strings["Community Tagging"] = "Etiquetas de la comunidad"; -App::$strings["Ability to tag existing posts"] = "Capacidad de etiquetar entradas"; -App::$strings["Emoji Reactions"] = "Emoticonos \"emoji\""; -App::$strings["Add emoji reaction ability to posts"] = "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas"; -App::$strings["Dislike Posts"] = "Desagrado de publicaciones"; -App::$strings["Ability to dislike posts/comments"] = "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios"; -App::$strings["Star Posts"] = "Entradas destacadas"; -App::$strings["Ability to mark special posts with a star indicator"] = "Capacidad de marcar entradas destacadas con un indicador de estrella"; -App::$strings["Reply on comment"] = "Responder a los comentarios"; -App::$strings["Ability to reply on selected comment"] = "Posibilidad de responder a los comentarios seleccionados"; -App::$strings["Advanced Directory Search"] = "Búsqueda avanzada en el directorio"; -App::$strings["Allows creation of complex directory search queries"] = "Permitir la creación de consultas complejas en las búsquedas en el directorio"; -App::$strings["Editor"] = "Editor"; -App::$strings["Post Categories"] = "Temas de las entradas"; -App::$strings["Add categories to your posts"] = "Añadir temas a sus publicaciones"; -App::$strings["Large Photos"] = "Fotos de gran tamaño"; -App::$strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Incluir miniaturas de fotos grandes (1024px) en publicaciones. Si no está habilitado, usar miniaturas pequeñas (640px)"; -App::$strings["Even More Encryption"] = "Más cifrado todavía"; -App::$strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permitir cifrado adicional de contenido \"punto-a-punto\" con una clave secreta compartida."; -App::$strings["Enable Voting Tools"] = "Permitir entradas con votación"; -App::$strings["Provide a class of post which others can vote on"] = "Proveer una clase de publicación en la que otros puedan votar"; -App::$strings["Disable Comments"] = "Deshabilitar comentarios"; -App::$strings["Provide the option to disable comments for a post"] = "Proporcionar la opción de desactivar los comentarios para una entrada"; -App::$strings["Delayed Posting"] = "Publicación aplazada"; -App::$strings["Allow posts to be published at a later date"] = "Permitir mensajes que se publicarán en una fecha posterior"; -App::$strings["Content Expiration"] = "Caducidad del contenido"; -App::$strings["Remove posts/comments and/or private messages at a future time"] = "Eliminar publicaciones/comentarios y/o mensajes privados más adelante"; -App::$strings["Suppress Duplicate Posts/Comments"] = "Prevenir entradas o comentarios duplicados"; -App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo."; -App::$strings["Auto-save drafts of posts and comments"] = "Guardar automáticamente borradores de entradas y comentarios"; -App::$strings["Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions"] = "Guarda automáticamente los borradores de comentarios y publicaciones en el almacenamiento del navegador local para ayudar a evitar la pérdida accidental de composiciones."; -App::$strings["Manage"] = "Gestionar"; -App::$strings["Navigation Channel Select"] = "Navegación por el selector de canales"; -App::$strings["Change channels directly from within the navigation dropdown menu"] = "Cambiar de canales directamente desde el menú de navegación desplegable"; -App::$strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización"; -App::$strings["Ability to file posts under folders"] = "Capacidad de archivar entradas en carpetas"; -App::$strings["Alternate Stream Order"] = "Orden de stream alternativo"; -App::$strings["Ability to order the stream by last post date, last comment date or unthreaded activities"] = "Posibilidad de ordenar el stream por última fecha de publicación, última fecha de comentario o actividades sin hilo"; -App::$strings["Contact Filter"] = "Filtro de contactos"; -App::$strings["Ability to display only posts of a selected contact"] = "Posibilidad de mostrar sólo los mensajes de un contacto seleccionado"; -App::$strings["Forum Filter"] = "Filtro de foro"; -App::$strings["Ability to display only posts of a specific forum"] = "Posibilidad de mostrar sólo los mensajes de un foro específico"; -App::$strings["Personal Posts Filter"] = "Filtro de entradas personales"; -App::$strings["Ability to display only posts that you've interacted on"] = "Posibilidad de mostrar sólo los mensajes en los que usted haya interactuado"; -App::$strings["Photo Location"] = "Ubicación de las fotos"; -App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa."; -App::$strings["Advanced Profiles"] = "Perfiles avanzados"; -App::$strings["Additional profile sections and selections"] = "Secciones y selecciones de perfil adicionales"; -App::$strings["Profile Import/Export"] = "Importar/Exportar perfil"; -App::$strings["Save and load profile details across sites/channels"] = "Guardar y cargar detalles del perfil a través de sitios/canales"; -App::$strings["Multiple Profiles"] = "Múltiples perfiles"; -App::$strings["Ability to create multiple profiles"] = "Capacidad de crear múltiples perfiles"; -App::$strings["Trending"] = "Etiquetas populares"; -App::$strings["Keywords"] = "Palabras clave"; -App::$strings["have"] = "tener"; -App::$strings["has"] = "tiene"; -App::$strings["want"] = "quiero"; -App::$strings["wants"] = "quiere"; -App::$strings["likes"] = "gusta de"; -App::$strings["dislikes"] = "no gusta de"; App::$strings["Not a valid email address"] = "Dirección de correo no válida"; App::$strings["Your email domain is not among those allowed on this site"] = "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio."; App::$strings["Your email address is already registered at this site."] = "Su dirección de correo está ya registrada en este sitio."; @@ -3440,82 +1506,2028 @@ App::$strings["Registration revoked for %s"] = "Registro revocado para %s"; App::$strings["Click here to upgrade."] = "Pulse aquí para actualizar"; App::$strings["This action exceeds the limits set by your subscription plan."] = "Esta acción supera los límites establecidos por su plan de suscripción "; App::$strings["This action is not available under your subscription plan."] = "Esta acción no está disponible en su plan de suscripción."; -App::$strings["Birthday"] = "Cumpleaños"; -App::$strings["Age: "] = "Edad:"; -App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD"; -App::$strings["less than a second ago"] = "hace un instante"; -App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s"; -App::$strings["__ctx:relative_date__ year"] = array( - 0 => "año", - 1 => "años", +App::$strings["Profile Photos"] = "Fotos del perfil"; +App::$strings["Item was not found."] = "Elemento no encontrado."; +App::$strings["Unknown error."] = "Error desconocido"; +App::$strings["No source file."] = "Ningún fichero de origen"; +App::$strings["Cannot locate file to replace"] = "No se puede localizar el fichero que va a ser sustituido."; +App::$strings["Cannot locate file to revise/update"] = "No se puede localizar el fichero para revisar/actualizar"; +App::$strings["File exceeds size limit of %d"] = "El fichero supera el limite de tamaño de %d"; +App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos."; +App::$strings["File upload failed. Possible system limit or action terminated."] = "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado."; +App::$strings["Stored file could not be verified. Upload failed."] = "El fichero almacenado no ha podido ser verificado. El envío ha fallado."; +App::$strings["Path not available."] = "Ruta no disponible."; +App::$strings["Empty pathname"] = "Ruta vacía"; +App::$strings["duplicate filename or path"] = "Nombre duplicado de ruta o fichero"; +App::$strings["Path not found."] = "Ruta no encontrada"; +App::$strings["mkdir failed."] = "mkdir ha fallado."; +App::$strings["database storage failed."] = "el almacenamiento en la base de datos ha fallado."; +App::$strings["Empty path"] = "Ruta vacía"; +App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s"; +App::$strings["Edit"] = "Editar"; +App::$strings["Image/photo"] = "Imagen/foto"; +App::$strings["Encrypted content"] = "Contenido cifrado"; +App::$strings["Install %1\$s element %2\$s"] = "Instalar el elemento de%1\$s%2\$s"; +App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."; +App::$strings["webpage"] = "página web"; +App::$strings["layout"] = "plantilla"; +App::$strings["block"] = "bloque"; +App::$strings["menu"] = "menú"; +App::$strings["card"] = "ficha"; +App::$strings["article"] = "el artículo"; +App::$strings["post"] = "la entrada"; +App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió %2\$s siguiente %3\$s"; +App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar"; +App::$strings["spoiler"] = "spoiler"; +App::$strings["View article"] = "Ver el artículo"; +App::$strings["View summary"] = "Ver sumario"; +App::$strings["Different viewers will see this text differently"] = "Visitantes diferentes verán este texto de forma distinta"; +App::$strings["$1 wrote:"] = "$1 escribió:"; +App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos"; +App::$strings["Empty name"] = "Nombre vacío"; +App::$strings["Name too long"] = "Nombre demasiado largo"; +App::$strings["No account identifier"] = "Ningún identificador de la cuenta"; +App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias)."; +App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro."; +App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio."; +App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada"; +App::$strings["Default Profile"] = "Perfil principal"; +App::$strings["Unable to retrieve modified identity"] = "No se puede recuperar la identidad modficada"; +App::$strings["Change profile photo"] = "Cambiar la foto del perfil"; +App::$strings["Create New Profile"] = "Crear un nuevo perfil"; +App::$strings["Profile Image"] = "Imagen del perfil"; +App::$strings["Visible to everybody"] = "Visible para todos"; +App::$strings["Edit visibility"] = "Editar visibilidad"; +App::$strings["Gender:"] = "Género:"; +App::$strings["Homepage:"] = "Página personal:"; +App::$strings["Online Now"] = "Ahora en línea"; +App::$strings["Change your profile photo"] = "Cambiar su foto del perfil"; +App::$strings["Trans"] = "Trans"; +App::$strings["Full Name:"] = "Nombre completo:"; +App::$strings["Like this channel"] = "Me gusta este canal"; +App::$strings["j F, Y"] = "j F Y"; +App::$strings["j F"] = "j F"; +App::$strings["Birthday:"] = "Cumpleaños:"; +App::$strings["Age:"] = "Edad:"; +App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s"; +App::$strings["Tags:"] = "Etiquetas:"; +App::$strings["Sexual Preference:"] = "Orientación sexual:"; +App::$strings["Hometown:"] = "Lugar de nacimiento:"; +App::$strings["Political Views:"] = "Posición política:"; +App::$strings["Religion:"] = "Religión:"; +App::$strings["About:"] = "Sobre mí:"; +App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:"; +App::$strings["Likes:"] = "Me gusta:"; +App::$strings["Dislikes:"] = "No me gusta:"; +App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:"; +App::$strings["My other channels:"] = "Mis otros canales:"; +App::$strings["Musical interests:"] = "Preferencias musicales:"; +App::$strings["Books, literature:"] = "Libros, literatura:"; +App::$strings["Television:"] = "Televisión:"; +App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:"; +App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:"; +App::$strings["Work/employment:"] = "Trabajo:"; +App::$strings["School/education:"] = "Estudios:"; +App::$strings["Profile"] = "Perfil"; +App::$strings["Like this thing"] = "Me gusta esto"; +App::$strings["Export"] = "Exportar"; +App::$strings["cover photo"] = "Imagen de portada del perfil"; +App::$strings["Remote Authentication"] = "Acceso desde su servidor"; +App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)"; +App::$strings["Authenticate"] = "Acceder"; +App::$strings["Account '%s' deleted"] = "La cuenta '%s' ha sido eliminada"; +App::$strings["Visible to your default audience"] = "Visible para su público predeterminado."; +App::$strings["__ctx:acl__ Profile"] = "Perfil"; +App::$strings["Only me"] = "Sólo yo"; +App::$strings["Who can see this?"] = "¿Quién puede ver esto?"; +App::$strings["Custom selection"] = "Selección personalizada"; +App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."; +App::$strings["Show"] = "Mostrar"; +App::$strings["Don't show"] = "No mostrar"; +App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."; +App::$strings["View PDF"] = "Ver PDF"; +App::$strings[" by "] = "por"; +App::$strings[" on "] = "en"; +App::$strings["Embedded content"] = "Contenido incorporado"; +App::$strings["Embedding disabled"] = "Incrustación deshabilitada"; +App::$strings["Directory Options"] = "Opciones del directorio"; +App::$strings["Safe Mode"] = "Modo seguro"; +App::$strings["Public Forums Only"] = "Solo foros públicos"; +App::$strings["This Website Only"] = "Solo este sitio web"; +App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s da la bienvenida a %2\$s"; +App::$strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. "; +App::$strings["No recipient provided."] = "No se ha especificado ningún destinatario."; +App::$strings["[no subject]"] = "[sin asunto]"; +App::$strings["Stored post could not be verified."] = "No se han podido verificar las publicaciones guardadas."; +App::$strings["Commented Date"] = "Fecha de los comentarios"; +App::$strings["Order by last commented date"] = "Ordenar por la última fecha de los comentarios"; +App::$strings["Posted Date"] = "Fecha de publicación"; +App::$strings["Order by last posted date"] = "Ordenar por la ultima fecha de publicación"; +App::$strings["Date Unthreaded"] = "Sin enhebrar por fecha"; +App::$strings["Order unthreaded by date"] = "Ordenar sin enhebrar por fecha"; +App::$strings["Stream Order"] = "Orden del stream"; +App::$strings["Archives"] = "Hemeroteca"; +App::$strings["Add new page"] = "Añadir una nueva página"; +App::$strings["Options"] = "Opciones"; +App::$strings["Wiki Pages"] = "Páginas del wiki"; +App::$strings["Page name"] = "Nombre de la página"; +App::$strings["View Photo"] = "Ver foto"; +App::$strings["Edit Album"] = "Editar álbum"; +App::$strings["Upload"] = "Subir"; +App::$strings["Tasks"] = "Tareas"; +App::$strings["Public Hubs"] = "Servidores públicos"; +App::$strings["Received Messages"] = "Mensajes recibidos"; +App::$strings["Sent Messages"] = "Enviar mensajes"; +App::$strings["Conversations"] = "Conversaciones"; +App::$strings["No messages."] = "Sin mensajes."; +App::$strings["Delete conversation"] = "Eliminar conversación"; +App::$strings["Chat Members"] = "Miembros del chat"; +App::$strings["__ctx:widget__ Activity"] = "Actividad"; +App::$strings["Select Channel"] = "Seleccionar un canal"; +App::$strings["Read-write"] = "Lectura y escritura"; +App::$strings["Read-only"] = "Sólo lectura"; +App::$strings["Channel Calendar"] = "Calendario del canal"; +App::$strings["CalDAV Calendars"] = "Calendarios CalDAV"; +App::$strings["Shared CalDAV Calendars"] = "Calendarios CalDAV compartidos"; +App::$strings["Share this calendar"] = "Compartir este calendario"; +App::$strings["Calendar name and color"] = "Nombre y color del calendario"; +App::$strings["Create new CalDAV calendar"] = "Crear un nuevo calendario CalDAV"; +App::$strings["Create"] = "Crear"; +App::$strings["Calendar Name"] = "Nombre del calendario"; +App::$strings["Calendar Tools"] = "Gestión de calendarios"; +App::$strings["Channel Calendars"] = "Calendarios del canal"; +App::$strings["Import calendar"] = "Importar un calendario"; +App::$strings["Select a calendar to import to"] = "Seleccionar un calendario para importarlo"; +App::$strings["Addressbooks"] = "Agenda de direcciones"; +App::$strings["Addressbook name"] = "Nombre de la agenda"; +App::$strings["Create new addressbook"] = "Crear una nueva agenda de direcciones"; +App::$strings["Addressbook Name"] = "Nombre de la agenda"; +App::$strings["Addressbook Tools"] = "Gestión de agendas de direcciones"; +App::$strings["Import addressbook"] = "Importar una agenda de direcciones"; +App::$strings["Select an addressbook to import to"] = "Seleccionar una agenda para importarla"; +App::$strings["Remove term"] = "Eliminar término"; +App::$strings["Suggested Chatrooms"] = "Salas de chat sugeridas"; +App::$strings["Account settings"] = "Configuración de la cuenta"; +App::$strings["Channel settings"] = "Configuración del canal"; +App::$strings["Display settings"] = "Ajustes de visualización"; +App::$strings["Manage locations"] = "Gestión de ubicaciones (clones) del canal"; +App::$strings["Overview"] = "Resumen"; +App::$strings["Ignore/Hide"] = "Ignorar/Ocultar"; +App::$strings["Suggestions"] = "Sugerencias"; +App::$strings["See more..."] = "Ver más..."; +App::$strings["Forums"] = "Foros"; +App::$strings["Bookmarked Chatrooms"] = "Salas de chat preferidas"; +App::$strings["__ctx:wiki_history__ Message"] = "Mensaje"; +App::$strings["Date"] = "Fecha"; +App::$strings["Revert"] = "Revertir"; +App::$strings["Compare"] = "Comparar"; +App::$strings["HQ Control Panel"] = "Panel de control de HQ"; +App::$strings["Create a new post"] = "Crear una nueva entrada"; +App::$strings["Private Mail Menu"] = "Menú de correo privado"; +App::$strings["Combined View"] = "Vista combinada"; +App::$strings["Inbox"] = "Bandeja de entrada"; +App::$strings["Outbox"] = "Bandeja de salida"; +App::$strings["New Message"] = "Nuevo mensaje"; +App::$strings["photo/image"] = "foto/imagen"; +App::$strings["Site"] = "Sitio"; +App::$strings["Accounts"] = "Cuentas"; +App::$strings["Member registrations waiting for confirmation"] = "Inscripciones de nuevos miembros pendientes de aprobación"; +App::$strings["Channels"] = "Canales"; +App::$strings["Security"] = "Seguridad"; +App::$strings["Features"] = "Funcionalidades"; +App::$strings["Addons"] = "Addons"; +App::$strings["Themes"] = "Temas"; +App::$strings["Inspect queue"] = "Examinar la cola"; +App::$strings["Profile Fields"] = "Campos del perfil"; +App::$strings["DB updates"] = "Actualizaciones de la base de datos"; +App::$strings["Logs"] = "Informes"; +App::$strings["Addon Features"] = "Características del addon"; +App::$strings["Show posts related to the %s privacy group"] = "Mostrar entradas relacionadas con el grupo %s"; +App::$strings["Show my privacy groups"] = "Mostrar mis grupos de canales"; +App::$strings["Show posts to this forum"] = "Mostrar las entradas en este foro"; +App::$strings["Show forums"] = "Mostrar los foros"; +App::$strings["Starred Posts"] = "Entradas preferidas"; +App::$strings["Show posts that I have starred"] = "Mostrar entradas que he señalado como preferidas"; +App::$strings["Personal Posts"] = "Entradas personales"; +App::$strings["Show posts that mention or involve me"] = "Mostrar entradas que me mencionen o involucren"; +App::$strings["Show posts that I have filed to %s"] = "Mostrar las entradas que he enviado a %s"; +App::$strings["Show filed post categories"] = "Mostrar los temas de las entradas archivadas"; +App::$strings["Panel search"] = "Panel de búsqueda"; +App::$strings["Filter by name"] = "Filtrar por nombre"; +App::$strings["Remove active filter"] = "Eliminar el filtro activo"; +App::$strings["Stream Filters"] = "Filtros del stream"; +App::$strings["App Collections"] = "Colección de aplicaciones"; +App::$strings["Installed apps"] = "Aplicaciones instaladas"; +App::$strings["Available Apps"] = "Aplicaciones disponibles"; +App::$strings["Events Tools"] = "Gestión de eventos"; +App::$strings["Export Calendar"] = "Exportar el calendario"; +App::$strings["Import Calendar"] = "Importar un calendario"; +App::$strings["Rating Tools"] = "Valoraciones"; +App::$strings["Rate Me"] = "Valorar este canal"; +App::$strings["View Ratings"] = "Mostrar las valoraciones"; +App::$strings["Click to show more"] = "Hacer clic para ver más"; +App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas."; +App::$strings["Add New Connection"] = "Añadir nueva conexión"; +App::$strings["Enter channel address"] = "Dirección del canal"; +App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen"; +App::$strings["Profile Creation"] = "Creación de perfiles"; +App::$strings["Upload profile photo"] = "Cargar la foto del perfil"; +App::$strings["Upload cover photo"] = "Cargar la foto de portada del perfil"; +App::$strings["Find and Connect with others"] = "Encontrar y conectarse con otros"; +App::$strings["View the directory"] = "Ver el directorio"; +App::$strings["View friend suggestions"] = "Ver sugerencias de amistad"; +App::$strings["Manage your connections"] = "Gestionar sus conexiones"; +App::$strings["Communicate"] = "Comunicarse"; +App::$strings["View your channel homepage"] = "Ver la página principal de su canal"; +App::$strings["View your network stream"] = "Ver el \"stream\" de su red"; +App::$strings["Documentation"] = "Documentación"; +App::$strings["Missing Features?"] = "¿Faltan Características?"; +App::$strings["Pin apps to navigation bar"] = "Fijar apps a la barra de navegación"; +App::$strings["Install more apps"] = "Instalar más apps"; +App::$strings["View public stream"] = "Ver el \"stream\" público"; +App::$strings["New Member Links"] = "Enlaces para nuevos miembros"; +App::$strings["Me"] = "Yo"; +App::$strings["Family"] = "Familia"; +App::$strings["Acquaintances"] = "Conocidos/as"; +App::$strings["All"] = "Todos/as"; +App::$strings["Refresh"] = "Recargar"; +App::$strings["New Network Activity"] = "Nueva actividad en la red"; +App::$strings["New Network Activity Notifications"] = "Avisos de nueva actividad en la red"; +App::$strings["View your network activity"] = "Ver la actividad de su red"; +App::$strings["Mark all notifications read"] = "Marcar todas las notificaciones como leídas"; +App::$strings["Show new posts only"] = "Mostrar solo las entradas nuevas"; +App::$strings["Filter by name or address"] = "Filtrar por nombre o dirección"; +App::$strings["New Home Activity"] = "Nueva actividad en su página principal"; +App::$strings["New Home Activity Notifications"] = "Avisos de nueva actividad en su página principal"; +App::$strings["View your home activity"] = "Ver la actividad de su página principal"; +App::$strings["Mark all notifications seen"] = "Marcar todas las notificaciones como vistas"; +App::$strings["New Mails"] = "Nuevos mensajes de correo"; +App::$strings["New Mails Notifications"] = "Avisos de nuevos mensajes de correo"; +App::$strings["View your private mails"] = "Ver sus correos privados"; +App::$strings["Mark all messages seen"] = "Marcar todos los mensajes como vistos"; +App::$strings["New Events"] = "Eventos nuevos"; +App::$strings["New Events Notifications"] = "Avisos de nuevos eventos"; +App::$strings["View events"] = "Ver los eventos"; +App::$strings["Mark all events seen"] = "Marcar todos los eventos como leidos"; +App::$strings["New Connections"] = "Nuevas conexiones"; +App::$strings["New Connections Notifications"] = "Avisos de nuevas conexiones"; +App::$strings["View all connections"] = "Ver todas las conexiones"; +App::$strings["New Files"] = "Ficheros nuevos"; +App::$strings["New Files Notifications"] = "Avisos de nuevos ficheros"; +App::$strings["Notices"] = "Avisos"; +App::$strings["View all notices"] = "Ver todos los avisos"; +App::$strings["Mark all notices seen"] = "Marcar como leídos todos los avisos"; +App::$strings["New Registrations"] = "Registros nuevos"; +App::$strings["New Registrations Notifications"] = "Notificaciones de nuevos registros"; +App::$strings["Public Stream"] = "\"Stream\" público"; +App::$strings["Public Stream Notifications"] = "Avisos del \"stream\" público"; +App::$strings["View the public stream"] = "Ver el \"stream\" público"; +App::$strings["Sorry, you have got no notifications at the moment"] = "Lo sentimos, por el momento no ha recibido ninguna notificación"; +App::$strings["This channel is limited to %d tokens"] = "Este canal tiene un límite de %d tokens"; +App::$strings["Name and Password are required."] = "Se requiere el nombre y la contraseña."; +App::$strings["Token saved."] = "Token salvado."; +App::$strings["Guest Access App"] = "App Acceso para invitados"; +App::$strings["Create access tokens so that non-members can access private content"] = "Crear tokens de acceso para que los no miembros puedan acceder a contenido privado"; +App::$strings["Use this form to create temporary access identifiers to share things with non-members. These identities may be used in Access Control Lists and visitors may login using these credentials to access private content."] = "Utilice este formulario para crear identificadores de acceso temporal para compartir cosas con los no miembros de Hubzilla. Estas identidades se pueden usar en las Listas de control de acceso (ACL) y así los visitantes pueden iniciar sesión, utilizando estas credenciales, para acceder a su contenido privado."; +App::$strings["You may also provide <em>dropbox</em> style access links to friends and associates by adding the Login Password to any specific site URL as shown. Examples:"] = "También puede proporcionar, con el estilo <em>dropbox</em>, enlaces de acceso a sus amigos y asociados añadiendo la contraseña de inicio de sesión a cualquier dirección URL, como se muestra. Ejemplos: "; +App::$strings["Guest Access Tokens"] = "Tokens de acceso para invitados"; +App::$strings["Login Name"] = "Nombre de inicio de sesión"; +App::$strings["Login Password"] = "Contraseña de inicio de sesión"; +App::$strings["Expires (yyyy-mm-dd)"] = "Expira (aaaa-mm-dd)"; +App::$strings["Their Settings"] = "Sus ajustes"; +App::$strings["My Settings"] = "Mis ajustes"; +App::$strings["inherited"] = "heredado"; +App::$strings["Individual Permissions"] = "Permisos individuales"; +App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí."; +App::$strings["Item not found"] = "Elemento no encontrado"; +App::$strings["Channel not found."] = "Canal no encontrado."; +App::$strings["Edit Article"] = "Editar el artículo"; +App::$strings["No such group"] = "No se encuentra el grupo"; +App::$strings["No such channel"] = "No se encuentra el canal"; +App::$strings["Search Results For:"] = "Buscar resultados para:"; +App::$strings["Reset form"] = "Reiniciar el formulario"; +App::$strings["Privacy group is empty"] = "El grupo de canales está vacío"; +App::$strings["Privacy group: "] = "Grupo de canales: "; +App::$strings["Nothing to import."] = "No hay nada para importar."; +App::$strings["Unable to download data from old server"] = "No se han podido descargar datos de su antiguo servidor"; +App::$strings["Imported file is empty."] = "El fichero importado está vacío."; +App::$strings["Warning: Database versions differ by %1\$d updates."] = "Atención: Las versiones de la base de datos difieren en %1\$d actualizaciones."; +App::$strings["Import completed"] = "Importación completada"; +App::$strings["Import Items"] = "Importar elementos"; +App::$strings["Use this form to import existing posts and content from an export file."] = "Utilice este formulario para importar entradas y contenido desde un archivo de exportación."; +App::$strings["File to Upload"] = "Fichero para subir"; +App::$strings["Your service plan only allows %d channels."] = "Su paquete de servicios solo permite %d canales."; +App::$strings["No channel. Import failed."] = "No hay canal. La importación ha fallado"; +App::$strings["You must be logged in to use this feature."] = "Debe estar registrado para poder usar esta funcionalidad."; +App::$strings["Import Channel"] = "Importar canal"; +App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación."; +App::$strings["Or provide the old server/hub details"] = "O proporcione los detalles de su antiguo servidor/hub"; +App::$strings["Your old identity address (xyz@example.com)"] = "Su identidad en el antiguo servidor (canal@ejemplo.com)"; +App::$strings["Your old login email address"] = "Su antigua dirección de correo electrónico"; +App::$strings["Your old login password"] = "Su antigua contraseña"; +App::$strings["Import a few months of posts if possible (limited by available memory"] = "Importar unos meses de mensajes si es posible (limitado por la memoria disponible"; +App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos."; +App::$strings["Make this hub my primary location"] = "Convertir este servidor en mi ubicación primaria"; +App::$strings["Move this channel (disable all previous locations)"] = "Mover este canal (desactivar todas las ubicaciones anteriores)"; +App::$strings["Use this channel nickname instead of the one provided"] = "Usa este alias de canal en lugar del que se proporciona"; +App::$strings["Leave blank to keep your existing channel nickname. You will be randomly assigned a similar nickname if either name is already allocated on this site."] = "Dejar en blanco para mantener su alias de canal . Se le asignará aleatoriamente uno similar si cualquiera de los dos nombres ya está asignado en este sitio."; +App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine."; +App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana."; +App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado."; +App::$strings["Passwords do not match."] = "Las contraseñas no coinciden."; +App::$strings["Registration successful. Continue to create your first channel..."] = "Registro exitoso. Continúe creando tu primer canal..."; +App::$strings["Registration successful. Please check your email for validation instructions."] = "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo."; +App::$strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio."; +App::$strings["Your registration can not be processed."] = "Su registro no puede ser procesado."; +App::$strings["Registration on this hub is disabled."] = "El registro está deshabilitado en este sitio."; +App::$strings["Registration on this hub is by approval only."] = "El registro en este hub está sometido a aprobación previa."; +App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>"; +App::$strings["Registration on this hub is by invitation only."] = "La inscripción en este hub es sólo posible por invitación."; +App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana."; +App::$strings["Terms of Service"] = "Términos del servicio"; +App::$strings["I accept the %s for this website"] = "Acepto los %s de este sitio"; +App::$strings["I am over %s years of age and accept the %s for this website"] = "Tengo más de %s años de edad y acepto los %s de este sitio web"; +App::$strings["Your email address"] = "Su dirección de correo electrónico"; +App::$strings["Choose a password"] = "Elija una contraseña"; +App::$strings["Please re-enter your password"] = "Por favor, vuelva a escribir su contraseña"; +App::$strings["Please enter your invitation code"] = "Por favor, introduzca el código de su invitación"; +App::$strings["Your Name"] = "Su nombre"; +App::$strings["Real names are preferred."] = "Se prefieren los nombres reales"; +App::$strings["Choose a short nickname"] = "Elija un alias corto"; +App::$strings["Your nickname will be used to create an easy to remember channel address e.g. nickname%s"] = "Su alias se usará para crear una dirección de canal fácil de recordar, p. ej.: alias%s"; +App::$strings["Channel role and privacy"] = "Clase de canal y privacidad"; +App::$strings["Select a channel permission role for your usage needs and privacy requirements."] = "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad."; +App::$strings["Read more about channel permission roles"] = "Leer más sobre los roles y permisos"; +App::$strings["no"] = "no"; +App::$strings["yes"] = "sí"; +App::$strings["Registration"] = "Registro"; +App::$strings["This site requires email verification. After completing this form, please check your email for further instructions."] = "Este sitio requiere verificación por correo electrónico. Después de completar este formulario, por favor revise su correo electrónico para más instrucciones."; +App::$strings["Public access denied."] = "Acceso público denegado."; +App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s"; +App::$strings["Search results for: %s"] = "Resultados de la búsqueda para: %s"; +App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Instalación"; +App::$strings["Could not connect to database."] = "No se ha podido conectar a la base de datos."; +App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS."; +App::$strings["Could not create table."] = "No se puede crear la tabla."; +App::$strings["Your site database has been installed."] = "La base de datos del sitio ha sido instalada."; +App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos."; +App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Por favor, lea el fichero \"install/INSTALL.txt\"."; +App::$strings["System check"] = "Verificación del sistema"; +App::$strings["Next"] = "Siguiente"; +App::$strings["Check again"] = "Verificar de nuevo"; +App::$strings["Database connection"] = "Conexión a la base de datos"; +App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Para instalar \$Projectname es necesario saber cómo conectar con su base de datos."; +App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes."; +App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir."; +App::$strings["Database Server Name"] = "Nombre del servidor de base de datos"; +App::$strings["Default is 127.0.0.1"] = "De forma predeterminada es 127.0.0.1"; +App::$strings["Database Port"] = "Puerto de la base de datos"; +App::$strings["Communication port number - use 0 for default"] = "Número del puerto de comunicaciones - use 0 como valor por defecto"; +App::$strings["Database Login Name"] = "Usuario de la base de datos"; +App::$strings["Database Login Password"] = "Contraseña de acceso a la base de datos"; +App::$strings["Database Name"] = "Nombre de la base de datos"; +App::$strings["Database Type"] = "Tipo de base de datos"; +App::$strings["Site administrator email address"] = "Dirección de correo electrónico del administrador del sitio"; +App::$strings["Your account email address must match this in order to use the web admin panel."] = "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web."; +App::$strings["Website URL"] = "Dirección del sitio web"; +App::$strings["Please use SSL (https) URL if available."] = "Por favor, use SSL (https) si está disponible."; +App::$strings["Please select a default timezone for your website"] = "Por favor, selecciones el huso horario por defecto de su sitio web"; +App::$strings["Site settings"] = "Ajustes del sitio"; +App::$strings["PHP version 7.1 or greater is required."] = "Se requiere la versión 7.1 o superior de PHP."; +App::$strings["PHP version"] = "Versión de PHP"; +App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web."; +App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron."; +App::$strings["PHP executable path"] = "Ruta del ejecutable PHP"; +App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación."; +App::$strings["Command line PHP"] = "PHP en línea de comandos"; +App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado."; +App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"."; +App::$strings["This is required for message delivery to work."] = "Esto es necesario para que funcione la transmisión de mensajes."; +App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv"; +App::$strings["This is not sufficient to upload larger images or files. You should be able to upload at least 4 MB at once."] = "Esto no es suficiente para subir imágenes o archivos más grandes. Usted debe ser capaz de subir al menos 4 MB a la vez."; +App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez."; +App::$strings["You can adjust these settings in the server php.ini file."] = "Puede ajustar estos valores en el fichero php.ini de su servidor."; +App::$strings["PHP upload limits"] = "Límites PHP de subida"; +App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado."; +App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"."; +App::$strings["Generate encryption keys"] = "Generar claves de cifrado"; +App::$strings["libCurl PHP module"] = "módulo libCurl PHP"; +App::$strings["GD graphics PHP module"] = "módulo PHP GD graphics"; +App::$strings["OpenSSL PHP module"] = "módulo PHP OpenSSL"; +App::$strings["PDO database PHP module"] = "Módulo PHP de la base de datos PDO "; +App::$strings["mb_string PHP module"] = "módulo PHP mb_string"; +App::$strings["xml PHP module"] = "módulo PHP xml"; +App::$strings["zip PHP module"] = "Módulo zip PHP"; +App::$strings["Apache mod_rewrite module"] = "módulo Apache mod_rewrite "; +App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado."; +App::$strings["exec"] = "ejecutable"; +App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini"; +App::$strings["shell_exec"] = "shell_exec"; +App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini"; +App::$strings["Error: libCURL PHP module required but not installed."] = "Error: se necesita el módulo PHP libCURL pero no está instalado."; +App::$strings["Error: GD PHP module with JPEG support or ImageMagick graphics library required but not installed."] = "Error: Se requiere el módulo GD PHP con soporte para JPEG o la biblioteca de gráficos ImageMagick, pero no está instalado."; +App::$strings["Error: openssl PHP module required but not installed."] = "Error: el módulo PHP openssl es necesario, pero no está instalado."; +App::$strings["Error: PDO database PHP module missing a driver for either mysql or pgsql."] = "Error: El módulo PHP de la base de datos PDO carece de un controlador para mysql o pgsql."; +App::$strings["Error: PDO database PHP module required but not installed."] = "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado."; +App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el módulo PHP mb_string es necesario, pero no está instalado."; +App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el módulo PHP xml es necesario para DAV, pero no está instalado."; +App::$strings["Error: zip PHP module required but not installed."] = "Error: se requiere el módulo zip PHP pero no está instalado."; +App::$strings[".htconfig.php is writable"] = ".htconfig.php tiene permisos de escritura"; +App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor."; +App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos."; +App::$strings["Please see install/INSTALL.txt for additional information."] = "Por favor, consulte install/INSTALL.txt para más información."; +App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización."; +App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal."; +App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)."; +App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene."; +App::$strings["%s is writable"] = "%s tiene permisos de escritura"; +App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior"; +App::$strings["store is writable"] = "\"store\" tiene permisos de escritura"; +App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio."; +App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo."; +App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor."; +App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web."; +App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos."; +App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos."; +App::$strings["If you are confident that the certificate is valid and signed by a trusted authority, check to see if you have failed to install an intermediate cert. These are not normally required by browsers, but are required for server-to-server communications."] = "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor."; +App::$strings["SSL certificate validation"] = "validación del certificado SSL"; +App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:"; +App::$strings["Url rewrite is working"] = "La reescritura de las direcciones funciona correctamente"; +App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor."; +App::$strings["<h1>What next?</h1>"] = "<h1>¿Qué sigue?</h1>"; +App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"."; +App::$strings["No connections."] = "Sin conexiones."; +App::$strings["Visit %s's profile [%s]"] = "Visitar el perfil de %s [%s]"; +App::$strings["View Connections"] = "Ver conexiones"; +App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público en la red \$Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales."; +App::$strings["Hub URL"] = "Dirección del hub"; +App::$strings["Access Type"] = "Tipo de acceso"; +App::$strings["Registration Policy"] = "Normas de registro"; +App::$strings["Stats"] = "Estadísticas"; +App::$strings["Software"] = "Software"; +App::$strings["Rate"] = "Valorar"; +App::$strings["View"] = "Ver"; +App::$strings["Posts and comments"] = "Publicaciones y comentarios"; +App::$strings["Only posts"] = "Solo publicaciones"; +App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página del perfil."; +App::$strings["You must enable javascript for your browser to be able to view this content."] = "Debe habilitar javascript para poder ver este contenido en su navegador."; +App::$strings["Invalid profile identifier."] = "Identificador del perfil no válido"; +App::$strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil"; +App::$strings["Click on a contact to add or remove."] = "Pulsar en un contacto para añadirlo o eliminarlo."; +App::$strings["Visible To"] = "Visible para"; +App::$strings["All Connections"] = "Todas las conexiones"; +App::$strings["Privacy group created."] = "El grupo de canales ha sido creado."; +App::$strings["Could not create privacy group."] = "No se puede crear el grupo de canales"; +App::$strings["Privacy group updated."] = "Grupo de canales actualizado."; +App::$strings["Privacy Groups App"] = "App Grupos de canales"; +App::$strings["Management of privacy groups"] = "Gestión de grupos de canales"; +App::$strings["Add Group"] = "Agregar un grupo"; +App::$strings["Privacy group name"] = "Nombre del grupo"; +App::$strings["Members are visible to other channels"] = "Los miembros son visibles para otros canales"; +App::$strings["Members"] = "Miembros"; +App::$strings["Privacy group removed."] = "Grupo de canales eliminado."; +App::$strings["Unable to remove privacy group."] = "No se puede eliminar el grupo de canales."; +App::$strings["Privacy Group: %s"] = "Grupo privado %s"; +App::$strings["Privacy group name: "] = "Nombre del grupo de canales:"; +App::$strings["Delete Group"] = "Eliminar grupo"; +App::$strings["Group members"] = "Miembros del grupo"; +App::$strings["Not in this group"] = "No en este grupo"; +App::$strings["Click a channel to toggle membership"] = "Haga clic en un canal para cambiar los miembros"; +App::$strings["Edit Card"] = "Editar la ficha"; +App::$strings["This page is available only to site members"] = "Esta página está disponible sólo para los miembros del sitio"; +App::$strings["Welcome"] = "Bienvenido/a"; +App::$strings["What would you like to do?"] = "¿Qué le gustaría hacer?"; +App::$strings["Please bookmark this page if you would like to return to it in the future"] = "Por favor añada esta página a sus marcadores si desea volver a ella en el futuro."; +App::$strings["Upload a profile photo"] = "Subir una foto de perfil"; +App::$strings["Upload a cover photo"] = "Subir una foto de portada del perfil"; +App::$strings["Edit your default profile"] = "Editar su perfil por defecto"; +App::$strings["View the channel directory"] = "Ver el directorio de canales"; +App::$strings["View/edit your channel settings"] = "Ver o modificar los ajustes de su canal"; +App::$strings["View the site or project documentation"] = "Ver el sitio o la documentación del proyecto"; +App::$strings["Visit your channel homepage"] = "Visitar la página principal de su canal"; +App::$strings["View your connections and/or add somebody whose address you already know"] = "Vea sus conexiones y/o agregue a alguien cuya dirección ya conozca"; +App::$strings["View your personal stream (this may be empty until you add some connections)"] = "Ver su \"stream\" personal (puede que esté vacío hasta que agregue algunas conexiones)"; +App::$strings["View the public stream. Warning: this content is not moderated"] = "Ver el \"stream\" público. Advertencia: este contenido no está moderado"; +App::$strings["Name is required"] = "El nombre es obligatorio"; +App::$strings["Key and Secret are required"] = "\"Key\" y \"Secret\" son obligatorios"; +App::$strings["Update"] = "Actualizar"; +App::$strings["OAuth Apps Manager App"] = "App Gestión de apps OAuth"; +App::$strings["OAuth authentication tokens for mobile and remote apps"] = "Tokens de autenticación de OAuth para aplicaciones móviles y remotas"; +App::$strings["Add application"] = "Añadir aplicación"; +App::$strings["Name of application"] = "Nombre de la aplicación"; +App::$strings["Automatically generated - change if desired. Max length 20"] = "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20"; +App::$strings["Redirect"] = "Redirigir"; +App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera"; +App::$strings["Icon url"] = "Dirección del icono"; +App::$strings["Optional"] = "Opcional"; +App::$strings["Application not found."] = "Aplicación no encontrada."; +App::$strings["Connected OAuth Apps"] = "Apps OAuth conectadas"; +App::$strings["Client key starts with"] = "La \"client key\" empieza por"; +App::$strings["No name"] = "Sin nombre"; +App::$strings["Remove authorization"] = "Eliminar autorización"; +App::$strings["Page link"] = "Enlace de la página"; +App::$strings["Edit Webpage"] = "Editar la página web"; +App::$strings["This site is not a directory server"] = "Este sitio no es un servidor de directorio"; +App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso"; +App::$strings["Welcome to Hubzilla!"] = "¡Bienvenido a Hubzilla!"; +App::$strings["You have got no unseen posts..."] = "No tiene ningún mensaje sin leer..."; +App::$strings["Chatrooms App"] = "App Salas de chat"; +App::$strings["Access Controlled Chatrooms"] = "Salas de chat moderadas"; +App::$strings["Room not found"] = "Sala no encontrada"; +App::$strings["Leave Room"] = "Abandonar la sala"; +App::$strings["Delete Room"] = "Eliminar esta sala"; +App::$strings["I am away right now"] = "Estoy ausente momentáneamente"; +App::$strings["I am online"] = "Estoy conectado/a"; +App::$strings["Bookmark this room"] = "Añadir esta sala a Marcadores"; +App::$strings["New Chatroom"] = "Nueva sala de chat"; +App::$strings["Chatroom name"] = "Nombre de la sala de chat"; +App::$strings["Expiration of chats (minutes)"] = "Caducidad de los mensajes en los chats (en minutos)"; +App::$strings["%1\$s's Chatrooms"] = "Salas de chat de %1\$s"; +App::$strings["No chatrooms available"] = "No hay salas de chat disponibles"; +App::$strings["Create New"] = "Crear"; +App::$strings["Expiration"] = "Caducidad"; +App::$strings["min"] = "min"; +App::$strings["Event can not end before it has started."] = "Un evento no puede terminar antes de que haya comenzado."; +App::$strings["Unable to generate preview."] = "No se puede crear la vista previa."; +App::$strings["Event title and start time are required."] = "Se requieren el título del evento y su hora de inicio."; +App::$strings["Event not found."] = "Evento no encontrado."; +App::$strings["Edit event"] = "Editar evento"; +App::$strings["Delete event"] = "Borrar evento"; +App::$strings["Link to source"] = "Enlace a la fuente"; +App::$strings["calendar"] = "calendario"; +App::$strings["Failed to remove event"] = "Error al eliminar el evento"; +App::$strings["Like/Dislike"] = "Me gusta/No me gusta"; +App::$strings["This action is restricted to members."] = "Esta acción está restringida solo para miembros."; +App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Por favor, <a href=\"rmagic\">identifíquese con su \$Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo \$Projectname member</a> para continuar."; +App::$strings["Invalid request."] = "Solicitud incorrecta."; +App::$strings["thing"] = "elemento"; +App::$strings["Channel unavailable."] = "Canal no disponible."; +App::$strings["Previous action reversed."] = "Acción anterior revocada."; +App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s está de acuerdo"; +App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no está de acuerdo"; +App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s se abstiene"; +App::$strings["Action completed."] = "Acción completada."; +App::$strings["Thank you."] = "Gracias."; +App::$strings["Poke App"] = "App Toques"; +App::$strings["Poke somebody in your addressbook"] = "Dar un toque a alguien en su libreta de direcciones"; +App::$strings["Poke somebody"] = "Dar un toque a alguien"; +App::$strings["Poke/Prod"] = "Toque/Incitación"; +App::$strings["Poke, prod or do other things to somebody"] = "Dar un toque, incitar o hacer otras cosas a alguien"; +App::$strings["Recipient"] = "Destinatario"; +App::$strings["Choose what you wish to do to recipient"] = "Elegir qué desea enviar al destinatario"; +App::$strings["Make this post private"] = "Convertir en privado este envío"; +App::$strings["Calendar entries imported."] = "Entradas de calendario importadas."; +App::$strings["No calendar entries found."] = "No se han encontrado entradas de calendario."; +App::$strings["INVALID EVENT DISMISSED!"] = "¡EVENTO NO VÁLIDO RECHAZADO!"; +App::$strings["Summary: "] = "Resumen: "; +App::$strings["Date: "] = "Fecha: "; +App::$strings["Reason: "] = "Razón: "; +App::$strings["INVALID CARD DISMISSED!"] = "¡TARJETA NO VÁLIDA RECHAZADA!"; +App::$strings["Name: "] = "Nombre: "; +App::$strings["CardDAV App"] = "App CarDav"; +App::$strings["CalDAV capable addressbook"] = "Libreta de direcciones compatible con CalDav"; +App::$strings["Event title"] = "Título del evento"; +App::$strings["Start date and time"] = "Fecha y hora de comienzo"; +App::$strings["End date and time"] = "Fecha y hora de finalización"; +App::$strings["Timezone:"] = "Zona horaria: "; +App::$strings["Previous"] = "Anterior"; +App::$strings["Today"] = "Hoy"; +App::$strings["Month"] = "Mes"; +App::$strings["Week"] = "Semana"; +App::$strings["Day"] = "Día"; +App::$strings["List month"] = "Lista mensual"; +App::$strings["List week"] = "Lista semanal"; +App::$strings["List day"] = "Lista diaria"; +App::$strings["More"] = "Más"; +App::$strings["Less"] = "Menos"; +App::$strings["Select calendar"] = "Seleccionar un calendario"; +App::$strings["Delete all"] = "Eliminar todos"; +App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado."; +App::$strings["Organisation"] = "Organización"; +App::$strings["Phone"] = "Teléfono"; +App::$strings["Instant messenger"] = "Mensajería instantánea"; +App::$strings["Website"] = "Sitio web"; +App::$strings["Address"] = "Dirección"; +App::$strings["Note"] = "Nota"; +App::$strings["Add Field"] = "Añadir un campo"; +App::$strings["P.O. Box"] = "Buzón de correos"; +App::$strings["Additional"] = "Adicional"; +App::$strings["Street"] = "Calle"; +App::$strings["Locality"] = "Localidad"; +App::$strings["Region"] = "Provincia, región o estado"; +App::$strings["ZIP Code"] = "Código postal"; +App::$strings["Country"] = "País"; +App::$strings["Default Calendar"] = "Calendario por defecto"; +App::$strings["Default Addressbook"] = "Agenda de direcciones por defecto"; +App::$strings["Remote privacy information not available."] = "La información privada remota no está disponible."; +App::$strings["Visible to:"] = "Visible para:"; +App::$strings["Unable to locate original post."] = "No ha sido posible encontrar la entrada original."; +App::$strings["Empty post discarded."] = "La entrada vacía ha sido desechada."; +App::$strings["Duplicate post suppressed."] = "Se ha suprimido la entrada duplicada."; +App::$strings["System error. Post not saved."] = "Error del sistema. La entrada no se ha podido salvar."; +App::$strings["Your comment is awaiting approval."] = "Su comentario está pendiente de aprobación."; +App::$strings["Unable to obtain post information from database."] = "No ha sido posible obtener información de la entrada en la base de datos."; +App::$strings["You have reached your limit of %1$.0f top level posts."] = "Ha alcanzado su límite de %1$.0f entradas en la página principal."; +App::$strings["You have reached your limit of %1$.0f webpages."] = "Ha alcanzado su límite de %1$.0f páginas web."; +App::$strings["Menu not found."] = "Menú no encontrado"; +App::$strings["Unable to create element."] = "No se puede crear el elemento."; +App::$strings["Unable to update menu element."] = "No es posible actualizar el elemento del menú."; +App::$strings["Unable to add menu element."] = "No es posible añadir el elemento al menú"; +App::$strings["Not found."] = "No encontrado."; +App::$strings["Menu Item Permissions"] = "Permisos del elemento del menú"; +App::$strings["(click to open/close)"] = "(pulsar para abrir o cerrar)"; +App::$strings["Link Name"] = "Nombre del enlace"; +App::$strings["Link or Submenu Target"] = "Destino del enlace o submenú"; +App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Introducir la dirección del enlace o seleccionar el nombre de un submenú"; +App::$strings["Use magic-auth if available"] = "Usar la autenticación mágica si está disponible"; +App::$strings["Open link in new window"] = "Abrir el enlace en una nueva ventana"; +App::$strings["Order in list"] = "Orden en la lista"; +App::$strings["Higher numbers will sink to bottom of listing"] = "Los números más altos irán al final de la lista"; +App::$strings["Submit and finish"] = "Enviar y terminar"; +App::$strings["Submit and continue"] = "Enviar y continuar"; +App::$strings["Menu:"] = "Menú:"; +App::$strings["Link Target"] = "Destino del enlace"; +App::$strings["Edit menu"] = "Editar menú"; +App::$strings["Edit element"] = "Editar el elemento"; +App::$strings["Drop element"] = "Eliminar el elemento"; +App::$strings["New element"] = "Nuevo elemento"; +App::$strings["Edit this menu container"] = "Modificar el contenedor del menú"; +App::$strings["Add menu element"] = "Añadir un elemento al menú"; +App::$strings["Delete this menu item"] = "Eliminar este elemento del menú"; +App::$strings["Edit this menu item"] = "Modificar este elemento del menú"; +App::$strings["Menu item not found."] = "Este elemento del menú no se ha encontrado"; +App::$strings["Menu item deleted."] = "Este elemento del menú ha sido borrado"; +App::$strings["Menu item could not be deleted."] = "Este elemento del menú no puede ser borrado."; +App::$strings["Edit Menu Element"] = "Editar elemento del menú"; +App::$strings["Link text"] = "Texto del enlace"; +App::$strings["vcard"] = "vcard"; +App::$strings["Files: shared with me"] = "Ficheros: compartidos conmigo"; +App::$strings["NEW"] = "NUEVO"; +App::$strings["Last Modified"] = "Última modificación"; +App::$strings["Remove all files"] = "Eliminar todos los ficheros"; +App::$strings["Remove this file"] = "Eliminar este fichero"; +App::$strings["Documentation Search"] = "Búsqueda de Documentación"; +App::$strings["Administrators"] = "Administradores"; +App::$strings["Developers"] = "Desarrolladores"; +App::$strings["Tutorials"] = "Tutoriales"; +App::$strings["\$Projectname Documentation"] = "Documentación de \$Projectname"; +App::$strings["Contents"] = "Contenidos"; +App::$strings["Webpages App"] = "App de Páginas web"; +App::$strings["Provide managed web pages on your channel"] = "Proveer páginas web gestionadas en su canal"; +App::$strings["Import Webpage Elements"] = "Importar elementos de una página web"; +App::$strings["Import selected"] = "Importar elementos seleccionados"; +App::$strings["Export Webpage Elements"] = "Exportar elementos de una página web"; +App::$strings["Export selected"] = "Exportar los elementos seleccionados"; +App::$strings["Actions"] = "Acciones"; +App::$strings["Page Link"] = "Vínculo de la página"; +App::$strings["Page Title"] = "Título de página"; +App::$strings["Created"] = "Creado"; +App::$strings["Edited"] = "Editado"; +App::$strings["Invalid file type."] = "Tipo de fichero no válido."; +App::$strings["Error opening zip file"] = "Error al abrir el fichero comprimido zip"; +App::$strings["Invalid folder path."] = "La ruta de la carpeta no es válida."; +App::$strings["No webpage elements detected."] = "No se han detectado elementos de ninguna página web."; +App::$strings["Import complete."] = "Importación completada."; +App::$strings["File not found."] = "Fichero no encontrado."; +App::$strings["Permission Denied."] = "Permiso denegado"; +App::$strings["Edit file permissions"] = "Modificar los permisos del fichero"; +App::$strings["Include all files and sub folders"] = "Incluir todos los ficheros y subcarpetas"; +App::$strings["Return to file list"] = "Volver a la lista de ficheros"; +App::$strings["Copy/paste this code to attach file to a post"] = "Copiar/pegar este código para adjuntar el fichero al envío"; +App::$strings["Copy/paste this URL to link file from a web page"] = "Copiar/pegar esta dirección para enlazar el fichero desde una página web"; +App::$strings["Share this file"] = "Compartir este fichero"; +App::$strings["Show URL to this file"] = "Mostrar la dirección de este fichero"; +App::$strings["Show in your contacts shared folder"] = "Mostrar en la carpeta compartida con sus contactos"; +App::$strings["Tag removed"] = "Etiqueta eliminada."; +App::$strings["Remove Item Tag"] = "Eliminar etiqueta del elemento."; +App::$strings["Select a tag to remove: "] = "Seleccionar una etiqueta para eliminar:"; +App::$strings["Continue"] = "Continuar"; +App::$strings["Premium Channel App"] = "App Canal premium"; +App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal"; +App::$strings["Premium Channel Setup"] = "Configuración del canal premium"; +App::$strings["Enable premium channel connection restrictions"] = "Habilitar restricciones de conexión del canal premium"; +App::$strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc."; +App::$strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:"; +App::$strings["Potential connections will then see the following text before proceeding:"] = "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:"; +App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página."; +App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)"; +App::$strings["Restricted or Premium Channel"] = "Canal premium o restringido"; +App::$strings["Not found"] = "No encontrado"; +App::$strings["Please refresh page"] = "Por favor, recargue la página"; +App::$strings["Unknown error"] = "Error desconocido"; +App::$strings["🔁 Repeated %1\$s's %2\$s"] = "🔁 Repetidos %2\$sde %1\$s"; +App::$strings["Post repeated"] = "Entrada repetida"; +App::$strings["network"] = "red"; +App::$strings["Item is not editable"] = "El elemento no es editable"; +App::$strings["Edit post"] = "Editar la entrada"; +App::$strings["Post not found."] = "Mensaje no encontrado."; +App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado %3\$s de %2\$s con %4\$s"; +App::$strings["Unknown App"] = "Aplicación desconocida"; +App::$strings["Authorize"] = "Autorizar"; +App::$strings["Do you authorize the app %s to access your channel data?"] = "¿Autoriza a la aplicación %s a acceder a los datos de su canal?"; +App::$strings["Allow"] = "Permitir"; +App::$strings["Deny"] = "Rechazar"; +App::$strings["Queue Statistics"] = "Estadísticas de la cola"; +App::$strings["Total Entries"] = "Total de entradas"; +App::$strings["Priority"] = "Prioridad"; +App::$strings["Destination URL"] = "Dirección de destino"; +App::$strings["Mark hub permanently offline"] = "Marcar el servidor como permanentemente fuera de línea"; +App::$strings["Empty queue for this hub"] = "Vaciar la cola para este servidor"; +App::$strings["Last known contact"] = "Último contacto conocido"; +App::$strings["Theme settings updated."] = "Ajustes del tema actualizados."; +App::$strings["No themes found."] = "No se han encontrado temas."; +App::$strings["Disable"] = "Desactivar"; +App::$strings["Enable"] = "Activar"; +App::$strings["Screenshot"] = "Instantánea de pantalla"; +App::$strings["Administration"] = "Administración"; +App::$strings["Toggle"] = "Cambiar"; +App::$strings["Author: "] = "Autor:"; +App::$strings["Maintainer: "] = "Mantenedor:"; +App::$strings["[Experimental]"] = "[Experimental]"; +App::$strings["[Unsupported]"] = "[No soportado]"; +App::$strings["Lock feature %s"] = "Bloquear la funcionalidad %s"; +App::$strings["Manage Additional Features"] = "Gestionar las funcionalidades"; +App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro."; +App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: "; +App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"; +App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita."; +App::$strings["Block public"] = "Bloquear páginas públicas"; +App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado."; +App::$strings["Provide a cloud root directory"] = "Proporcionar un directorio raíz de la nube"; +App::$strings["The cloud root directory lists all channel names which provide public files"] = "El directorio raíz de la nube lista todos los nombres de canales que proporcionan archivos públicos"; +App::$strings["Show total disk space available to cloud uploads"] = "Mostrar el espacio total disponible en el disco para las cargas en la nube"; +App::$strings["Set \"Transport Security\" HTTP header"] = "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP"; +App::$strings["Set \"Content Security Policy\" HTTP header"] = "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP"; +App::$strings["Allowed email domains"] = "Se aceptan dominios de correo electrónico"; +App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. "; +App::$strings["Not allowed email domains"] = "No se permiten dominios de correo electrónico"; +App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado."; +App::$strings["Allow communications only from these sites"] = "Permitir la comunicación solo desde estos sitios"; +App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; +App::$strings["Block communications from these sites"] = "Bloquear la comunicación desde estos sitios"; +App::$strings["Allow communications only from these channels"] = "Permitir la comunicación solo desde estos canales"; +App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; +App::$strings["Block communications from these channels"] = "Bloquear la comunicación desde estos canales"; +App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)."; +App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Permitir contenido HTML sin filtrar sólo desde estos dominios "; +App::$strings["One site per line. By default embedded content is filtered."] = "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada."; +App::$strings["Block embedded HTML from these domains"] = "Bloquear contenido con HTML incorporado desde estos dominios"; +App::$strings["%s account blocked/unblocked"] = array( + 0 => "%s cuenta bloqueada/desbloqueada", + 1 => "%s cuenta bloqueada/desbloqueada", ); -App::$strings["__ctx:relative_date__ month"] = array( - 0 => "mes", - 1 => "meses", +App::$strings["%s account deleted"] = array( + 0 => "%s cuentas eliminadas", + 1 => "%s cuentas eliminadas", +); +App::$strings["Account not found"] = "Cuenta no encontrada"; +App::$strings["Account '%s' blocked"] = "La cuenta '%s' ha sido bloqueada"; +App::$strings["Account '%s' unblocked"] = "La cuenta '%s' ha sido desbloqueada"; +App::$strings["select all"] = "seleccionar todo"; +App::$strings["Registrations waiting for confirm"] = "Inscripciones en espera de confirmación"; +App::$strings["Request date"] = "Fecha de solicitud"; +App::$strings["No registrations."] = "Sin registros."; +App::$strings["Block"] = "Bloquear"; +App::$strings["Unblock"] = "Desbloquear"; +App::$strings["ID"] = "ID"; +App::$strings["All Channels"] = "Todos los canales"; +App::$strings["Register date"] = "Fecha de registro"; +App::$strings["Last login"] = "Último acceso"; +App::$strings["Expires"] = "Caduca"; +App::$strings["Service Class"] = "Clase de servicio"; +App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"; +App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"; +App::$strings["Site settings updated."] = "Ajustes del sitio actualizados."; +App::$strings["%s - (Incompatible)"] = "%s - (Incompatible)"; +App::$strings["mobile"] = "móvil"; +App::$strings["experimental"] = "experimental"; +App::$strings["unsupported"] = "no soportado"; +App::$strings["Yes - with approval"] = "Sí - con aprobación"; +App::$strings["My site is not a public server"] = "Mi sitio no es un servidor público"; +App::$strings["My site has paid access only"] = "Mi sitio es un servicio de pago"; +App::$strings["My site has free access only"] = "Mi sitio es un servicio gratuito"; +App::$strings["My site offers free accounts with optional paid upgrades"] = "Mi sitio ofrece cuentas gratuitas con opciones extra de pago"; +App::$strings["Default permission role for new accounts"] = "Permisos de rol por defecto para las nuevas cuentas"; +App::$strings["This role will be used for the first channel created after registration."] = "Este rol se utilizará para el primer canal creado después del registro."; +App::$strings["File upload"] = "Subir fichero"; +App::$strings["Policies"] = "Políticas"; +App::$strings["Banner/Logo"] = "Banner/Logo"; +App::$strings["Unfiltered HTML/CSS/JS is allowed"] = "Se permite HTML/CSS/JS sin filtrar"; +App::$strings["Administrator Information"] = "Información del Administrador"; +App::$strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"; +App::$strings["Site Information"] = "Información sobre el sitio"; +App::$strings["Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here"] = "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode"; +App::$strings["System language"] = "Idioma del sistema"; +App::$strings["System theme"] = "Tema gráfico del sistema"; +App::$strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>"; +App::$strings["Allow Feeds as Connections"] = "Permitir contenidos RSS como conexiones"; +App::$strings["(Heavy system resource usage)"] = "(Uso intenso de los recursos del sistema)"; +App::$strings["Maximum image size"] = "Tamaño máximo de la imagen"; +App::$strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites."; +App::$strings["Does this site allow new member registration?"] = "¿Debe este sitio permitir el registro de nuevos miembros?"; +App::$strings["Invitation only"] = "Solo con una invitación"; +App::$strings["Only allow new member registrations with an invitation code. Above register policy must be set to Yes."] = "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"."; +App::$strings["Minimum age"] = "Edad mínima"; +App::$strings["Minimum age (in years) for who may register on this site."] = "Edad mínima (en años) para poder registrarse en este sitio."; +App::$strings["Which best describes the types of account offered by this hub?"] = "¿Cómo describiría el tipo de servicio ofrecido por este servidor?"; +App::$strings["This is displayed on the public server site list."] = "Esto se muestra en la lista de sitios de servidores públicos."; +App::$strings["Register text"] = "Texto del registro"; +App::$strings["Will be displayed prominently on the registration page."] = "Se mostrará de forma destacada en la página de registro."; +App::$strings["Site homepage to show visitors (default: login box)"] = "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)"; +App::$strings["example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file."] = "ejemplo: 'pubstream' para mostrar el stream público, 'page/sys/home' para mostrar una página web del sistema llamada 'home' o 'include:home.html' para incluir un archivo."; +App::$strings["Preserve site homepage URL"] = "Preservar la dirección de la página personal"; +App::$strings["Present the site homepage in a frame at the original location instead of redirecting"] = "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla."; +App::$strings["Accounts abandoned after x days"] = "Cuentas abandonadas después de x días"; +App::$strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo."; +App::$strings["Allowed friend domains"] = "Dominios amigos permitidos"; +App::$strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio."; +App::$strings["Verify Email Addresses"] = "Verificar las direcciones de correo electrónico"; +App::$strings["Check to verify email addresses used in account registration (recommended)."] = "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)."; +App::$strings["Force publish"] = "Forzar la publicación"; +App::$strings["Check to force all profiles on this site to be listed in the site directory."] = "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio."; +App::$strings["Import Public Streams"] = "Importar contenido público"; +App::$strings["Import and allow access to public content pulled from other sites. Warning: this content is unmoderated."] = "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas."; +App::$strings["Site only Public Streams"] = "Solo contenido público en este sitio"; +App::$strings["Allow access to public content originating only from this site if Imported Public Streams are disabled."] = "Permitir el acceso al contenido público originado sólo desde este sitio si los \"streams\" públicos Importados están deshabilitados."; +App::$strings["Allow anybody on the internet to access the Public streams"] = "Permitir que cualquiera en Internet pueda acceder a los \"streams\" públicos"; +App::$strings["Disable to require authentication before viewing. Warning: this content is unmoderated."] = "Desactivar para requerir autenticación antes de la visualización. Advertencia: este contenido no está moderado."; +App::$strings["Only import Public stream posts with this text"] = "Importar solo entradas del stream púlbico con este texto "; +App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo"; +App::$strings["Do not import Public stream posts with this text"] = "No importar entradas del stream público con este texto "; +App::$strings["Login on Homepage"] = "Iniciar sesión en la página personal"; +App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido."; +App::$strings["Enable context help"] = "Habilitar la ayuda contextual"; +App::$strings["Display contextual help for the current page when the help button is pressed."] = "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda."; +App::$strings["Reply-to email address for system generated email."] = "Dirección de respuesta para el correo electrónico generado por el sistema."; +App::$strings["Sender (From) email address for system generated email."] = "Dirección del remitente (From) para el correo electrónico generado por el sistema."; +App::$strings["Name of email sender for system generated email."] = "Nombre del remitente del correo electrónico generado por el sistema."; +App::$strings["Directory Server URL"] = "URL del servidor de directorio"; +App::$strings["Default directory server"] = "Servidor de directorio predeterminado"; +App::$strings["Proxy user"] = "Usuario del proxy"; +App::$strings["Proxy URL"] = "Dirección del proxy"; +App::$strings["Network timeout"] = "Tiempo de espera de la red"; +App::$strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)"; +App::$strings["Delivery interval"] = "Intervalo de entrega"; +App::$strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados."; +App::$strings["Deliveries per process"] = "Intentos de envío por proceso"; +App::$strings["Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5."] = "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5."; +App::$strings["Queue Threshold"] = "Umbral de la cola de espera"; +App::$strings["Always defer immediate delivery if queue contains more than this number of entries."] = "Aplazar siempre la entrega inmediata si la cola contiene más de este número de entradas."; +App::$strings["Poll interval"] = "Intervalo máximo de tiempo entre dos mensajes sucesivos"; +App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega."; +App::$strings["Path to ImageMagick convert program"] = "Ruta al programa de conversión de ImageMagick"; +App::$strings["If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert"] = "Si está configurado, utilice este programa para generar miniaturas de fotos para imágenes de gran tamaño ( > 4000 píxeles en cualquiera de las dos dimensiones), de lo contrario se puede agotar la memoria. Ejemplo: /usr/bin/convert"; +App::$strings["Allow SVG thumbnails in file browser"] = "Permitir miniaturas SVG en el navegador de archivos"; +App::$strings["WARNING: SVG images may contain malicious code."] = "ADVERTENCIA: Las imágenes SVG pueden contener código malicioso."; +App::$strings["Maximum Load Average"] = "Carga media máxima"; +App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."; +App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)"; +App::$strings["0 for no expiration of imported content"] = "0 para que no caduque el contenido importado"; +App::$strings["Do not expire any posts which have comments less than this many days ago"] = "No caduque ningún mensaje que tenga menos comentarios que este hace muchos días"; +App::$strings["Public servers: Optional landing (marketing) webpage for new registrants"] = "Servidores públicos: Página web de acogida (marketing) opcional para nuevos registros"; +App::$strings["Create this page first. Default is %s/register"] = "Crear esta página primero. Por defecto es %s/register"; +App::$strings["Page to display after creating a new channel"] = "Página a mostrar después de la creación de un nuevo canal"; +App::$strings["Default: profiles"] = "Perfiles predeterminados"; +App::$strings["Optional: site location"] = "Opcional: ubicación del sitio"; +App::$strings["Region or country"] = "Región o país"; +App::$strings["Log settings updated."] = "Actualizado el informe de configuraciones."; +App::$strings["Clear"] = "Vaciar"; +App::$strings["Debugging"] = "Depuración"; +App::$strings["Log file"] = "Fichero de informe"; +App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal."; +App::$strings["Log level"] = "Nivel de depuración"; +App::$strings["%s channel censored/uncensored"] = array( + 0 => "%s canales censurados/no censurados", + 1 => "%s canales censurados/no censurados", ); -App::$strings["__ctx:relative_date__ week"] = array( - 0 => "semana", - 1 => "semanas", +App::$strings["%s channel code allowed/disallowed"] = array( + 0 => "%s código permitido/no permitido al canal", + 1 => "%s código permitido/no permitido al canal", ); -App::$strings["__ctx:relative_date__ day"] = array( - 0 => "día", - 1 => "días", +App::$strings["%s channel deleted"] = array( + 0 => "%s canales eliminados", + 1 => "%s canales eliminados", ); -App::$strings["__ctx:relative_date__ hour"] = array( - 0 => "hora", - 1 => "horas", +App::$strings["Channel not found"] = "Canal no encontrado"; +App::$strings["Channel '%s' deleted"] = "Canal '%s' eliminado"; +App::$strings["Channel '%s' censored"] = "Canal '%s' censurado"; +App::$strings["Channel '%s' uncensored"] = "Canal '%s' no censurado"; +App::$strings["Channel '%s' code allowed"] = "Código permitido al canal '%s'"; +App::$strings["Channel '%s' code disallowed"] = "Código no permitido al canal '%s'"; +App::$strings["Censor"] = "Censurar"; +App::$strings["Uncensor"] = "No censurar"; +App::$strings["Allow Code"] = "Permitir código"; +App::$strings["Disallow Code"] = "No permitir código"; +App::$strings["UID"] = "UID"; +App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?"; +App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?"; +App::$strings["Password changed for account %d."] = "Ha cambiado la contraseña para la cuenta %d."; +App::$strings["Account settings updated."] = "Se han actualizado los ajustes de la cuenta."; +App::$strings["Account not found."] = "No se ha encontrado la cuenta."; +App::$strings["Account Edit"] = "Editar la cuenta"; +App::$strings["New Password"] = "Nueva contraseña"; +App::$strings["New Password again"] = "Nueva contraseña otra vez"; +App::$strings["Account language (for emails)"] = "Idioma de la cuenta (para los correos electrónicos)"; +App::$strings["Service class"] = "Clase de servicio"; +App::$strings["New Profile Field"] = "Nuevo campo en el perfil"; +App::$strings["Field nickname"] = "Alias del campo"; +App::$strings["System name of field"] = "Nombre del campo en el sistema"; +App::$strings["Input type"] = "Tipo de entrada"; +App::$strings["Field Name"] = "Nombre del campo"; +App::$strings["Label on profile pages"] = "Etiqueta a mostrar en la página del perfil"; +App::$strings["Help text"] = "Texto de ayuda"; +App::$strings["Additional info (optional)"] = "Información adicional (opcional)"; +App::$strings["Field definition not found"] = "Definición del campo no encontrada"; +App::$strings["Edit Profile Field"] = "Modificar el campo del perfil"; +App::$strings["Basic Profile Fields"] = "Campos básicos del perfil"; +App::$strings["Advanced Profile Fields"] = "Campos avanzados del perfil"; +App::$strings["(In addition to basic fields)"] = "(Además de los campos básicos)"; +App::$strings["All available fields"] = "Todos los campos disponibles"; +App::$strings["Custom Fields"] = "Campos personalizados"; +App::$strings["Create Custom Field"] = "Crear un campo personalizado"; +App::$strings["Update has been marked successful"] = "La actualización ha sido marcada como exitosa"; +App::$strings["Verification of update %s failed. Check system logs."] = "Error en la verificación de la actualización %s. Compruebe los registros del sistema."; +App::$strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente."; +App::$strings["Verifying update %s did not return a status. Unknown if it succeeded."] = "La verificación de la actualización %s no devuelve un estado. Desconocido si tuvo éxito."; +App::$strings["Update %s does not contain a verification function."] = "La actualización %s no contiene una función de verificación."; +App::$strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s."; +App::$strings["Executing update procedure %s failed. Check system logs."] = "Error al ejecutar el procedimiento de actualización %s. Compruebe los registros del sistema."; +App::$strings["Update %s did not return a status. It cannot be determined if it was successful."] = "La actualización %s no devuelve un estado. No se puede determinar si tuvo éxito."; +App::$strings["Failed Updates"] = "Han fallado las actualizaciones"; +App::$strings["Mark success (if update was manually applied)"] = "Marcar como exitosa (si la actualización se ha hecho manualmente)"; +App::$strings["Attempt to verify this update if a verification procedure exists"] = "Intentar verificar esta actualización si existe un procedimiento de verificación."; +App::$strings["Attempt to execute this update step automatically"] = "Intentar ejecutar este paso de actualización automáticamente"; +App::$strings["No failed updates."] = "No ha fallado ninguna actualización."; +App::$strings["Plugin %s disabled."] = "Extensión %s desactivada."; +App::$strings["Plugin %s enabled."] = "Extensión %s activada."; +App::$strings["Minimum project version: "] = "Versión mínima del proyecto:"; +App::$strings["Maximum project version: "] = "Versión máxima del proyecto:"; +App::$strings["Minimum PHP version: "] = "Versión mínima de PHP:"; +App::$strings["Compatible Server Roles: "] = "Configuraciones compatibles con este servidor:"; +App::$strings["Requires: "] = "Se requiere:"; +App::$strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles"; +App::$strings["Enter the public git repository URL of the addon repo."] = "Introduzca la URL del repositorio público de git del addon repo."; +App::$strings["Addon repo git URL"] = "URL del repositorio git del addon"; +App::$strings["Custom repo name"] = "Nombre personalizado del repositorio"; +App::$strings["(optional)"] = "(opcional)"; +App::$strings["Download Addon Repo"] = "Descargar el repositorio"; +App::$strings["Install new repo"] = "Instalar un nuevo repositorio"; +App::$strings["Install"] = "Instalar"; +App::$strings["Manage Repos"] = "Gestionar los repositorios"; +App::$strings["Installed Addon Repositories"] = "Repositorioe de addons instalados"; +App::$strings["Install a New Addon Repository"] = "Instalar un nuevo repositorio de addons"; +App::$strings["Switch branch"] = "Cambiar la rama"; +App::$strings["Installed Apps"] = "Apps instaladas"; +App::$strings["Manage Apps"] = "Administrar apps"; +App::$strings["Create Custom App"] = "Crear una app personalizada"; +App::$strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí"; +App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña."; +App::$strings["Remove This Channel"] = "Eliminar este canal"; +App::$strings["WARNING: "] = "ATENCIÓN:"; +App::$strings["This channel will be completely removed from the network. "] = "Este canal va a ser completamente eliminado de la red. "; +App::$strings["This action is permanent and can not be undone!"] = "¡Esta acción tiene carácter definitivo y no se puede deshacer!"; +App::$strings["Please enter your password for verification:"] = "Por favor, introduzca su contraseña para su verificación:"; +App::$strings["Remove this channel and all its clones from the network"] = "Eliminar este canal y todos sus clones de la red"; +App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"; +App::$strings["Remove Channel"] = "Eliminar el canal"; +App::$strings["Edit event title"] = "Editar el título del evento"; +App::$strings["Categories (comma-separated list)"] = "Temas (lista separada por comas)"; +App::$strings["Edit Category"] = "Modificar el tema"; +App::$strings["Category"] = "Tema"; +App::$strings["Edit start date and time"] = "Modificar la fecha y hora de comienzo"; +App::$strings["Finish date and time are not known or not relevant"] = "La fecha y hora de terminación no se conocen o no son relevantes"; +App::$strings["Edit finish date and time"] = "Modificar la fecha y hora de terminación"; +App::$strings["Finish date and time"] = "Fecha y hora de terminación"; +App::$strings["Adjust for viewer timezone"] = "Ajustar para obtener el visor de los husos horarios"; +App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales."; +App::$strings["Edit Description"] = "Editar la descripción"; +App::$strings["Edit Location"] = "Modificar la dirección"; +App::$strings["Advanced Options"] = "Opciones avanzadas"; +App::$strings["l, F j"] = "l j F"; +App::$strings["Edit Event"] = "Editar el evento"; +App::$strings["Create Event"] = "Crear un evento"; +App::$strings["Event removed"] = "Evento borrado"; +App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Ha creado %1$.0f de %2$.0f canales permitidos."; +App::$strings["Create a new channel"] = "Crear un nuevo canal"; +App::$strings["Current Channel"] = "Canal actual"; +App::$strings["Switch to one of your channels by selecting it."] = "Cambiar a uno de sus canales seleccionándolo."; +App::$strings["Default Channel"] = "Canal principal"; +App::$strings["Make Default"] = "Convertir en predeterminado"; +App::$strings["%d new messages"] = "%d mensajes nuevos"; +App::$strings["%d new introductions"] = "%d nuevas solicitudes de conexión"; +App::$strings["Delegated Channel"] = "Canal delegado"; +App::$strings["toggle full screen mode"] = "cambiar al modo de pantalla completa"; +App::$strings["Public Stream App"] = "App Stream público"; +App::$strings["The unmoderated public stream of this hub"] = "Stream público no moderado de este hub"; +App::$strings["Away"] = "Ausente"; +App::$strings["Online"] = "Conectado/a"; +App::$strings["Permission category name is required."] = "El nombre de la categoría de permiso es obligatorio."; +App::$strings["Permission category saved."] = "Se ha guardado la categoría del permiso."; +App::$strings["Permission Categories App"] = "App Categorías de permisos"; +App::$strings["Create custom connection permission limits"] = "Crear límites de permisos de conexión personalizados"; +App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones."; +App::$strings["Permission Categories"] = "Tipos de permisos"; +App::$strings["Permission category name"] = "Nombre de categoría de permiso"; +App::$strings["Token verification failed."] = "Ha fallado el token de verificación."; +App::$strings["Email verification resent"] = "Reenvío del email de verificación"; +App::$strings["Unable to resend email verification message."] = "No se puede reenviar el mensaje de verificación por correo electrónico."; +App::$strings["No ratings"] = "Ninguna valoración"; +App::$strings["Rating: "] = "Valoración:"; +App::$strings["Website: "] = "Sitio web:"; +App::$strings["Description: "] = "Descripción:"; +App::$strings["Permissions denied."] = "Permisos denegados."; +App::$strings["item"] = "elemento"; +App::$strings["Change Order of Pinned Navbar Apps"] = "Cambiar el orden de las aplicaciones fijas en la barra de navegación"; +App::$strings["Change Order of App Tray Apps"] = "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones"; +App::$strings["Use arrows to move the corresponding app left (top) or right (bottom) in the navbar"] = "Use las flechas para mover la aplicación correspondiente a la izquierda (arriba) o derecha (abajo) en la barra de navegación."; +App::$strings["Use arrows to move the corresponding app up or down in the app tray"] = "Use las flechas para mover la aplicación correspondiente hacia arriba o hacia abajo en la bandeja de aplicaciones."; +App::$strings["Unable to find your hub."] = "No se puede encontrar su servidor."; +App::$strings["Post successful."] = "Enviado con éxito."; +App::$strings["Comment approved"] = "El comentario ha sido aprobado"; +App::$strings["Comment deleted"] = "Se ha eliminado el comentario"; +App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña."; +App::$strings["Remove This Account"] = "Eliminar esta cuenta"; +App::$strings["This account and all its channels will be completely removed from the network. "] = "Esta cuenta y todos sus canales van a ser eliminados de la red."; +App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Remover esta cuenta, todos sus canales y clones de la red"; +App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red"; +App::$strings["Remove Account"] = "Eliminar cuenta"; +App::$strings["Language App"] = "App idioma"; +App::$strings["Change UI language"] = "Cambiar el idioma de la interfaz de usuario"; +App::$strings["Channel Export App"] = "App Exportación de canales"; +App::$strings["Export your channel"] = "Exportar su canal"; +App::$strings["Export Channel"] = "Exportar el canal"; +App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido."; +App::$strings["Export Content"] = "Exportar contenidos"; +App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar."; +App::$strings["Export your posts from a given year."] = "Exporta sus publicaciones de un año dado."; +App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño."; +App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1\$s\">%2\$s</a>"; +App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1\$s\">%2\$s</a>"; +App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1\$s\">%2\$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)."; +App::$strings["Article"] = "Artículo"; +App::$strings["Item has been removed."] = "Se ha eliminado el elemento."; +App::$strings["No channel."] = "Ningún canal."; +App::$strings["No connections in common."] = "Ninguna conexión en común."; +App::$strings["View Common Connections"] = "Ver las conexiones comunes"; +App::$strings["%s element installed"] = "%s elemento instalado"; +App::$strings["%s element installation failed"] = "Elemento con instalación fallida: %s"; +App::$strings["Your real name is recommended."] = "Se recomienda su nombre real."; +App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\""; +App::$strings["This will be used to create a unique network address (like an email address)."] = "Esto se utilizará para crear una dirección de red única (como una dirección de correo electrónico)."; +App::$strings["Allowed characters are a-z 0-9, - and _"] = "Los caracteres permitidos son a-z 0-9, - and _"; +App::$strings["Channel name"] = "Nombre del canal"; +App::$strings["Select a channel permission role compatible with your usage needs and privacy requirements."] = "Seleccione unos permisos de rol del canal compatibles con sus necesidades de uso y requisitos de privacidad."; +App::$strings["Create a Channel"] = "Crear un canal"; +App::$strings["A channel is a unique network identity. It can represent a person (social network profile), a forum (group), a business or celebrity page, a newsfeed, and many other things."] = "Un canal es una identidad única en la red. Puede representar a una persona (un perfil de una red social), un foro o grupo, un negocio o una página de una celebridad, un \"feed\" de noticias, y muchas otras cosas."; +App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "O <a href=\"import\">importar un canal </a> desde otro lugar."; +App::$strings["Validate"] = "Validar"; +App::$strings["Hub not found."] = "Servidor no encontrado"; +App::$strings["sent you a private message"] = "le ha enviado un mensaje privado"; +App::$strings["added your channel"] = "añadió este canal a sus conexiones"; +App::$strings["requires approval"] = "requiere aprobación"; +App::$strings["g A l F d"] = "g A l d F"; +App::$strings["[today]"] = "[hoy]"; +App::$strings["posted an event"] = "publicó un evento"; +App::$strings["shared a file with you"] = "compartió un archivo con usted"; +App::$strings["Private forum"] = "Foro privado"; +App::$strings["Public forum"] = "Foro público"; +App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio."; +App::$strings["Mood App"] = "App Estados de ánimo"; +App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos"; +App::$strings["Mood"] = "Estado de ánimo"; +App::$strings["About this site"] = "Acerca de este sitio"; +App::$strings["Site Name"] = "Nombre del sitio"; +App::$strings["Administrator"] = "Administrador"; +App::$strings["Software and Project information"] = "Información sobre el software y el proyecto"; +App::$strings["This site is powered by \$Projectname"] = "Este sitio funciona con \$Projectname"; +App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Servicios federados y descentralizados de identidad y redes proporcionados por Zot"; +App::$strings["Additional federated transport protocols:"] = "Protocolos adicionales de transporte federado: "; +App::$strings["Version %s"] = "Versión %s"; +App::$strings["Project homepage"] = "Página principal del proyecto"; +App::$strings["Developer homepage"] = "Página principal del desarrollador"; +App::$strings["App installed."] = "Aplicación instalada."; +App::$strings["Malformed app."] = "Aplicación con errores"; +App::$strings["Embed code"] = "Código incorporado"; +App::$strings["Edit App"] = "Modificar la aplicación"; +App::$strings["Create App"] = "Crear una aplicación"; +App::$strings["Name of app"] = "Nombre de la aplicación"; +App::$strings["Location (URL) of app"] = "Dirección (URL) de la aplicación"; +App::$strings["Photo icon URL"] = "Dirección del icono"; +App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional"; +App::$strings["Categories (optional, comma separated list)"] = "Temas (opcional, lista separada por comas)"; +App::$strings["Version ID"] = "Versión"; +App::$strings["Price of app"] = "Precio de la aplicación"; +App::$strings["Location (URL) to purchase app"] = "Dirección (URL) donde adquirir la aplicación"; +App::$strings["Blocked accounts"] = "Cuentas bloqueadas"; +App::$strings["Expired accounts"] = "Cuentas caducadas"; +App::$strings["Expiring accounts"] = "Cuentas que caducan"; +App::$strings["Message queues"] = "Mensajes en cola"; +App::$strings["Your software should be updated"] = "Debe actualizar su software"; +App::$strings["Summary"] = "Sumario"; +App::$strings["Registered accounts"] = "Cuentas registradas"; +App::$strings["Pending registrations"] = "Registros pendientes"; +App::$strings["Registered channels"] = "Canales registrados"; +App::$strings["Active addons"] = "Addons acivos"; +App::$strings["Version"] = "Versión"; +App::$strings["Repository version (master)"] = "Versión del repositorio (master)"; +App::$strings["Repository version (dev)"] = "Versión del repositorio (dev)"; +App::$strings["Cards App"] = "App de Fichas"; +App::$strings["Create personal planning cards"] = "Crear fichas de planificación personal"; +App::$strings["Add Card"] = "Añadir una ficha"; +App::$strings["No default suggestions were found."] = "No se encontraron sugerencias por defecto."; +App::$strings["%d rating"] = array( + 0 => "%d valoración", + 1 => "%d valoraciones", ); -App::$strings["__ctx:relative_date__ minute"] = array( - 0 => "minuto", - 1 => "minutos", +App::$strings["Gender: "] = "Género:"; +App::$strings["Status: "] = "Estado:"; +App::$strings["Homepage: "] = "Página personal:"; +App::$strings["Description:"] = "Descripción:"; +App::$strings["Public Forum:"] = "Foro público:"; +App::$strings["Keywords: "] = "Palabras clave:"; +App::$strings["Don't suggest"] = "No sugerir:"; +App::$strings["Common connections (estimated):"] = "Conexiones comunes (estimadas): "; +App::$strings["Global Directory"] = "Directorio global:"; +App::$strings["Local Directory"] = "Directorio local:"; +App::$strings["Finding:"] = "Encontrar:"; +App::$strings["next page"] = "siguiente página"; +App::$strings["previous page"] = "página anterior"; +App::$strings["Sort options"] = "Ordenar opciones"; +App::$strings["Alphabetic"] = "Alfabético"; +App::$strings["Reverse Alphabetic"] = "Alfabético inverso"; +App::$strings["Newest to Oldest"] = "De más nuevo a más antiguo"; +App::$strings["Oldest to Newest"] = "De más antiguo a más nuevo"; +App::$strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas entradas pueden estar ocultas)."; +App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación"; +App::$strings["Return to your app and insert this Security Code:"] = "Vuelva a su aplicación e introduzca este código de seguridad: "; +App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar."; +App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?"; +App::$strings["Please login."] = "Por favor, inicie sesión."; +App::$strings["Block Name"] = "Nombre del bloque"; +App::$strings["Block Title"] = "Título del bloque"; +App::$strings["Email Verification Required"] = "Verificación obligatoria del correo electrónico"; +App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "Se ha enviado un token de verificación a su dirección de correo electrónico [%s]. Ingrese ese símbolo aquí para completar el paso de verificación de cuenta. Por favor, espere unos minutos para el envío, y revise su carpeta de spam si no ve el mensaje."; +App::$strings["Resend Email"] = "Reenvío de correo electrónico"; +App::$strings["Validation token"] = "Token de validación"; +App::$strings["Item not available."] = "Elemento no disponible"; +App::$strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. "; +App::$strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado."; +App::$strings["Image upload failed."] = "La carga de la imagen ha fallado."; +App::$strings["Unable to process image."] = "No ha sido posible procesar la imagen."; +App::$strings["Photo not available."] = "Foto no disponible."; +App::$strings["Your default profile photo is visible to anybody on the internet. Profile photos for alternate profiles will inherit the permissions of the profile"] = "Su foto de perfil predeterminada es visible para cualquiera en Internet. Las fotos de perfil para perfiles alternativos heredarán los permisos del predeterminado."; +App::$strings["Your profile photo is visible to anybody on the internet and may be distributed to other websites."] = "La foto de su perfil es visible para cualquiera en Internet y puede ser distribuida en otros sitios web."; +App::$strings["Upload File:"] = "Subir fichero:"; +App::$strings["Select a profile:"] = "Seleccionar un perfil:"; +App::$strings["Use Photo for Profile"] = "Usar la fotografía para el perfil"; +App::$strings["Change Profile Photo"] = "Cambiar la foto del perfil"; +App::$strings["Use"] = "Usar"; +App::$strings["Use a photo from your albums"] = "Usar una foto de sus álbumes"; +App::$strings["Choose a different album"] = "Elegir un álbum diferente..."; +App::$strings["Select existing photo"] = "Seleccionar una foto"; +App::$strings["Crop Image"] = "Recortar imagen"; +App::$strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima."; +App::$strings["Done Editing"] = "Edición completada"; +App::$strings["Edit Block"] = "Modificar este bloque"; +App::$strings["Enter a folder name"] = "Escriba un nombre de carpeta"; +App::$strings["or select an existing folder (doubleclick)"] = "o seleccione una (con un doble click)"; +App::$strings["Save to Folder"] = "Guardar en carpeta"; +App::$strings["Layout Name"] = "Nombre de la plantilla"; +App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)"; +App::$strings["Edit Layout"] = "Modificar la plantilla"; +App::$strings["Active"] = "Activo/a"; +App::$strings["Blocked"] = "Bloqueadas"; +App::$strings["Ignored"] = "Ignoradas"; +App::$strings["Hidden"] = "Ocultas"; +App::$strings["Archived/Unreachable"] = "Archivadas o inaccesibles"; +App::$strings["New"] = "Nuevas"; +App::$strings["Active Connections"] = "Conexiones activas"; +App::$strings["Show active connections"] = "Mostrar las conexiones activas"; +App::$strings["Show pending (new) connections"] = "Mostrar conexiones (nuevas) pendientes"; +App::$strings["Only show blocked connections"] = "Mostrar solo las conexiones bloqueadas"; +App::$strings["Only show ignored connections"] = "Mostrar solo conexiones ignoradas"; +App::$strings["Only show archived/unreachable connections"] = "Mostrar solo las conexiones archivadas o no localizables"; +App::$strings["Only show hidden connections"] = "Mostrar solo las conexiones ocultas"; +App::$strings["Show all connections"] = "Mostrar todas las conexiones"; +App::$strings["Pending approval"] = "Pendiente de aprobación"; +App::$strings["Archived"] = "Archivadas"; +App::$strings["Not connected at this location"] = "No está conectado/a en esta ubicación"; +App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]"; +App::$strings["Edit connection"] = "Editar conexión"; +App::$strings["Delete connection"] = "Eliminar conexión"; +App::$strings["Channel address"] = "Dirección del canal"; +App::$strings["Call"] = "Llamar"; +App::$strings["Status"] = "Estado"; +App::$strings["Connected"] = "Conectado/a"; +App::$strings["Approve connection"] = "Aprobar esta conexión"; +App::$strings["Ignore connection"] = "Ignorar esta conexión"; +App::$strings["Ignore"] = "Ignorar"; +App::$strings["Recent activity"] = "Actividad reciente"; +App::$strings["Connect at this location"] = "Conectar en esta ubicación "; +App::$strings["Search your connections"] = "Buscar sus conexiones"; +App::$strings["Connections search"] = "Buscar conexiones"; +App::$strings["Cover Photos"] = "Imágenes de portada del perfil"; +App::$strings["Your cover photo may be visible to anybody on the internet"] = "La foto de la portada puede ser visible para cualquiera en Internet"; +App::$strings["Change Cover Photo"] = "Cambiar la foto de portada del perfil"; +App::$strings["Page owner information could not be retrieved."] = "La información del propietario de la página no pudo ser recuperada."; +App::$strings["Album not found."] = "Álbum no encontrado."; +App::$strings["Delete Album"] = "Borrar álbum"; +App::$strings["Delete Photo"] = "Borrar foto"; +App::$strings["No photos selected"] = "No hay fotos seleccionadas"; +App::$strings["Access to this item is restricted."] = "El acceso a este elemento está restringido."; +App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado."; +App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB de almacenamiento de fotos utilizado."; +App::$strings["Upload Photos"] = "Subir fotos"; +App::$strings["Enter an album name"] = "Introducir un nombre de álbum"; +App::$strings["or select an existing album (doubleclick)"] = "o seleccionar un álbum (con un doble click)"; +App::$strings["Create a status post for this upload"] = "Crear un mensaje de estado para esta subida"; +App::$strings["Description (optional)"] = "Descripción (opcional)"; +App::$strings["Show Newest First"] = "Mostrar lo más reciente primero"; +App::$strings["Show Oldest First"] = "Mostrar lo más antiguo primero"; +App::$strings["Add Photos"] = "Añadir fotos"; +App::$strings["Permission denied. Access to this item may be restricted."] = "Permiso denegado. El acceso a este elemento puede estar restringido."; +App::$strings["Photo not available"] = "Foto no disponible"; +App::$strings["Use as profile photo"] = "Usar como foto del perfil"; +App::$strings["Use as cover photo"] = "Usar como imagen de portada del perfil"; +App::$strings["Private Photo"] = "Foto privada"; +App::$strings["View Full Size"] = "Ver tamaño completo"; +App::$strings["Edit photo"] = "Editar foto"; +App::$strings["Rotate CW (right)"] = "Girar CW (a la derecha)"; +App::$strings["Rotate CCW (left)"] = "Girar CCW (a la izquierda)"; +App::$strings["Move photo to album"] = "Mover la foto a un álbum"; +App::$strings["Enter a new album name"] = "Introducir un nuevo nombre de álbum"; +App::$strings["or select an existing one (doubleclick)"] = "o seleccionar un álbum (con un doble click)"; +App::$strings["Add a Tag"] = "Añadir una etiqueta"; +App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"; +App::$strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum"; +App::$strings["I like this (toggle)"] = "Me gusta (cambiar)"; +App::$strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; +App::$strings["This is you"] = "Este es usted"; +App::$strings["View all"] = "Ver todo"; +App::$strings["Photo Tools"] = "Gestión de las fotos"; +App::$strings["In This Photo:"] = "En esta foto:"; +App::$strings["Map"] = "Mapa"; +App::$strings["__ctx:noun__ Likes"] = "Me gusta"; +App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; +App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida."; +App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."; +App::$strings["Site Member (%s)"] = "Usuario del sitio (%s)"; +App::$strings["Password reset requested at %s"] = "Se ha solicitado restablecer la contraseña en %s"; +App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."; +App::$strings["Password Reset"] = "Restablecer la contraseña"; +App::$strings["Your password has been reset as requested."] = "Su contraseña ha sido restablecida según lo solicitó."; +App::$strings["Your new password is"] = "Su nueva contraseña es"; +App::$strings["Save or copy your new password - and then"] = "Guarde o copie su nueva contraseña - y después"; +App::$strings["click here to login"] = "pulse aquí para conectarse"; +App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión."; +App::$strings["Your password has changed at %s"] = "Su contraseña en %s ha sido cambiada"; +App::$strings["Forgot your Password?"] = "¿Ha olvidado su contraseña?"; +App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones."; +App::$strings["Email Address"] = "Dirección de correo electrónico"; +App::$strings["Reset"] = "Reiniciar"; +App::$strings["Connection added."] = "Se ha incorporado una conexión."; +App::$strings["Invalid item."] = "Elemento no válido."; +App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; +App::$strings["Profile not found."] = "Perfil no encontrado."; +App::$strings["Profile deleted."] = "Perfil eliminado."; +App::$strings["Profile-"] = "Perfil-"; +App::$strings["New profile created."] = "El nuevo perfil ha sido creado."; +App::$strings["Profile unavailable to clone."] = "Perfil no disponible para clonar."; +App::$strings["Profile unavailable to export."] = "Perfil no disponible para exportar."; +App::$strings["Profile Name is required."] = "Se necesita el nombre del perfil."; +App::$strings["Marital Status"] = "Estado civil"; +App::$strings["Romantic Partner"] = "Pareja sentimental"; +App::$strings["Likes"] = "Me gusta"; +App::$strings["Dislikes"] = "No me gusta"; +App::$strings["Work/Employment"] = "Trabajo:"; +App::$strings["Religion"] = "Religión"; +App::$strings["Political Views"] = "Ideas políticas"; +App::$strings["Sexual Preference"] = "Preferencia sexual"; +App::$strings["Homepage"] = "Página personal"; +App::$strings["Interests"] = "Intereses"; +App::$strings["Profile updated."] = "Perfil actualizado."; +App::$strings["Hide your connections list from viewers of this profile"] = "Ocultar la lista de conexiones a los visitantes del perfil"; +App::$strings["Edit Profile Details"] = "Modificar los detalles de este perfil"; +App::$strings["View this profile"] = "Ver este perfil"; +App::$strings["Profile Tools"] = "Gestión del perfil"; +App::$strings["Change cover photo"] = "Cambiar la imagen de portada del perfil"; +App::$strings["Create a new profile using these settings"] = "Crear un nuevo perfil usando estos ajustes"; +App::$strings["Clone this profile"] = "Clonar este perfil"; +App::$strings["Delete this profile"] = "Eliminar este perfil"; +App::$strings["Add profile things"] = "Añadir cosas al perfil"; +App::$strings["Personal"] = "Personales"; +App::$strings["Relationship"] = "Relación"; +App::$strings["Import profile from file"] = "Importar perfil desde un fichero"; +App::$strings["Export profile to file"] = "Exportar perfil a un fichero"; +App::$strings["Your gender"] = "Género"; +App::$strings["Marital status"] = "Estado civil"; +App::$strings["Sexual preference"] = "Preferencia sexual"; +App::$strings["Profile name"] = "Nombre del perfil"; +App::$strings["This is your default profile."] = "Este es su perfil principal."; +App::$strings["Your full name"] = "Nombre completo"; +App::$strings["Title/Description"] = "Título o descripción"; +App::$strings["Street address"] = "Dirección"; +App::$strings["Locality/City"] = "Ciudad"; +App::$strings["Region/State"] = "Región o Estado"; +App::$strings["Postal/Zip code"] = "Código postal"; +App::$strings["Who (if applicable)"] = "Quién (si es pertinente)"; +App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Por ejemplo: ana123, María González, sara@ejemplo.com"; +App::$strings["Since (date)"] = "Desde (fecha)"; +App::$strings["Tell us about yourself"] = "Háblenos de usted"; +App::$strings["Hometown"] = "Lugar de nacimiento"; +App::$strings["Political views"] = "Ideas políticas"; +App::$strings["Religious views"] = "Creencias religiosas"; +App::$strings["Keywords used in directory listings"] = "Palabras clave utilizadas en los listados de directorios"; +App::$strings["Example: fishing photography software"] = "Por ejemplo: software de fotografía submarina"; +App::$strings["Musical interests"] = "Preferencias musicales"; +App::$strings["Books, literature"] = "Libros, literatura"; +App::$strings["Television"] = "Televisión"; +App::$strings["Film/Dance/Culture/Entertainment"] = "Cine, danza, cultura, entretenimiento"; +App::$strings["Hobbies/Interests"] = "Aficiones o intereses"; +App::$strings["Love/Romance"] = "Vida sentimental o amorosa"; +App::$strings["School/Education"] = "Estudios"; +App::$strings["Contact information and social networks"] = "Información de contacto y redes sociales"; +App::$strings["My other channels"] = "Mis otros canales"; +App::$strings["Communications"] = "Comunicaciones"; +App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %3\$s de %2\$s"; +App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s ha dejado de seguir %3\$s de %2\$s"; +App::$strings["Articles App"] = "App Artículos"; +App::$strings["Create interactive articles"] = "Crear artículos interactivos"; +App::$strings["Add Article"] = "Añadir un artículo"; +App::$strings["Bookmark added"] = "Marcador añadido"; +App::$strings["Bookmarks App"] = "App Marcadores"; +App::$strings["Bookmark links from posts and manage them"] = "Añadir enlaces de las entradas a Marcadores y administrarlos"; +App::$strings["My Bookmarks"] = "Mis marcadores"; +App::$strings["My Connections Bookmarks"] = "Marcadores de mis conexiones"; +App::$strings["Remote Diagnostics App"] = "App Diagnósticos remotos"; +App::$strings["Perform diagnostics on remote channels"] = "Realizar diagnósticos en canales remotos"; +App::$strings["Channel name changes are not allowed within 48 hours of changing the account password."] = "Los cambios en el nombre de un canal no está permitida hasta pasadas 48 horas desde el cambio de contraseña de la cuenta."; +App::$strings["Change channel nickname/address"] = "Cambiar el alias o la dirección del canal"; +App::$strings["Any/all connections on other networks will be lost!"] = "¡Cualquier/todas las conexiones en otras redes se perderán!"; +App::$strings["New channel address"] = "Nueva dirección del canal"; +App::$strings["Rename Channel"] = "Renombrar el canal"; +App::$strings["Total invitation limit exceeded."] = "Se ha superado el límite máximo de invitaciones."; +App::$strings["%s : Not a valid email address."] = "%s : No es una dirección de correo electrónico válida. "; +App::$strings["Please join us on \$Projectname"] = "Únase a nosotros en \$Projectname"; +App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio."; +App::$strings["%d message sent."] = array( + 0 => "%d mensajes enviados.", + 1 => "%d mensajes enviados.", ); -App::$strings["__ctx:relative_date__ second"] = array( - 0 => "segundo", - 1 => "segundos", +App::$strings["Invite App"] = "Solicitar una app"; +App::$strings["Send email invitations to join this network"] = "Enviar invitaciones por correo electrónico para unirse a esta red"; +App::$strings["You have no more invitations available"] = "No tiene más invitaciones disponibles"; +App::$strings["Send invitations"] = "Enviar invitaciones"; +App::$strings["Enter email addresses, one per line:"] = "Introduzca las direcciones de correo electrónico, una por línea:"; +App::$strings["Your message:"] = "Su mensaje:"; +App::$strings["Please join my community on \$Projectname."] = "Por favor, únase a mi comunidad en \$Projectname."; +App::$strings["You will need to supply this invitation code:"] = "Tendrá que suministrar este código de invitación:"; +App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Regístrese en cualquier sitio de \$Projectname (están todos interconectados)"; +App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Introduzca mi dirección \$Projectname en la caja de búsqueda del sitio."; +App::$strings["or visit"] = "o visitar"; +App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]"; +App::$strings["Notes App"] = "App Notas"; +App::$strings["A simple notes app with a widget (note: notes are not encrypted)"] = "Una simple aplicación de notas con un widget (aviso: las notas no están encriptadas)"; +App::$strings["Xchan Lookup"] = "Búsqueda de canales"; +App::$strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o un \"webbie\") que comience por:"; +App::$strings["Unable to lookup recipient."] = "No se puede asociar a un destinatario."; +App::$strings["Unable to communicate with requested channel."] = "No se puede establecer la comunicación con el canal solicitado."; +App::$strings["Cannot verify requested channel."] = "No se puede verificar el canal solicitado."; +App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."; +App::$strings["Messages"] = "Mensajes"; +App::$strings["message"] = "mensaje"; +App::$strings["Message recalled."] = "Mensaje revocado."; +App::$strings["Conversation removed."] = "Conversación eliminada."; +App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM"; +App::$strings["Requested channel is not in this network"] = "El canal solicitado no existe en esta red"; +App::$strings["Send Private Message"] = "Enviar un mensaje privado"; +App::$strings["To:"] = "Para:"; +App::$strings["Subject:"] = "Asunto:"; +App::$strings["Attach file"] = "Adjuntar fichero"; +App::$strings["Send"] = "Enviar"; +App::$strings["Delete message"] = "Borrar mensaje"; +App::$strings["Delivery report"] = "Informe de transmisión"; +App::$strings["Recall message"] = "Revocar el mensaje"; +App::$strings["Message has been recalled."] = "El mensaje ha sido revocado."; +App::$strings["Delete Conversation"] = "Eliminar conversación"; +App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente."; +App::$strings["Send Reply"] = "Responder"; +App::$strings["Your message for %s (%s):"] = "Su mensaje para %s (%s):"; +App::$strings["Affinity Tool settings updated."] = "Actualización de los ajustes de Affinity Tool."; +App::$strings["This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream."] = "Esta aplicación presenta un control deslizante en su editor de conexión y también en su página de red. El control deslizante representa su grado de amistad (afinidad) con cada conexión. Le permite acercar o alejar y mostrar conversaciones sólo de sus amigos más cercanos o de todo el mundo en su stream."; +App::$strings["Affinity Tool App"] = "App Affinity Tool "; +App::$strings["The numbers below represent the minimum and maximum slider default positions for your network/stream page as a percentage."] = "Los números que aparecen a continuación representan las posiciones predeterminadas mínimas y máximas de los controles deslizantes para su red/stream en forma de porcentaje."; +App::$strings["Default maximum affinity level"] = "Nivel máximo de afinidad por defecto"; +App::$strings["0-99 default 99"] = "0-99 por defecto 99"; +App::$strings["Default minimum affinity level"] = "Nivel mínimo de afinidad por defecto"; +App::$strings["0-99 - default 0"] = "0-99 - por defecto 0"; +App::$strings["Persistent affinity levels"] = "Niveles de afinidad persistentes"; +App::$strings["If disabled the max and min levels will be reset to default after page reload"] = "Si está desactivado, los niveles máximo y mínimo se restablecerán a los valores predeterminados después de recargar la página."; +App::$strings["Affinity Tool Settings"] = "Ajustes de Affinity Tool"; +App::$strings["Website:"] = "Sitio web:"; +App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal remoto [%s] (aún no es conocido en este sitio)"; +App::$strings["Rating (this information is public)"] = "Valoración (esta información es pública)"; +App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalmente puede explicar su valoración (esta información es pública)"; +App::$strings["Max height of content (in pixels)"] = "Altura máxima del contenido (en píxeles)"; +App::$strings["Click to expand content exceeding this height"] = "Haga clic para expandir el contenido que exceda esta altura"; +App::$strings["Stream Settings"] = "Ajustes del stream"; +App::$strings["Additional Features"] = "Funcionalidades"; +App::$strings["Nobody except yourself"] = "Nadie excepto usted"; +App::$strings["Only those you specifically allow"] = "Solo aquellos a los que usted permita explícitamente"; +App::$strings["Approved connections"] = "Conexiones aprobadas"; +App::$strings["Any connections"] = "Cualquier conexión"; +App::$strings["Anybody on this website"] = "Cualquiera en este sitio web"; +App::$strings["Anybody in this network"] = "Cualquiera en esta red"; +App::$strings["Anybody authenticated"] = "Cualquiera que esté autenticado"; +App::$strings["Anybody on the internet"] = "Cualquiera en internet"; +App::$strings["Publish your default profile in the network directory"] = "Publicar su perfil principal en el directorio de la red"; +App::$strings["Allow us to suggest you as a potential friend to new members?"] = "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?"; +App::$strings["or"] = "o"; +App::$strings["Your channel address is"] = "Su dirección de canal es"; +App::$strings["Your files/photos are accessible via WebDAV at"] = "Sus archivos y fotos son accesibles a través de WebDAV en "; +App::$strings["Automatic membership approval"] = "Aprobación automática de nuevos miembros"; +App::$strings["If enabled, connection requests will be approved without your interaction"] = "Si está habilitado, las solicitudes de conexión serán aprobadas sin su intervención."; +App::$strings["Channel Settings"] = "Ajustes del canal"; +App::$strings["Basic Settings"] = "Configuración básica"; +App::$strings["Email Address:"] = "Dirección de correo electrónico:"; +App::$strings["Your Timezone:"] = "Su huso horario:"; +App::$strings["Default Post Location:"] = "Localización geográfica predeterminada para sus publicaciones:"; +App::$strings["Geographical location to display on your posts"] = "Localización geográfica que debe mostrarse en sus publicaciones"; +App::$strings["Use Browser Location:"] = "Usar la localización geográfica del navegador:"; +App::$strings["Adult Content"] = "Contenido solo para adultos"; +App::$strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)"; +App::$strings["Security and Privacy Settings"] = "Configuración de seguridad y privacidad"; +App::$strings["Your permissions are already configured. Click to view/adjust"] = "Sus permisos ya están configurados. Pulse para ver/ajustar"; +App::$strings["Hide my online presence"] = "Ocultar mi presencia en línea"; +App::$strings["Prevents displaying in your profile that you are online"] = "Evitar mostrar en su perfil que está en línea"; +App::$strings["Simple Privacy Settings:"] = "Configuración de privacidad sencilla:"; +App::$strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>"; +App::$strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>"; +App::$strings["Private - <em>default private, never open or public</em>"] = "Privado - <em>por defecto, privado, nunca abierto o público</em>"; +App::$strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>"; +App::$strings["Allow others to tag your posts"] = "Permitir a otros etiquetar sus publicaciones"; +App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva."; +App::$strings["Channel Permission Limits"] = "Límites de los permisos del canal"; +App::$strings["Expire other channel content after this many days"] = "Caducar contenido de otros canales después de este número de días"; +App::$strings["0 or blank to use the website limit."] = "0 o en blanco para usar el límite del sitio web."; +App::$strings["This website expires after %d days."] = "Este sitio web caduca después de %d días."; +App::$strings["This website does not expire imported content."] = "Este sitio web no caduca el contenido importado."; +App::$strings["The website limit takes precedence if lower than your limit."] = "El límite del sitio web tiene prioridad si es inferior a su propio límite."; +App::$strings["Maximum Friend Requests/Day:"] = "Máximo de solicitudes de amistad por día:"; +App::$strings["May reduce spam activity"] = "Podría reducir la actividad de spam"; +App::$strings["Default Privacy Group"] = "Grupo de canales predeterminado"; +App::$strings["Use my default audience setting for the type of object published"] = "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación"; +App::$strings["Default permissions category"] = "Categoría de permisos por defecto"; +App::$strings["Maximum private messages per day from unknown people:"] = "Máximo de mensajes privados por día de gente desconocida:"; +App::$strings["Useful to reduce spamming"] = "Útil para reducir el envío de correo no deseado"; +App::$strings["Notification Settings"] = "Configuración de las notificaciones"; +App::$strings["By default post a status message when:"] = "Por defecto, enviar un mensaje de estado cuando:"; +App::$strings["accepting a friend request"] = "Acepte una solicitud de amistad"; +App::$strings["joining a forum/community"] = "al unirse a un foro o comunidad"; +App::$strings["making an <em>interesting</em> profile change"] = "Realice un cambio <em>interesante</em> en su perfil"; +App::$strings["Send a notification email when:"] = "Enviar una notificación por correo electrónico cuando:"; +App::$strings["You receive a connection request"] = "Reciba una solicitud de conexión"; +App::$strings["Your connections are confirmed"] = "Sus conexiones hayan sido confirmadas"; +App::$strings["Someone writes on your profile wall"] = "Alguien escriba en la página de su perfil (\"muro\")"; +App::$strings["Someone writes a followup comment"] = "Alguien escriba un comentario sobre sus publicaciones"; +App::$strings["You receive a private message"] = "Reciba un mensaje privado"; +App::$strings["You receive a friend suggestion"] = "Reciba una sugerencia de amistad"; +App::$strings["You are tagged in a post"] = "Usted sea etiquetado en una publicación"; +App::$strings["You are poked/prodded/etc. in a post"] = "Reciba un toque o incitación en una publicación"; +App::$strings["Someone likes your post/comment"] = "Alguien muestre agrado por su entrada o comentario"; +App::$strings["Show visual notifications including:"] = "Mostrar notificaciones visuales que incluyan:"; +App::$strings["Unseen stream activity"] = "Actividad del stream no vista"; +App::$strings["Unseen channel activity"] = "Actividad no vista en el canal"; +App::$strings["Unseen private messages"] = "Mensajes privados no leídos"; +App::$strings["Upcoming events"] = "Próximos eventos"; +App::$strings["Events today"] = "Eventos de hoy"; +App::$strings["Upcoming birthdays"] = "Próximos cumpleaños"; +App::$strings["Not available in all themes"] = "No disponible en todos los temas"; +App::$strings["System (personal) notifications"] = "Notificaciones del sistema (personales)"; +App::$strings["System info messages"] = "Mensajes de información del sistema"; +App::$strings["System critical alerts"] = "Alertas críticas del sistema"; +App::$strings["New connections"] = "Nuevas conexiones"; +App::$strings["System Registrations"] = "Registros del sistema"; +App::$strings["Unseen shared files"] = "Ficheros compartidos no vistos"; +App::$strings["Unseen public stream activity"] = "Actividad del stream público no vista"; +App::$strings["Unseen likes and dislikes"] = "Los \"me gusta\" y \"no me gusta\" no vistos"; +App::$strings["Unseen forum posts"] = "Entradas no vistas en el foro"; +App::$strings["Email notification hub (hostname)"] = "Email de notificación del hub (nombre del host)"; +App::$strings["If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s"] = "Si su canal está replicado en múltiples hubs, colóquelo en su ubicación preferida. Esto evitará la duplicación de notificaciones por correo electrónico. Ejemplo: %s"; +App::$strings["Show new wall posts, private messages and connections under Notices"] = "Mostrar nuevos mensajes en el muro, mensajes privados y conexiones en Avisos"; +App::$strings["Notify me of events this many days in advance"] = "Avisarme de los eventos con algunos días de antelación"; +App::$strings["Must be greater than 0"] = "Debe ser mayor que 0"; +App::$strings["Advanced Account/Page Type Settings"] = "Ajustes avanzados de la cuenta y de los tipos de página"; +App::$strings["Change the behaviour of this account for special situations"] = "Cambiar el comportamiento de esta cuenta en situaciones especiales"; +App::$strings["Miscellaneous Settings"] = "Ajustes diversos"; +App::$strings["Default photo upload folder"] = "Carpeta por defecto de las fotos subidas"; +App::$strings["%Y - current year, %m - current month"] = "%Y - año en curso, %m - mes actual"; +App::$strings["Default file upload folder"] = "Carpeta por defecto de los ficheros subidos"; +App::$strings["Remove this channel."] = "Eliminar este canal."; +App::$strings["Not valid email."] = "Correo electrónico no válido."; +App::$strings["Protected email address. Cannot change to that email."] = "Dirección de correo electrónico protegida. No se puede cambiar a ella."; +App::$strings["System failure storing new email. Please try again."] = "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo."; +App::$strings["Password verification failed."] = "La comprobación de la contraseña ha fallado."; +App::$strings["Passwords do not match. Password unchanged."] = "Las contraseñas no coinciden. La contraseña no se ha cambiado."; +App::$strings["Empty passwords are not allowed. Password unchanged."] = "No se permiten contraseñas vacías. La contraseña no se ha cambiado."; +App::$strings["Password changed."] = "Contraseña cambiada."; +App::$strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo."; +App::$strings["Account Settings"] = "Configuración de la cuenta"; +App::$strings["Current Password"] = "Contraseña actual"; +App::$strings["Enter New Password"] = "Escribir una nueva contraseña"; +App::$strings["Confirm New Password"] = "Confirmar la nueva contraseña"; +App::$strings["Leave password fields blank unless changing"] = "Dejar en blanco la contraseña a menos que desee cambiarla."; +App::$strings["Remove this account including all its channels"] = "Eliminar esta cuenta incluyendo todos sus canales"; +App::$strings["No feature settings configured"] = "No se ha establecido la configuración de los complementos"; +App::$strings["Addon Settings"] = "Ajustes de los complementos"; +App::$strings["Please save/submit changes to any panel before opening another."] = "Guarde o envíe los cambios a cualquier panel antes de abrir otro."; +App::$strings["Events Settings"] = "Gestión de eventos"; +App::$strings["Channel Manager Settings"] = "Ajustes del administrador de canales"; +App::$strings["Personal menu to display in your channel pages"] = "Menú personal que debe mostrarse en las páginas de su canal"; +App::$strings["Channel Home Settings"] = "Ajustes del canal"; +App::$strings["Calendar Settings"] = "Ajustes del calendario"; +App::$strings["%s - (Experimental)"] = "%s - (Experimental)"; +App::$strings["Display Settings"] = "Ajustes de visualización"; +App::$strings["Theme Settings"] = "Ajustes del tema"; +App::$strings["Custom Theme Settings"] = "Ajustes personalizados del tema"; +App::$strings["Content Settings"] = "Ajustes del contenido"; +App::$strings["Display Theme:"] = "Tema gráfico del perfil:"; +App::$strings["Select scheme"] = "Elegir un esquema"; +App::$strings["Preload images before rendering the page"] = "Carga previa de las imágenes antes de generar la página"; +App::$strings["The subjective page load time will be longer but the page will be ready when displayed"] = "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre."; +App::$strings["Enable user zoom on mobile devices"] = "Habilitar zoom de usuario en dispositivos móviles"; +App::$strings["Update browser every xx seconds"] = "Actualizar navegador cada xx segundos"; +App::$strings["Minimum of 10 seconds, no maximum"] = "Mínimo de 10 segundos, sin máximo"; +App::$strings["Maximum number of conversations to load at any time:"] = "Máximo número de conversaciones a cargar en cualquier momento:"; +App::$strings["Maximum of 100 items"] = "Máximo de 100 elementos"; +App::$strings["Show emoticons (smilies) as images"] = "Mostrar emoticonos (smilies) como imágenes"; +App::$strings["Provide channel menu in navigation bar"] = "Proporcionar un menú de canales en la barra de navegación"; +App::$strings["Default: channel menu located in app menu"] = "Predeterminado: menú de canales ubicado en el menú de aplicaciones"; +App::$strings["Manual conversation updates"] = "Actualizaciones manuales de la conversación"; +App::$strings["Default is on, turning this off may increase screen jumping"] = "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla"; +App::$strings["Link post titles to source"] = "Enlazar título de la publicación a la fuente original"; +App::$strings["Display new member quick links menu"] = "Mostrar el menú de enlaces rápidos para nuevos miembros"; +App::$strings["Directory Settings"] = "Configuración del directorio"; +App::$strings["Editor Settings"] = "Ajustes del editor"; +App::$strings["Connections Settings"] = "Gestión de las conexiones"; +App::$strings["Photos Settings"] = "Gestión de las fotos"; +App::$strings["Profiles Settings"] = "Gestión de los perfiles"; +App::$strings["Settings saved."] = "Configuración guardada."; +App::$strings["Settings saved. Reload page please."] = "Ajustes guardados. Recargue la página, por favor."; +App::$strings["Conversation Settings"] = "Ajustes de conversación"; +App::$strings["Unable to update menu."] = "No se puede actualizar el menú."; +App::$strings["Unable to create menu."] = "No se puede crear el menú."; +App::$strings["Menu Name"] = "Nombre del menú"; +App::$strings["Unique name (not visible on webpage) - required"] = "Nombre único (no será visible en la página web) - requerido"; +App::$strings["Menu Title"] = "Título del menú"; +App::$strings["Visible on webpage - leave empty for no title"] = "Visible en la página web - no ponga nada si no desea un título"; +App::$strings["Allow Bookmarks"] = "Permitir marcadores"; +App::$strings["Menu may be used to store saved bookmarks"] = "El menú se puede usar para guardar marcadores"; +App::$strings["Submit and proceed"] = "Enviar y proceder"; +App::$strings["Drop"] = "Eliminar"; +App::$strings["Bookmarks allowed"] = "Marcadores permitidos"; +App::$strings["Delete this menu"] = "Borrar este menú"; +App::$strings["Edit menu contents"] = "Editar los contenidos del menú"; +App::$strings["Edit this menu"] = "Modificar este menú"; +App::$strings["Menu could not be deleted."] = "El menú no puede ser eliminado."; +App::$strings["Edit Menu"] = "Modificar el menú"; +App::$strings["Add or remove entries to this menu"] = "Añadir o quitar entradas en este menú"; +App::$strings["Menu name"] = "Nombre del menú"; +App::$strings["Must be unique, only seen by you"] = "Debe ser único, solo será visible para usted"; +App::$strings["Menu title"] = "Título del menú"; +App::$strings["Menu title as seen by others"] = "El título del menú tal como será visto por los demás"; +App::$strings["Allow bookmarks"] = "Permitir marcadores"; +App::$strings["Could not access contact record."] = "No se ha podido acceder al registro de contacto."; +App::$strings["Default Permissions App"] = "App Permisos por defecto"; +App::$strings["Set custom default permissions for new connections"] = "Establecer permisos predeterminados personalizados para nuevas conexiones"; +App::$strings["Connection Default Permissions"] = "Permisos predeterminados de conexión"; +App::$strings["Apply these permissions automatically"] = "Aplicar estos permisos automaticamente"; +App::$strings["Permission role"] = "Permisos de rol"; +App::$strings["Add permission role"] = "Añadir permisos de rol"; +App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones."; +App::$strings["Automatic approval settings"] = "Opciones de autorización automática"; +App::$strings["Some individual permissions may have been preset or locked based on your channel type and privacy settings."] = "Es posible que se hayan preestablecido o bloqueado algunos permisos individuales según el tipo de canal y la configuración de privacidad."; +App::$strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada."; +App::$strings["Configuration Editor"] = "Editor de configuración"; +App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."; +App::$strings["Name and Secret are required"] = "\"Key\" y \"Secret\" son obligatorios"; +App::$strings["OAuth2 Apps Manager App"] = "Aplicación del administrador de apps OAuth2"; +App::$strings["OAuth2 authenticatication tokens for mobile and remote apps"] = "Tokens de autenticación de OAuth2 para aplicaciones móviles y remotas"; +App::$strings["Add OAuth2 application"] = "Añadir aplicación OAuth2"; +App::$strings["Grant Types"] = "Tipos de permisos"; +App::$strings["leave blank unless your application sepcifically requires this"] = "Dejar en blanco a menos que su aplicación lo requiera específicamente"; +App::$strings["Authorization scope"] = "Alcance de la autorización"; +App::$strings["OAuth2 Application not found."] = "No se ha encontrado la aplicación OAuth2."; +App::$strings["leave blank unless your application specifically requires this"] = "dejar en blanco a menos que su aplicación lo requiera específicamente"; +App::$strings["Connected OAuth2 Apps"] = "Aplicaciones OAuth2 conectadas"; +App::$strings["Random Channel App"] = "App Canal aleatorio"; +App::$strings["Visit a random channel in the \$Projectname network"] = "Visitar un canal aleatorio en la red \$Projectname"; +App::$strings["Invalid message"] = "Mensaje no válido"; +App::$strings["no results"] = "sin resultados"; +App::$strings["channel sync processed"] = "se ha realizado la sincronización del canal"; +App::$strings["queued"] = "encolado"; +App::$strings["posted"] = "enviado"; +App::$strings["accepted for delivery"] = "aceptado para el envío"; +App::$strings["updated"] = "actualizado"; +App::$strings["update ignored"] = "actualización ignorada"; +App::$strings["permission denied"] = "permiso denegado"; +App::$strings["recipient not found"] = "destinatario no encontrado"; +App::$strings["mail recalled"] = "mensaje de correo revocado"; +App::$strings["duplicate mail received"] = "se ha recibido mensaje duplicado"; +App::$strings["mail delivered"] = "correo enviado"; +App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s"; +App::$strings["Redeliver"] = "Volver a enviar"; +App::$strings["Thing updated"] = "Elemento actualizado."; +App::$strings["Object store: failed"] = "Guardar objeto: ha fallado"; +App::$strings["Thing added"] = "Elemento añadido"; +App::$strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s"; +App::$strings["Show Thing"] = "Mostrar elemento"; +App::$strings["item not found."] = "elemento no encontrado."; +App::$strings["Edit Thing"] = "Editar elemento"; +App::$strings["Select a profile"] = "Seleccionar un perfil"; +App::$strings["Post an activity"] = "Publicar una actividad"; +App::$strings["Only sends to viewers of the applicable profile"] = "Sólo enviar a espectadores del perfil pertinente."; +App::$strings["Name of thing e.g. something"] = "Nombre del elemento, p. ej.:. \"algo\""; +App::$strings["URL of thing (optional)"] = "Dirección del elemento (opcional)"; +App::$strings["URL for photo of thing (optional)"] = "Dirección para la foto o elemento (opcional)"; +App::$strings["Add Thing to your Profile"] = "Añadir alguna cosa a su perfil"; +App::$strings["Authentication failed."] = "Falló la autenticación."; +App::$strings["Layout updated."] = "Plantilla actualizada."; +App::$strings["PDL Editor App"] = "App Editor PDL"; +App::$strings["Provides the ability to edit system page layouts"] = "Proporciona la capacidad de editar los diseños de página del sistema"; +App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripción de Páginas"; +App::$strings["(modified)"] = "(modificado)"; +App::$strings["Layout not found."] = "Plantilla no encontrada"; +App::$strings["Module Name:"] = "Nombre del módulo:"; +App::$strings["Layout Help"] = "Ayuda para el diseño de plantillas de página"; +App::$strings["Edit another layout"] = "Editar otro diseño"; +App::$strings["System layout"] = "Diseño del sistema"; +App::$strings["Wiki App"] = "App Wiki"; +App::$strings["Provide a wiki for your channel"] = "Proporcionar un wiki para su canal"; +App::$strings["Error retrieving wiki"] = "Error al recuperar el wiki"; +App::$strings["Error creating zip file export folder"] = "Error al crear el fichero comprimido zip de la carpeta a exportar"; +App::$strings["Error downloading wiki: "] = "Error al descargar el wiki: "; +App::$strings["Download"] = "Descargar"; +App::$strings["Wiki name"] = "Nombre del wiki"; +App::$strings["Content type"] = "Tipo de contenido"; +App::$strings["Type"] = "Tipo"; +App::$strings["Any type"] = "Cualquier tipo"; +App::$strings["Lock content type"] = "Tipo de contenido bloqueado"; +App::$strings["Create a status post for this wiki"] = "Crear un mensaje de estado para este wiki"; +App::$strings["Edit Wiki Name"] = "Editar el nombre del wiki"; +App::$strings["Wiki not found"] = "Wiki no encontrado"; +App::$strings["Rename page"] = "Renombrar la página"; +App::$strings["Error retrieving page content"] = "Error al recuperar el contenido de la página"; +App::$strings["New page"] = "Nueva página"; +App::$strings["Revision Comparison"] = "Comparación de revisiones"; +App::$strings["Short description of your changes (optional)"] = "Breve descripción de sus cambios (opcional)"; +App::$strings["Source"] = "Fuente"; +App::$strings["New page name"] = "Nombre de la nueva página"; +App::$strings["Embed image from photo albums"] = "Incluir una imagen de los álbumes de fotos"; +App::$strings["History"] = "Historial"; +App::$strings["Error creating wiki. Invalid name."] = "Error al crear el wiki: el nombre no es válido."; +App::$strings["A wiki with this name already exists."] = "Ya hay un wiki con este nombre."; +App::$strings["Wiki created, but error creating Home page."] = "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio."; +App::$strings["Error creating wiki"] = "Error al crear el wiki"; +App::$strings["Error updating wiki. Invalid name."] = "Error al actualizar el wiki. Nombre no válido."; +App::$strings["Error updating wiki"] = "Error al actualizar el wiki"; +App::$strings["Wiki delete permission denied."] = "Se ha denegado el permiso para eliminar el wiki."; +App::$strings["Error deleting wiki"] = "Se ha producido un error al eliminar el wiki"; +App::$strings["New page created"] = "Se ha creado la nueva página"; +App::$strings["Cannot delete Home"] = "No se puede eliminar la página principal"; +App::$strings["Current Revision"] = "Revisión actual"; +App::$strings["Selected Revision"] = "Revisión seleccionada"; +App::$strings["You must be authenticated."] = "Debe estar autenticado."; +App::$strings["Welcome to %s"] = "Bienvenido a %s"; +App::$strings["Suggest Channels App"] = "App Sugerencia de canales"; +App::$strings["Suggestions for channels in the \$Projectname network you might be interested in"] = "Sugerencias de los canales de la red \$Projectname en los que puede estar interesado"; +App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo."; +App::$strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado."; +App::$strings["Connection updated."] = "Conexión actualizada."; +App::$strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión."; +App::$strings["is now connected to"] = "ahora está conectado/a"; +App::$strings["Could not access address book record."] = "No se pudo acceder al registro en su libreta de direcciones."; +App::$strings["Refresh failed - channel is currently unavailable."] = "Recarga fallida - no se puede encontrar el canal en este momento."; +App::$strings["Unable to set address book parameters."] = "No ha sido posible establecer los parámetros de la libreta de direcciones."; +App::$strings["Connection has been removed."] = "La conexión ha sido eliminada."; +App::$strings["View %s's profile"] = "Ver el perfil de %s"; +App::$strings["Refresh Permissions"] = "Recargar los permisos"; +App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; +App::$strings["Refresh Photo"] = "Actualizar la foto"; +App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; +App::$strings["View recent posts and comments"] = "Ver publicaciones y comentarios recientes"; +App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquear (o desbloquear) todas las comunicaciones con esta conexión"; +App::$strings["This connection is blocked!"] = "¡Esta conexión está bloqueada!"; +App::$strings["Unignore"] = "Dejar de ignorar"; +App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión"; +App::$strings["This connection is ignored!"] = "¡Esta conexión es ignorada!"; +App::$strings["Unarchive"] = "Desarchivar"; +App::$strings["Archive"] = "Archivar"; +App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos"; +App::$strings["This connection is archived!"] = "¡Esta conexión esta archivada!"; +App::$strings["Unhide"] = "Mostrar"; +App::$strings["Hide"] = "Ocultar"; +App::$strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones"; +App::$strings["This connection is hidden!"] = "¡Esta conexión está oculta!"; +App::$strings["Delete this connection"] = "Eliminar esta conexión"; +App::$strings["Fetch Vcard"] = "Obtener una vcard"; +App::$strings["Fetch electronic calling card for this connection"] = "Obtener una tarjeta de llamada electrónica para esta conexión"; +App::$strings["Open Individual Permissions section by default"] = "Abrir la sección de permisos individuales por defecto"; +App::$strings["Affinity"] = "Afinidad"; +App::$strings["Open Set Affinity section by default"] = "Abrir por defecto la sección para definir la afinidad"; +App::$strings["Filter"] = "Filtrar"; +App::$strings["Open Custom Filter section by default"] = "Abrir por defecto la sección de personalización de filtros"; +App::$strings["Approve this connection"] = "Aprobar esta conexión"; +App::$strings["Accept connection to allow communication"] = "Aceptar la conexión para permitir la comunicación"; +App::$strings["Set Affinity"] = "Ajustar la afinidad"; +App::$strings["Set Profile"] = "Ajustar el perfil"; +App::$strings["Set Affinity & Profile"] = "Ajustar la afinidad y el perfil"; +App::$strings["This connection is unreachable from this location."] = "No se puede acceder a la conexión desde este sitio."; +App::$strings["This connection may be unreachable from other channel locations."] = "Esta conexión puede ser inaccesible desde otras ubicaciones del canal."; +App::$strings["Location independence is not supported by their network."] = "La independencia de ubicación no es compatible con su red."; +App::$strings["This connection is unreachable from this location. Location independence is not supported by their network."] = "Esta conexión no es accesible desde este sitio. La independencia de ubicación no es compatible con su red."; +App::$strings["Connection requests will be approved without your interaction"] = "Las solicitudes de conexión serán aprobadas sin su intervención"; +App::$strings["This connection's primary address is"] = "La dirección primaria de esta conexión es"; +App::$strings["Available locations:"] = "Ubicaciones disponibles:"; +App::$strings["Connection Tools"] = "Gestión de las conexiones"; +App::$strings["Slide to adjust your degree of friendship"] = "Deslizar para ajustar el grado de amistad"; +App::$strings["Slide to adjust your rating"] = "Deslizar para ajustar su valoración"; +App::$strings["Optionally explain your rating"] = "Opcionalmente, puede explicar su valoración"; +App::$strings["Custom Filter"] = "Filtro personalizado"; +App::$strings["Only import posts with this text"] = "Importar solo entradas que contengan este texto"; +App::$strings["Do not import posts with this text"] = "No importar entradas que contengan este texto"; +App::$strings["This information is public!"] = "¡Esta información es pública!"; +App::$strings["Connection Pending Approval"] = "Conexión pendiente de aprobación"; +App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura."; +App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados."; +App::$strings["Last update:"] = "Última actualización:"; +App::$strings["Details"] = "Detalles"; +App::$strings["No more system notifications."] = "No hay más notificaciones del sistema"; +App::$strings["System Notifications"] = "Notificaciones del sistema"; +App::$strings["Mark all seen"] = "Marcar todo como visto"; +App::$strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche"; +App::$strings["Layout Description"] = "Descripción de la plantilla"; +App::$strings["Download PDL file"] = "Descargar el fichero PDL"; +App::$strings["Location not found."] = "Dirección no encontrada."; +App::$strings["Location lookup failed."] = "Ha fallado la búsqueda de la dirección."; +App::$strings["Please select another location to become primary before removing the primary location."] = "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal."; +App::$strings["Syncing locations"] = "Sincronizando ubicaciones"; +App::$strings["No locations found."] = "No encontrada ninguna dirección."; +App::$strings["Manage Channel Locations"] = "Gestionar las direcciones del canal"; +App::$strings["Sync Now"] = "Sincronizar ahora"; +App::$strings["Please wait several minutes between consecutive operations."] = "Por favor, espere algunos minutos entre operaciones consecutivas."; +App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal."; +App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo."; +App::$strings["Failed to create source. No channel selected."] = "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal."; +App::$strings["Source created."] = "Fuente creada."; +App::$strings["Source updated."] = "Fuente actualizada."; +App::$strings["Sources App"] = "App de Fuentes"; +App::$strings["Automatically import channel content from other channels or feeds"] = "Importar automáticamente contenido de otros canales o \"feeds\""; +App::$strings["*"] = "*"; +App::$strings["Channel Sources"] = "Orígenes de los contenidos del canal"; +App::$strings["Manage remote sources of content for your channel."] = "Gestionar contenido de origen remoto para su canal."; +App::$strings["New Source"] = "Nueva fuente"; +App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes."; +App::$strings["Only import content with these words (one per line)"] = "Importar solo contenido que contenga estas palabras (una por línea)"; +App::$strings["Leave blank to import all public content"] = "Dejar en blanco para importar todo el contenido público"; +App::$strings["Channel Name"] = "Nombre del canal"; +App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)"; +App::$strings["Resend posts with this channel as author"] = "Reenviar mensajes con este canal como autor"; +App::$strings["Copyrights may apply"] = "Se pueden aplicar los derechos de autor"; +App::$strings["Source not found."] = "Fuente no encontrada"; +App::$strings["Edit Source"] = "Editar fuente"; +App::$strings["Delete Source"] = "Eliminar fuente"; +App::$strings["Source removed"] = "Fuente eliminada"; +App::$strings["Unable to remove source."] = "No se puede eliminar la fuente."; +App::$strings["Select a bookmark folder"] = "Seleccionar una carpeta de marcadores"; +App::$strings["Save Bookmark"] = "Guardar marcador"; +App::$strings["URL of bookmark"] = "Dirección del marcador"; +App::$strings["Or enter new bookmark folder name"] = "O introduzca un nuevo nombre para la carpeta de marcadores"; +App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."; +App::$strings["__ctx:permcat__ default"] = "por defecto"; +App::$strings["__ctx:permcat__ follower"] = "seguidor"; +App::$strings["__ctx:permcat__ contributor"] = "contribuidor"; +App::$strings["__ctx:permcat__ publisher"] = "editor"; +App::$strings["Likes %1\$s's %2\$s"] = "Gusta de %2\$sde %1\$s"; +App::$strings["Doesn't like %1\$s's %2\$s"] = "No le gusta %2\$sde %1\$s"; +App::$strings["Will attend %1\$s's %2\$s"] = "Asistirá %2\$sde %1\$s"; +App::$strings["Will not attend %1\$s's %2\$s"] = "No asistirá %2\$sde %1\$s"; +App::$strings["May attend %1\$s's %2\$s"] = "Puede asistir %2\$sde %1\$s"; +App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname"; +App::$strings["Thank You,"] = "Gracias,"; +App::$strings["This email was sent by %1\$s at %2\$s."] = "Este email ha sido enviado por %1\$s a %2\$s."; +App::$strings["To stop receiving these messages, please adjust your Notification Settings at %s"] = "Para dejar de recibir estos mensajes, por favor ajuste la configuración de notificación en %s"; +App::$strings["To stop receiving these messages, please adjust your %s."] = "Para dejar de recibir estos mensajes, por favor, ajuste su %s"; +App::$strings["%s <!item_type!>"] = "%s <!item_type!>"; +App::$strings["[\$Projectname:Notify] New mail received at %s"] = "[\$Projectname:Aviso] Nuevo correo recibido en %s"; +App::$strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s le ha enviado un nuevo mensaje privado en %2\$s."; +App::$strings["%1\$s sent you %2\$s."] = "%1\$s le ha enviado %2\$s."; +App::$strings["a private message"] = "un mensaje privado"; +App::$strings["Please visit %s to view and/or reply to your private messages."] = "Por favor visite %s para ver y/o responder a su mensaje privado."; +App::$strings["commented on"] = "ha comentado sobre "; +App::$strings["liked"] = "ha gustado de "; +App::$strings["disliked"] = "no ha gustado de "; +App::$strings["%1\$s %2\$s [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s%2\$s [zrl=%3\$s ]un %4\$s[/zrl]"; +App::$strings["%1\$s %2\$s [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s %2\$s[zrl=%3\$s]%5\$s de %4\$s[/zrl]"; +App::$strings["%1\$s %2\$s [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s %2\$s [zrl=%3\$s]su %4\$s[/zrl]"; +App::$strings["[\$Projectname:Notify] Moderated Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] Comentario moderado en la conversación #%1\$d por %2\$s"; +App::$strings["[\$Projectname:Notify] Comment to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] Nuevo comentario de %2\$s en la conversación #%1\$d"; +App::$strings["%1\$s commented on an item/conversation you have been following."] = "%1\$sha comentado un elemento/conversación que ha estado siguiendo."; +App::$strings["Please visit %s to view and/or reply to the conversation."] = "Para ver o comentar la conversación, visite %s"; +App::$strings["Please visit %s to approve or reject this comment."] = "Por favor, visite %s para aprobar o rechazar este comentario."; +App::$strings["%1\$s liked [zrl=%2\$s]your %3\$s[/zrl]"] = "A %1\$sle ha gustado [zrl=%2\$s]su %3\$s [/zrl]"; +App::$strings["[\$Projectname:Notify] Like received to conversation #%1\$d by %2\$s"] = "[\$Projectname:Aviso] \"Me gusta\" de %2\$s en la conversación #%1\$d"; +App::$strings["%1\$s liked an item/conversation you created."] = "A %1\$s le ha gustado un elemento o conversación que ha creado usted."; +App::$strings["[\$Projectname:Notify] %s posted to your profile wall"] = "[\$Projectname:Aviso] %s ha publicado una entrada en su página de inicio del perfil (\"muro\")"; +App::$strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s ha publicado en su muro en %2\$s"; +App::$strings["%1\$s posted to [zrl=%2\$s]your wall[/zrl]"] = "%1\$sha publicado en [zrl=%2\$s]su muro[/zrl]"; +App::$strings["[\$Projectname:Notify] %s tagged you"] = "[\$Projectname:Aviso] %s le ha etiquetado"; +App::$strings["%1\$s tagged you at %2\$s"] = "%1\$sle ha etiquetado en %2\$s"; +App::$strings["%1\$s [zrl=%2\$s]tagged you[/zrl]."] = "%1\$s [zrl=%2\$s]le ha etiquetado[/zrl]."; +App::$strings["[\$Projectname:Notify] %1\$s poked you"] = "[\$Projectname:Aviso] %1\$s le ha dado un toque"; +App::$strings["%1\$s poked you at %2\$s"] = "%1\$sle ha dado un toque en %2\$s"; +App::$strings["%1\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s [zrl=%2\$s] le ha dado un toque[/zrl]."; +App::$strings["[\$Projectname:Notify] %s tagged your post"] = "[\$Projectname:Aviso] %s ha etiquetado su entrada"; +App::$strings["%1\$s tagged your post at %2\$s"] = "%1\$sha etiquetado su entrada en %2\$s"; +App::$strings["%1\$s tagged [zrl=%2\$s]your post[/zrl]"] = "%1\$s ha etiquetado [zrl=%2\$s]su entrada[/zrl]"; +App::$strings["[\$Projectname:Notify] Introduction received"] = "[\$Projectname:Aviso] Ha recibido una solicitud de conexión"; +App::$strings["You've received an new connection request from '%1\$s' at %2\$s"] = "Ha recibido una nueva solicitud de conexión de '%1\$s' en %2\$s"; +App::$strings["You've received [zrl=%1\$s]a new connection request[/zrl] from %2\$s."] = "Ha recibido [zrl=%1\$s]una nueva solicitud de conexión[/zrl] de %2\$s."; +App::$strings["You may visit their profile at %s"] = "Puede visitar su perfil en %s"; +App::$strings["Please visit %s to approve or reject the connection request."] = "Por favor, visite %s para permitir o rechazar la solicitad de conexión."; +App::$strings["[\$Projectname:Notify] Friend suggestion received"] = "[\$Projectname:Aviso] Ha recibido una sugerencia de conexión"; +App::$strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Ha recibido una sugerencia de amistad de '%1\$s' en %2\$s"; +App::$strings["You've received [zrl=%1\$s]a friend suggestion[/zrl] for %2\$s from %3\$s."] = "Ha recibido [zrl=%1\$s]una sugerencia de amistad[/zrl] para %2\$s de %3\$s."; +App::$strings["Name:"] = "Nombre:"; +App::$strings["Photo:"] = "Foto:"; +App::$strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprobar o rechazar la sugerencia."; +App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Aviso]"; +App::$strings["created a new post"] = "ha creado una nueva entrada"; +App::$strings["commented on %s's post"] = "ha comentado la entrada de %s"; +App::$strings["repeated %s's post"] = "repetida la entrada de %s"; +App::$strings["edited a post dated %s"] = "ha editado una entrada con fecha de %s"; +App::$strings["edited a comment dated %s"] = "ha editado un comentario con fecha de %s"; +App::$strings["Missing room name"] = "Sala de chat sin nombre"; +App::$strings["Duplicate room name"] = "Nombre de sala duplicado."; +App::$strings["Invalid room specifier."] = "Especificador de sala no válido."; +App::$strings["Room not found."] = "Sala no encontrada."; +App::$strings["Room is full"] = "La sala está llena."; +App::$strings["Wiki updated successfully"] = "El wiki se ha actualizado con éxito"; +App::$strings["Wiki files deleted successfully"] = "Se han borrado con éxito los ficheros del wiki"; +App::$strings["Apps"] = "Aplicaciones (apps)"; +App::$strings["Affinity Tool"] = "Herramienta de afinidad"; +App::$strings["Site Admin"] = "Administrador del sitio"; +App::$strings["Content Filter"] = "Filtro de contenido"; +App::$strings["Remote Diagnostics"] = "Diagnóstico remoto"; +App::$strings["Suggest Channels"] = "Sugerir canales"; +App::$strings["Stream"] = "Stream"; +App::$strings["Mail"] = "Correo"; +App::$strings["Chat"] = "Chat"; +App::$strings["Probe"] = "Probar"; +App::$strings["Suggest"] = "Sugerir"; +App::$strings["Random Channel"] = "Canal aleatorio"; +App::$strings["Invite"] = "Invitar"; +App::$strings["Post"] = "Publicación"; +App::$strings["Notifications"] = "Notificaciones"; +App::$strings["Order Apps"] = "Ordenar las apps"; +App::$strings["CardDAV"] = "CardDAV"; +App::$strings["Guest Access"] = "Acceso para invitados"; +App::$strings["OAuth Apps Manager"] = "Administrador de apps OAuth"; +App::$strings["OAuth2 Apps Manager"] = "Administrador de apps OAuth2"; +App::$strings["PDL Editor"] = "Editor PDL"; +App::$strings["Premium Channel"] = "Canal premium"; +App::$strings["My Chatrooms"] = "Mis salas de chat"; +App::$strings["Channel Export"] = "Exportar canal"; +App::$strings["Purchase"] = "Comprar"; +App::$strings["Undelete"] = "Recuperar"; +App::$strings["Add to app-tray"] = "Añadir a la bandeja de aplicaciones"; +App::$strings["Remove from app-tray"] = "Quitar de la bandeja de aplicaciones"; +App::$strings["Pin to navbar"] = "Fijar en la barra de navegación"; +App::$strings["Unpin from navbar"] = "Quitar de la barra de navegación"; +App::$strings["0. Beginner/Basic"] = "0. Principiante/Básico"; +App::$strings["1. Novice - not skilled but willing to learn"] = "1. Novato: no cualificado, pero dispuesto a aprender"; +App::$strings["2. Intermediate - somewhat comfortable"] = "2. Intermedio - algo cómodo"; +App::$strings["3. Advanced - very comfortable"] = "3. Avanzado - muy cómodo"; +App::$strings["4. Expert - I can write computer code"] = "4. Experto - Puedo escribir código informático"; +App::$strings["5. Wizard - I probably know more than you do"] = "5. Colaborador - probablemente sé más que tú"; +App::$strings["(No Title)"] = "(Sin título)"; +App::$strings["Wiki page create failed."] = "Se ha producido un error en la creación de la página wiki."; +App::$strings["Wiki not found."] = "No se ha encontrado el wiki."; +App::$strings["Destination name already exists"] = "El nombre de destino ya existe"; +App::$strings["Page not found"] = "No se ha encontrado la página"; +App::$strings["Error reading page content"] = "Se ha producido un error al leer el contenido de la página"; +App::$strings["Error reading wiki"] = "Se ha producido un error al leer el wiki"; +App::$strings["Page update failed."] = "Se ha producido un error al actualizar la página."; +App::$strings["Nothing deleted"] = "No se ha eliminado nada"; +App::$strings["Compare: object not found."] = "No se ha encontrado un objeto para comparar."; +App::$strings["Page updated"] = "Se ha actualizado la página"; +App::$strings["Untitled"] = "Sin título"; +App::$strings["Wiki resource_id required for git commit"] = "Se necesita Wiki resource_id para el git commit"; +App::$strings["Privacy conflict. Discretion advised."] = "Conflicto de privacidad. Se aconseja discreción."; +App::$strings["Admin Delete"] = "Eliminar admin"; +App::$strings["I will attend"] = "Participaré"; +App::$strings["I will not attend"] = "No participaré"; +App::$strings["I might attend"] = "Quizá participe"; +App::$strings["I agree"] = "Estoy de acuerdo"; +App::$strings["I disagree"] = "No estoy de acuerdo"; +App::$strings["I abstain"] = "Me abstengo"; +App::$strings["Add Tag"] = "Añadir etiqueta"; +App::$strings["Reply on this comment"] = "Responder a este comentario"; +App::$strings["reply"] = "responder"; +App::$strings["Reply to"] = "Responder a "; +App::$strings["Share This"] = "Compartir esto"; +App::$strings["share"] = "compartir"; +App::$strings["Delivery Report"] = "Informe de transmisión"; +App::$strings["%d comment"] = array( + 0 => "%d comentario", + 1 => "%d comentarios", ); -App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s"; -App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s"; -App::$strings["Remote authentication"] = "Acceder desde su servidor"; -App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio"; -App::$strings["Manage your channels"] = "Gestionar sus canales"; -App::$strings["Manage your privacy groups"] = "Gestionar sus grupos de canales"; -App::$strings["Account/Channel Settings"] = "Ajustes de cuenta/canales"; -App::$strings["End this session"] = "Finalizar esta sesión"; -App::$strings["Your profile page"] = "Su página del perfil"; -App::$strings["Manage/Edit profiles"] = "Administrar/editar perfiles"; -App::$strings["Sign in"] = "Acceder"; -App::$strings["Take me home"] = "Volver a la página principal"; -App::$strings["Log me out of this site"] = "Salir de este sitio"; -App::$strings["Create an account"] = "Crear una cuenta"; -App::$strings["Help and documentation"] = "Ayuda y documentación"; -App::$strings["Search site @name, !forum, #tag, ?docs, content"] = "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido"; -App::$strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio"; -App::$strings["@name, !forum, #tag, ?doc, content"] = "@nombre, !foro, #tag, ?docs, contenido"; -App::$strings["Please wait..."] = "Espere por favor…"; -App::$strings["Add Apps"] = "Añadir aplicaciones"; -App::$strings["Arrange Apps"] = "Organizar aplicaciones"; -App::$strings["Toggle System Apps"] = "Alternar aplicaciones de sistema"; -App::$strings["Status Messages and Posts"] = "Mensajes de estado y publicaciones"; -App::$strings["Profile Details"] = "Detalles del perfil"; -App::$strings["Photo Albums"] = "Álbumes de fotos"; -App::$strings["Files and Storage"] = "Ficheros y repositorio"; -App::$strings["Saved Bookmarks"] = "Marcadores guardados"; -App::$strings["View Cards"] = "Ver las fichas"; -App::$strings["View Articles"] = "Ver los artículos"; -App::$strings["View Webpages"] = "Ver páginas web"; -App::$strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio"; -App::$strings["Image file is empty."] = "El fichero de imagen está vacío. "; -App::$strings["Photo storage failed."] = "La foto no ha podido ser guardada."; -App::$strings["a new photo"] = "una nueva foto"; -App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s"; -App::$strings["Upload New Photos"] = "Subir nuevas fotos"; -App::$strings["Invalid data packet"] = "Paquete de datos no válido"; -App::$strings["invalid target signature"] = "La firma recibida no es válida"; -App::$strings["New window"] = "Nueva ventana"; -App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte"; -App::$strings["Delegation session ended."] = "Finalizó la sesión de la delegación."; -App::$strings["Logged out."] = "Desconectado/a."; -App::$strings["Email validation is incomplete. Please check your email."] = "La validación del correo electrónico está incompleta. Por favor, compruebe su correo electrónico."; -App::$strings["Failed authentication"] = "Autenticación fallida."; -App::$strings["Help:"] = "Ayuda:"; -App::$strings["Not Found"] = "No encontrado"; +App::$strings["View %s's profile - %s"] = "Ver el perfil de %s - %s"; +App::$strings["to"] = "a"; +App::$strings["via"] = "mediante"; +App::$strings["Wall-to-Wall"] = "De página del perfil a página del perfil (de \"muro\" a \"muro\")"; +App::$strings["via Wall-To-Wall:"] = "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")"; +App::$strings["Attend"] = "Participar o asistir"; +App::$strings["Attendance Options"] = "Opciones de participación o asistencia"; +App::$strings["Vote"] = "Votar"; +App::$strings["Voting Options"] = "Opciones de votación"; +App::$strings["Go to previous comment"] = "Ir al comentario anterior"; +App::$strings["Add to Calendar"] = "Añadir al calendario"; +App::$strings["Image"] = "Imagen"; +App::$strings["Insert Link"] = "Insertar enlace"; +App::$strings["Video"] = "Vídeo"; +App::$strings["Your full name (required)"] = "Su nombre completo (requerido)"; +App::$strings["Your email address (required)"] = "Su dirección de correo electrónico (requerido)"; +App::$strings["Your website URL (optional)"] = "La URL de su sitio web (opcional)"; +App::$strings["Source code of failed update: "] = "Código fuente de la actualización fallida: "; +App::$strings["Update Error at %s"] = "Error de actualización en %s"; +App::$strings["Update %s failed. See error logs."] = "La actualización %s ha fallado. Mire el informe de errores."; +App::$strings["Public"] = "Público"; +App::$strings["Anybody in the \$Projectname network"] = "Cualquiera en la red \$Projectname"; +App::$strings["Any account on %s"] = "Cualquier cuenta en %s"; +App::$strings["Any of my connections"] = "Cualquiera de mis conexiones"; +App::$strings["Only connections I specifically allow"] = "Sólo las conexiones que yo permita de forma explícita"; +App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)"; +App::$strings["Any connections including those who haven't yet been approved"] = "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas"; +App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones."; +App::$strings["This is your default setting for who can view your default channel profile"] = "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado"; +App::$strings["This is your default setting for who can view your connections"] = "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones"; +App::$strings["This is your default setting for who can view your file storage and photos"] = "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos"; +App::$strings["This is your default setting for the audience of your webpages"] = "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web"; +App::$strings["Social Networking"] = "Redes sociales"; +App::$strings["Social - Federation"] = "Social - Federación"; +App::$strings["Social - Mostly Public"] = "Social - Público en su mayor parte"; +App::$strings["Social - Restricted"] = "Social - Restringido"; +App::$strings["Social - Private"] = "Social - Privado"; +App::$strings["Community Forum"] = "Foro de discusión"; +App::$strings["Forum - Mostly Public"] = "Foro - Público en su mayor parte"; +App::$strings["Forum - Restricted"] = "Foro - Restringido"; +App::$strings["Forum - Private"] = "Foro - Privado"; +App::$strings["Feed Republish"] = "Republicar un \"feed\""; +App::$strings["Feed - Mostly Public"] = "Feed - Público en su mayor parte"; +App::$strings["Feed - Restricted"] = "Feed - Restringido"; +App::$strings["Special Purpose"] = "Propósito especial"; +App::$strings["Special - Celebrity/Soapbox"] = "Especial - Celebridad / Tribuna improvisada"; +App::$strings["Special - Group Repository"] = "Especial - Repositorio de grupo"; +App::$strings["Custom/Expert Mode"] = "Modo personalizado/experto"; +App::$strings["Can view my channel stream and posts"] = "Pueden verse la actividad y publicaciones de mi canal"; +App::$strings["Can send me their channel stream and posts"] = "Se me pueden enviar entradas y contenido de un canal"; +App::$strings["Can view my default channel profile"] = "Puede verse mi perfil de canal predeterminado."; +App::$strings["Can view my connections"] = "Pueden verse mis conexiones"; +App::$strings["Can view my file storage and photos"] = "Pueden verse mi repositorio de ficheros y mis fotos"; +App::$strings["Can upload/modify my file storage and photos"] = "Se pueden subir / modificar elementos en mi repositorio de ficheros y fotos"; +App::$strings["Can view my channel webpages"] = "Pueden verse las páginas personales de mi canal"; +App::$strings["Can view my wiki pages"] = "Pueden verse mis páginas wiki"; +App::$strings["Can create/edit my channel webpages"] = "Pueden crearse / modificarse páginas personales en mi canal"; +App::$strings["Can write to my wiki pages"] = "Se pueden modificar las páginas de mi wiki"; +App::$strings["Can post on my channel (wall) page"] = "Pueden crearse entradas en mi página de inicio del canal (“muro”)"; +App::$strings["Can comment on or like my posts"] = "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'."; +App::$strings["Can send me private mail messages"] = "Se me pueden enviar mensajes privados"; +App::$strings["Can like/dislike profiles and profile things"] = "Se puede mostrar agrado o desagrado (Me gusta / No me gusta) en mis perfiles y sus distintos apartados"; +App::$strings["Can forward to all my channel connections via ! mentions in posts"] = "Pueden reenviarse publicaciones a todas las conexiones de mi canal a través de ! menciones en las entradas"; +App::$strings["Can chat with me"] = "Se puede chatear conmigo"; +App::$strings["Can source my public posts in derived channels"] = "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados"; +App::$strings["Can administer my channel"] = "Se puede administrar mi canal"; +App::$strings["parent"] = "padre"; +App::$strings["Principal"] = "Principal"; +App::$strings["Addressbook"] = "Libreta de direcciones"; +App::$strings["Schedule Inbox"] = "Programar bandeja de entrada"; +App::$strings["Schedule Outbox"] = "Programar bandeja de salida"; +App::$strings["Total"] = "Total"; +App::$strings["Shared"] = "Compartido"; +App::$strings["Add Files"] = "Añadir ficheros"; +App::$strings["You are using %1\$s of your available file storage."] = "Está usando %1\$s de su espacio disponible para ficheros."; +App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s%)"] = "Está usando %1\$s de %2\$s que tiene a su disposición para ficheros. (%3\$s%)"; +App::$strings["WARNING:"] = "ATENCIÓN: "; +App::$strings["Create new folder"] = "Crear nueva carpeta"; +App::$strings["Upload file"] = "Subir fichero"; +App::$strings["Drop files here to immediately upload"] = "Arrastre los ficheros aquí para subirlos de forma inmediata"; +App::$strings["Create an account to access services and applications"] = "Crear una cuenta para acceder a los servicios y aplicaciones"; +App::$strings["Login/Email"] = "Inicio de sesión / Correo electrónico"; +App::$strings["Password"] = "Contraseña"; +App::$strings["Remember me"] = "Recordarme"; +App::$strings["Forgot your password?"] = "¿Olvidó su contraseña?"; +App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Error SSL del sitio web en %s"; +App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificado SSL del sitio web no es válido. Por favor, solucione el problema."; +App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Las tareas de Cron no están funcionando en %s"; +App::$strings["Cron/Scheduled tasks not running."] = "Las tareas del Planificador/Cron no están funcionando."; -- cgit v1.2.3 From 004861fbb726353ff804921332af7cf371db14e3 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 25 Nov 2019 08:41:34 +0000 Subject: merge opengraph fixes from dev --- Zotlabs/Module/Articles.php | 2 +- Zotlabs/Module/Channel.php | 17 ++++-- include/opengraph.php | 123 +++++++++++++++++++++----------------------- 3 files changed, 74 insertions(+), 68 deletions(-) diff --git a/Zotlabs/Module/Articles.php b/Zotlabs/Module/Articles.php index e3ad54be8..2c43b4764 100644 --- a/Zotlabs/Module/Articles.php +++ b/Zotlabs/Module/Articles.php @@ -211,7 +211,7 @@ class Articles extends Controller { } // Add Opengraph markup - opengraph_add_meta(((! empty($items)) ? $r[0] : array()), App::$profile); + opengraph_add_meta((! empty($items) ? $r[0] : []), $channel); $mode = 'articles'; diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index 3f617fd18..d975ac1bf 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -110,8 +110,20 @@ class Channel extends Controller { // Run profile_load() here to make sure the theme is set before // we start loading content - profile_load($which,$profile); + + // Add Opengraph markup + $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : ''); + if(strpos($mid,'b64.') === 0) + $mid = @base64url_decode(substr($mid,4)); + + if($mid) + $r = q("SELECT * FROM item WHERE mid = '%s' AND uid = %d AND item_private = 0 LIMIT 1", + dbesc($mid), + intval($channel['channel_id']) + ); + + opengraph_add_meta($r ? $r[0] : [], $channel); } function get($update = 0, $load = false) { @@ -375,9 +387,6 @@ class Channel extends Controller { $items = array(); } - // Add Opengraph markup - opengraph_add_meta((isset($decoded) && (! empty($items)) ? $r[0] : array()), App::$profile); - if((! $update) && (! $load)) { if($decoded) diff --git a/include/opengraph.php b/include/opengraph.php index 9de021d54..4c88570d3 100644 --- a/include/opengraph.php +++ b/include/opengraph.php @@ -3,73 +3,70 @@ * @file include/opengraph.php * @brief Add Opengraph metadata and related functions. */ - - + + /** * @brief Adds Opengraph meta tags into HTML head * * @param array $item - * @param array $profile + * @param array $channel * */ - - function opengraph_add_meta($item, $profile) { - - if(! empty($item)) { - - if(! empty($item['title'])) - $ogtitle = $item['title']; - - // find first image if exist - if(preg_match("/\[[zi]mg(=[0-9]+x[0-9]+)?\]([^\[]+)/is", $item['body'], $matches)) { - $ogimage = $matches[2]; - $ogimagetype = guess_image_type($ogimage); - } - - // use summary as description if exist - $ogdesc = (empty($item['summary']) ? $item['body'] : $item['summary'] ); - - $ogdesc = str_replace("#^[", "[", $ogdesc); - - $ogdesc = bbcode($ogdesc, [ 'tryoembed' => false ]); - $ogdesc = trim(html2plain($ogdesc, 0, true)); - $ogdesc = html_entity_decode($ogdesc, ENT_QUOTES, 'UTF-8'); - - // remove all URLs - $ogdesc = preg_replace("/https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@]+/", "", $ogdesc); - - // shorten description - $ogdesc = substr($ogdesc, 0, 300); - $ogdesc = str_replace("\n", " ", $ogdesc); - while (strpos($ogdesc, " ") !== false) - $ogdesc = str_replace(" ", " ", $ogdesc); - $ogdesc = (strlen($ogdesc) < 298 ? $ogdesc : rtrim(substr($ogdesc, 0, strrpos($ogdesc, " ")), "?.,:;!-") . "..."); - - $ogtype = "article"; - } - - $channel = channelx_by_n($profile['profile_uid']); - - if(! isset($ogdesc)) { - if($profile['about'] && perm_is_allowed($channel['channel_id'],get_observer_hash(),'view_profile')) { - $ogdesc = $profile['about']; - } - else { - $ogdesc = sprintf( t('This is the home page of %s.'), $channel['channel_name']); - } - } - - if(! isset($ogimage)) { - $ogimage = $channel['xchan_photo_l']; - $ogimagetype = $channel['xchan_photo_mimetype']; - } - - App::$page['htmlhead'] .= '<meta property="og:title" content="' . htmlspecialchars((isset($ogtitle) ? $ogtitle : $channel['channel_name'])) . '">' . "\r\n"; - App::$page['htmlhead'] .= '<meta property="og:image" content="' . $ogimage . '">' . "\r\n"; - App::$page['htmlhead'] .= '<meta property="og:image:type" content="' . $ogimagetype . '">' . "\r\n"; - App::$page['htmlhead'] .= '<meta property="og:description" content="' . htmlspecialchars($ogdesc) . '">' . "\r\n"; - App::$page['htmlhead'] .= '<meta property="og:type" content="' . (isset($ogtype) ? $ogtype : "profile") . '">' . "\r\n"; - - return true; + + function opengraph_add_meta($item, $channel) { + + if(! empty($item)) { + + if(! empty($item['title'])) + $ogtitle = $item['title']; + + // find first image if exist + if(preg_match("/\[[zi]mg(=[0-9]+x[0-9]+)?\]([^\[]+)/is", $item['body'], $matches)) { + $ogimage = $matches[2]; + $ogimagetype = guess_image_type($ogimage); + } + + // use summary as description if exist + $ogdesc = (empty($item['summary']) ? $item['body'] : $item['summary'] ); + + $ogdesc = str_replace("#^[", "[", $ogdesc); + + $ogdesc = bbcode($ogdesc, [ 'tryoembed' => false ]); + $ogdesc = trim(html2plain($ogdesc, 0, true)); + $ogdesc = html_entity_decode($ogdesc, ENT_QUOTES, 'UTF-8'); + + // remove all URLs + $ogdesc = preg_replace("/https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@]+/", "", $ogdesc); + + // shorten description + $ogdesc = substr($ogdesc, 0, 300); + $ogdesc = str_replace("\n", " ", $ogdesc); + while (strpos($ogdesc, " ") !== false) + $ogdesc = str_replace(" ", " ", $ogdesc); + $ogdesc = (strlen($ogdesc) < 298 ? $ogdesc : rtrim(substr($ogdesc, 0, strrpos($ogdesc, " ")), "?.,:;!-") . "..."); + + $ogtype = "article"; + } + + if(! isset($ogdesc)) { + if(App::$profile['about'] && perm_is_allowed($channel['channel_id'],get_observer_hash(),'view_profile')) { + $ogdesc = App::$profile['about']; + } + else { + $ogdesc = sprintf( t('This is the home page of %s.'), $channel['channel_name']); + } + } + + if(! isset($ogimage)) { + $ogimage = $channel['xchan_photo_l']; + $ogimagetype = $channel['xchan_photo_mimetype']; + } + + App::$page['htmlhead'] .= '<meta property="og:title" content="' . htmlspecialchars((isset($ogtitle) ? $ogtitle : $channel['channel_name'])) . '">' . "\r\n"; + App::$page['htmlhead'] .= '<meta property="og:image" content="' . $ogimage . '">' . "\r\n"; + App::$page['htmlhead'] .= '<meta property="og:image:type" content="' . $ogimagetype . '">' . "\r\n"; + App::$page['htmlhead'] .= '<meta property="og:description" content="' . htmlspecialchars($ogdesc) . '">' . "\r\n"; + App::$page['htmlhead'] .= '<meta property="og:type" content="' . (isset($ogtype) ? $ogtype : "profile") . '">' . "\r\n"; + + return true; } - \ No newline at end of file -- cgit v1.2.3 From 17cd452fff337166b1ec3b974379c2dd62151d87 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 25 Nov 2019 11:32:22 +0000 Subject: changelog (cherry picked from commit f6f7e7e8d2a9045ac2010ab2308ef7bc5e896efa) --- CHANGELOG | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index d97314674..bc87c3ec9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,70 @@ +Hubzilla 4.6 (2019-11-??) + - Improve opengraph support for channels + - Add opengraph support for articles + - Update abook_connected for RSS feeds only if handle_feed() returned success + - Do not embed PDF files by default but allow to enabled this feature in security options + - Check if file exists before we include it in the router + - Update jquery to version 3.4.1 + - Update composer libraries + - Remove old and unused javascript libraries + - Improved BBcode to Markdown conversion + - Introduce inline SVG support via BBcode + - Sanitize title on Atom/RSS feed import + - Improved HTTP headers cache support for photos + - Add date headers to signed headers + - Add check if item['tag'] is an array + - Add hook comments_are_now_closed for addons to override date based comment closure + - Change mysql schema for item.llink and item.plink for new installs from char(191) to text + - Improved photo cache expiration + - Improved plural function processing on translation strings creation from .po file with util/po2php utlility + - Improved support for CDN/Infrastructure caching (especially profile images) + - New japanese translation + - Add connect button for non-zot networks not connected in current location + - Allow to send forum channels wall2wall or sent by mentions post to external sites via addons + - Allow addons to process forum posts published through mentions + - Improved internal routing for ActivityPub messages + - Improved admin documentation + - Add ITEM_TYPE_CUSTOM and hooks to permit addons to create and distribute custom item types + - Support "comment policy" in Zot6 communications + - Add selected text as quote on reply if comment button is used + - Add more nofollow tags to links to discourage backlink farmers + - Improved conversion of emoji reactions from zot to zot6 + - Add CardDAV/CalDAV autodiscovery + - Label source project of zotfeed since it is not completely compatible across projects + - Update homeinstall script + + Bugfixes + - Fix wildcard tag issue + - Fix duplicate attachment in jot fileupload + - Fix regression with audio file upload + - Fix can not edit menu name or title (#1402) + - Fix pagination encoding issue for some server setups + - Fix Zap->Hubzilla event title compatibility + - Fix event timezones for Zot6 + - Fix missing summary in mod article_edit + - Fix PHP warning failed to write session data using user defined save handler + - Fix possible thumbnails distortion on rebuild with util/thumbrepair utility + - Fix issues with image import to zot6 + - Fix attachment permissions on clonned channels sync + - Fix entries without sitekey returned from DB in queue_deliver() and Lib/Queue + + Addons + - Livejournal: add link to original post option + - Flashcards: update to version 2.06 + - Pubcrawl: compatibility changes to support pixelfed + - Cart: update paypal button to API v2 + - Photocache: rework for speed and lower memory consumption + - Photocache: etag support for cached photos + - Photocache: purge cache on addon uninstall + - Openstreetmap: fix regression if no default values set + - Livejournal: allow send posts from non channel owner + - Pubcrawl: fix event timezones + - Pubcrawl: better ActivityPub channel URL detection + - Pubcrawl: fix comments delivery for other channels on the same hub + - New addon "workflow" with initial basic "issue tracker" capability + + + Hubzilla 4.4.1 (2019-08-16) - Fix wrong profile photo displayed when previewing and editing profiles - Fix regression from 4.4 which prevented encrypted signatures from being used for encrypted messages -- cgit v1.2.3 From 5e442396570f6ec0ec9f27f209ef9d40e95d114a Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Mon, 25 Nov 2019 13:16:07 +0000 Subject: Add daily cached embedded content cleanup (cherry picked from commit 5c47c9ed9579dc97e0a508045fe50264bb96490b) --- Zotlabs/Daemon/Cron_daily.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php index dbfcff439..b0eefe93a 100644 --- a/Zotlabs/Daemon/Cron_daily.php +++ b/Zotlabs/Daemon/Cron_daily.php @@ -88,6 +88,12 @@ class Cron_daily { z6_discover(); call_hooks('cron_daily',datetime_convert()); + + // Clean up emdeded contect cache + q("DELETE FROM cache WHERE updated < %s - INTERVAL %s", + db_utcnow(), + db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY') + ); set_config('system','last_expire_day',intval(datetime_convert('UTC','UTC','now','d'))); -- cgit v1.2.3 From 7899ed6f69cbd1d16862295c4499d35ddbcefd8a Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Mon, 25 Nov 2019 13:32:58 +0000 Subject: Revert "Add daily cached embedded content cleanup" This reverts commit 5c47c9ed9579dc97e0a508045fe50264bb96490b (cherry picked from commit 38de059156f9a6ec63727d47a96d1b15e96e3b47) --- Zotlabs/Daemon/Cron_daily.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php index b0eefe93a..dbfcff439 100644 --- a/Zotlabs/Daemon/Cron_daily.php +++ b/Zotlabs/Daemon/Cron_daily.php @@ -88,12 +88,6 @@ class Cron_daily { z6_discover(); call_hooks('cron_daily',datetime_convert()); - - // Clean up emdeded contect cache - q("DELETE FROM cache WHERE updated < %s - INTERVAL %s", - db_utcnow(), - db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY') - ); set_config('system','last_expire_day',intval(datetime_convert('UTC','UTC','now','d'))); -- cgit v1.2.3 From 63aa3948e5b4a02abdb1531b2dee990d134351fd Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Mon, 25 Nov 2019 21:50:02 +0100 Subject: resolve merge conflict --- Zotlabs/Daemon/Cron_daily.php | 5 +++++ Zotlabs/Lib/Cache.php | 13 ++++--------- doc/hidden_configs.bb | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php index dbfcff439..eebdb0229 100644 --- a/Zotlabs/Daemon/Cron_daily.php +++ b/Zotlabs/Daemon/Cron_daily.php @@ -44,6 +44,11 @@ class Cron_daily { db_utcnow(), db_quoteinterval('1 YEAR') ); + // Clean up emdedded content cache + q("DELETE FROM cache WHERE updated < %s - INTERVAL %s", + db_utcnow(), + db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY') + ); //update statistics in config require_once('include/statistics_fns.php'); diff --git a/Zotlabs/Lib/Cache.php b/Zotlabs/Lib/Cache.php index cea075659..878201a42 100644 --- a/Zotlabs/Lib/Cache.php +++ b/Zotlabs/Lib/Cache.php @@ -11,8 +11,10 @@ class Cache { $hash = hash('whirlpool',$key); - $r = q("SELECT v FROM cache WHERE k = '%s' limit 1", - dbesc($hash) + $r = q("SELECT v FROM cache WHERE k = '%s' AND updated > %s - INTERVAL %s LIMIT 1", + dbesc($hash), + db_utcnow(), + db_quoteinterval(get_config('system','object_cache_days', '30') . ' DAY') ); if ($r) @@ -40,12 +42,5 @@ class Cache { dbesc(datetime_convert())); } } - - - public static function clear() { - q("DELETE FROM cache WHERE updated < '%s'", - dbesc(datetime_convert('UTC','UTC',"now - 30 days"))); - } - } diff --git a/doc/hidden_configs.bb b/doc/hidden_configs.bb index 361aa94ba..37c2a4cb6 100644 --- a/doc/hidden_configs.bb +++ b/doc/hidden_configs.bb @@ -73,6 +73,7 @@ Options are: [*= system.max_tagged_forums ] Spam prevention. Limits the number of tagged forums which are recognised in any post. Default is 2. Only the first 'n' tags will be delivered as forums, the others will not cause any delivery. [*= system.minimum_feedcheck_minutes ] The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob. Defaults to 60 if not set. The site setting can also be over-ridden on a channel by channel basis by a service class setting aptly named 'minimum_feedcheck_minutes'. [*= system.no_age_restriction ] Do not restrict registration to people over the age of 13. This carries legal responsibilities in many countries to require that age be provided and to block all personal information from minors, so please check your local laws before changing. + [*= system.object_cache_days] Set how long is cached embedded content can be used without refetching. Default is 30 days. [*= system.openssl_conf_file ] Specify a file containing OpenSSL configuration. Needed in some Windows installations to locate the openssl configuration file on the system. Read the code first. If you can't read the code, don't play with it. [*= system.openssl_encrypt ] Use openssl encryption engine, default is false (uses mcrypt for AES encryption) [*= system.optimize_items ] Runs optimise_table during some tasks to keep your database nice and defragmented. This comes at a performance cost while the operations are running, but also keeps things a bit faster while it's not. There also exist CLI utilities for performing this operation, which you may prefer, especially if you're a large site. -- cgit v1.2.3 From f992feb71c424c115e81431326db7bd1e344e866 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 25 Nov 2019 21:06:12 +0000 Subject: update changelog (cherry picked from commit fcb065bcb2f8e61d1d9e804f8f251967732ee037) --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index bc87c3ec9..e5a85c7a0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -34,6 +34,7 @@ Hubzilla 4.6 (2019-11-??) - Update homeinstall script Bugfixes + - Fix once cached embedded content is used and stored forever - Fix wildcard tag issue - Fix duplicate attachment in jot fileupload - Fix regression with audio file upload -- cgit v1.2.3 From 60827bdcc4078cf925f265dc9446c6fabf2a1d8b Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Mon, 25 Nov 2019 21:22:17 +0000 Subject: Update Russian hmessages.po (cherry picked from commit 8ea7c08f43473560519ab3637022db6c31beec39) --- view/ru/hmessages.po | 1295 ++++++++++++++++++++++++++------------------------ 1 file changed, 679 insertions(+), 616 deletions(-) diff --git a/view/ru/hmessages.po b/view/ru/hmessages.po index 9a605217e..40a120e02 100644 --- a/view/ru/hmessages.po +++ b/view/ru/hmessages.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: hubzilla\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-07 22:56+0200\n" -"PO-Revision-Date: 2019-11-07 22:59+0200\n" +"POT-Creation-Date: 2019-11-25 20:34+0200\n" +"PO-Revision-Date: 2019-11-25 20:39+0200\n" "Last-Translator: Max Kostikov <max@kostikov.co>\n" "Language-Team: Russian (http://www.transifex.com/Friendica/hubzilla/language/ru/)\n" "MIME-Version: 1.0\n" @@ -22,8 +22,8 @@ msgstr "" msgid "Source channel not found." msgstr "Канал-источник не найден." -#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3229 -#: ../../Zotlabs/Module/Admin/Site.php:187 +#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3252 +#: ../../Zotlabs/Module/Admin/Site.php:185 msgid "Default" msgstr "По умолчанию" @@ -65,9 +65,9 @@ msgstr "Фокус (по умолчанию Hubzilla)" #: ../../Zotlabs/Module/Admin/Features.php:66 #: ../../Zotlabs/Module/Admin/Logs.php:84 #: ../../Zotlabs/Module/Admin/Channels.php:147 -#: ../../Zotlabs/Module/Admin/Security.php:112 +#: ../../Zotlabs/Module/Admin/Security.php:120 #: ../../Zotlabs/Module/Admin/Addons.php:442 -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:287 #: ../../Zotlabs/Module/Admin/Profs.php:178 #: ../../Zotlabs/Module/Admin/Themes.php:158 #: ../../Zotlabs/Module/Admin/Accounts.php:168 @@ -82,17 +82,17 @@ msgstr "Фокус (по умолчанию Hubzilla)" #: ../../Zotlabs/Module/Import_items.php:129 #: ../../Zotlabs/Widget/Wiki_pages.php:42 #: ../../Zotlabs/Widget/Wiki_pages.php:99 -#: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Lib/ThreadItem.php:796 +#: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Lib/ThreadItem.php:807 #: ../../extend/addon/hzaddons/jappixmini/Mod_Jappixmini.php:261 #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:115 -#: ../../extend/addon/hzaddons/cart/cart.php:1264 +#: ../../extend/addon/hzaddons/cart/cart.php:1258 #: ../../extend/addon/hzaddons/cart/Settings/Cart.php:114 -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:248 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:250 #: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:410 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:640 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:642 #: ../../extend/addon/hzaddons/irc/irc.php:45 #: ../../extend/addon/hzaddons/frphotos/frphotos.php:97 -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:78 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:82 #: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:67 #: ../../extend/addon/hzaddons/likebanner/likebanner.php:57 #: ../../extend/addon/hzaddons/logrot/logrot.php:35 @@ -105,7 +105,7 @@ msgstr "Фокус (по умолчанию Hubzilla)" #: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:251 #: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:306 #: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:73 -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:213 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:217 #: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:51 #: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:65 #: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:102 @@ -128,10 +128,10 @@ msgstr "Фокус (по умолчанию Hubzilla)" #: ../../extend/addon/hzaddons/mailtest/mailtest.php:100 #: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:53 #: ../../extend/addon/hzaddons/workflow/Settings/Mod_WorkflowSettings.php:94 -#: ../../extend/addon/hzaddons/workflow/workflow.php:1256 -#: ../../extend/addon/hzaddons/workflow/workflow.php:1302 -#: ../../extend/addon/hzaddons/workflow/workflow.php:1399 -#: ../../extend/addon/hzaddons/workflow/workflow.php:2398 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1396 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1442 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1563 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2639 #: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:86 #: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:55 #: ../../extend/addon/hzaddons/flattrwidget/Mod_Flattrwidget.php:92 @@ -161,7 +161,7 @@ msgstr "Узкая панель навигации" #: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Menu.php:163 #: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Mitem.php:176 #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 -#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:255 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:253 #: ../../Zotlabs/Module/Connedit.php:406 ../../Zotlabs/Module/Connedit.php:796 #: ../../Zotlabs/Module/Wiki.php:227 ../../Zotlabs/Module/Wiki.php:228 #: ../../Zotlabs/Module/Import.php:635 ../../Zotlabs/Module/Import.php:639 @@ -175,21 +175,24 @@ msgstr "Узкая панель навигации" #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:94 #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:98 #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:102 -#: ../../extend/addon/hzaddons/cart/cart.php:1258 +#: ../../extend/addon/hzaddons/cart/cart.php:1252 #: ../../extend/addon/hzaddons/cart/Settings/Cart.php:59 #: ../../extend/addon/hzaddons/cart/Settings/Cart.php:71 #: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:63 -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254 -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:256 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:260 #: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:153 #: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:425 +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:88 +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:96 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:87 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:95 #: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:64 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:646 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:650 -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:62 -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:66 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:648 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:652 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:63 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:67 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:71 #: ../../extend/addon/hzaddons/content_import/Mod_content_import.php:137 #: ../../extend/addon/hzaddons/content_import/Mod_content_import.php:138 #: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:260 @@ -226,7 +229,7 @@ msgstr "Нет" #: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Menu.php:163 #: ../../Zotlabs/Module/Menu.php:222 ../../Zotlabs/Module/Mitem.php:176 #: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256 -#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:257 +#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:255 #: ../../Zotlabs/Module/Connedit.php:406 ../../Zotlabs/Module/Wiki.php:227 #: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Import.php:635 #: ../../Zotlabs/Module/Import.php:639 ../../Zotlabs/Module/Import.php:640 @@ -240,21 +243,24 @@ msgstr "Нет" #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:94 #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:98 #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:102 -#: ../../extend/addon/hzaddons/cart/cart.php:1258 +#: ../../extend/addon/hzaddons/cart/cart.php:1252 #: ../../extend/addon/hzaddons/cart/Settings/Cart.php:59 #: ../../extend/addon/hzaddons/cart/Settings/Cart.php:71 #: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:63 -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254 -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:256 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:260 #: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:153 #: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:425 +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:88 +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:96 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:87 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:95 #: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:64 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:646 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:650 -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:62 -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:66 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:648 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:652 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:63 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:67 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:71 #: ../../extend/addon/hzaddons/content_import/Mod_content_import.php:137 #: ../../extend/addon/hzaddons/content_import/Mod_content_import.php:138 #: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:260 @@ -439,8 +445,8 @@ msgstr "Неспецифический" #: ../../include/selectors.php:60 ../../include/selectors.php:77 #: ../../include/selectors.php:115 ../../include/selectors.php:151 #: ../../include/connections.php:735 ../../include/connections.php:742 -#: ../../include/event.php:1382 ../../include/event.php:1389 -#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Profiles.php:795 +#: ../../include/event.php:1392 ../../include/event.php:1399 +#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Profiles.php:795 #: ../../Zotlabs/Module/Connedit.php:935 #: ../../Zotlabs/Access/PermissionRoles.php:306 msgid "Other" @@ -644,7 +650,7 @@ msgstr "Спроси меня" #: ../../Zotlabs/Module/Item.php:417 ../../Zotlabs/Module/Item.php:436 #: ../../Zotlabs/Module/Item.php:446 ../../Zotlabs/Module/Item.php:1315 #: ../../Zotlabs/Module/Achievements.php:34 -#: ../../Zotlabs/Module/Display.php:451 ../../Zotlabs/Module/Poke.php:157 +#: ../../Zotlabs/Module/Display.php:452 ../../Zotlabs/Module/Poke.php:157 #: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101 #: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Profiles.php:198 #: ../../Zotlabs/Module/Profiles.php:635 ../../Zotlabs/Module/Photos.php:69 @@ -671,8 +677,8 @@ msgstr "Спроси меня" #: ../../Zotlabs/Module/Filestorage.php:160 #: ../../Zotlabs/Module/Editblock.php:67 #: ../../Zotlabs/Module/Service_limits.php:11 -#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Channel.php:169 -#: ../../Zotlabs/Module/Channel.php:332 ../../Zotlabs/Module/Channel.php:371 +#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Channel.php:181 +#: ../../Zotlabs/Module/Channel.php:344 ../../Zotlabs/Module/Channel.php:383 #: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Bookmarks.php:70 #: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Menu.php:130 #: ../../Zotlabs/Module/Menu.php:141 ../../Zotlabs/Module/Setup.php:206 @@ -702,7 +708,7 @@ msgstr "Спроси меня" #: ../../extend/addon/hzaddons/pumpio/pumpio.php:44 #: ../../extend/addon/hzaddons/openid/Mod_Id.php:53 #: ../../extend/addon/hzaddons/keepout/keepout.php:36 -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:276 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:280 msgid "Permission denied." msgstr "Доступ запрещен." @@ -781,7 +787,7 @@ msgstr[0] "доступно %d приглашение" msgstr[1] "доступны %d приглашения" msgstr[2] "доступны %d приглашений" -#: ../../include/contact_widgets.php:16 ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../include/contact_widgets.php:16 ../../Zotlabs/Module/Admin/Site.php:291 msgid "Advanced" msgstr "Дополнительно" @@ -803,7 +809,7 @@ msgstr "Примеры: Владимир Ильич, Революционер" #: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:416 #: ../../Zotlabs/Module/Directory.php:421 -#: ../../Zotlabs/Module/Connections.php:358 +#: ../../Zotlabs/Module/Connections.php:381 msgid "Find" msgstr "Поиск" @@ -839,7 +845,7 @@ msgstr "Всё" #: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139 #: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409 #: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511 -#: ../../include/taxonomy.php:532 ../../Zotlabs/Module/Cdav.php:1095 +#: ../../include/taxonomy.php:532 ../../Zotlabs/Module/Cdav.php:1093 #: ../../Zotlabs/Widget/Appcategories.php:43 msgid "Categories" msgstr "Категории" @@ -861,9 +867,9 @@ msgstr "Просмотреть все %d общих контактов" #: ../../Zotlabs/Module/Admin/Profs.php:175 #: ../../Zotlabs/Module/Editwebpage.php:142 ../../Zotlabs/Module/Thing.php:266 #: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Group.php:252 -#: ../../Zotlabs/Module/Connections.php:298 -#: ../../Zotlabs/Module/Connections.php:339 -#: ../../Zotlabs/Module/Connections.php:359 +#: ../../Zotlabs/Module/Connections.php:320 +#: ../../Zotlabs/Module/Connections.php:362 +#: ../../Zotlabs/Module/Connections.php:382 #: ../../Zotlabs/Module/Card_edit.php:99 #: ../../Zotlabs/Module/Article_edit.php:98 ../../Zotlabs/Module/Blocks.php:160 #: ../../Zotlabs/Module/Wiki.php:211 ../../Zotlabs/Module/Wiki.php:384 @@ -966,7 +972,7 @@ msgstr "Редактировать видимость" #: ../../include/channel.php:1506 ../../include/conversation.php:1058 #: ../../include/connections.php:110 ../../Zotlabs/Module/Directory.php:353 -#: ../../Zotlabs/Module/Connections.php:326 ../../Zotlabs/Module/Suggest.php:71 +#: ../../Zotlabs/Module/Connections.php:349 ../../Zotlabs/Module/Suggest.php:71 #: ../../Zotlabs/Widget/Suggestions.php:46 ../../Zotlabs/Widget/Follow.php:32 msgid "Connect" msgstr "Подключить" @@ -1009,7 +1015,7 @@ msgstr "Полное имя:" msgid "Like this channel" msgstr "нравится этот канал" -#: ../../include/channel.php:1669 ../../include/conversation.php:1702 +#: ../../include/channel.php:1669 ../../include/conversation.php:1705 #: ../../include/taxonomy.php:659 ../../Zotlabs/Module/Photos.php:1135 #: ../../Zotlabs/Lib/ThreadItem.php:236 msgctxt "noun" @@ -1147,7 +1153,7 @@ msgstr "Проверка подлинности" msgid "Account '%s' deleted" msgstr "Аккаунт '%s' удален" -#: ../../include/message.php:13 ../../include/text.php:1791 +#: ../../include/message.php:13 ../../include/text.php:1811 msgid "Download binary/encrypted content" msgstr "Загрузить двоичное / зашифрованное содержимое" @@ -1167,16 +1173,20 @@ msgstr "[без темы]" msgid "Stored post could not be verified." msgstr "Сохранённая публикация не может быть проверена." -#: ../../include/markdown.php:202 ../../include/bbcode.php:366 +#: ../../include/markdown.php:202 ../../include/bbcode.php:384 #, php-format msgid "%1$s wrote the following %2$s %3$s" msgstr "%1$s была создана %2$s %3$s" -#: ../../include/markdown.php:204 ../../include/bbcode.php:362 +#: ../../include/markdown.php:204 ../../include/bbcode.php:380 #: ../../Zotlabs/Module/Tagger.php:77 msgid "post" msgstr "публикация" +#: ../../include/markdown.php:251 ../../include/bbcode.php:469 +msgid "spoiler" +msgstr "спойлер" + #: ../../include/items.php:435 ../../Zotlabs/Module/Dreport.php:10 #: ../../Zotlabs/Module/Dreport.php:82 ../../Zotlabs/Module/Share.php:71 #: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Like.php:301 @@ -1228,12 +1238,12 @@ msgid "Visible to specific connections." msgstr "Видно указанным контактам." #: ../../include/items.php:3719 ../../Zotlabs/Module/Display.php:45 -#: ../../Zotlabs/Module/Display.php:455 ../../Zotlabs/Module/Admin.php:62 +#: ../../Zotlabs/Module/Display.php:456 ../../Zotlabs/Module/Admin.php:62 #: ../../Zotlabs/Module/Filestorage.php:26 ../../Zotlabs/Module/Viewsrc.php:25 #: ../../Zotlabs/Module/Admin/Addons.php:260 #: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:94 -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:235 -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:236 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:239 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:240 msgid "Item not found." msgstr "Элемент не найден." @@ -1387,8 +1397,8 @@ msgstr "Использовать режим блога / списка" msgid "Comments will be displayed separately" msgstr "Комментарии будут отображаться отдельно" -#: ../../include/features.php:133 ../../include/text.php:1010 -#: ../../Zotlabs/Module/Connections.php:351 ../../Zotlabs/Lib/Apps.php:332 +#: ../../include/features.php:133 ../../include/text.php:1012 +#: ../../Zotlabs/Module/Connections.php:374 ../../Zotlabs/Lib/Apps.php:332 msgid "Connections" msgstr "Контакты" @@ -1551,7 +1561,7 @@ msgstr "Выбор канала навигации" msgid "Change channels directly from within the navigation dropdown menu" msgstr "Изменить канал напрямую из выпадающего меню" -#: ../../include/features.php:299 ../../Zotlabs/Module/Connections.php:310 +#: ../../include/features.php:299 ../../Zotlabs/Module/Connections.php:332 msgid "Network" msgstr "Сеть" @@ -1642,53 +1652,78 @@ msgstr "Несколько профилей" msgid "Ability to create multiple profiles" msgstr "Возможность создания нескольких профилей" -#: ../../include/text.php:520 +#: ../../include/text.php:522 msgid "prev" msgstr "предыдущий" -#: ../../include/text.php:522 +#: ../../include/text.php:524 msgid "first" msgstr "первый" -#: ../../include/text.php:551 +#: ../../include/text.php:553 msgid "last" msgstr "последний" -#: ../../include/text.php:554 +#: ../../include/text.php:556 msgid "next" msgstr "следующий" -#: ../../include/text.php:572 +#: ../../include/text.php:574 msgid "older" msgstr "старше" -#: ../../include/text.php:574 +#: ../../include/text.php:576 msgid "newer" msgstr "новее" -#: ../../include/text.php:998 +#: ../../include/text.php:1000 msgid "No connections" msgstr "Нет контактов" -#: ../../include/text.php:1030 +#: ../../include/text.php:1020 ../../Zotlabs/Module/Viewconnections.php:80 +#: ../../Zotlabs/Module/Connections.php:288 +msgid "Accepts" +msgstr "Принимает" + +#: ../../include/text.php:1023 ../../Zotlabs/Module/Viewconnections.php:83 +#: ../../Zotlabs/Module/Connections.php:291 +msgid "Comments" +msgstr "комментарии" + +#: ../../include/text.php:1028 ../../Zotlabs/Module/Viewconnections.php:88 +#: ../../Zotlabs/Module/Connections.php:296 +msgid "Stream items" +msgstr "публикации в потоке" + +#: ../../include/text.php:1033 ../../Zotlabs/Module/Viewconnections.php:93 +#: ../../Zotlabs/Module/Connections.php:301 +msgid "Wall posts" +msgstr "публикации на стене" + +#: ../../include/text.php:1037 ../../Zotlabs/Module/Viewconnections.php:97 +#: ../../Zotlabs/Module/Connections.php:305 +msgid "Nothing" +msgstr "ничего" + +#: ../../include/text.php:1049 #, php-format msgid "View all %s connections" msgstr "Просмотреть все %s контактов" -#: ../../include/text.php:1092 +#: ../../include/text.php:1112 #, php-format msgid "Network: %s" msgstr "Сеть: %s" -#: ../../include/text.php:1103 ../../include/text.php:1115 +#: ../../include/text.php:1123 ../../include/text.php:1135 #: ../../include/acl_selectors.php:118 ../../include/nav.php:186 -#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:355 +#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:378 #: ../../Zotlabs/Widget/Sitesearch.php:31 #: ../../Zotlabs/Widget/Activity_filter.php:151 ../../Zotlabs/Lib/Apps.php:352 msgid "Search" msgstr "Поиск" -#: ../../include/text.php:1104 ../../include/text.php:1116 +#: ../../include/text.php:1124 ../../include/text.php:1136 #: ../../Zotlabs/Module/Admin/Profs.php:94 #: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32 #: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53 @@ -1697,410 +1732,410 @@ msgstr "Поиск" msgid "Save" msgstr "Запомнить" -#: ../../include/text.php:1195 ../../include/text.php:1199 +#: ../../include/text.php:1215 ../../include/text.php:1219 msgid "poke" msgstr "Ткнуть" -#: ../../include/text.php:1195 ../../include/text.php:1199 +#: ../../include/text.php:1215 ../../include/text.php:1219 #: ../../include/conversation.php:251 msgid "poked" msgstr "ткнут" -#: ../../include/text.php:1200 +#: ../../include/text.php:1220 msgid "ping" msgstr "Пингануть" -#: ../../include/text.php:1200 +#: ../../include/text.php:1220 msgid "pinged" msgstr "Отпингован" -#: ../../include/text.php:1201 +#: ../../include/text.php:1221 msgid "prod" msgstr "Подтолкнуть" -#: ../../include/text.php:1201 +#: ../../include/text.php:1221 msgid "prodded" msgstr "Подтолкнут" -#: ../../include/text.php:1202 +#: ../../include/text.php:1222 msgid "slap" msgstr "Шлёпнуть" -#: ../../include/text.php:1202 +#: ../../include/text.php:1222 msgid "slapped" msgstr "Шлёпнут" -#: ../../include/text.php:1203 +#: ../../include/text.php:1223 msgid "finger" msgstr "Указать" -#: ../../include/text.php:1203 +#: ../../include/text.php:1223 msgid "fingered" msgstr "Указан" -#: ../../include/text.php:1204 +#: ../../include/text.php:1224 msgid "rebuff" msgstr "Дать отпор" -#: ../../include/text.php:1204 +#: ../../include/text.php:1224 msgid "rebuffed" msgstr "Дан отпор" -#: ../../include/text.php:1227 +#: ../../include/text.php:1247 msgid "happy" msgstr "счастливый" -#: ../../include/text.php:1228 +#: ../../include/text.php:1248 msgid "sad" msgstr "грустный" -#: ../../include/text.php:1229 +#: ../../include/text.php:1249 msgid "mellow" msgstr "спокойный" -#: ../../include/text.php:1230 +#: ../../include/text.php:1250 msgid "tired" msgstr "усталый" -#: ../../include/text.php:1231 +#: ../../include/text.php:1251 msgid "perky" msgstr "весёлый" -#: ../../include/text.php:1232 +#: ../../include/text.php:1252 msgid "angry" msgstr "сердитый" -#: ../../include/text.php:1233 +#: ../../include/text.php:1253 msgid "stupefied" msgstr "отупевший" -#: ../../include/text.php:1234 +#: ../../include/text.php:1254 msgid "puzzled" msgstr "недоумевающий" -#: ../../include/text.php:1235 +#: ../../include/text.php:1255 msgid "interested" msgstr "заинтересованный" -#: ../../include/text.php:1236 +#: ../../include/text.php:1256 msgid "bitter" msgstr "едкий" -#: ../../include/text.php:1237 +#: ../../include/text.php:1257 msgid "cheerful" msgstr "бодрый" -#: ../../include/text.php:1238 +#: ../../include/text.php:1258 msgid "alive" msgstr "энергичный" -#: ../../include/text.php:1239 +#: ../../include/text.php:1259 msgid "annoyed" msgstr "раздражённый" -#: ../../include/text.php:1240 +#: ../../include/text.php:1260 msgid "anxious" msgstr "обеспокоенный" -#: ../../include/text.php:1241 +#: ../../include/text.php:1261 msgid "cranky" msgstr "капризный" -#: ../../include/text.php:1242 +#: ../../include/text.php:1262 msgid "disturbed" msgstr "встревоженный" -#: ../../include/text.php:1243 +#: ../../include/text.php:1263 msgid "frustrated" msgstr "разочарованный" -#: ../../include/text.php:1244 +#: ../../include/text.php:1264 msgid "depressed" msgstr "подавленный" -#: ../../include/text.php:1245 +#: ../../include/text.php:1265 msgid "motivated" msgstr "мотивированный" -#: ../../include/text.php:1246 +#: ../../include/text.php:1266 msgid "relaxed" msgstr "расслабленный" -#: ../../include/text.php:1247 +#: ../../include/text.php:1267 msgid "surprised" msgstr "удивленный" -#: ../../include/text.php:1435 ../../include/js_strings.php:96 +#: ../../include/text.php:1455 ../../include/js_strings.php:96 msgid "Monday" msgstr "Понедельник" -#: ../../include/text.php:1435 ../../include/js_strings.php:97 +#: ../../include/text.php:1455 ../../include/js_strings.php:97 msgid "Tuesday" msgstr "Вторник" -#: ../../include/text.php:1435 ../../include/js_strings.php:98 +#: ../../include/text.php:1455 ../../include/js_strings.php:98 msgid "Wednesday" msgstr "Среда" -#: ../../include/text.php:1435 ../../include/js_strings.php:99 +#: ../../include/text.php:1455 ../../include/js_strings.php:99 msgid "Thursday" msgstr "Четверг" -#: ../../include/text.php:1435 ../../include/js_strings.php:100 +#: ../../include/text.php:1455 ../../include/js_strings.php:100 msgid "Friday" msgstr "Пятница" -#: ../../include/text.php:1435 ../../include/js_strings.php:101 +#: ../../include/text.php:1455 ../../include/js_strings.php:101 msgid "Saturday" msgstr "Суббота" -#: ../../include/text.php:1435 ../../include/js_strings.php:95 +#: ../../include/text.php:1455 ../../include/js_strings.php:95 msgid "Sunday" msgstr "Воскресенье" -#: ../../include/text.php:1439 ../../include/js_strings.php:71 +#: ../../include/text.php:1459 ../../include/js_strings.php:71 msgid "January" msgstr "Январь" -#: ../../include/text.php:1439 ../../include/js_strings.php:72 +#: ../../include/text.php:1459 ../../include/js_strings.php:72 msgid "February" msgstr "Февраль" -#: ../../include/text.php:1439 ../../include/js_strings.php:73 +#: ../../include/text.php:1459 ../../include/js_strings.php:73 msgid "March" msgstr "Март" -#: ../../include/text.php:1439 ../../include/js_strings.php:74 +#: ../../include/text.php:1459 ../../include/js_strings.php:74 msgid "April" msgstr "Апрель" -#: ../../include/text.php:1439 +#: ../../include/text.php:1459 msgid "May" msgstr "Май" -#: ../../include/text.php:1439 ../../include/js_strings.php:76 +#: ../../include/text.php:1459 ../../include/js_strings.php:76 msgid "June" msgstr "Июнь" -#: ../../include/text.php:1439 ../../include/js_strings.php:77 +#: ../../include/text.php:1459 ../../include/js_strings.php:77 msgid "July" msgstr "Июль" -#: ../../include/text.php:1439 ../../include/js_strings.php:78 +#: ../../include/text.php:1459 ../../include/js_strings.php:78 msgid "August" msgstr "Август" -#: ../../include/text.php:1439 ../../include/js_strings.php:79 +#: ../../include/text.php:1459 ../../include/js_strings.php:79 msgid "September" msgstr "Сентябрь" -#: ../../include/text.php:1439 ../../include/js_strings.php:80 +#: ../../include/text.php:1459 ../../include/js_strings.php:80 msgid "October" msgstr "Октябрь" -#: ../../include/text.php:1439 ../../include/js_strings.php:81 +#: ../../include/text.php:1459 ../../include/js_strings.php:81 msgid "November" msgstr "Ноябрь" -#: ../../include/text.php:1439 ../../include/js_strings.php:82 +#: ../../include/text.php:1459 ../../include/js_strings.php:82 msgid "December" msgstr "Декабрь" -#: ../../include/text.php:1513 +#: ../../include/text.php:1533 msgid "Unknown Attachment" msgstr "Неизвестное вложение" -#: ../../include/text.php:1515 ../../Zotlabs/Storage/Browser.php:293 +#: ../../include/text.php:1535 ../../Zotlabs/Storage/Browser.php:293 #: ../../Zotlabs/Module/Sharedwithme.php:106 msgid "Size" msgstr "Размер" -#: ../../include/text.php:1515 ../../include/feedutils.php:869 +#: ../../include/text.php:1535 ../../include/feedutils.php:870 msgid "unknown" msgstr "неизвестный" -#: ../../include/text.php:1551 +#: ../../include/text.php:1571 msgid "remove category" msgstr "удалить категорию" -#: ../../include/text.php:1627 +#: ../../include/text.php:1647 msgid "remove from file" msgstr "удалить из файла" -#: ../../include/text.php:1939 ../../Zotlabs/Module/Events.php:669 +#: ../../include/text.php:1959 ../../Zotlabs/Module/Events.php:669 msgid "Link to Source" msgstr "Ссылка на источник" -#: ../../include/text.php:1961 ../../include/language.php:423 +#: ../../include/text.php:1981 ../../include/language.php:423 msgid "default" msgstr "по умолчанию" -#: ../../include/text.php:1969 +#: ../../include/text.php:1989 msgid "Page layout" msgstr "Шаблон страницы" -#: ../../include/text.php:1969 +#: ../../include/text.php:1989 msgid "You can create your own with the layouts tool" msgstr "Вы можете создать свой собственный с помощью инструмента шаблонов" -#: ../../include/text.php:1979 ../../Zotlabs/Module/Wiki.php:217 +#: ../../include/text.php:1999 ../../Zotlabs/Module/Wiki.php:217 #: ../../Zotlabs/Module/Wiki.php:371 ../../Zotlabs/Widget/Wiki_pages.php:38 #: ../../Zotlabs/Widget/Wiki_pages.php:95 msgid "BBcode" msgstr "" -#: ../../include/text.php:1980 +#: ../../include/text.php:2000 msgid "HTML" msgstr "" -#: ../../include/text.php:1981 ../../Zotlabs/Module/Wiki.php:217 +#: ../../include/text.php:2001 ../../Zotlabs/Module/Wiki.php:217 #: ../../Zotlabs/Module/Wiki.php:371 ../../Zotlabs/Widget/Wiki_pages.php:38 #: ../../Zotlabs/Widget/Wiki_pages.php:95 #: ../../extend/addon/hzaddons/mdpost/mdpost.php:41 msgid "Markdown" msgstr "Разметка Markdown" -#: ../../include/text.php:1982 ../../Zotlabs/Module/Wiki.php:217 +#: ../../include/text.php:2002 ../../Zotlabs/Module/Wiki.php:217 #: ../../Zotlabs/Widget/Wiki_pages.php:38 #: ../../Zotlabs/Widget/Wiki_pages.php:95 msgid "Text" msgstr "Текст" -#: ../../include/text.php:1983 +#: ../../include/text.php:2003 msgid "Comanche Layout" msgstr "Шаблон Comanche" -#: ../../include/text.php:1988 +#: ../../include/text.php:2008 msgid "PHP" msgstr "" -#: ../../include/text.php:1997 +#: ../../include/text.php:2017 msgid "Page content type" msgstr "Тип содержимого страницы" -#: ../../include/text.php:2117 ../../include/conversation.php:116 +#: ../../include/text.php:2137 ../../include/conversation.php:116 #: ../../Zotlabs/Module/Tagger.php:69 ../../Zotlabs/Module/Like.php:392 -#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:2444 +#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:2450 #: ../../extend/addon/hzaddons/redphotos/redphotohelper.php:71 #: ../../extend/addon/hzaddons/pubcrawl/as.php:1699 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1592 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1596 msgid "photo" msgstr "фото" -#: ../../include/text.php:2120 ../../include/conversation.php:119 -#: ../../include/event.php:1213 ../../Zotlabs/Module/Tagger.php:73 +#: ../../include/text.php:2140 ../../include/conversation.php:119 +#: ../../include/event.php:1223 ../../Zotlabs/Module/Tagger.php:73 #: ../../Zotlabs/Module/Events.php:266 #: ../../Zotlabs/Module/Channel_calendar.php:213 #: ../../Zotlabs/Module/Like.php:394 msgid "event" msgstr "событие" -#: ../../include/text.php:2123 ../../include/conversation.php:144 +#: ../../include/text.php:2143 ../../include/conversation.php:144 #: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Subthread.php:112 -#: ../../Zotlabs/Lib/Activity.php:2444 +#: ../../Zotlabs/Lib/Activity.php:2450 #: ../../extend/addon/hzaddons/pubcrawl/as.php:1699 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1592 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1596 msgid "status" msgstr "статус" -#: ../../include/text.php:2125 ../../include/conversation.php:146 +#: ../../include/text.php:2145 ../../include/conversation.php:146 #: ../../Zotlabs/Module/Tagger.php:79 msgid "comment" msgstr "комментарий" -#: ../../include/text.php:2130 +#: ../../include/text.php:2150 msgid "activity" msgstr "активность" -#: ../../include/text.php:2231 +#: ../../include/text.php:2251 msgid "a-z, 0-9, -, and _ only" msgstr "Только a-z, 0-9, -, и _" -#: ../../include/text.php:2557 +#: ../../include/text.php:2577 msgid "Design Tools" msgstr "Инструменты дизайна" -#: ../../include/text.php:2560 ../../Zotlabs/Module/Blocks.php:154 +#: ../../include/text.php:2580 ../../Zotlabs/Module/Blocks.php:154 msgid "Blocks" msgstr "Блокировки" -#: ../../include/text.php:2561 ../../Zotlabs/Module/Menu.php:171 +#: ../../include/text.php:2581 ../../Zotlabs/Module/Menu.php:171 msgid "Menus" msgstr "Меню" -#: ../../include/text.php:2562 ../../Zotlabs/Module/Layouts.php:184 +#: ../../include/text.php:2582 ../../Zotlabs/Module/Layouts.php:184 msgid "Layouts" msgstr "Шаблоны" -#: ../../include/text.php:2563 +#: ../../include/text.php:2583 msgid "Pages" msgstr "Страницы" -#: ../../include/text.php:2575 +#: ../../include/text.php:2595 msgid "Import" msgstr "Импортировать" -#: ../../include/text.php:2576 +#: ../../include/text.php:2596 msgid "Import website..." msgstr "Импорт веб-сайта..." -#: ../../include/text.php:2577 +#: ../../include/text.php:2597 msgid "Select folder to import" msgstr "Выбрать каталог для импорта" -#: ../../include/text.php:2578 +#: ../../include/text.php:2598 msgid "Import from a zipped folder:" msgstr "Импортировать из каталога в zip-архиве:" -#: ../../include/text.php:2579 +#: ../../include/text.php:2599 msgid "Import from cloud files:" msgstr "Импортировать из сетевых файлов:" -#: ../../include/text.php:2580 +#: ../../include/text.php:2600 msgid "/cloud/channel/path/to/folder" msgstr "" -#: ../../include/text.php:2581 +#: ../../include/text.php:2601 msgid "Enter path to website files" msgstr "Введите путь к файлам веб-сайта" -#: ../../include/text.php:2582 +#: ../../include/text.php:2602 msgid "Select folder" msgstr "Выбрать каталог" -#: ../../include/text.php:2583 +#: ../../include/text.php:2603 msgid "Export website..." msgstr "Экспорт веб-сайта..." -#: ../../include/text.php:2584 +#: ../../include/text.php:2604 msgid "Export to a zip file" msgstr "Экспортировать в ZIP файл." -#: ../../include/text.php:2585 +#: ../../include/text.php:2605 msgid "website.zip" msgstr "" -#: ../../include/text.php:2586 +#: ../../include/text.php:2606 msgid "Enter a name for the zip file." msgstr "Введите имя для ZIP файла." -#: ../../include/text.php:2587 +#: ../../include/text.php:2607 msgid "Export to cloud files" msgstr "Эскпортировать в сетевые файлы:" -#: ../../include/text.php:2588 +#: ../../include/text.php:2608 msgid "/path/to/export/folder" msgstr "" -#: ../../include/text.php:2589 +#: ../../include/text.php:2609 msgid "Enter a path to a cloud files destination." msgstr "Введите путь к расположению сетевых файлов." -#: ../../include/text.php:2590 +#: ../../include/text.php:2610 msgid "Specify folder" msgstr "Указать каталог" -#: ../../include/text.php:2952 ../../Zotlabs/Storage/Browser.php:131 +#: ../../include/text.php:2975 ../../Zotlabs/Storage/Browser.php:131 msgid "Collection" msgstr "Коллекция" @@ -2305,83 +2340,79 @@ msgstr "Не найдено" msgid "Page not found." msgstr "Страница не найдена." -#: ../../include/opengraph.php:58 +#: ../../include/opengraph.php:56 #, php-format msgid "This is the home page of %s." msgstr "Это домашняя страница %s." -#: ../../include/bbcode.php:219 ../../include/bbcode.php:1214 -#: ../../include/bbcode.php:1217 ../../include/bbcode.php:1222 -#: ../../include/bbcode.php:1225 ../../include/bbcode.php:1228 -#: ../../include/bbcode.php:1231 ../../include/bbcode.php:1236 -#: ../../include/bbcode.php:1239 ../../include/bbcode.php:1244 -#: ../../include/bbcode.php:1247 ../../include/bbcode.php:1250 -#: ../../include/bbcode.php:1253 +#: ../../include/bbcode.php:221 ../../include/bbcode.php:1232 +#: ../../include/bbcode.php:1235 ../../include/bbcode.php:1240 +#: ../../include/bbcode.php:1243 ../../include/bbcode.php:1246 +#: ../../include/bbcode.php:1249 ../../include/bbcode.php:1254 +#: ../../include/bbcode.php:1257 ../../include/bbcode.php:1262 +#: ../../include/bbcode.php:1265 ../../include/bbcode.php:1268 +#: ../../include/bbcode.php:1271 msgid "Image/photo" msgstr "Изображение / фотография" -#: ../../include/bbcode.php:258 ../../include/bbcode.php:1264 +#: ../../include/bbcode.php:260 ../../include/bbcode.php:1282 msgid "Encrypted content" msgstr "Зашифрованное содержание" -#: ../../include/bbcode.php:274 +#: ../../include/bbcode.php:292 #, php-format msgid "Install %1$s element %2$s" msgstr "Установить %1$s элемент %2$s" -#: ../../include/bbcode.php:278 +#: ../../include/bbcode.php:296 #, php-format msgid "" "This post contains an installable %s element, however you lack permissions " "to install it on this site." msgstr "Эта публикация содержит устанавливаемый %s элемент, однако у вас нет разрешений для его установки на этом сайте." -#: ../../include/bbcode.php:288 ../../Zotlabs/Module/Impel.php:43 +#: ../../include/bbcode.php:306 ../../Zotlabs/Module/Impel.php:43 msgid "webpage" msgstr "веб-страница" -#: ../../include/bbcode.php:291 ../../Zotlabs/Module/Impel.php:53 +#: ../../include/bbcode.php:309 ../../Zotlabs/Module/Impel.php:53 msgid "layout" msgstr "шаблон" -#: ../../include/bbcode.php:294 ../../Zotlabs/Module/Impel.php:48 +#: ../../include/bbcode.php:312 ../../Zotlabs/Module/Impel.php:48 msgid "block" msgstr "заблокировать" -#: ../../include/bbcode.php:297 ../../Zotlabs/Module/Impel.php:60 +#: ../../include/bbcode.php:315 ../../Zotlabs/Module/Impel.php:60 msgid "menu" msgstr "меню" -#: ../../include/bbcode.php:358 +#: ../../include/bbcode.php:376 msgid "card" msgstr "карточка" -#: ../../include/bbcode.php:360 +#: ../../include/bbcode.php:378 msgid "article" msgstr "статья" -#: ../../include/bbcode.php:443 ../../include/bbcode.php:451 +#: ../../include/bbcode.php:461 ../../include/bbcode.php:469 msgid "Click to open/close" msgstr "Нажмите, чтобы открыть/закрыть" -#: ../../include/bbcode.php:451 -msgid "spoiler" -msgstr "спойлер" - -#: ../../include/bbcode.php:464 +#: ../../include/bbcode.php:482 msgid "View article" msgstr "Просмотр статьи" -#: ../../include/bbcode.php:464 +#: ../../include/bbcode.php:482 msgid "View summary" msgstr "Просмотр резюме" -#: ../../include/bbcode.php:754 ../../include/bbcode.php:924 +#: ../../include/bbcode.php:772 ../../include/bbcode.php:942 #: ../../Zotlabs/Lib/NativeWikiPage.php:603 msgid "Different viewers will see this text differently" msgstr "Различные зрители увидят этот текст по-разному" -#: ../../include/bbcode.php:1202 +#: ../../include/bbcode.php:1220 msgid "$1 wrote:" msgstr "$1 писал:" @@ -2390,15 +2421,15 @@ msgid "channel" msgstr "канал" #: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:447 -#: ../../Zotlabs/Lib/Activity.php:2479 +#: ../../Zotlabs/Lib/Activity.php:2485 #: ../../extend/addon/hzaddons/pubcrawl/as.php:1736 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1532 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1536 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "%1$s нравится %3$s %2$s" #: ../../include/conversation.php:163 ../../Zotlabs/Module/Like.php:449 -#: ../../Zotlabs/Lib/Activity.php:2481 +#: ../../Zotlabs/Lib/Activity.php:2487 #: ../../extend/addon/hzaddons/pubcrawl/as.php:1738 #, php-format msgid "%1$s doesn't like %2$s's %3$s" @@ -2430,7 +2461,7 @@ msgctxt "mood" msgid "%1$s is %2$s" msgstr "%1$s %2$s" -#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:468 +#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:480 msgid "This is an unsaved preview" msgstr "Это несохранённый просмотр" @@ -2479,8 +2510,8 @@ msgid "Select" msgstr "Выбрать" #: ../../include/conversation.php:691 ../../include/conversation.php:736 -#: ../../Zotlabs/Storage/Browser.php:297 ../../Zotlabs/Module/Cdav.php:1081 -#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Profiles.php:800 +#: ../../Zotlabs/Storage/Browser.php:297 ../../Zotlabs/Module/Cdav.php:1079 +#: ../../Zotlabs/Module/Cdav.php:1390 ../../Zotlabs/Module/Profiles.php:800 #: ../../Zotlabs/Module/Photos.php:1178 ../../Zotlabs/Module/Oauth.php:174 #: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editlayout.php:138 #: ../../Zotlabs/Module/Editblock.php:139 @@ -2490,7 +2521,7 @@ msgstr "Выбрать" #: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Thing.php:267 #: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Connedit.php:668 #: ../../Zotlabs/Module/Connedit.php:940 -#: ../../Zotlabs/Module/Connections.php:306 +#: ../../Zotlabs/Module/Connections.php:328 #: ../../Zotlabs/Module/Card_edit.php:129 #: ../../Zotlabs/Module/Article_edit.php:128 #: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Lib/Apps.php:558 @@ -2516,7 +2547,7 @@ msgstr "Подпись сообщения неверная" #: ../../include/conversation.php:735 #: ../../Zotlabs/Module/Admin/Accounts.php:173 -#: ../../Zotlabs/Module/Connections.php:320 +#: ../../Zotlabs/Module/Connections.php:342 msgid "Approve" msgstr "Утвердить" @@ -2533,17 +2564,17 @@ msgstr "Категории:" msgid "Filed under:" msgstr "Хранить под:" -#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:401 +#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:413 #, php-format msgid "from %s" msgstr "от %s" -#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:404 +#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:416 #, php-format msgid "last edited: %s" msgstr "последнее редактирование: %s" -#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:405 +#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:417 #, php-format msgid "Expires: %s" msgstr "Срок действия: %s" @@ -2553,7 +2584,7 @@ msgid "View in context" msgstr "Показать в контексте" #: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1076 -#: ../../Zotlabs/Lib/ThreadItem.php:469 +#: ../../Zotlabs/Lib/ThreadItem.php:481 msgid "Please wait" msgstr "Подождите пожалуйста" @@ -2620,22 +2651,22 @@ msgstr "Ткнуть" #: ../../Zotlabs/Module/Embedphotos.php:174 #: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84 #: ../../Zotlabs/Lib/Apps.php:1114 ../../Zotlabs/Lib/Apps.php:1198 -#: ../../Zotlabs/Lib/Activity.php:1192 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1077 +#: ../../Zotlabs/Lib/Activity.php:1198 +#: ../../extend/addon/hzaddons/pubcrawl/as.php:1087 msgid "Unknown" msgstr "Неизвестный" -#: ../../include/conversation.php:1212 +#: ../../include/conversation.php:1215 #, php-format msgid "%s likes this." msgstr "%s нравится это." -#: ../../include/conversation.php:1212 +#: ../../include/conversation.php:1215 #, php-format msgid "%s doesn't like this." msgstr "%s не нравится это." -#: ../../include/conversation.php:1216 +#: ../../include/conversation.php:1219 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgid_plural "<span %1$s>%2$d people</span> like this." @@ -2643,7 +2674,7 @@ msgstr[0] "<span %1$s>%2$d человеку</span> это нравится." msgstr[1] "<span %1$s>%2$d человекам</span> это нравится." msgstr[2] "<span %1$s>%2$d человекам</span> это нравится." -#: ../../include/conversation.php:1218 +#: ../../include/conversation.php:1221 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgid_plural "<span %1$s>%2$d people</span> don't like this." @@ -2651,11 +2682,11 @@ msgstr[0] "<span %1$s>%2$d человеку</span> это не нравится msgstr[1] "<span %1$s>%2$d человекам</span> это не нравится." msgstr[2] "<span %1$s>%2$d человекам</span> это не нравится." -#: ../../include/conversation.php:1224 +#: ../../include/conversation.php:1227 msgid "and" msgstr "и" -#: ../../include/conversation.php:1227 +#: ../../include/conversation.php:1230 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" @@ -2663,27 +2694,27 @@ msgstr[0] ", и ещё %d человеку" msgstr[1] ", и ещё %d человекам" msgstr[2] ", и ещё %d человекам" -#: ../../include/conversation.php:1228 +#: ../../include/conversation.php:1231 #, php-format msgid "%s like this." msgstr "%s нравится это." -#: ../../include/conversation.php:1228 +#: ../../include/conversation.php:1231 #, php-format msgid "%s don't like this." msgstr "%s не нравится это." -#: ../../include/conversation.php:1285 +#: ../../include/conversation.php:1288 #: ../../extend/addon/hzaddons/hsse/hsse.php:82 msgid "Set your location" msgstr "Задать своё местоположение" -#: ../../include/conversation.php:1286 +#: ../../include/conversation.php:1289 #: ../../extend/addon/hzaddons/hsse/hsse.php:83 msgid "Clear browser location" msgstr "Очистить местоположение из браузера" -#: ../../include/conversation.php:1298 ../../Zotlabs/Module/Mail.php:292 +#: ../../include/conversation.php:1301 ../../Zotlabs/Module/Mail.php:292 #: ../../Zotlabs/Module/Mail.php:435 ../../Zotlabs/Module/Chat.php:222 #: ../../Zotlabs/Module/Editblock.php:116 #: ../../Zotlabs/Module/Editwebpage.php:143 @@ -2693,80 +2724,80 @@ msgstr "Очистить местоположение из браузера" msgid "Insert web link" msgstr "Вставить веб-ссылку" -#: ../../include/conversation.php:1302 +#: ../../include/conversation.php:1305 #: ../../extend/addon/hzaddons/hsse/hsse.php:99 msgid "Embed (existing) photo from your photo albums" msgstr "Встроить (существующее) фото из вашего фотоальбома" -#: ../../include/conversation.php:1337 ../../Zotlabs/Module/Mail.php:245 +#: ../../include/conversation.php:1340 ../../Zotlabs/Module/Mail.php:245 #: ../../Zotlabs/Module/Mail.php:366 ../../Zotlabs/Module/Chat.php:220 #: ../../extend/addon/hzaddons/hsse/hsse.php:134 msgid "Please enter a link URL:" msgstr "Пожалуйста введите URL ссылки:" -#: ../../include/conversation.php:1338 +#: ../../include/conversation.php:1341 #: ../../extend/addon/hzaddons/hsse/hsse.php:135 msgid "Tag term:" msgstr "Теги:" -#: ../../include/conversation.php:1339 +#: ../../include/conversation.php:1342 #: ../../extend/addon/hzaddons/hsse/hsse.php:136 msgid "Where are you right now?" msgstr "Где вы сейчас?" -#: ../../include/conversation.php:1342 ../../Zotlabs/Module/Cover_photo.php:436 +#: ../../include/conversation.php:1345 ../../Zotlabs/Module/Cover_photo.php:436 #: ../../Zotlabs/Module/Profile_photo.php:507 ../../Zotlabs/Module/Wiki.php:403 #: ../../extend/addon/hzaddons/hsse/hsse.php:139 msgid "Choose images to embed" msgstr "Выбрать изображения для встраивания" -#: ../../include/conversation.php:1343 ../../Zotlabs/Module/Cover_photo.php:437 +#: ../../include/conversation.php:1346 ../../Zotlabs/Module/Cover_photo.php:437 #: ../../Zotlabs/Module/Profile_photo.php:508 ../../Zotlabs/Module/Wiki.php:404 #: ../../extend/addon/hzaddons/hsse/hsse.php:140 msgid "Choose an album" msgstr "Выбрать альбом" -#: ../../include/conversation.php:1344 +#: ../../include/conversation.php:1347 #: ../../extend/addon/hzaddons/hsse/hsse.php:141 msgid "Choose a different album..." msgstr "Выбрать другой альбом..." -#: ../../include/conversation.php:1345 ../../Zotlabs/Module/Cover_photo.php:439 +#: ../../include/conversation.php:1348 ../../Zotlabs/Module/Cover_photo.php:439 #: ../../Zotlabs/Module/Profile_photo.php:510 ../../Zotlabs/Module/Wiki.php:406 #: ../../extend/addon/hzaddons/hsse/hsse.php:142 msgid "Error getting album list" msgstr "Ошибка получения списка альбомов" -#: ../../include/conversation.php:1346 ../../Zotlabs/Module/Cover_photo.php:440 +#: ../../include/conversation.php:1349 ../../Zotlabs/Module/Cover_photo.php:440 #: ../../Zotlabs/Module/Profile_photo.php:511 ../../Zotlabs/Module/Wiki.php:407 #: ../../extend/addon/hzaddons/hsse/hsse.php:143 msgid "Error getting photo link" msgstr "Ошибка получения ссылки на фотографию" -#: ../../include/conversation.php:1347 ../../Zotlabs/Module/Cover_photo.php:441 +#: ../../include/conversation.php:1350 ../../Zotlabs/Module/Cover_photo.php:441 #: ../../Zotlabs/Module/Profile_photo.php:512 ../../Zotlabs/Module/Wiki.php:408 #: ../../extend/addon/hzaddons/hsse/hsse.php:144 msgid "Error getting album" msgstr "Ошибка получения альбома" -#: ../../include/conversation.php:1348 +#: ../../include/conversation.php:1351 #: ../../extend/addon/hzaddons/hsse/hsse.php:145 msgid "Comments enabled" msgstr "Комментарии включены" -#: ../../include/conversation.php:1349 +#: ../../include/conversation.php:1352 #: ../../extend/addon/hzaddons/hsse/hsse.php:146 msgid "Comments disabled" msgstr "Комментарии отключены" -#: ../../include/conversation.php:1359 ../../Zotlabs/Module/Photos.php:1097 +#: ../../include/conversation.php:1362 ../../Zotlabs/Module/Photos.php:1097 #: ../../Zotlabs/Module/Events.php:486 ../../Zotlabs/Module/Webpages.php:262 -#: ../../Zotlabs/Lib/ThreadItem.php:806 +#: ../../Zotlabs/Lib/ThreadItem.php:817 #: ../../extend/addon/hzaddons/hsse/hsse.php:153 msgid "Preview" msgstr "Предварительный просмотр" -#: ../../include/conversation.php:1392 ../../Zotlabs/Module/Photos.php:1075 +#: ../../include/conversation.php:1395 ../../Zotlabs/Module/Photos.php:1075 #: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Module/Blocks.php:161 #: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194 #: ../../Zotlabs/Widget/Cdav.php:136 @@ -2774,53 +2805,53 @@ msgstr "Предварительный просмотр" msgid "Share" msgstr "Поделиться" -#: ../../include/conversation.php:1401 +#: ../../include/conversation.php:1404 #: ../../extend/addon/hzaddons/hsse/hsse.php:195 msgid "Page link name" msgstr "Название ссылки на страницу " -#: ../../include/conversation.php:1404 +#: ../../include/conversation.php:1407 #: ../../extend/addon/hzaddons/hsse/hsse.php:198 msgid "Post as" msgstr "Опубликовать как" -#: ../../include/conversation.php:1406 ../../Zotlabs/Lib/ThreadItem.php:797 +#: ../../include/conversation.php:1409 ../../Zotlabs/Lib/ThreadItem.php:808 #: ../../extend/addon/hzaddons/hsse/hsse.php:200 msgid "Bold" msgstr "Жирный" -#: ../../include/conversation.php:1407 ../../Zotlabs/Lib/ThreadItem.php:798 +#: ../../include/conversation.php:1410 ../../Zotlabs/Lib/ThreadItem.php:809 #: ../../extend/addon/hzaddons/hsse/hsse.php:201 msgid "Italic" msgstr "Курсив" -#: ../../include/conversation.php:1408 ../../Zotlabs/Lib/ThreadItem.php:799 +#: ../../include/conversation.php:1411 ../../Zotlabs/Lib/ThreadItem.php:810 #: ../../extend/addon/hzaddons/hsse/hsse.php:202 msgid "Underline" msgstr "Подчеркнутый" -#: ../../include/conversation.php:1409 ../../Zotlabs/Lib/ThreadItem.php:800 +#: ../../include/conversation.php:1412 ../../Zotlabs/Lib/ThreadItem.php:811 #: ../../extend/addon/hzaddons/hsse/hsse.php:203 msgid "Quote" msgstr "Цитата" -#: ../../include/conversation.php:1410 ../../Zotlabs/Lib/ThreadItem.php:801 +#: ../../include/conversation.php:1413 ../../Zotlabs/Lib/ThreadItem.php:812 #: ../../extend/addon/hzaddons/hsse/hsse.php:204 msgid "Code" msgstr "Код" -#: ../../include/conversation.php:1411 ../../Zotlabs/Lib/ThreadItem.php:803 +#: ../../include/conversation.php:1414 ../../Zotlabs/Lib/ThreadItem.php:814 #: ../../extend/addon/hzaddons/hsse/hsse.php:205 msgid "Attach/Upload file" msgstr "Прикрепить/загрузить файл" -#: ../../include/conversation.php:1414 ../../Zotlabs/Module/Wiki.php:400 +#: ../../include/conversation.php:1417 ../../Zotlabs/Module/Wiki.php:400 #: ../../extend/addon/hzaddons/hsse/hsse.php:208 msgid "Embed an image from your albums" msgstr "Встроить изображение из ваших альбомов" -#: ../../include/conversation.php:1415 ../../include/conversation.php:1464 -#: ../../Zotlabs/Module/Cdav.php:1083 ../../Zotlabs/Module/Cdav.php:1393 +#: ../../include/conversation.php:1418 ../../include/conversation.php:1467 +#: ../../Zotlabs/Module/Cdav.php:1081 ../../Zotlabs/Module/Cdav.php:1391 #: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Tagrm.php:15 #: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Oauth.php:112 #: ../../Zotlabs/Module/Oauth.php:138 ../../Zotlabs/Module/Cover_photo.php:434 @@ -2840,7 +2871,7 @@ msgstr "Встроить изображение из ваших альбомов msgid "Cancel" msgstr "Отменить" -#: ../../include/conversation.php:1416 ../../include/conversation.php:1463 +#: ../../include/conversation.php:1419 ../../include/conversation.php:1466 #: ../../Zotlabs/Module/Cover_photo.php:435 #: ../../Zotlabs/Module/Profile_photo.php:506 ../../Zotlabs/Module/Wiki.php:402 #: ../../extend/addon/hzaddons/hsse/hsse.php:210 @@ -2848,22 +2879,22 @@ msgstr "Отменить" msgid "OK" msgstr "" -#: ../../include/conversation.php:1418 +#: ../../include/conversation.php:1421 #: ../../extend/addon/hzaddons/hsse/hsse.php:212 msgid "Toggle voting" msgstr "Подключить голосование" -#: ../../include/conversation.php:1421 +#: ../../include/conversation.php:1424 #: ../../extend/addon/hzaddons/hsse/hsse.php:215 msgid "Disable comments" msgstr "Отключить комментарии" -#: ../../include/conversation.php:1422 +#: ../../include/conversation.php:1425 #: ../../extend/addon/hzaddons/hsse/hsse.php:216 msgid "Toggle comments" msgstr "Переключить комментарии" -#: ../../include/conversation.php:1427 ../../Zotlabs/Module/Photos.php:671 +#: ../../include/conversation.php:1430 ../../Zotlabs/Module/Photos.php:671 #: ../../Zotlabs/Module/Photos.php:1041 ../../Zotlabs/Module/Editblock.php:129 #: ../../Zotlabs/Module/Card_edit.php:117 #: ../../Zotlabs/Module/Article_edit.php:116 @@ -2871,40 +2902,40 @@ msgstr "Переключить комментарии" msgid "Title (optional)" msgstr "Заголовок (необязательно)" -#: ../../include/conversation.php:1430 +#: ../../include/conversation.php:1433 #: ../../extend/addon/hzaddons/hsse/hsse.php:224 msgid "Categories (optional, comma-separated list)" msgstr "Категории (необязательно, список через запятую)" -#: ../../include/conversation.php:1431 ../../Zotlabs/Module/Events.php:487 +#: ../../include/conversation.php:1434 ../../Zotlabs/Module/Events.php:487 #: ../../extend/addon/hzaddons/hsse/hsse.php:225 msgid "Permission settings" msgstr "Настройки разрешений" -#: ../../include/conversation.php:1453 +#: ../../include/conversation.php:1456 #: ../../extend/addon/hzaddons/hsse/hsse.php:247 msgid "Other networks and post services" msgstr "Другие сети и службы публикаций" -#: ../../include/conversation.php:1456 ../../Zotlabs/Module/Mail.php:296 +#: ../../include/conversation.php:1459 ../../Zotlabs/Module/Mail.php:296 #: ../../Zotlabs/Module/Mail.php:439 #: ../../extend/addon/hzaddons/hsse/hsse.php:250 msgid "Set expiration date" msgstr "Установить срок действия" -#: ../../include/conversation.php:1459 +#: ../../include/conversation.php:1462 #: ../../extend/addon/hzaddons/hsse/hsse.php:253 msgid "Set publish date" msgstr "Установить дату публикации" -#: ../../include/conversation.php:1461 ../../Zotlabs/Module/Mail.php:298 +#: ../../include/conversation.php:1464 ../../Zotlabs/Module/Mail.php:298 #: ../../Zotlabs/Module/Mail.php:441 ../../Zotlabs/Module/Chat.php:221 -#: ../../Zotlabs/Lib/ThreadItem.php:810 +#: ../../Zotlabs/Lib/ThreadItem.php:821 #: ../../extend/addon/hzaddons/hsse/hsse.php:255 msgid "Encrypt text" msgstr "Зашифровать текст" -#: ../../include/conversation.php:1705 ../../Zotlabs/Module/Photos.php:1140 +#: ../../include/conversation.php:1708 ../../Zotlabs/Module/Photos.php:1140 #: ../../Zotlabs/Lib/ThreadItem.php:241 msgctxt "noun" msgid "Dislike" @@ -2913,7 +2944,7 @@ msgstr[0] "Не нравится" msgstr[1] "Не нравится" msgstr[2] "Не нравится" -#: ../../include/conversation.php:1708 +#: ../../include/conversation.php:1711 msgctxt "noun" msgid "Attending" msgid_plural "Attending" @@ -2921,7 +2952,7 @@ msgstr[0] "Посетит" msgstr[1] "Посетят" msgstr[2] "Посетят" -#: ../../include/conversation.php:1711 +#: ../../include/conversation.php:1714 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" @@ -2929,13 +2960,13 @@ msgstr[0] "Не посетит" msgstr[1] "Не посетят" msgstr[2] "Не посетят" -#: ../../include/conversation.php:1714 +#: ../../include/conversation.php:1717 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr "Не решил" -#: ../../include/conversation.php:1717 +#: ../../include/conversation.php:1720 msgctxt "noun" msgid "Agree" msgid_plural "Agrees" @@ -2943,7 +2974,7 @@ msgstr[0] "Согласен" msgstr[1] "Согласны" msgstr[2] "Согласны" -#: ../../include/conversation.php:1720 +#: ../../include/conversation.php:1723 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" @@ -2951,7 +2982,7 @@ msgstr[0] "Не согласен" msgstr[1] "Не согласны" msgstr[2] "Не согласны" -#: ../../include/conversation.php:1723 +#: ../../include/conversation.php:1726 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" @@ -3013,11 +3044,11 @@ msgid "Delete this item?" msgstr "Удалить этот элемент?" #: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1095 -#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:795 +#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:806 msgid "Comment" msgstr "Комментарий" -#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:502 +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:513 #, php-format msgid "%s show all" msgstr "%s показать всё" @@ -3090,7 +3121,7 @@ msgstr "Пожалуйста, введите URL ссылки" msgid "Unsaved changes. Are you sure you wish to leave this page?" msgstr "Есть несохраненные изменения. Вы уверены, что хотите покинуть эту страницу?" -#: ../../include/js_strings.php:25 ../../Zotlabs/Module/Cdav.php:1040 +#: ../../include/js_strings.php:25 ../../Zotlabs/Module/Cdav.php:1038 #: ../../Zotlabs/Module/Profiles.php:509 ../../Zotlabs/Module/Profiles.php:734 #: ../../Zotlabs/Module/Events.php:483 ../../Zotlabs/Module/Locs.php:117 #: ../../Zotlabs/Module/Pubsites.php:52 @@ -3370,15 +3401,15 @@ msgstr "" msgid "RSS/Atom" msgstr "" -#: ../../include/network.php:1731 ../../Zotlabs/Lib/Activity.php:2294 -#: ../../Zotlabs/Lib/Activity.php:2488 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1350 +#: ../../include/network.php:1731 ../../Zotlabs/Lib/Activity.php:2300 +#: ../../Zotlabs/Lib/Activity.php:2494 +#: ../../extend/addon/hzaddons/pubcrawl/as.php:1355 #: ../../extend/addon/hzaddons/pubcrawl/as.php:1551 #: ../../extend/addon/hzaddons/pubcrawl/as.php:1745 msgid "ActivityPub" msgstr "" -#: ../../include/network.php:1732 ../../Zotlabs/Module/Cdav.php:1379 +#: ../../include/network.php:1732 ../../Zotlabs/Module/Cdav.php:1377 #: ../../Zotlabs/Module/Profiles.php:787 #: ../../Zotlabs/Module/Admin/Accounts.php:171 #: ../../Zotlabs/Module/Admin/Accounts.php:183 @@ -3438,7 +3469,7 @@ msgstr "YYYY-MM-DD или MM-DD" msgid "Required" msgstr "Требуется" -#: ../../include/datetime.php:238 ../../boot.php:2605 +#: ../../include/datetime.php:238 ../../boot.php:2678 msgid "never" msgstr "никогда" @@ -3560,12 +3591,12 @@ msgstr "Не показывать" #: ../../Zotlabs/Module/Photos.php:1044 ../../Zotlabs/Module/Chat.php:243 #: ../../Zotlabs/Module/Filestorage.php:190 ../../Zotlabs/Module/Thing.php:319 #: ../../Zotlabs/Module/Thing.php:372 ../../Zotlabs/Module/Connedit.php:690 -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:205 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:209 msgid "Permissions" msgstr "Разрешения" #: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1274 -#: ../../Zotlabs/Lib/ThreadItem.php:463 +#: ../../Zotlabs/Lib/ThreadItem.php:475 #: ../../extend/addon/hzaddons/channelreputation/channelreputation.php:230 msgid "Close" msgstr "Закрыть" @@ -3590,37 +3621,37 @@ msgstr "Новое окно" msgid "Open the selected location in a different window or browser tab" msgstr "Открыть выбранное местоположение в другом окне или вкладке браузера" -#: ../../include/connections.php:728 ../../include/event.php:1375 -#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Profiles.php:792 +#: ../../include/connections.php:728 ../../include/event.php:1385 +#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:792 #: ../../Zotlabs/Module/Connedit.php:932 msgid "Mobile" msgstr "Мобильный" -#: ../../include/connections.php:729 ../../include/event.php:1376 -#: ../../Zotlabs/Module/Cdav.php:1385 ../../Zotlabs/Module/Profiles.php:793 +#: ../../include/connections.php:729 ../../include/event.php:1386 +#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Profiles.php:793 #: ../../Zotlabs/Module/Connedit.php:933 msgid "Home" msgstr "Домашний" -#: ../../include/connections.php:730 ../../include/event.php:1377 +#: ../../include/connections.php:730 ../../include/event.php:1387 msgid "Home, Voice" msgstr "Дом, голос" -#: ../../include/connections.php:731 ../../include/event.php:1378 +#: ../../include/connections.php:731 ../../include/event.php:1388 msgid "Home, Fax" msgstr "Дом, факс" -#: ../../include/connections.php:732 ../../include/event.php:1379 -#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Profiles.php:794 +#: ../../include/connections.php:732 ../../include/event.php:1389 +#: ../../Zotlabs/Module/Cdav.php:1384 ../../Zotlabs/Module/Profiles.php:794 #: ../../Zotlabs/Module/Connedit.php:934 msgid "Work" msgstr "Рабочий" -#: ../../include/connections.php:733 ../../include/event.php:1380 +#: ../../include/connections.php:733 ../../include/event.php:1390 msgid "Work, Voice" msgstr "Работа, голос" -#: ../../include/connections.php:734 ../../include/event.php:1381 +#: ../../include/connections.php:734 ../../include/event.php:1391 msgid "Work, Fax" msgstr "Работа, факс" @@ -3648,27 +3679,27 @@ msgstr "Начало:" msgid "End:" msgstr "Окончание:" -#: ../../include/event.php:1064 +#: ../../include/event.php:1074 msgid "This event has been added to your calendar." msgstr "Это событие было добавлено в ваш календарь." -#: ../../include/event.php:1290 +#: ../../include/event.php:1300 msgid "Not specified" msgstr "Не указано" -#: ../../include/event.php:1291 +#: ../../include/event.php:1301 msgid "Needs Action" msgstr "Требует действия" -#: ../../include/event.php:1292 +#: ../../include/event.php:1302 msgid "Completed" msgstr "Завершено" -#: ../../include/event.php:1293 +#: ../../include/event.php:1303 msgid "In Process" msgstr "В процессе" -#: ../../include/event.php:1294 +#: ../../include/event.php:1304 msgid "Cancelled" msgstr "Отменено" @@ -3991,21 +4022,21 @@ msgstr "Забыли пароль или логин?" msgid "Password Reset" msgstr "Сбросить пароль" -#: ../../boot.php:2478 +#: ../../boot.php:2551 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "[$Projectname] Ошибка SSL/TLS веб-сайта для %s" -#: ../../boot.php:2483 +#: ../../boot.php:2556 msgid "Website SSL certificate is not valid. Please correct." msgstr "SSL/TLS сертификат веб-сайт недействителен. Исправьте это." -#: ../../boot.php:2599 +#: ../../boot.php:2672 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "[$Projectname] Задания Cron не запущены на %s" -#: ../../boot.php:2604 +#: ../../boot.php:2677 msgid "Cron/Scheduled tasks not running." msgstr "Задания Cron / планировщика не запущены." @@ -4038,7 +4069,7 @@ msgid "Shared" msgstr "Общие" #: ../../Zotlabs/Storage/Browser.php:282 ../../Zotlabs/Storage/Browser.php:396 -#: ../../Zotlabs/Module/Cdav.php:1084 ../../Zotlabs/Module/Cdav.php:1390 +#: ../../Zotlabs/Module/Cdav.php:1082 ../../Zotlabs/Module/Cdav.php:1388 #: ../../Zotlabs/Module/Profiles.php:798 #: ../../Zotlabs/Module/New_channel.php:189 ../../Zotlabs/Module/Menu.php:182 #: ../../Zotlabs/Module/Webpages.php:254 ../../Zotlabs/Module/Connedit.php:938 @@ -4056,7 +4087,7 @@ msgstr "Добавить файлы" msgid "Admin Delete" msgstr "Удалено администратором" -#: ../../Zotlabs/Storage/Browser.php:291 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Storage/Browser.php:291 ../../Zotlabs/Module/Cdav.php:1373 #: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth.php:139 #: ../../Zotlabs/Module/Sharedwithme.php:104 ../../Zotlabs/Module/Chat.php:259 #: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 @@ -4285,7 +4316,7 @@ msgstr "Приложение \"Разрешения по умолчанию\"" #: ../../Zotlabs/Module/Cards.php:51 #: ../../extend/addon/hzaddons/jappixmini/Mod_Jappixmini.php:96 #: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:53 -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:37 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:38 #: ../../extend/addon/hzaddons/planets/Mod_Planets.php:20 #: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:42 #: ../../extend/addon/hzaddons/sendzid/Mod_Sendzid.php:20 @@ -4500,12 +4531,12 @@ msgstr "Нет такой группы" msgid "No such channel" msgstr "Нет такого канала" -#: ../../Zotlabs/Module/Network.php:173 ../../Zotlabs/Module/Channel.php:183 +#: ../../Zotlabs/Module/Network.php:173 ../../Zotlabs/Module/Channel.php:195 msgid "Search Results For:" msgstr "Результаты поиска для:" #: ../../Zotlabs/Module/Network.php:203 ../../Zotlabs/Module/Display.php:80 -#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Channel.php:218 +#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Channel.php:230 #: ../../Zotlabs/Module/Hq.php:134 msgid "Reset form" msgstr "Очистить форму" @@ -4609,52 +4640,52 @@ msgstr "Некоторые предложения о том, что делать msgid "Public access denied." msgstr "Публичный доступ запрещен." -#: ../../Zotlabs/Module/Display.php:378 ../../Zotlabs/Module/Channel.php:476 +#: ../../Zotlabs/Module/Display.php:379 ../../Zotlabs/Module/Channel.php:485 msgid "" "You must enable javascript for your browser to be able to view this content." msgstr "Для просмотра этого содержимого в вашем браузере должен быть включён JavaScript" -#: ../../Zotlabs/Module/Display.php:396 +#: ../../Zotlabs/Module/Display.php:397 msgid "Article" msgstr "Статья" -#: ../../Zotlabs/Module/Display.php:448 +#: ../../Zotlabs/Module/Display.php:449 msgid "Item has been removed." msgstr "Элемент был удалён." -#: ../../Zotlabs/Module/Ping.php:337 +#: ../../Zotlabs/Module/Ping.php:337 ../../Zotlabs/Lib/Enotify.php:938 msgid "sent you a private message" msgstr "отправил вам личное сообщение" -#: ../../Zotlabs/Module/Ping.php:393 +#: ../../Zotlabs/Module/Ping.php:393 ../../Zotlabs/Lib/Enotify.php:904 msgid "added your channel" msgstr "добавил ваш канал" -#: ../../Zotlabs/Module/Ping.php:418 +#: ../../Zotlabs/Module/Ping.php:418 ../../Zotlabs/Lib/Enotify.php:977 msgid "requires approval" msgstr "Требуется подтверждение" -#: ../../Zotlabs/Module/Ping.php:428 +#: ../../Zotlabs/Module/Ping.php:428 ../../Zotlabs/Lib/Enotify.php:947 msgid "g A l F d" msgstr "g A l F d" -#: ../../Zotlabs/Module/Ping.php:446 +#: ../../Zotlabs/Module/Ping.php:446 ../../Zotlabs/Lib/Enotify.php:950 msgid "[today]" msgstr "[сегодня]" -#: ../../Zotlabs/Module/Ping.php:456 +#: ../../Zotlabs/Module/Ping.php:456 ../../Zotlabs/Lib/Enotify.php:960 msgid "posted an event" msgstr "событие опубликовано" -#: ../../Zotlabs/Module/Ping.php:490 +#: ../../Zotlabs/Module/Ping.php:490 ../../Zotlabs/Lib/Enotify.php:921 msgid "shared a file with you" msgstr "с вами поделились файлом" -#: ../../Zotlabs/Module/Ping.php:672 +#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:407 msgid "Private forum" msgstr "Частный форум" -#: ../../Zotlabs/Module/Ping.php:672 +#: ../../Zotlabs/Module/Ping.php:672 ../../Zotlabs/Module/Sse_bs.php:407 msgid "Public forum" msgstr "Публичный форум" @@ -4835,86 +4866,86 @@ msgstr "Приложение CardDAV" msgid "CalDAV capable addressbook" msgstr "Адресная книга с поддержкой CalDAV" -#: ../../Zotlabs/Module/Cdav.php:968 +#: ../../Zotlabs/Module/Cdav.php:966 #: ../../Zotlabs/Module/Channel_calendar.php:387 #: ../../Zotlabs/Module/Cal.php:167 msgid "Link to source" msgstr "Ссылка на источник" -#: ../../Zotlabs/Module/Cdav.php:1034 ../../Zotlabs/Module/Events.php:468 +#: ../../Zotlabs/Module/Cdav.php:1032 ../../Zotlabs/Module/Events.php:468 msgid "Event title" msgstr "Наименование события" -#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:474 +#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:474 msgid "Start date and time" msgstr "Дата и время начала" -#: ../../Zotlabs/Module/Cdav.php:1036 +#: ../../Zotlabs/Module/Cdav.php:1034 msgid "End date and time" msgstr "Дата и время окончания" -#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:497 +#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:497 msgid "Timezone:" msgstr "Часовой пояс:" -#: ../../Zotlabs/Module/Cdav.php:1039 ../../Zotlabs/Module/Appman.php:145 +#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Appman.php:145 #: ../../Zotlabs/Module/Events.php:481 ../../Zotlabs/Module/Rbmark.php:101 #: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:173 -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:260 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:652 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:262 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:654 msgid "Description" msgstr "Описание" -#: ../../Zotlabs/Module/Cdav.php:1060 ../../Zotlabs/Module/Photos.php:944 +#: ../../Zotlabs/Module/Cdav.php:1058 ../../Zotlabs/Module/Photos.php:944 #: ../../Zotlabs/Module/Events.php:697 ../../Zotlabs/Module/Events.php:706 #: ../../Zotlabs/Module/Cal.php:205 msgid "Previous" msgstr "Предыдущая" -#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Photos.php:953 +#: ../../Zotlabs/Module/Cdav.php:1059 ../../Zotlabs/Module/Photos.php:953 #: ../../Zotlabs/Module/Events.php:698 ../../Zotlabs/Module/Events.php:707 #: ../../Zotlabs/Module/Cal.php:206 ../../Zotlabs/Module/Setup.php:260 msgid "Next" msgstr "Следующая" -#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:708 +#: ../../Zotlabs/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:708 #: ../../Zotlabs/Module/Cal.php:207 msgid "Today" msgstr "Сегодня" -#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:703 +#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:703 msgid "Month" msgstr "Месяц" -#: ../../Zotlabs/Module/Cdav.php:1064 ../../Zotlabs/Module/Events.php:704 +#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:704 msgid "Week" msgstr "Неделя" -#: ../../Zotlabs/Module/Cdav.php:1065 ../../Zotlabs/Module/Events.php:705 +#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:705 msgid "Day" msgstr "День" -#: ../../Zotlabs/Module/Cdav.php:1066 +#: ../../Zotlabs/Module/Cdav.php:1064 msgid "List month" msgstr "Просмотреть месяц" -#: ../../Zotlabs/Module/Cdav.php:1067 +#: ../../Zotlabs/Module/Cdav.php:1065 msgid "List week" msgstr "Просмотреть неделю" -#: ../../Zotlabs/Module/Cdav.php:1068 +#: ../../Zotlabs/Module/Cdav.php:1066 msgid "List day" msgstr "Просмотреть день" -#: ../../Zotlabs/Module/Cdav.php:1076 +#: ../../Zotlabs/Module/Cdav.php:1074 msgid "More" msgstr "Больше" -#: ../../Zotlabs/Module/Cdav.php:1077 +#: ../../Zotlabs/Module/Cdav.php:1075 msgid "Less" msgstr "Меньше" -#: ../../Zotlabs/Module/Cdav.php:1078 ../../Zotlabs/Module/Cdav.php:1391 +#: ../../Zotlabs/Module/Cdav.php:1076 ../../Zotlabs/Module/Cdav.php:1389 #: ../../Zotlabs/Module/Profiles.php:799 ../../Zotlabs/Module/Oauth.php:53 #: ../../Zotlabs/Module/Oauth.php:137 ../../Zotlabs/Module/Oauth2.php:58 #: ../../Zotlabs/Module/Oauth2.php:144 @@ -4923,109 +4954,109 @@ msgstr "Меньше" msgid "Update" msgstr "Обновить" -#: ../../Zotlabs/Module/Cdav.php:1079 +#: ../../Zotlabs/Module/Cdav.php:1077 msgid "Select calendar" msgstr "Выбрать календарь" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:143 +#: ../../Zotlabs/Module/Cdav.php:1078 ../../Zotlabs/Widget/Cdav.php:143 msgid "Channel Calendars" msgstr "Календари канала" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:129 +#: ../../Zotlabs/Module/Cdav.php:1078 ../../Zotlabs/Widget/Cdav.php:129 #: ../../Zotlabs/Widget/Cdav.php:143 msgid "CalDAV Calendars" msgstr "Календари CalDAV" -#: ../../Zotlabs/Module/Cdav.php:1082 +#: ../../Zotlabs/Module/Cdav.php:1080 msgid "Delete all" msgstr "Удалить всё" -#: ../../Zotlabs/Module/Cdav.php:1085 +#: ../../Zotlabs/Module/Cdav.php:1083 msgid "Sorry! Editing of recurrent events is not yet implemented." msgstr "Простите, но редактирование повторяющихся событий пока не реализовано." -#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Connedit.php:924 +#: ../../Zotlabs/Module/Cdav.php:1374 ../../Zotlabs/Module/Connedit.php:924 msgid "Organisation" msgstr "Организация" -#: ../../Zotlabs/Module/Cdav.php:1377 ../../Zotlabs/Module/Connedit.php:925 -#: ../../extend/addon/hzaddons/workflow/workflow.php:2291 -#: ../../extend/addon/hzaddons/workflow/workflow.php:2344 +#: ../../Zotlabs/Module/Cdav.php:1375 ../../Zotlabs/Module/Connedit.php:925 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2519 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2574 msgid "Title" msgstr "Наименование" -#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:786 #: ../../Zotlabs/Module/Connedit.php:926 msgid "Phone" msgstr "Телефон" -#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:788 #: ../../Zotlabs/Module/Connedit.php:928 msgid "Instant messenger" msgstr "Мессенджер" -#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:789 #: ../../Zotlabs/Module/Connedit.php:929 msgid "Website" msgstr "Веб-сайт" -#: ../../Zotlabs/Module/Cdav.php:1382 ../../Zotlabs/Module/Profiles.php:502 +#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Profiles.php:502 #: ../../Zotlabs/Module/Profiles.php:790 ../../Zotlabs/Module/Locs.php:118 #: ../../Zotlabs/Module/Admin/Channels.php:160 #: ../../Zotlabs/Module/Connedit.php:930 msgid "Address" msgstr "Адрес" -#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:791 #: ../../Zotlabs/Module/Connedit.php:931 msgid "Note" msgstr "Заметка" -#: ../../Zotlabs/Module/Cdav.php:1388 ../../Zotlabs/Module/Profiles.php:796 +#: ../../Zotlabs/Module/Cdav.php:1386 ../../Zotlabs/Module/Profiles.php:796 #: ../../Zotlabs/Module/Connedit.php:936 #: ../../extend/addon/hzaddons/jappixmini/Mod_Jappixmini.php:216 msgid "Add Contact" msgstr "Добавить контакт" -#: ../../Zotlabs/Module/Cdav.php:1389 ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Profiles.php:797 #: ../../Zotlabs/Module/Connedit.php:937 msgid "Add Field" msgstr "Добавить поле" -#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:942 +#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:942 msgid "P.O. Box" msgstr "абонентский ящик" -#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:943 +#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Connedit.php:943 msgid "Additional" msgstr "Дополнительно" -#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:944 +#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:944 msgid "Street" msgstr "Улица" -#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:945 +#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:945 msgid "Locality" msgstr "Населённый пункт" -#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Connedit.php:946 +#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:946 msgid "Region" msgstr "Регион" -#: ../../Zotlabs/Module/Cdav.php:1399 ../../Zotlabs/Module/Connedit.php:947 +#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:947 msgid "ZIP Code" msgstr "Индекс" -#: ../../Zotlabs/Module/Cdav.php:1400 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Profiles.php:757 #: ../../Zotlabs/Module/Connedit.php:948 msgid "Country" msgstr "Страна" -#: ../../Zotlabs/Module/Cdav.php:1447 +#: ../../Zotlabs/Module/Cdav.php:1445 msgid "Default Calendar" msgstr "Календарь по умолчанию" -#: ../../Zotlabs/Module/Cdav.php:1458 +#: ../../Zotlabs/Module/Cdav.php:1456 msgid "Default Addressbook" msgstr "Адресная книга по умолчанию" @@ -5049,7 +5080,7 @@ msgstr "vCard" msgid "You must be logged in to see this page." msgstr "Вы должны авторизоваться, чтобы увидеть эту страницу." -#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1671 +#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1677 #, php-format msgid "🔁 Repeated %1$s's %2$s" msgstr "🔁 Повторил %1$s %2$s" @@ -5216,10 +5247,10 @@ msgstr "Ваше программное обеспечение должно бы #: ../../Zotlabs/Module/Admin.php:138 ../../Zotlabs/Module/Admin/Logs.php:82 #: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Security.php:92 +#: ../../Zotlabs/Module/Admin/Security.php:98 #: ../../Zotlabs/Module/Admin/Addons.php:342 #: ../../Zotlabs/Module/Admin/Addons.php:440 -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:285 #: ../../Zotlabs/Module/Admin/Themes.php:122 #: ../../Zotlabs/Module/Admin/Themes.php:156 #: ../../Zotlabs/Module/Admin/Accounts.php:166 @@ -5672,7 +5703,7 @@ msgid "I don't like this (toggle)" msgstr "мне это не нравится (переключение)" #: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 -#: ../../Zotlabs/Lib/ThreadItem.php:793 +#: ../../Zotlabs/Lib/ThreadItem.php:804 msgid "This is you" msgstr "Это вы" @@ -5693,12 +5724,12 @@ msgstr "На этой фотографии:" msgid "Map" msgstr "Карта" -#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 +#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:469 msgctxt "noun" msgid "Likes" msgstr "Нравится" -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:470 msgctxt "noun" msgid "Dislikes" msgstr "Не нравится" @@ -6348,7 +6379,7 @@ msgid "yes" msgstr "да" #: ../../Zotlabs/Module/Register.php:277 -#: ../../Zotlabs/Module/Admin/Site.php:290 +#: ../../Zotlabs/Module/Admin/Site.php:288 msgid "Registration" msgstr "Регистрация" @@ -6408,12 +6439,12 @@ msgstr "Содержимое" msgid "No connections." msgstr "Контактов нет." -#: ../../Zotlabs/Module/Viewconnections.php:83 +#: ../../Zotlabs/Module/Viewconnections.php:106 #, php-format msgid "Visit %s's profile [%s]" msgstr "Посетить %s ​​профиль [%s]" -#: ../../Zotlabs/Module/Viewconnections.php:113 +#: ../../Zotlabs/Module/Viewconnections.php:137 msgid "View Connections" msgstr "Просмотр контактов" @@ -6465,7 +6496,7 @@ msgid "Manage Channel Locations" msgstr "Управление местоположением канала" #: ../../Zotlabs/Module/Locs.php:119 -#: ../../extend/addon/hzaddons/workflow/workflow.php:272 +#: ../../extend/addon/hzaddons/workflow/workflow.php:275 msgid "Primary" msgstr "Основной" @@ -6771,7 +6802,7 @@ msgid "Editor Settings" msgstr "Настройки редактора" #: ../../Zotlabs/Module/Settings/Display.php:119 -#: ../../Zotlabs/Module/Admin/Site.php:198 +#: ../../Zotlabs/Module/Admin/Site.php:196 #, php-format msgid "%s - (Incompatible)" msgstr "%s - (несовместимо)" @@ -7371,7 +7402,7 @@ msgid "Edit file permissions" msgstr "Редактировать разрешения файла" #: ../../Zotlabs/Module/Filestorage.php:197 -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:212 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:216 msgid "Set/edit permissions" msgstr "Редактировать разрешения" @@ -7412,7 +7443,7 @@ msgstr "Редактировать блок" msgid "No service class restrictions found." msgstr "Ограничений класса обслуживание не найдено." -#: ../../Zotlabs/Module/Channel.php:166 +#: ../../Zotlabs/Module/Channel.php:178 msgid "Insufficient permissions. Request redirected to profile page." msgstr "Недостаточно прав. Запрос перенаправлен на страницу профиля." @@ -7537,19 +7568,19 @@ msgid "%1$s abstains from a decision on %2$s's %3$s" msgstr "%1$s воздерживается от решения по %2$s%3$s" #: ../../Zotlabs/Module/Like.php:457 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2178 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2182 #, php-format msgid "%1$s is attending %2$s's %3$s" msgstr "%1$s посещает %2$s%3$s" #: ../../Zotlabs/Module/Like.php:459 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2180 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2184 #, php-format msgid "%1$s is not attending %2$s's %3$s" msgstr "%1$s не посещает %2$s%3$s" #: ../../Zotlabs/Module/Like.php:461 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2182 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2186 #, php-format msgid "%1$s may attend %2$s's %3$s" msgstr "%1$s может посетить %2$s%3$s" @@ -8474,130 +8505,142 @@ msgid "" "channel on this site will be permanently deleted!\\n\\nAre you sure?" msgstr "Канал {0} будет удалён!\n\nВсё что было опубликовано в этом канале на этом сайте будет удалено навсегда!\n\nВы уверены?" -#: ../../Zotlabs/Module/Admin/Security.php:83 +#: ../../Zotlabs/Module/Admin/Security.php:89 msgid "" "By default, unfiltered HTML is allowed in embedded media. This is inherently " "insecure." msgstr "По умолчанию, HTML без фильтрации доступен во встраиваемых медиа. Это небезопасно." -#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../Zotlabs/Module/Admin/Security.php:92 msgid "" "The recommended setting is to only allow unfiltered HTML from the following " "sites:" msgstr "Рекомендуется настроить разрешения использовать HTML без фильтрации только для следующих сайтов:" -#: ../../Zotlabs/Module/Admin/Security.php:87 +#: ../../Zotlabs/Module/Admin/Security.php:93 msgid "" "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/" "<br />https://vimeo.com/<br />https://soundcloud.com/<br />" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:88 +#: ../../Zotlabs/Module/Admin/Security.php:94 msgid "" "All other embedded content will be filtered, <strong>unless</strong> " "embedded content from that site is explicitly blocked." msgstr "се остальные встроенные материалы будут отфильтрованы, <strong>если </strong> встроенное содержимое с этого сайта явно заблокировано." -#: ../../Zotlabs/Module/Admin/Security.php:93 ../../Zotlabs/Widget/Admin.php:25 +#: ../../Zotlabs/Module/Admin/Security.php:99 ../../Zotlabs/Widget/Admin.php:25 msgid "Security" msgstr "Безопасность" -#: ../../Zotlabs/Module/Admin/Security.php:95 +#: ../../Zotlabs/Module/Admin/Security.php:101 msgid "Block public" msgstr "Блокировать публичный доступ" -#: ../../Zotlabs/Module/Admin/Security.php:95 +#: ../../Zotlabs/Module/Admin/Security.php:101 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently authenticated." msgstr "Установите флажок для блокировки публичного доступа ко всем другим общедоступным страницам на этом сайте, если вы в настоящее время не аутентифицированы." -#: ../../Zotlabs/Module/Admin/Security.php:96 +#: ../../Zotlabs/Module/Admin/Security.php:102 msgid "Provide a cloud root directory" msgstr "Предоставить корневой каталог в облаке" -#: ../../Zotlabs/Module/Admin/Security.php:96 +#: ../../Zotlabs/Module/Admin/Security.php:102 msgid "" "The cloud root directory lists all channel names which provide public files" msgstr "В корневом каталоге облака показываются все имена каналов, которые предоставляют общедоступные файлы" -#: ../../Zotlabs/Module/Admin/Security.php:97 +#: ../../Zotlabs/Module/Admin/Security.php:103 msgid "Show total disk space available to cloud uploads" msgstr "Показывать общее доступное для загрузок место в хранилище" -#: ../../Zotlabs/Module/Admin/Security.php:98 +#: ../../Zotlabs/Module/Admin/Security.php:104 msgid "Set \"Transport Security\" HTTP header" msgstr "Установить HTTP-заголовок \"Transport Security\"" -#: ../../Zotlabs/Module/Admin/Security.php:99 +#: ../../Zotlabs/Module/Admin/Security.php:105 msgid "Set \"Content Security Policy\" HTTP header" msgstr "Установить HTTP-заголовок \"Content Security Policy\"" -#: ../../Zotlabs/Module/Admin/Security.php:100 +#: ../../Zotlabs/Module/Admin/Security.php:106 msgid "Allowed email domains" msgstr "Разрешённые домены email" -#: ../../Zotlabs/Module/Admin/Security.php:100 +#: ../../Zotlabs/Module/Admin/Security.php:106 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "Список разделённых запятыми доменов для которых разрешена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены." -#: ../../Zotlabs/Module/Admin/Security.php:101 +#: ../../Zotlabs/Module/Admin/Security.php:107 msgid "Not allowed email domains" msgstr "Запрещённые домены email" -#: ../../Zotlabs/Module/Admin/Security.php:101 +#: ../../Zotlabs/Module/Admin/Security.php:107 msgid "" "Comma separated list of domains which are not allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains, unless allowed domains have been defined." msgstr "Список разделённых запятыми доменов для которых запрещена регистрация на этом сайте. Wildcards разрешены. Если пусто то разрешены любые домены до тех пор, пока разрешённые домены не будут указаны." -#: ../../Zotlabs/Module/Admin/Security.php:102 +#: ../../Zotlabs/Module/Admin/Security.php:108 msgid "Allow communications only from these sites" msgstr "Разрешить связь только с этими сайтами" -#: ../../Zotlabs/Module/Admin/Security.php:102 +#: ../../Zotlabs/Module/Admin/Security.php:108 msgid "" "One site per line. Leave empty to allow communication from anywhere by " "default" msgstr "Один сайт на строку. Оставьте пустым для разрешения взаимодействия без ограничений (по умочанию)." -#: ../../Zotlabs/Module/Admin/Security.php:103 +#: ../../Zotlabs/Module/Admin/Security.php:109 msgid "Block communications from these sites" msgstr "Блокировать связь с этими сайтами" -#: ../../Zotlabs/Module/Admin/Security.php:104 +#: ../../Zotlabs/Module/Admin/Security.php:110 msgid "Allow communications only from these channels" msgstr "Разрешить связь только для этих каналов" -#: ../../Zotlabs/Module/Admin/Security.php:104 +#: ../../Zotlabs/Module/Admin/Security.php:110 msgid "" "One channel (hash) per line. Leave empty to allow from any channel by default" msgstr "Один канал (или его хэш) на строку. Оставьте пустым для разрешения взаимодействия с любым каналом (по умолчанию)." -#: ../../Zotlabs/Module/Admin/Security.php:105 +#: ../../Zotlabs/Module/Admin/Security.php:111 msgid "Block communications from these channels" msgstr "Блокировать связь с этими каналами" -#: ../../Zotlabs/Module/Admin/Security.php:106 +#: ../../Zotlabs/Module/Admin/Security.php:112 msgid "Only allow embeds from secure (SSL) websites and links." msgstr "Разрешать встраивание только для безопасных (SSL/TLS) сайтов и ссылок." -#: ../../Zotlabs/Module/Admin/Security.php:107 +#: ../../Zotlabs/Module/Admin/Security.php:113 msgid "Allow unfiltered embedded HTML content only from these domains" msgstr "Разрешить встраивать нефильтруемое HTML-содержимое только для этих доменов" -#: ../../Zotlabs/Module/Admin/Security.php:107 +#: ../../Zotlabs/Module/Admin/Security.php:113 msgid "One site per line. By default embedded content is filtered." msgstr "Один сайт на строку. По умолчанию встраиваемое содержимое фильтруется." -#: ../../Zotlabs/Module/Admin/Security.php:108 +#: ../../Zotlabs/Module/Admin/Security.php:114 msgid "Block embedded HTML from these domains" msgstr "Блокировать встраивание HTML-содержимого для этих доменов" +#: ../../Zotlabs/Module/Admin/Security.php:115 +msgid "Allow SVG thumbnails in file browser" +msgstr "Разрешить SVG миниатюры в просмотрщике файлов" + +#: ../../Zotlabs/Module/Admin/Security.php:115 +msgid "WARNING: SVG images may contain malicious code." +msgstr "Внимание: изображения SVG могут содержать вредоносный код." + +#: ../../Zotlabs/Module/Admin/Security.php:116 +msgid "Allow embedded (inline) PDF files" +msgstr "Разрешить встраивание для файлов PDF" + #: ../../Zotlabs/Module/Admin/Addons.php:290 #, php-format msgid "Plugin %s disabled." @@ -8707,431 +8750,423 @@ msgstr "Установить новый репозиторий расширен msgid "Switch branch" msgstr "Переключить ветку" -#: ../../Zotlabs/Module/Admin/Site.php:161 +#: ../../Zotlabs/Module/Admin/Site.php:159 msgid "Site settings updated." msgstr "Настройки сайта обновлены." -#: ../../Zotlabs/Module/Admin/Site.php:205 +#: ../../Zotlabs/Module/Admin/Site.php:203 msgid "mobile" msgstr "мобильный" -#: ../../Zotlabs/Module/Admin/Site.php:207 +#: ../../Zotlabs/Module/Admin/Site.php:205 msgid "experimental" msgstr "экспериментальный" -#: ../../Zotlabs/Module/Admin/Site.php:209 +#: ../../Zotlabs/Module/Admin/Site.php:207 msgid "unsupported" msgstr "неподдерживаемый" -#: ../../Zotlabs/Module/Admin/Site.php:256 +#: ../../Zotlabs/Module/Admin/Site.php:254 msgid "Yes - with approval" msgstr "Да - требует подтверждения" -#: ../../Zotlabs/Module/Admin/Site.php:262 +#: ../../Zotlabs/Module/Admin/Site.php:260 msgid "My site is not a public server" msgstr "Мой сайт не является публичным сервером" -#: ../../Zotlabs/Module/Admin/Site.php:263 +#: ../../Zotlabs/Module/Admin/Site.php:261 msgid "My site has paid access only" msgstr "Мой сайт доступен только с оплатой " -#: ../../Zotlabs/Module/Admin/Site.php:264 +#: ../../Zotlabs/Module/Admin/Site.php:262 msgid "My site has free access only" msgstr "На моём сайте разрешён свободный доступ" -#: ../../Zotlabs/Module/Admin/Site.php:265 +#: ../../Zotlabs/Module/Admin/Site.php:263 msgid "My site offers free accounts with optional paid upgrades" msgstr "На моём сайте разрешены бесплатные аккаунты с дополнительными платными услугами" -#: ../../Zotlabs/Module/Admin/Site.php:279 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "Default permission role for new accounts" msgstr "Разрешения по умолчанию для новых аккаунтов" -#: ../../Zotlabs/Module/Admin/Site.php:279 +#: ../../Zotlabs/Module/Admin/Site.php:277 msgid "" "This role will be used for the first channel created after registration." msgstr "Эта роль будет использоваться для первого канала, созданного после регистрации." -#: ../../Zotlabs/Module/Admin/Site.php:288 ../../Zotlabs/Widget/Admin.php:22 +#: ../../Zotlabs/Module/Admin/Site.php:286 ../../Zotlabs/Widget/Admin.php:22 msgid "Site" msgstr "Сайт" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:289 msgid "File upload" msgstr "Загрузка файла" -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:290 msgid "Policies" msgstr "Правила" -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:295 #: ../../extend/addon/hzaddons/statusnet/statusnet.php:593 msgid "Site name" msgstr "Название сайта" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "Banner/Logo" msgstr "Баннер / логотип" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "Unfiltered HTML/CSS/JS is allowed" msgstr "Разрешён нефильтруемый HTML/CSS/JS" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:298 msgid "Administrator Information" msgstr "Информация об администраторе" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:298 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Контактная информация для администраторов сайта. Показывается на информационной странице сайта. Можно использовать BBCode." -#: ../../Zotlabs/Module/Admin/Site.php:301 ../../Zotlabs/Module/Siteinfo.php:24 +#: ../../Zotlabs/Module/Admin/Site.php:299 ../../Zotlabs/Module/Siteinfo.php:24 msgid "Site Information" msgstr "Информация о сайте" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Публичное видимое описание сайта. Показывается на информационной странице сайта. Можно использовать BBCode." -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:300 msgid "System language" msgstr "Язык системы" -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:301 msgid "System theme" msgstr "Системная тема" -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:301 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "Системная тема по умолчанию - может быть изменена в профиле пользователя - <a href='#' id='cnftheme'>изменить параметры темы</a>." -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "Allow Feeds as Connections" msgstr "Разрешить ленты новостей как контакты" -#: ../../Zotlabs/Module/Admin/Site.php:306 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "(Heavy system resource usage)" msgstr "(Высокое использование системных ресурсов)" -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "Maximum image size" msgstr "Максимальный размер изображения" -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Максимальный размер загруженных изображений в байтах. По умолчанию 0 или без ограничений." -#: ../../Zotlabs/Module/Admin/Site.php:308 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Does this site allow new member registration?" msgstr "Разрешается ли регистрация новых пользователей на этом сайте?" -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Invitation only" msgstr "Только по приглашениям" -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "" "Only allow new member registrations with an invitation code. Above register " "policy must be set to Yes." msgstr "Регистрация пользователей разрешается только по приглашениям. Вышеуказанная политика регистрация должны быть установлена в \"Да\"." -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "Minimum age" msgstr "Минимальный возраст" -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "Minimum age (in years) for who may register on this site." msgstr "Минимальный возраст (в годах) для регистрации на этом сайте." -#: ../../Zotlabs/Module/Admin/Site.php:311 +#: ../../Zotlabs/Module/Admin/Site.php:309 msgid "Which best describes the types of account offered by this hub?" msgstr "Как лучше описать тип учётных записей предлагаемых на этом хабе?" -#: ../../Zotlabs/Module/Admin/Site.php:311 +#: ../../Zotlabs/Module/Admin/Site.php:309 msgid "This is displayed on the public server site list." msgstr "Это отображается в списке общедоступных серверов." -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "Register text" msgstr "Текст регистрации" -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "Will be displayed prominently on the registration page." msgstr "Будет отображаться на странице регистрации на видном месте." -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:312 msgid "Site homepage to show visitors (default: login box)" msgstr "Домашняя страница, которая будет показываться посетителям сайт (по умочанию - форма входа)." -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:312 msgid "" "example: 'pubstream' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "например: 'pubstream' для показа публичного потока, 'page/sys/home' для показа системной домашней веб-страницы или 'include:home.html' для включения файла." -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:313 msgid "Preserve site homepage URL" msgstr "Сохранить URL главной страницы сайта" -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:313 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "Показывать домашнюю страницу сайта во фрейме вместо стандартной переадресации" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "Accounts abandoned after x days" msgstr "Аккаунты считаются заброшенными после N дней" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Системные ресурсы не будут расходоваться для опроса внешних сайтов для заброшенных аккаунтов. Введите 0 для отсутствия ограничений." -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "Allowed friend domains" msgstr "Разрешенные домены друзей" -#: ../../Zotlabs/Module/Admin/Site.php:317 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Список разделённых запятыми доменов с которыми разрешено устанавливать дружеские отношения на этом сайте. Wildcards разрешены. Пусто означает разрешены любые домены." -#: ../../Zotlabs/Module/Admin/Site.php:318 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "Verify Email Addresses" msgstr "Проверка адреса электронной почты" -#: ../../Zotlabs/Module/Admin/Site.php:318 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "" "Check to verify email addresses used in account registration (recommended)." msgstr "Включите для проверки адреса электронной почты использованного при регистрации (рекомендуется)." -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "Force publish" msgstr "Принудительно публиковать" -#: ../../Zotlabs/Module/Admin/Site.php:319 +#: ../../Zotlabs/Module/Admin/Site.php:317 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "Включите для принудительного включения всех учётных записей на данном сайте в каталог." -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "Import Public Streams" msgstr "Импортированные публичные потоки" -#: ../../Zotlabs/Module/Admin/Site.php:320 +#: ../../Zotlabs/Module/Admin/Site.php:318 msgid "" "Import and allow access to public content pulled from other sites. Warning: " "this content is unmoderated." msgstr "Импортировать и разрешить публичный доступ к загружаемым с других сайтов потоков. Внимание - этот контент не может модерироваться." -#: ../../Zotlabs/Module/Admin/Site.php:321 +#: ../../Zotlabs/Module/Admin/Site.php:319 msgid "Site only Public Streams" msgstr "Публичные потоки только с сайта" -#: ../../Zotlabs/Module/Admin/Site.php:321 +#: ../../Zotlabs/Module/Admin/Site.php:319 msgid "" "Allow access to public content originating only from this site if Imported " "Public Streams are disabled." msgstr "Разрешить доступ к общедоступному контенту, исходящему только с этого сайта, если импортированные публичные потоки отключены." -#: ../../Zotlabs/Module/Admin/Site.php:322 +#: ../../Zotlabs/Module/Admin/Site.php:320 msgid "Allow anybody on the internet to access the Public streams" msgstr "Разрешить всем доступ к публичным потокам" -#: ../../Zotlabs/Module/Admin/Site.php:322 +#: ../../Zotlabs/Module/Admin/Site.php:320 msgid "" "Disable to require authentication before viewing. Warning: this content is " "unmoderated." msgstr "Отключите если для просмотра требуется аутентификация. Внимание - этот контент не может модерироваться." -#: ../../Zotlabs/Module/Admin/Site.php:323 +#: ../../Zotlabs/Module/Admin/Site.php:321 msgid "Only import Public stream posts with this text" msgstr "Импортировать только публичные потоки с этим текстом" -#: ../../Zotlabs/Module/Admin/Site.php:323 -#: ../../Zotlabs/Module/Admin/Site.php:324 +#: ../../Zotlabs/Module/Admin/Site.php:321 +#: ../../Zotlabs/Module/Admin/Site.php:322 #: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" msgstr "слова по одному в строку, #тег, /шаблон/ или lang=xxl; оставьте пустым для импорта всех публикаций" -#: ../../Zotlabs/Module/Admin/Site.php:324 +#: ../../Zotlabs/Module/Admin/Site.php:322 msgid "Do not import Public stream posts with this text" msgstr "Не импортировать публичные потоки с этим текстом" -#: ../../Zotlabs/Module/Admin/Site.php:327 +#: ../../Zotlabs/Module/Admin/Site.php:325 msgid "Login on Homepage" msgstr "Вход на домашней странице" -#: ../../Zotlabs/Module/Admin/Site.php:327 +#: ../../Zotlabs/Module/Admin/Site.php:325 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "Предоставлять форму входа для посетителей на домашней странице если другого содержимого не настроено." -#: ../../Zotlabs/Module/Admin/Site.php:328 +#: ../../Zotlabs/Module/Admin/Site.php:326 msgid "Enable context help" msgstr "Включить контекстную помощь" -#: ../../Zotlabs/Module/Admin/Site.php:328 +#: ../../Zotlabs/Module/Admin/Site.php:326 msgid "" "Display contextual help for the current page when the help button is pressed." msgstr "Показывать контекстную помощь для текущей странице при нажатии на кнопку \"Помощь\"." -#: ../../Zotlabs/Module/Admin/Site.php:330 +#: ../../Zotlabs/Module/Admin/Site.php:328 msgid "Reply-to email address for system generated email." msgstr "Адрес email Reply-to для генерируемых системой сообщений." -#: ../../Zotlabs/Module/Admin/Site.php:331 +#: ../../Zotlabs/Module/Admin/Site.php:329 msgid "Sender (From) email address for system generated email." msgstr "Адрес email отправителя (From) для генерируемых системой сообщений." -#: ../../Zotlabs/Module/Admin/Site.php:332 +#: ../../Zotlabs/Module/Admin/Site.php:330 msgid "Name of email sender for system generated email." msgstr "Имя отправителя для генерируемых системой сообщений." -#: ../../Zotlabs/Module/Admin/Site.php:334 +#: ../../Zotlabs/Module/Admin/Site.php:332 msgid "Directory Server URL" msgstr "URL сервера каталогов" -#: ../../Zotlabs/Module/Admin/Site.php:334 +#: ../../Zotlabs/Module/Admin/Site.php:332 msgid "Default directory server" msgstr "Сервер каталогов по умолчанию" -#: ../../Zotlabs/Module/Admin/Site.php:336 +#: ../../Zotlabs/Module/Admin/Site.php:334 msgid "Proxy user" msgstr "Имя пользователя proxy-сервера" -#: ../../Zotlabs/Module/Admin/Site.php:337 +#: ../../Zotlabs/Module/Admin/Site.php:335 msgid "Proxy URL" msgstr "URL proxy-сервера" -#: ../../Zotlabs/Module/Admin/Site.php:338 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "Network timeout" msgstr "Время ожидания сети" -#: ../../Zotlabs/Module/Admin/Site.php:338 +#: ../../Zotlabs/Module/Admin/Site.php:336 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Значение в секундах. Если установлен в 0 - без ограничений (не рекомендуется)." -#: ../../Zotlabs/Module/Admin/Site.php:339 +#: ../../Zotlabs/Module/Admin/Site.php:337 msgid "Delivery interval" msgstr "Интервал доставки" -#: ../../Zotlabs/Module/Admin/Site.php:339 +#: ../../Zotlabs/Module/Admin/Site.php:337 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "Значение задержки фоновых процессов доставки в секундах для снижения нагрузки на систему. Рекомендуется 4-5 для серверов совместного использования, 2-3 для частных виртуальных и 0-1 для выделенных серверов." -#: ../../Zotlabs/Module/Admin/Site.php:340 +#: ../../Zotlabs/Module/Admin/Site.php:338 msgid "Deliveries per process" msgstr "Доставок на процесс" -#: ../../Zotlabs/Module/Admin/Site.php:340 +#: ../../Zotlabs/Module/Admin/Site.php:338 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust " "if necessary to tune system performance. Recommend: 1-5." msgstr "Количество доставок для одного процесса. Настройте в соответствии с производительностью системы. Рекомендуется 1-5." -#: ../../Zotlabs/Module/Admin/Site.php:341 +#: ../../Zotlabs/Module/Admin/Site.php:339 msgid "Queue Threshold" msgstr "Порог очереди" -#: ../../Zotlabs/Module/Admin/Site.php:341 +#: ../../Zotlabs/Module/Admin/Site.php:339 msgid "" "Always defer immediate delivery if queue contains more than this number of " "entries." msgstr "Всегда откладывать немедленную доставку, если в очереди содержится большее количество записей, чем это." -#: ../../Zotlabs/Module/Admin/Site.php:342 +#: ../../Zotlabs/Module/Admin/Site.php:340 msgid "Poll interval" msgstr "Интервал опроса" -#: ../../Zotlabs/Module/Admin/Site.php:342 +#: ../../Zotlabs/Module/Admin/Site.php:340 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "Задержка фоновых процессов опроса на указанное количество секунд для снижения нагрузки на систему. Если 0 - использовать интервал доставки." -#: ../../Zotlabs/Module/Admin/Site.php:343 +#: ../../Zotlabs/Module/Admin/Site.php:341 msgid "Path to ImageMagick convert program" msgstr "Путь к ImageMagick" -#: ../../Zotlabs/Module/Admin/Site.php:343 +#: ../../Zotlabs/Module/Admin/Site.php:341 msgid "" "If set, use this program to generate photo thumbnails for huge images ( > " "4000 pixels in either dimension), otherwise memory exhaustion may occur. " "Example: /usr/bin/convert" msgstr "При установке эта программа генерирует миниатюры изображений для больших файлов (свыше 4000 в любом измерении) для предотвращения утечки памяти. Пример: /usr/bin/convert" -#: ../../Zotlabs/Module/Admin/Site.php:344 -msgid "Allow SVG thumbnails in file browser" -msgstr "Разрешить SVG миниатюры в просмотрщике файлов" - -#: ../../Zotlabs/Module/Admin/Site.php:344 -msgid "WARNING: SVG images may contain malicious code." -msgstr "Внимание: изображения SVG могут содержать вредоносный код." - -#: ../../Zotlabs/Module/Admin/Site.php:345 +#: ../../Zotlabs/Module/Admin/Site.php:342 msgid "Maximum Load Average" msgstr "Максимальная средняя нагрузка" -#: ../../Zotlabs/Module/Admin/Site.php:345 +#: ../../Zotlabs/Module/Admin/Site.php:342 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Максимальная нагрузка системы для откладывания процессов опроса и доставки - по умолчанию 50." -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:343 msgid "Expiration period in days for imported (grid/network) content" msgstr "Срок хранения в днях для импортированного содержимого (из матрицы / сети)." -#: ../../Zotlabs/Module/Admin/Site.php:346 +#: ../../Zotlabs/Module/Admin/Site.php:343 msgid "0 for no expiration of imported content" msgstr "0 для постоянного хранения импортированного содержимого" -#: ../../Zotlabs/Module/Admin/Site.php:347 +#: ../../Zotlabs/Module/Admin/Site.php:344 msgid "" "Do not expire any posts which have comments less than this many days ago" msgstr "Продлевать строк хранения для любых публикаций, которые имеют комментарии возрастом менее этого значения" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:346 msgid "" "Public servers: Optional landing (marketing) webpage for new registrants" msgstr "Публичные серверы: необязательная маркетинговая лэндинг-страница для новых пользователей" -#: ../../Zotlabs/Module/Admin/Site.php:349 +#: ../../Zotlabs/Module/Admin/Site.php:346 #, php-format msgid "Create this page first. Default is %s/register" msgstr "Создать эту страницу первой. По умолчанию %s/register" -#: ../../Zotlabs/Module/Admin/Site.php:350 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "Page to display after creating a new channel" msgstr "Страница для показа после создания нового канала" -#: ../../Zotlabs/Module/Admin/Site.php:350 +#: ../../Zotlabs/Module/Admin/Site.php:347 msgid "Default: profiles" msgstr "По умолчанию: profiles" -#: ../../Zotlabs/Module/Admin/Site.php:352 +#: ../../Zotlabs/Module/Admin/Site.php:349 msgid "Optional: site location" msgstr "Необязательно: место размещения сайта" -#: ../../Zotlabs/Module/Admin/Site.php:352 +#: ../../Zotlabs/Module/Admin/Site.php:349 msgid "Region or country" msgstr "Регион или страна" @@ -9504,7 +9539,7 @@ msgid "Their Settings" msgstr "Их настройки" #: ../../Zotlabs/Module/Notifications.php:60 -#: ../../Zotlabs/Lib/ThreadItem.php:450 +#: ../../Zotlabs/Lib/ThreadItem.php:462 msgid "Mark all seen" msgstr "Отметить как просмотренное" @@ -9815,7 +9850,7 @@ msgid "Unignore" msgstr "Не игнорировать" #: ../../Zotlabs/Module/Connedit.php:644 -#: ../../Zotlabs/Module/Connections.php:322 +#: ../../Zotlabs/Module/Connections.php:344 msgid "Ignore" msgstr "Игнорировать" @@ -10163,56 +10198,56 @@ msgstr "Зархивирован" msgid "Not connected at this location" msgstr "Не подключено в этом месте" -#: ../../Zotlabs/Module/Connections.php:296 +#: ../../Zotlabs/Module/Connections.php:318 #, php-format msgid "%1$s [%2$s]" msgstr "" -#: ../../Zotlabs/Module/Connections.php:297 +#: ../../Zotlabs/Module/Connections.php:319 msgid "Edit connection" msgstr "Редактировать контакт" -#: ../../Zotlabs/Module/Connections.php:299 +#: ../../Zotlabs/Module/Connections.php:321 msgid "Delete connection" msgstr "Удалить контакт" -#: ../../Zotlabs/Module/Connections.php:308 +#: ../../Zotlabs/Module/Connections.php:330 msgid "Channel address" msgstr "Адрес канала" -#: ../../Zotlabs/Module/Connections.php:313 +#: ../../Zotlabs/Module/Connections.php:335 msgid "Call" msgstr "Вызов" -#: ../../Zotlabs/Module/Connections.php:315 +#: ../../Zotlabs/Module/Connections.php:337 msgid "Status" msgstr "Статус" -#: ../../Zotlabs/Module/Connections.php:317 +#: ../../Zotlabs/Module/Connections.php:339 msgid "Connected" msgstr "Подключено" -#: ../../Zotlabs/Module/Connections.php:319 +#: ../../Zotlabs/Module/Connections.php:341 msgid "Approve connection" msgstr "Утвердить контакт" -#: ../../Zotlabs/Module/Connections.php:321 +#: ../../Zotlabs/Module/Connections.php:343 msgid "Ignore connection" msgstr "Игнорировать контакт" -#: ../../Zotlabs/Module/Connections.php:323 +#: ../../Zotlabs/Module/Connections.php:345 msgid "Recent activity" msgstr "Последние действия" -#: ../../Zotlabs/Module/Connections.php:328 +#: ../../Zotlabs/Module/Connections.php:351 msgid "Connect at this location" msgstr "Подключить в этом месте" -#: ../../Zotlabs/Module/Connections.php:356 +#: ../../Zotlabs/Module/Connections.php:379 msgid "Search your connections" msgstr "Поиск ваших контактов" -#: ../../Zotlabs/Module/Connections.php:357 +#: ../../Zotlabs/Module/Connections.php:380 msgid "Connections search" msgstr "Поиск контаков" @@ -10500,8 +10535,8 @@ msgid "Affinity Tool Settings" msgstr "Настройки степени сходства" #: ../../Zotlabs/Module/Wiki.php:35 -#: ../../extend/addon/hzaddons/cart/cart.php:1298 -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:37 +#: ../../extend/addon/hzaddons/cart/cart.php:1292 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:39 msgid "Profile Unavailable." msgstr "Профиль недоступен." @@ -10514,8 +10549,9 @@ msgid "Provide a wiki for your channel" msgstr "Предоставьте Wiki для вашего канала" #: ../../Zotlabs/Module/Wiki.php:77 -#: ../../extend/addon/hzaddons/cart/cart.php:1444 +#: ../../extend/addon/hzaddons/cart/cart.php:1438 #: ../../extend/addon/hzaddons/cart/manual_payments.php:93 +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:478 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:456 #: ../../extend/addon/hzaddons/cart/myshop.php:37 msgid "Invalid channel" @@ -10592,6 +10628,7 @@ msgid "Short description of your changes (optional)" msgstr "Краткое описание ваших изменений (необязательно)" #: ../../Zotlabs/Module/Wiki.php:384 +#: ../../extend/addon/hzaddons/ljpost/ljpost.php:132 msgid "Source" msgstr "Источник" @@ -11030,7 +11067,7 @@ msgid "Forums" msgstr "Форумы" #: ../../Zotlabs/Widget/Notes.php:21 ../../Zotlabs/Lib/Apps.php:369 -#: ../../extend/addon/hzaddons/workflow/workflow.php:2299 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2527 msgid "Notes" msgstr "Заметки" @@ -11991,30 +12028,30 @@ msgstr "Фото:" msgid "Please visit %s to approve or reject the suggestion." msgstr "Пожалуйста, посетите %s, чтобы одобрить или отклонить предложение." -#: ../../Zotlabs/Lib/Enotify.php:640 +#: ../../Zotlabs/Lib/Enotify.php:645 msgid "[$Projectname:Notify]" msgstr "[$Projectname:Уведомление]" -#: ../../Zotlabs/Lib/Enotify.php:808 +#: ../../Zotlabs/Lib/Enotify.php:813 msgid "created a new post" msgstr "создал новую публикацию" -#: ../../Zotlabs/Lib/Enotify.php:809 +#: ../../Zotlabs/Lib/Enotify.php:814 #, php-format msgid "commented on %s's post" msgstr "прокомментировал публикацию %s" -#: ../../Zotlabs/Lib/Enotify.php:812 +#: ../../Zotlabs/Lib/Enotify.php:817 #, php-format msgid "repeated %s's post" msgstr "разместил публикацию %s" -#: ../../Zotlabs/Lib/Enotify.php:821 +#: ../../Zotlabs/Lib/Enotify.php:826 #, php-format msgid "edited a post dated %s" msgstr "отредактировал публикацию датированную %s" -#: ../../Zotlabs/Lib/Enotify.php:825 +#: ../../Zotlabs/Lib/Enotify.php:830 #, php-format msgid "edited a comment dated %s" msgstr "отредактировал комментарий датированный %s" @@ -12302,77 +12339,77 @@ msgstr[0] "%d комментарий" msgstr[1] "%d комментария" msgstr[2] "%d комментариев" -#: ../../Zotlabs/Lib/ThreadItem.php:380 ../../Zotlabs/Lib/ThreadItem.php:381 +#: ../../Zotlabs/Lib/ThreadItem.php:392 ../../Zotlabs/Lib/ThreadItem.php:393 #, php-format msgid "View %s's profile - %s" msgstr "Просмотр профиля %s - %s" -#: ../../Zotlabs/Lib/ThreadItem.php:384 +#: ../../Zotlabs/Lib/ThreadItem.php:396 msgid "to" msgstr "к" -#: ../../Zotlabs/Lib/ThreadItem.php:385 +#: ../../Zotlabs/Lib/ThreadItem.php:397 msgid "via" msgstr "через" -#: ../../Zotlabs/Lib/ThreadItem.php:386 +#: ../../Zotlabs/Lib/ThreadItem.php:398 msgid "Wall-to-Wall" msgstr "Стена-к-Стене" -#: ../../Zotlabs/Lib/ThreadItem.php:387 +#: ../../Zotlabs/Lib/ThreadItem.php:399 msgid "via Wall-To-Wall:" msgstr "через Стена-к-Стене:" -#: ../../Zotlabs/Lib/ThreadItem.php:413 +#: ../../Zotlabs/Lib/ThreadItem.php:425 msgid "Attend" msgstr "Посетить" -#: ../../Zotlabs/Lib/ThreadItem.php:414 +#: ../../Zotlabs/Lib/ThreadItem.php:426 msgid "Attendance Options" msgstr "Параметры посещаемости" -#: ../../Zotlabs/Lib/ThreadItem.php:415 +#: ../../Zotlabs/Lib/ThreadItem.php:427 msgid "Vote" msgstr "Голосовать" -#: ../../Zotlabs/Lib/ThreadItem.php:416 +#: ../../Zotlabs/Lib/ThreadItem.php:428 msgid "Voting Options" msgstr "Параметры голосования" -#: ../../Zotlabs/Lib/ThreadItem.php:431 +#: ../../Zotlabs/Lib/ThreadItem.php:443 msgid "Go to previous comment" msgstr "Перейти к предыдущему комментарию" -#: ../../Zotlabs/Lib/ThreadItem.php:440 +#: ../../Zotlabs/Lib/ThreadItem.php:452 #: ../../extend/addon/hzaddons/bookmarker/bookmarker.php:38 msgid "Save Bookmarks" msgstr "Сохранить закладки" -#: ../../Zotlabs/Lib/ThreadItem.php:441 +#: ../../Zotlabs/Lib/ThreadItem.php:453 msgid "Add to Calendar" msgstr "Добавить в календарь" -#: ../../Zotlabs/Lib/ThreadItem.php:802 +#: ../../Zotlabs/Lib/ThreadItem.php:813 msgid "Image" msgstr "Изображение" -#: ../../Zotlabs/Lib/ThreadItem.php:804 +#: ../../Zotlabs/Lib/ThreadItem.php:815 msgid "Insert Link" msgstr "Вставить ссылку" -#: ../../Zotlabs/Lib/ThreadItem.php:805 +#: ../../Zotlabs/Lib/ThreadItem.php:816 msgid "Video" msgstr "Видео" -#: ../../Zotlabs/Lib/ThreadItem.php:815 +#: ../../Zotlabs/Lib/ThreadItem.php:826 msgid "Your full name (required)" msgstr "Ваше полное имя (требуется)" -#: ../../Zotlabs/Lib/ThreadItem.php:816 +#: ../../Zotlabs/Lib/ThreadItem.php:827 msgid "Your email address (required)" msgstr "Ваш адрес электронной почты (требуется)" -#: ../../Zotlabs/Lib/ThreadItem.php:817 +#: ../../Zotlabs/Lib/ThreadItem.php:828 msgid "Your website URL (optional)" msgstr "URL вашего вебсайта (необязательно)" @@ -12449,27 +12486,27 @@ msgstr "Это настройка по умолчанию для тех, кто msgid "This is your default setting for the audience of your webpages" msgstr "Это настройка по умолчанию для аудитории ваших веб-страниц" -#: ../../Zotlabs/Lib/Activity.php:1656 +#: ../../Zotlabs/Lib/Activity.php:1662 #, php-format msgid "Likes %1$s's %2$s" msgstr "Нравится %1$s %2$s" -#: ../../Zotlabs/Lib/Activity.php:1659 +#: ../../Zotlabs/Lib/Activity.php:1665 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "Не нравится %1$s %2$s" -#: ../../Zotlabs/Lib/Activity.php:1662 +#: ../../Zotlabs/Lib/Activity.php:1668 #, php-format msgid "Will attend %1$s's %2$s" msgstr "Примет участие %1$s %2$s" -#: ../../Zotlabs/Lib/Activity.php:1665 +#: ../../Zotlabs/Lib/Activity.php:1671 #, php-format msgid "Will not attend %1$s's %2$s" msgstr "Не примет участие %1$s %2$s" -#: ../../Zotlabs/Lib/Activity.php:1668 +#: ../../Zotlabs/Lib/Activity.php:1674 #, php-format msgid "May attend %1$s's %2$s" msgstr "Возможно примет участие %1$s %2$s" @@ -12754,72 +12791,79 @@ msgstr "Отображать все общедоступные публикац msgid "Pump.io Crosspost Connector" msgstr "Публикация в Pump.io" -#: ../../extend/addon/hzaddons/cart/cart.php:159 +#: ../../extend/addon/hzaddons/cart/cart.php:150 msgid "DB Cleanup Failure" msgstr "Сбой очистки базы данных" -#: ../../extend/addon/hzaddons/cart/cart.php:565 +#: ../../extend/addon/hzaddons/cart/cart.php:556 msgid "[cart] Item Added" msgstr "[cart] Элемент добавлен" -#: ../../extend/addon/hzaddons/cart/cart.php:953 +#: ../../extend/addon/hzaddons/cart/cart.php:945 msgid "Order already checked out." msgstr "Заказ уже проверен." -#: ../../extend/addon/hzaddons/cart/cart.php:1256 +#: ../../extend/addon/hzaddons/cart/cart.php:1250 msgid "Drop database tables when uninstalling." msgstr "Сбросить таблицы базы данных при деинсталляции" -#: ../../extend/addon/hzaddons/cart/cart.php:1263 +#: ../../extend/addon/hzaddons/cart/cart.php:1257 #: ../../extend/addon/hzaddons/cart/Settings/Cart.php:111 msgid "Cart Settings" msgstr "Настройки карточек" -#: ../../extend/addon/hzaddons/cart/cart.php:1275 -#: ../../extend/addon/hzaddons/cart/cart.php:1278 +#: ../../extend/addon/hzaddons/cart/cart.php:1269 +#: ../../extend/addon/hzaddons/cart/cart.php:1272 msgid "Shop" msgstr "Магазин" -#: ../../extend/addon/hzaddons/cart/cart.php:1334 +#: ../../extend/addon/hzaddons/cart/cart.php:1328 #: ../../extend/addon/hzaddons/cart/myshop.php:111 msgid "Order Not Found" msgstr "Заказ не найден" -#: ../../extend/addon/hzaddons/cart/cart.php:1395 +#: ../../extend/addon/hzaddons/cart/cart.php:1389 msgid "Cart utilities for orders and payments" msgstr "Утилиты карточек для заказов и платежей" -#: ../../extend/addon/hzaddons/cart/cart.php:1433 +#: ../../extend/addon/hzaddons/cart/cart.php:1427 msgid "You must be logged into the Grid to shop." msgstr "Вы должны быть в сети для доступа к магазину" -#: ../../extend/addon/hzaddons/cart/cart.php:1466 +#: ../../extend/addon/hzaddons/cart/cart.php:1460 #: ../../extend/addon/hzaddons/cart/manual_payments.php:68 +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:409 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:392 msgid "Order not found." msgstr "Заказ не найден." -#: ../../extend/addon/hzaddons/cart/cart.php:1474 +#: ../../extend/addon/hzaddons/cart/cart.php:1468 msgid "Access denied." msgstr "Доступ запрещён." -#: ../../extend/addon/hzaddons/cart/cart.php:1526 -#: ../../extend/addon/hzaddons/cart/cart.php:1669 +#: ../../extend/addon/hzaddons/cart/cart.php:1520 +#: ../../extend/addon/hzaddons/cart/cart.php:1663 msgid "No Order Found" msgstr "Нет найденных заказов" -#: ../../extend/addon/hzaddons/cart/cart.php:1535 +#: ../../extend/addon/hzaddons/cart/cart.php:1529 msgid "An unknown error has occurred Please start again." msgstr "Произошла неизвестная ошибка. Пожалуйста, начните снова." -#: ../../extend/addon/hzaddons/cart/cart.php:1702 +#: ../../extend/addon/hzaddons/cart/cart.php:1696 msgid "Invalid Payment Type. Please start again." msgstr "Недействительный тип платежа. Пожалуйста, начните снова." -#: ../../extend/addon/hzaddons/cart/cart.php:1709 +#: ../../extend/addon/hzaddons/cart/cart.php:1703 msgid "Order not found" msgstr "Заказ не найден" +#: ../../extend/addon/hzaddons/cart/widgets/catalogitem.php:57 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:265 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:657 +msgid "Price" +msgstr "Цена" + #: ../../extend/addon/hzaddons/cart/Settings/Cart.php:56 msgid "Enable Test Catalog" msgstr "Включить тестовый каталог" @@ -12848,30 +12892,30 @@ msgstr "Завершено" msgid "Enable Manual Cart Module" msgstr "Включить модуль ручного управления карточками" -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:173 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:160 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:174 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:161 msgid "New Sku" msgstr "Новый код" -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:209 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:195 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:210 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:196 msgid "Cannot save edits to locked item." msgstr "Невозможно сохранить изменения заблокированной позиции." -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:252 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:644 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:646 msgid "Changes Locked" msgstr "Изменения заблокированы" -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:256 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:648 +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:650 msgid "Item available for purchase." msgstr "Позиция доступна для приобретения." -#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:263 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:655 -msgid "Price" -msgstr "Цена" +#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:268 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:660 +msgid "Photo URL" +msgstr "URL изображения" #: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:151 msgid "Enable Subscription Management Module" @@ -12918,81 +12962,92 @@ msgstr "Количество" msgid "Term" msgstr "Условия" -#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:85 -msgid "Enable Paypal Button Module" -msgstr "Включить модуль кнопки Paypal" +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:86 +msgid "Enable Paypal Button Module (API-v2)" +msgstr "Включить модуль кнопки Paypal (API-v2)" +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:94 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:93 msgid "Use Production Key" msgstr "Использовать ключ Production" +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:101 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:100 msgid "Paypal Sandbox Client Key" msgstr "Ключ клиента Paypal Sandbox" +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:108 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:107 msgid "Paypal Sandbox Secret Key" msgstr "Секретный ключ Paypal Sandbox" +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:114 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:113 msgid "Paypal Production Client Key" msgstr "Ключ клиента Paypal Production" +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:121 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:120 msgid "Paypal Production Secret Key" msgstr "Секретный ключ Paypal Production" +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:264 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:252 msgid "Paypal button payments are not enabled." msgstr "Кнопка Paypal для платежей не включена." +#: ../../extend/addon/hzaddons/cart/submodules/paypalbuttonV2.php:282 #: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:270 msgid "" "Paypal button payments are not properly configured. Please choose another " "payment option." msgstr "Кнопка Paypal для платежей настроена неправильно. Пожалуйста, используйте другой вариант оплаты." +#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:85 +msgid "Enable Paypal Button Module" +msgstr "Включить модуль кнопки Paypal" + #: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:62 msgid "Enable Hubzilla Services Module" msgstr "Включить модуль сервиса Hubzilla" -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:243 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:330 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:245 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:332 msgid "SKU not found." msgstr "Код не найден." -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:296 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:300 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:298 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:302 msgid "Invalid Activation Directive." msgstr "Недействительная директива активации." -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:371 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:375 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:373 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:377 msgid "Invalid Deactivation Directive." msgstr "Недействительная директива деактивации" -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:561 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:563 msgid "Add to this privacy group" msgstr "Добавить в эту группу конфиденциальности" -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:577 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:579 msgid "Set user service class" msgstr "Установить класс обслуживания пользователя" -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:604 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:606 msgid "You must be using a local account to purchase this service." msgstr "Вы должны использовать локальную учётноую запись для покупки этого сервиса." -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:659 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:664 msgid "Add buyer to privacy group" msgstr "Добавить покупателя в группу конфиденциальности" -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:664 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:669 msgid "Add buyer as connection" msgstr "Добавить покупателя как контакт" -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:672 -#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:714 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:677 +#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:719 msgid "Set Service Class" msgstr "Установить класс обслуживания" @@ -13081,31 +13136,35 @@ msgstr "Опубликовать в Livejournal" msgid "Posted by" msgstr "Опубликовано" -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:37 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:38 msgid "Livejournal Crosspost Connector App" msgstr "Приложение \"Публикация в Livejournal\"" -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:38 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:39 msgid "Relay public posts to Livejournal" msgstr "Пересылает общедоступные публикации в Livejournal" -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:54 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:55 msgid "Livejournal username" msgstr "Имя пользователя Livejournal" -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:58 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:59 msgid "Livejournal password" msgstr "Пароль Livejournal" -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:62 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:63 msgid "Post to Livejournal by default" msgstr "Публиковать в Livejournal по умолчанию" -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:66 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:67 msgid "Send wall-to-wall posts to Livejournal" msgstr "Отправлять публикации на стене в Livejournal" -#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:75 +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:71 +msgid "Add link to original post" +msgstr "Добавить ссылку на оригинальную заметку" + +#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:79 msgid "Livejournal Crosspost Connector" msgstr "Публикация в Livejournal" @@ -14151,7 +14210,7 @@ msgstr "Приложение Authchoose" msgid "Authchoose" msgstr "" -#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:169 +#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:173 msgid "Not allowed." msgstr "Запрещено." @@ -14251,7 +14310,7 @@ msgstr "Отслеживаемые теги (через запятую, искл msgid "Diaspora Protocol" msgstr "Протокол Diaspora" -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1536 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1540 #, php-format msgid "%1$s dislikes %2$s's %3$s" msgstr "%1$s не нравится %2$s's %3$s" @@ -15282,48 +15341,52 @@ msgstr "Отключить Federation" msgid "Workflow Settings" msgstr "Настройки \"Рабочего процесса\"" -#: ../../extend/addon/hzaddons/workflow/workflow.php:212 +#: ../../extend/addon/hzaddons/workflow/workflow.php:215 msgid "Workflow user." msgstr "Пользователь \"Рабочего процесса\"." -#: ../../extend/addon/hzaddons/workflow/workflow.php:259 +#: ../../extend/addon/hzaddons/workflow/workflow.php:262 msgid "This channel" msgstr "Этот канал" -#: ../../extend/addon/hzaddons/workflow/workflow.php:480 -#: ../../extend/addon/hzaddons/workflow/workflow.php:1233 -#: ../../extend/addon/hzaddons/workflow/workflow.php:1251 +#: ../../extend/addon/hzaddons/workflow/workflow.php:512 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1372 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1391 msgid "Workflow" msgstr "Рабочий процесс" -#: ../../extend/addon/hzaddons/workflow/workflow.php:1250 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1360 +msgid "No Workflows Available" +msgstr "Нет доступных рабочих процессов" + +#: ../../extend/addon/hzaddons/workflow/workflow.php:1390 msgid "Add item to which workflow" msgstr "Подключить рабочий процесс к элементу" -#: ../../extend/addon/hzaddons/workflow/workflow.php:1297 -#: ../../extend/addon/hzaddons/workflow/workflow.php:1394 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1437 +#: ../../extend/addon/hzaddons/workflow/workflow.php:1558 msgid "Create Workflow Item" msgstr "Создать элемент рабочего процесса" -#: ../../extend/addon/hzaddons/workflow/workflow.php:2270 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2498 msgid "Link" msgstr "Ссылка" -#: ../../extend/addon/hzaddons/workflow/workflow.php:2272 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2500 msgid "Web link." msgstr "Веб-ссылка." -#: ../../extend/addon/hzaddons/workflow/workflow.php:2293 -#: ../../extend/addon/hzaddons/workflow/workflow.php:2346 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2521 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2576 msgid "Brief description or title" msgstr "Подробное описание или заголовок" -#: ../../extend/addon/hzaddons/workflow/workflow.php:2301 -#: ../../extend/addon/hzaddons/workflow/workflow.php:2354 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2529 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2584 msgid "Notes and Info" msgstr "Замечания и информация" -#: ../../extend/addon/hzaddons/workflow/workflow.php:2352 +#: ../../extend/addon/hzaddons/workflow/workflow.php:2582 msgid "Body" msgstr "Текст" -- cgit v1.2.3 From 59fc495593dbd3a4c42a7db42d099bff37f87ed5 Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Mon, 25 Nov 2019 21:22:37 +0000 Subject: Update Russian hstrings.php (cherry picked from commit b69f8a3f298f3c80b75d4085399c4c1f03c0dfb0) --- view/ru/hstrings.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/view/ru/hstrings.php b/view/ru/hstrings.php index 4bf5ea79a..f2781e874 100644 --- a/view/ru/hstrings.php +++ b/view/ru/hstrings.php @@ -208,6 +208,7 @@ App::$strings["[no subject]"] = "[без темы]"; App::$strings["Stored post could not be verified."] = "Сохранённая публикация не может быть проверена."; App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s была создана %2\$s %3\$s"; App::$strings["post"] = "публикация"; +App::$strings["spoiler"] = "спойлер"; App::$strings["Permission denied"] = "Доступ запрещен"; App::$strings["(Unknown)"] = "(Неизвестный)"; App::$strings["Visible to anybody on the internet."] = "Виден всем в интернете."; @@ -320,6 +321,11 @@ App::$strings["next"] = "следующий"; App::$strings["older"] = "старше"; App::$strings["newer"] = "новее"; App::$strings["No connections"] = "Нет контактов"; +App::$strings["Accepts"] = "Принимает"; +App::$strings["Comments"] = "комментарии"; +App::$strings["Stream items"] = "публикации в потоке"; +App::$strings["Wall posts"] = "публикации на стене"; +App::$strings["Nothing"] = "ничего"; App::$strings["View all %s connections"] = "Просмотреть все %s контактов"; App::$strings["Network: %s"] = "Сеть: %s"; App::$strings["Search"] = "Поиск"; @@ -477,7 +483,6 @@ App::$strings["menu"] = "меню"; App::$strings["card"] = "карточка"; App::$strings["article"] = "статья"; App::$strings["Click to open/close"] = "Нажмите, чтобы открыть/закрыть"; -App::$strings["spoiler"] = "спойлер"; App::$strings["View article"] = "Просмотр статьи"; App::$strings["View summary"] = "Просмотр резюме"; App::$strings["Different viewers will see this text differently"] = "Различные зрители увидят этот текст по-разному"; @@ -1927,6 +1932,9 @@ App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Ра App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Разрешить встраивать нефильтруемое HTML-содержимое только для этих доменов"; App::$strings["One site per line. By default embedded content is filtered."] = "Один сайт на строку. По умолчанию встраиваемое содержимое фильтруется."; App::$strings["Block embedded HTML from these domains"] = "Блокировать встраивание HTML-содержимого для этих доменов"; +App::$strings["Allow SVG thumbnails in file browser"] = "Разрешить SVG миниатюры в просмотрщике файлов"; +App::$strings["WARNING: SVG images may contain malicious code."] = "Внимание: изображения SVG могут содержать вредоносный код."; +App::$strings["Allow embedded (inline) PDF files"] = "Разрешить встраивание для файлов PDF"; App::$strings["Plugin %s disabled."] = "Плагин %s отключен."; App::$strings["Plugin %s enabled."] = "Плагин %s включен."; App::$strings["Disable"] = "Запретить"; @@ -2033,8 +2041,6 @@ App::$strings["Poll interval"] = "Интервал опроса"; App::$strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Задержка фоновых процессов опроса на указанное количество секунд для снижения нагрузки на систему. Если 0 - использовать интервал доставки."; App::$strings["Path to ImageMagick convert program"] = "Путь к ImageMagick"; App::$strings["If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert"] = "При установке эта программа генерирует миниатюры изображений для больших файлов (свыше 4000 в любом измерении) для предотвращения утечки памяти. Пример: /usr/bin/convert"; -App::$strings["Allow SVG thumbnails in file browser"] = "Разрешить SVG миниатюры в просмотрщике файлов"; -App::$strings["WARNING: SVG images may contain malicious code."] = "Внимание: изображения SVG могут содержать вредоносный код."; App::$strings["Maximum Load Average"] = "Максимальная средняя нагрузка"; App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Максимальная нагрузка системы для откладывания процессов опроса и доставки - по умолчанию 50."; App::$strings["Expiration period in days for imported (grid/network) content"] = "Срок хранения в днях для импортированного содержимого (из матрицы / сети)."; @@ -2911,6 +2917,7 @@ App::$strings["No Order Found"] = "Нет найденных заказов"; App::$strings["An unknown error has occurred Please start again."] = "Произошла неизвестная ошибка. Пожалуйста, начните снова."; App::$strings["Invalid Payment Type. Please start again."] = "Недействительный тип платежа. Пожалуйста, начните снова."; App::$strings["Order not found"] = "Заказ не найден"; +App::$strings["Price"] = "Цена"; App::$strings["Enable Test Catalog"] = "Включить тестовый каталог"; App::$strings["Enable Manual Payments"] = "Включить ручные платежи"; App::$strings["Base Merchant Currency"] = "Основная торговая валюта"; @@ -2922,7 +2929,7 @@ App::$strings["New Sku"] = "Новый код"; App::$strings["Cannot save edits to locked item."] = "Невозможно сохранить изменения заблокированной позиции."; App::$strings["Changes Locked"] = "Изменения заблокированы"; App::$strings["Item available for purchase."] = "Позиция доступна для приобретения."; -App::$strings["Price"] = "Цена"; +App::$strings["Photo URL"] = "URL изображения"; App::$strings["Enable Subscription Management Module"] = "Включить модуль управления подписками"; App::$strings["Cannot include subscription items with different terms in the same order."] = "Нельзя включать элементы подписки с разными условиями в том же заказе."; App::$strings["Select Subscription to Edit"] = "Выбрать подписку для редактирования"; @@ -2934,7 +2941,7 @@ App::$strings["Maximum active subscriptions to this item per account."] = "Ма App::$strings["Subscription price."] = "Цена подписки."; App::$strings["Quantity"] = "Количество"; App::$strings["Term"] = "Условия"; -App::$strings["Enable Paypal Button Module"] = "Включить модуль кнопки Paypal"; +App::$strings["Enable Paypal Button Module (API-v2)"] = "Включить модуль кнопки Paypal (API-v2)"; App::$strings["Use Production Key"] = "Использовать ключ Production"; App::$strings["Paypal Sandbox Client Key"] = "Ключ клиента Paypal Sandbox"; App::$strings["Paypal Sandbox Secret Key"] = "Секретный ключ Paypal Sandbox"; @@ -2942,6 +2949,7 @@ App::$strings["Paypal Production Client Key"] = "Ключ клиента Paypal App::$strings["Paypal Production Secret Key"] = "Секретный ключ Paypal Production"; App::$strings["Paypal button payments are not enabled."] = "Кнопка Paypal для платежей не включена."; App::$strings["Paypal button payments are not properly configured. Please choose another payment option."] = "Кнопка Paypal для платежей настроена неправильно. Пожалуйста, используйте другой вариант оплаты."; +App::$strings["Enable Paypal Button Module"] = "Включить модуль кнопки Paypal"; App::$strings["Enable Hubzilla Services Module"] = "Включить модуль сервиса Hubzilla"; App::$strings["SKU not found."] = "Код не найден."; App::$strings["Invalid Activation Directive."] = "Недействительная директива активации."; @@ -2976,6 +2984,7 @@ App::$strings["Livejournal username"] = "Имя пользователя Livejou App::$strings["Livejournal password"] = "Пароль Livejournal"; App::$strings["Post to Livejournal by default"] = "Публиковать в Livejournal по умолчанию"; App::$strings["Send wall-to-wall posts to Livejournal"] = "Отправлять публикации на стене в Livejournal"; +App::$strings["Add link to original post"] = "Добавить ссылку на оригинальную заметку"; App::$strings["Livejournal Crosspost Connector"] = "Публикация в Livejournal"; App::$strings["Random Planet App"] = "Приложение \"Случайная планета\""; App::$strings["Installed"] = "Установлено"; @@ -3477,6 +3486,7 @@ App::$strings["Workflow Settings"] = "Настройки \"Рабочего пр App::$strings["Workflow user."] = "Пользователь \"Рабочего процесса\"."; App::$strings["This channel"] = "Этот канал"; App::$strings["Workflow"] = "Рабочий процесс"; +App::$strings["No Workflows Available"] = "Нет доступных рабочих процессов"; App::$strings["Add item to which workflow"] = "Подключить рабочий процесс к элементу"; App::$strings["Create Workflow Item"] = "Создать элемент рабочего процесса"; App::$strings["Link"] = "Ссылка"; -- cgit v1.2.3 From 6c8d1bdffef0c1d83ca1bdbc0caeeb41fc8aa3df Mon Sep 17 00:00:00 2001 From: Max Kostikov <max@kostikov.co> Date: Mon, 25 Nov 2019 21:25:44 +0000 Subject: Update CHANGELOG (cherry picked from commit 9284b60a79bf226f4fef0e51f6eb58eacdb3973c) --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index e5a85c7a0..367f54830 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -50,6 +50,7 @@ Hubzilla 4.6 (2019-11-??) - Fix entries without sitekey returned from DB in queue_deliver() and Lib/Queue Addons + - Twitter: send tweet even if attached image uploading was unsuccessful - Livejournal: add link to original post option - Flashcards: update to version 2.06 - Pubcrawl: compatibility changes to support pixelfed -- cgit v1.2.3 From 3e133bbfa3c5a0b7c86aa3ba2f0dccad1520cc53 Mon Sep 17 00:00:00 2001 From: "DM42.Net Hubzilla Development" <hzdev@dm42.net> Date: Thu, 28 Nov 2019 05:27:12 +0000 Subject: Move auto_save_draft to header from thread comment (cherry picked from commit c86b35da701674510a97ccc21e46581bd864cc31) --- Zotlabs/Lib/ThreadItem.php | 5 +---- Zotlabs/Module/Photos.php | 4 +--- boot.php | 3 ++- view/tpl/comment_item.tpl | 3 --- view/tpl/head.tpl | 1 + 5 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php index 5e4600df2..667ea269a 100644 --- a/Zotlabs/Lib/ThreadItem.php +++ b/Zotlabs/Lib/ThreadItem.php @@ -778,8 +778,6 @@ class ThreadItem { call_hooks('comment_buttons',$arr); $comment_buttons = $arr['comment_buttons']; - $feature_auto_save_draft = ((feature_enabled($conv->get_profile_owner(), 'auto_save_draft')) ? "true" : "false"); - $comment_box = replace_macros($template,array( '$return_path' => '', '$threaded' => $this->is_threaded(), @@ -814,8 +812,7 @@ class ThreadItem { '$anoncomments' => ((($conv->get_mode() === 'channel' || $conv->get_mode() === 'display') && perm_is_allowed($conv->get_profile_owner(),'','post_comments')) ? true : false), '$anonname' => [ 'anonname', t('Your full name (required)') ], '$anonmail' => [ 'anonmail', t('Your email address (required)') ], - '$anonurl' => [ 'anonurl', t('Your website URL (optional)') ], - '$auto_save_draft' => $feature_auto_save_draft + '$anonurl' => [ 'anonurl', t('Your website URL (optional)') ] )); return $comment_box; diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php index 13ec64ab9..43c9f86ee 100644 --- a/Zotlabs/Module/Photos.php +++ b/Zotlabs/Module/Photos.php @@ -1080,7 +1080,6 @@ class Photos extends \Zotlabs\Web\Controller { $comments = ''; if(! $r) { if($observer && ($can_post || $can_comment)) { - $feature_auto_save_draft = ((feature_enabled($owner_uid, 'auto_save_draft')) ? "true" : "false"); $commentbox = replace_macros($cmnt_tpl,array( '$return_path' => '', '$mode' => 'photos', @@ -1096,8 +1095,7 @@ class Photos extends \Zotlabs\Web\Controller { '$submit' => t('Submit'), '$preview' => t('Preview'), '$ww' => '', - '$feature_encrypt' => false, - '$auto_save_draft' => $feature_auto_save_draft + '$feature_encrypt' => false )); } } diff --git a/boot.php b/boot.php index fb580e3a9..cf3eddce9 100755 --- a/boot.php +++ b/boot.php @@ -1205,7 +1205,8 @@ class App { '$linkrel' => head_get_links(), '$js_strings' => js_strings(), '$zid' => get_my_address(), - '$channel_id' => self::$profile['uid'] + '$channel_id' => self::$profile['uid'], + '$auto_save_draft' => ((feature_enabled(self::$profile['uid'], 'auto_save_draft')) ? "true" : "false") ] ) . self::$page['htmlhead']; diff --git a/view/tpl/comment_item.tpl b/view/tpl/comment_item.tpl index 23594677c..3b51971ec 100755 --- a/view/tpl/comment_item.tpl +++ b/view/tpl/comment_item.tpl @@ -1,6 +1,3 @@ - <script> - var auto_save_draft = {{$auto_save_draft}}; - </script> {{if $threaded}} <div class="comment-wwedit-wrapper threaded" id="comment-edit-wrapper-{{$id}}" style="display: block;"> {{else}} diff --git a/view/tpl/head.tpl b/view/tpl/head.tpl index 5f874426c..bd4cf3747 100755 --- a/view/tpl/head.tpl +++ b/view/tpl/head.tpl @@ -15,6 +15,7 @@ {{if $channel_hash}}var channelHash = '{{$channel_hash}}';{{/if}} {{if $channel_id}}var channelId = '{{$channel_id}}';{{/if}}{{* Used in e.g. autocomplete *}} var preloadImages = {{$preload_images}}; + var auto_save_draft = {{$auto_save_draft}}; </script> -- cgit v1.2.3 From fac7826efa486fb711a442fc3fdca27d12ca21aa Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Wed, 4 Dec 2019 10:14:28 +0000 Subject: update changelog (cherry picked from commit 295c08fcf31e44ed48284768e6df92aaa11ab964) --- CHANGELOG | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 367f54830..6904c1f48 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,4 @@ -Hubzilla 4.6 (2019-11-??) +Hubzilla 4.6 (2019-12-04) - Improve opengraph support for channels - Add opengraph support for articles - Update abook_connected for RSS feeds only if handle_feed() returned success @@ -52,7 +52,7 @@ Hubzilla 4.6 (2019-11-??) Addons - Twitter: send tweet even if attached image uploading was unsuccessful - Livejournal: add link to original post option - - Flashcards: update to version 2.06 + - Flashcards: update to version 2.08 - Pubcrawl: compatibility changes to support pixelfed - Cart: update paypal button to API v2 - Photocache: rework for speed and lower memory consumption -- cgit v1.2.3 From 4c8d33d1eb2a804aa70a7bc677d6c73d0d94816b Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Wed, 4 Dec 2019 10:24:03 +0000 Subject: bump version --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index cf3eddce9..2fcf62d30 100755 --- a/boot.php +++ b/boot.php @@ -50,7 +50,7 @@ require_once('include/attach.php'); require_once('include/bbcode.php'); define ( 'PLATFORM_NAME', 'hubzilla' ); -define ( 'STD_VERSION', '4.6RC' ); +define ( 'STD_VERSION', '4.6' ); define ( 'ZOT_REVISION', '6.0a' ); define ( 'DB_UPDATE_VERSION', 1234 ); -- cgit v1.2.3