From feda23587c7e24dec0cfc8be9f2f444e009f967f Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 13 Aug 2019 16:53:04 -0700 Subject: [PATCH 001/134] 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; From 9a2fbdde200eae4e9ff8163cfa0c47e1111966b6 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 14 Aug 2019 17:55:56 -0700 Subject: [PATCH 002/134] 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']; From beeafc6bc5eb1d564a60986bbc2de3f7b06bfdc1 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 15 Aug 2019 16:28:06 -0700 Subject: [PATCH 003/134] 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 4f30c1871f17d184e480c6fd40eb6cb0738066c5..b69303d1b870203cd641ec090fbfc91d88cd18de 100644 GIT binary patch delta 100 zcmX@f{Fs@8`7m1XAXSLwmoddc~@llvK! MC)+aG5UJJ*0NUIlyZ`_I delta 74 zcmaFNe3F@i`74GAd8@Vzj|6 GZ3O^t+865p diff --git a/util/zotsh/easywebdav/__version__.pyc b/util/zotsh/easywebdav/__version__.pyc index b19bf50b046e332e539cb36f14570542c14b236c..bdc53441feff1538b1ccbad1f20c6b4fade0f37f 100644 GIT binary patch delta 55 zcmZ3-xSNrK`7y7`7y$a^%!cH8M2rdQWzMrIT(tJCcCkeVAr|%0*f&tcB#o1 zSQIx~u`R*rUKWMPX~KM)l{k;#G(l2v5aB3*1t5O!=1Mx3%KoQt{S9Cs-dPYUn$w$QBp(vUB zO`;M>0O;1ulAlopUP-M-6}T(?A5}m>_9%+LW=*+u$o2wFl~y>6q(pHooU{3&;%a2I KKyMsSwgvz~tcha) 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() + + + + From 808baf203d8c7aa57d89a3d5412742a4c84934b6 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 15 Aug 2019 19:18:46 -0700 Subject: [PATCH 004/134] 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) { From ac05a2ede7023495618b316635b93274416b69d8 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 15 Aug 2019 21:30:47 -0700 Subject: [PATCH 005/134] 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 ] ); } From e5539c0d01c1be0b9235aee4aec38f7860cc6959 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Fri, 16 Aug 2019 20:19:49 +0200 Subject: [PATCH 006/134] 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 From e800e2db2b6149cb1a3d32bb111fc23eb8bcc2c4 Mon Sep 17 00:00:00 2001 From: "DM42.Net Zap Dev" Date: Mon, 19 Aug 2019 23:13:19 -0400 Subject: [PATCH 007/134] 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])) { From d2565519070255af7f127c90b4dadef9c24328f8 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 21 Aug 2019 18:49:11 -0700 Subject: [PATCH 008/134] 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) { From cf9ef615c96d0b74ad4d676f48cb67e41a56f5d5 Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Thu, 22 Aug 2019 20:17:22 +0200 Subject: [PATCH 009/134] 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); From 58d7c7f6aed50d8b40334c011490b1b26eee4ede Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Thu, 22 Aug 2019 20:20:54 +0200 Subject: [PATCH 010/134] 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']); From 8cc40038375c33886f7c6f7d429c33a47eab8fb9 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 22 Aug 2019 19:39:11 -0700 Subject: [PATCH 011/134] 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); From 60919488f17ded7bcd1dd48429baaca530475161 Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Fri, 23 Aug 2019 23:58:07 +0200 Subject: [PATCH 012/134] 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); From 51954c7f3de4940bb9bdc545f8a2a26e6ea7b101 Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Fri, 30 Aug 2019 00:51:46 +0200 Subject: [PATCH 013/134] 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)) { From d267dd251579c28346882a3c69c5749fa4b6962d Mon Sep 17 00:00:00 2001 From: Max Kostikov Date: Fri, 30 Aug 2019 00:55:36 +0200 Subject: [PATCH 014/134] 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'); From 1f8d29a22171138c90377007496c4af2033b1095 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 31 Aug 2019 14:04:10 -0700 Subject: [PATCH 015/134] 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') + ]; + } } From bbc98db6b4071296ea02cea1a8c89fd33b251b1c Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 31 Aug 2019 14:43:08 -0700 Subject: [PATCH 016/134] 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) From 93ec01e0a1fcf7a5574d8bf6ac044331b5b94724 Mon Sep 17 00:00:00 2001 From: Terrox Date: Tue, 3 Sep 2019 14:32:52 +0200 Subject: [PATCH 017/134] 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) { - 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; - } - } 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,17 @@ 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() { - - $backend = new PDO($this->pdo); - - //Creating a new calendar - $newId = $backend->createCalendar('principals/user2', 'somerandomid', []); - - $propPatch = new PropPatch([ - '{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 testUpdateCalendarBadId() + { $backend = new PDO($this->pdo); //Creating a new calendar @@ -161,7 +134,26 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase { $propPatch = new PropPatch([ '{DAV:}displayname' => 'myCalendar', - '{DAV:}yourmom' => 'wittycomment', + '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'), + ]); + + // Updating the calendar + $backend->updateCalendar('raaaa', $propPatch); + } + + /** + * @depends testUpdateCalendarAndFetch + */ + public function testUpdateCalendarUnknownProperty() + { + $backend = new PDO($this->pdo); + + //Creating a new calendar + $newId = $backend->createCalendar('principals/user2', 'somerandomid', []); + + $propPatch = new PropPatch([ + '{DAV:}displayname' => 'myCalendar', + '{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', ], ]; - } - function createCalendar($principalUri, $calendarUri, array $properties) { } - function deleteCalendar($calendarId) { } - function getCalendarObjects($calendarId) { + public function createCalendar($principalUri, $calendarUri, array $properties) + { + } + + public function deleteCalendar($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", ]; - } - } - function createCalendarObject($calendarId, $objectUri, $calendarData) { } - function updateCalendarObject($calendarId, $objectUri, $calendarData) { } - function deleteCalendarObject($calendarId, $objectUri) { } + public function createCalendarObject($calendarId, $objectUri, $calendarData) + { + } + + 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; - } - } - }); - } /** - * 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; - } - 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() { - + 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, - 'carddata' => $data, - 'etag' => '"' . md5($data) . '"', - 'size' => strlen($data) - ]; + return [ + 'uri' => $cardUri, + 'carddata' => $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; - } - } 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() { - - $client = new ClientMock([ - 'baseUri' => '/', - 'userName' => 'foo', - 'password' => 'bar', - ]); - - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); - $this->assertEquals(CURLAUTH_BASIC | CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]); - - } - - function testBasicAuth() { - - $client = new ClientMock([ - 'baseUri' => '/', - 'userName' => 'foo', - 'password' => 'bar', - 'authType' => Client::AUTH_BASIC - ]); - - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); - $this->assertEquals(CURLAUTH_BASIC, $client->curlSettings[CURLOPT_HTTPAUTH]); - - } - - function testDigestAuth() { - - $client = new ClientMock([ - 'baseUri' => '/', - 'userName' => 'foo', - 'password' => 'bar', - 'authType' => Client::AUTH_DIGEST - ]); - - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); - $this->assertEquals(CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]); - - } - - function testNTLMAuth() { - - $client = new ClientMock([ - 'baseUri' => '/', - 'userName' => 'foo', - 'password' => 'bar', - 'authType' => Client::AUTH_NTLM - ]); - - $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]); - $this->assertEquals(CURLAUTH_NTLM, $client->curlSettings[CURLOPT_HTTPAUTH]); - - } - - function testProxy() { - + public function testAuth() + { $client = new ClientMock([ 'baseUri' => '/', - 'proxy' => 'localhost:8888', + 'userName' => 'foo', + 'password' => 'bar', ]); - $this->assertEquals("localhost:8888", $client->curlSettings[CURLOPT_PROXY]); - + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals(CURLAUTH_BASIC | CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]); } - function testEncoding() { - + public function testBasicAuth() + { $client = new ClientMock([ - 'baseUri' => '/', + 'baseUri' => '/', + 'userName' => 'foo', + 'password' => 'bar', + 'authType' => Client::AUTH_BASIC, + ]); + + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals(CURLAUTH_BASIC, $client->curlSettings[CURLOPT_HTTPAUTH]); + } + + public function testDigestAuth() + { + $client = new ClientMock([ + 'baseUri' => '/', + 'userName' => 'foo', + 'password' => 'bar', + 'authType' => Client::AUTH_DIGEST, + ]); + + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals(CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]); + } + + public function testNTLMAuth() + { + $client = new ClientMock([ + 'baseUri' => '/', + 'userName' => 'foo', + 'password' => 'bar', + 'authType' => Client::AUTH_NTLM, + ]); + + $this->assertEquals('foo:bar', $client->curlSettings[CURLOPT_USERPWD]); + $this->assertEquals(CURLAUTH_NTLM, $client->curlSettings[CURLOPT_HTTPAUTH]); + } + + public function testProxy() + { + $client = new ClientMock([ + 'baseUri' => '/', + 'proxy' => 'localhost:8888', + ]); + + $this->assertEquals('localhost:8888', $client->curlSettings[CURLOPT_PROXY]); + } + + public function testEncoding() + { + $client = new ClientMock([ + '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 +declare(strict_types=1); + namespace Sabre\DAV\Exception; -class PaymentRequiredTest extends \PHPUnit_Framework_TestCase { - - function testGetHTTPCode() { - +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 +declare(strict_types=1); + namespace Sabre\DAV; -class ExceptionTest extends \PHPUnit_Framework_TestCase { - - function testStatus() { - +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,33 +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() { + public function testParseSimple() + { + $this->assertParseResult( + 'return-asynch', + [ + 'respond-async' => true, + 'return' => null, + 'handling' => null, + 'wait' => null, + ] + ); + } - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_PREFER' => 'wait=10', + public function testParseValue() + { + $this->assertParseResult( + 'wait=10', + [ + 'respond-async' => false, + 'return' => null, + 'handling' => null, + 'wait' => '10', + ] + ); + } + + public function testParseMultiple() + { + $this->assertParseResult( + 'return-minimal, strict,lenient', + [ + 'respond-async' => false, + 'return' => 'minimal', + 'handling' => 'lenient', + 'wait' => null, + ] + ); + } + + public function testParseWeirdValue() + { + $this->assertParseResult( + 'BOOOH', + [ + 'respond-async' => false, + 'return' => null, + 'handling' => null, + 'wait' => null, + 'boooh' => true, + ] + ); + } + + public function testBrief() + { + $httpRequest = new HTTP\Request('GET', '/foo', [ + 'Brief' => 't', ]); $server = new Server(); @@ -35,79 +87,19 @@ class HTTPPreferParsingTest extends \Sabre\DAVServerTest { $this->assertEquals([ 'respond-async' => false, - 'return' => null, - 'handling' => null, - 'wait' => '10', + 'return' => 'minimal', + 'handling' => null, + 'wait' => null, ], $server->getHTTPPrefer()); - - } - - 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()); - - } - - 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()); - - } - - function testBrief() { - - $httpRequest = HTTP\Sapi::createFromServerArray([ - 'HTTP_BRIEF' => 't', - ]); - - $server = new Server(); - $server->httpRequest = $httpRequest; - - $this->assertEquals([ - 'respond-async' => false, - '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'); + $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 +declare(strict_types=1); + namespace Sabre\DAV\Locks\Backend; -class PDOMySQLTest extends PDOTest { - +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 +declare(strict_types=1); + namespace Sabre\DAV\Locks\Backend; -abstract class PDOTest extends AbstractTest { - +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; - } - } 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() { - +class ServerSimpleTest extends AbstractServer +{ + public function testConstructArray() + { $nodes = [ - new SimpleCollection('hello') + new SimpleCollection('hello'), ]; $server = new Server($nodes); $this->assertEquals($nodes[0], $server->tree->getNodeForPath('hello')); - } /** - * @expectedException Sabre\DAV\Exception + * @expectedException \Sabre\DAV\Exception */ - function testConstructIncorrectObj() { - - $nodes = [ - new SimpleCollection('hello'), - new \STDClass(), - ]; - - $server = new Server($nodes); - - } - - /** - * @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)); + } + + $this->assertEquals('', $this->server->calculateUri('')); } - function testCalculateUriSpecialChars() { - + 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; + return false; + } 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 +declare(strict_types=1); + namespace Sabre\DAV; -class ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { - - function testUpdatePropertiesFail() { - +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 +declare(strict_types=1); + namespace Sabre\DAV; -class SimpleFileTest extends \PHPUnit_Framework_TestCase { - - function testAll() { - +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 +declare(strict_types=1); + namespace Sabre\DAV; -class StringUtilTest extends \PHPUnit_Framework_TestCase { - +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', '/'); - mkdir(SABRE_TEMPDIR . '/locksdir'); - $locksBackend = new Locks\Backend\File(SABRE_TEMPDIR . '/locks'); + $this->server->httpRequest = $request; + $this->server->exec(); + + $this->assertEquals(200, $this->response->status); + } + + 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; - } - } 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 +declare(strict_types=1); + namespace Sabre\DAV; -class TreeTest extends \PHPUnit_Framework_TestCase { - - function testNodeExists() { - +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 +declare(strict_types=1); + namespace Sabre\DAV; -class UUIDUtilTest extends \PHPUnit_Framework_TestCase { - - function testValidateUUID() { - +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 +declare(strict_types=1); + namespace Sabre\DAVACL\PrincipalBackend; -class Mock extends AbstractBackend { - +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; - } - 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 +declare(strict_types=1); + namespace Sabre\DAVACL\PrincipalBackend; -class PDOMySQLTest extends AbstractPDOTest { - +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 +declare(strict_types=1); + namespace Sabre\DAVACL\PrincipalBackend; -class PDOSqliteTest extends AbstractPDOTest { - +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 +declare(strict_types=1); + namespace Sabre\DAVACL; -class PrincipalCollectionTest extends \PHPUnit_Framework_TestCase { - - function testBasic() { - +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 +declare(strict_types=1); + namespace Sabre; -class TestUtil { - +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/EventEmitterInterface.php b/vendor/sabre/event/lib/EmitterInterface.php similarity index 68% rename from vendor/sabre/event/lib/EventEmitterInterface.php rename to vendor/sabre/event/lib/EmitterInterface.php index 0e2be2cef..a7e4b6132 100644 --- a/vendor/sabre/event/lib/EventEmitterInterface.php +++ b/vendor/sabre/event/lib/EmitterInterface.php @@ -1,4 +1,4 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event; @@ -8,31 +8,25 @@ namespace Sabre\Event; * Anything that accepts listeners and emits events should implement this * interface. * - * @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 */ -interface EventEmitterInterface { +interface EmitterInterface { /** * Subscribe to an event. * - * @param string $eventName - * @param callable $callBack - * @param int $priority * @return void */ - function on($eventName, callable $callBack, $priority = 100); + function on(string $eventName, callable $callBack, int $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); + function once(string $eventName, callable $callBack, int $priority = 100); /** * Emits an event. @@ -54,13 +48,8 @@ interface EventEmitterInterface { * * 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); + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool; /** * Returns the list of listeners for an event. @@ -68,22 +57,17 @@ interface EventEmitterInterface { * 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); + 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. - * - * @param string $eventName - * @param callable $listener - * @return bool */ - function removeListener($eventName, callable $listener); + function removeListener(string $eventName, callable $listener) : bool; /** * Removes all listeners. @@ -92,9 +76,8 @@ interface EventEmitterInterface { * removed. If it is not specified, every listener for every event is * removed. * - * @param string $eventName * @return void */ - function removeAllListeners($eventName = null); + function removeAllListeners(string $eventName = null); } diff --git a/vendor/sabre/event/lib/EventEmitterTrait.php b/vendor/sabre/event/lib/EmitterTrait.php similarity index 76% rename from vendor/sabre/event/lib/EventEmitterTrait.php rename to vendor/sabre/event/lib/EmitterTrait.php index 257629fae..dafae362f 100644 --- a/vendor/sabre/event/lib/EventEmitterTrait.php +++ b/vendor/sabre/event/lib/EmitterTrait.php @@ -1,4 +1,4 @@ -<?php +<?php declare (strict_types=1); namespace Sabre\Event; @@ -11,28 +11,19 @@ namespace Sabre\Event; * 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/). + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -trait EventEmitterTrait { +trait EmitterTrait { - /** - * 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) { + function on(string $eventName, callable $callBack, int $priority = 100) { if (!isset($this->listeners[$eventName])) { $this->listeners[$eventName] = [ @@ -51,18 +42,15 @@ trait EventEmitterTrait { /** * Subscribe to an event exactly once. * - * @param string $eventName - * @param callable $callBack - * @param int $priority * @return void */ - function once($eventName, callable $callBack, $priority = 100) { + 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()); + return \call_user_func_array($callBack, \func_get_args()); }; @@ -90,19 +78,14 @@ trait EventEmitterTrait { * * 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) { + function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool { - if (is_null($continueCallBack)) { + if (\is_null($continueCallBack)) { foreach ($this->listeners($eventName) as $listener) { - $result = call_user_func_array($listener, $arguments); + $result = \call_user_func_array($listener, $arguments); if ($result === false) { return false; } @@ -111,12 +94,12 @@ trait EventEmitterTrait { } else { $listeners = $this->listeners($eventName); - $counter = count($listeners); + $counter = \count($listeners); foreach ($listeners as $listener) { $counter--; - $result = call_user_func_array($listener, $arguments); + $result = \call_user_func_array($listener, $arguments); if ($result === false) { return false; } @@ -139,10 +122,9 @@ trait EventEmitterTrait { * 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) { + function listeners(string $eventName) : array { if (!isset($this->listeners[$eventName])) { return []; @@ -152,7 +134,7 @@ trait EventEmitterTrait { if (!$this->listeners[$eventName][0]) { // Sorting - array_multisort($this->listeners[$eventName][1], SORT_NUMERIC, $this->listeners[$eventName][2]); + \array_multisort($this->listeners[$eventName][1], SORT_NUMERIC, $this->listeners[$eventName][2]); // Marking the listeners as sorted $this->listeners[$eventName][0] = true; @@ -167,12 +149,8 @@ trait EventEmitterTrait { * * 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) { + function removeListener(string $eventName, callable $listener) : bool { if (!isset($this->listeners[$eventName])) { return false; @@ -195,12 +173,11 @@ trait EventEmitterTrait { * removed. If it is not specified, every listener for every event is * removed. * - * @param string $eventName * @return void */ - function removeAllListeners($eventName = null) { + function removeAllListeners(string $eventName = null) { - if (!is_null($eventName)) { + if (!\is_null($eventName)) { unset($this->listeners[$eventName]); } else { $this->listeners = []; @@ -208,4 +185,11 @@ trait EventEmitterTrait { } + /** + * 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/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 - -matrix: - fast_finish: true - allow_failures: - - php: hhvm + - 7.2 + - 7.3 + - 7.4snapshot env: + global: + - RUN_PHPSTAN="FALSE" matrix: - - PREFER_LOWEST="" - - PREFER_LOWEST="--prefer-lowest" + - 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 + +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)))); + $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']); + + $curlHandle = $status['handle']; + $curlResult = $this->parseResponse(curl_multi_getcontent($curlHandle), $curlHandle); $retry = false; - if ($curlResult['status'] === self::STATUS_CURLERROR) { - + 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,12 @@ 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, @@ -485,8 +464,63 @@ class Client extends EventEmitter { if ($curlErrNo) { return [ - 'status' => self::STATUS_CURLERROR, - 'curl_errno' => $curlErrNo, + '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, + $curlErrMsg + ) = $this->curlStuff($curlHandle); + + if ($curlErrNo) { + return [ + '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))), '/'); + } + + if ($uri.'/' === $baseUri) { + return ''; } // A special case, if the baseUri was accessed without a trailing // slash, we'll accept it as well. - elseif ($uri . '/' === $baseUri) { - return ''; - - } - - 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. + */ + public function getMethod(): string; /** - * Returns the current HTTP method - * - * @return string + * Sets the HTTP method. */ - function getMethod(); - - /** - * Sets the HTTP method - * - * @param string $method - * @return void - */ - 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; - } - } 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; - $r = self::createFromServerArray($_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($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); + $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)); - $mimeType = explode('/', trim($mimeType)); - if (count($mimeType) !== 2) { + if ('*' === $mimeType) { + $mimeType = '*/*'; + } + + $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 ($delta[$part]) { - return $delta[$part]; - } elseif ($base[$part]) { - return $base[$part]; - } - return null; - - }; - // 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; + }; + $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; - } - } 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; - } - } 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 - ); - - } - - } else { + 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 + ); + } + + // 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; - private $_yy_stack = array(); + /** + * preg token pattern for literal + * + * @var null + */ + private $yy_global_literal = null; + + 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(45, 52,), - array(28, 34,), - array(16, 54,), - array(28, 34,), + array(27, 33,), + array(27, 33,), array(45, 52,), array(45, 52,), - array(28, 34,), - array(28, 34,), - array(17, 24,), - array(28, 34,), - array(28, 34,), + array(27, 33,), array(45, 52,), - array(28, 34,), - array(28, 34,), - array(28, 34,), - array(28, 34,), - array(28, 34,), + array(13, 36,), + array(27, 33,), + array(27, 33,), array(45, 52,), - array(14, 37,), - array(1,), - array(19,), + array(16, 23,), + array(27, 33,), + array(27, 33,), + array(45, 52,), + array(27, 33,), + array(27, 33,), + array(27, 33,), + array(27, 33,), + array(27, 33,), array(1,), array(2,), - array(19,), - array(1,), - array(19,), - array(1,), + array(18,), array(2,), - array(37,), + array(36,), array(1,), + array(1,), + 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(17,), - array(18,), - array(18,), - array(9,), - array(51,), - array(25,), - array(15,), - array(18,), - array(53,), - array(53,), + array(24,), array(16,), + array(8,), + array(37,), + array(14,), + array(17,), + array(51,), + array(14,), + array(15,), + array(53,), + array(53,), + 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 => 68, 1 => 1), + array(0 => 68, 1 => 2), + array(0 => 68, 1 => 2), + array(0 => 71, 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 => 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 => 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 => 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 => 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 => 3), - array(0 => 76, 1 => 2), - 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 => 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 => 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 => 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 => 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 => 97, 1 => 2), - 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 => 100, 1 => 3), - array(0 => 100, 1 => 1), - array(0 => 100, 1 => 0), + 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 => 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 => 101, 1 => 3), - array(0 => 101, 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 => 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 => 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 => 1), + array(0 => 75, 1 => 3), + array(0 => 75, 1 => 4), + array(0 => 75, 1 => 3), + 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 => 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 => 98, 1 => 1), + array(0 => 98, 1 => 1), + array(0 => 98, 1 => 3), + array(0 => 95, 1 => 2), + array(0 => 99, 1 => 1), + array(0 => 99, 1 => 2), + array(0 => 100, 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); } } + From d184e2708f788b365648cedc7c2b6c9fac224631 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Sun, 10 Nov 2019 13:04:13 +0000 Subject: [PATCH 112/134] 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 +} From 602768209bcaf3572d6f8457e91d3de12540c636 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 11 Nov 2019 08:06:44 +0000 Subject: [PATCH 113/134] 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 ); From de7891771dbfe1aae9ea75e2688e3696b54d2ecb Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 11 Nov 2019 08:14:42 +0000 Subject: [PATCH 114/134] update strings --- util/hmessages.po | 24266 ++++++++++++++++++++++---------------------- 1 file changed, 12154 insertions(+), 12112 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,969 +17,7993 @@ 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" +#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3231 +#: ../../Zotlabs/Module/Admin/Site.php:187 +msgid "Default" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:57 -msgid "Can send me their channel stream and posts" +#: ../../view/theme/redbasic/php/config.php:16 +#: ../../view/theme/redbasic/php/config.php:19 +msgid "Focus (Hubzilla default)" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:58 -msgid "Can view my default channel profile" +#: ../../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:59 -msgid "Can view my connections" +#: ../../view/theme/redbasic/php/config.php:98 +msgid "Theme settings" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:60 -msgid "Can view my file storage and photos" +#: ../../view/theme/redbasic/php/config.php:99 +msgid "Narrow navbar" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:61 -msgid "Can upload/modify my file storage and photos" +#: ../../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:62 -msgid "Can view my channel webpages" +#: ../../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:63 -msgid "Can view my wiki pages" +#: ../../view/theme/redbasic/php/config.php:100 +msgid "Navigation bar background color" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:64 -msgid "Can create/edit my channel webpages" +#: ../../view/theme/redbasic/php/config.php:101 +msgid "Navigation bar icon color " msgstr "" -#: ../../Zotlabs/Access/Permissions.php:65 -msgid "Can write to my wiki pages" +#: ../../view/theme/redbasic/php/config.php:102 +msgid "Navigation bar active icon color " msgstr "" -#: ../../Zotlabs/Access/Permissions.php:66 -msgid "Can post on my channel (wall) page" +#: ../../view/theme/redbasic/php/config.php:103 +msgid "Link color" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:67 -msgid "Can comment on or like my posts" +#: ../../view/theme/redbasic/php/config.php:104 +msgid "Set font-color for banner" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:68 -msgid "Can send me private mail messages" +#: ../../view/theme/redbasic/php/config.php:105 +msgid "Set the background color" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:69 -msgid "Can like/dislike profiles and profile things" +#: ../../view/theme/redbasic/php/config.php:106 +msgid "Set the background image" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:70 -msgid "Can forward to all my channel connections via ! mentions in posts" +#: ../../view/theme/redbasic/php/config.php:107 +msgid "Set the background color of items" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:71 -msgid "Can chat with me" +#: ../../view/theme/redbasic/php/config.php:108 +msgid "Set the background color of comments" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:72 -msgid "Can source my public posts in derived channels" +#: ../../view/theme/redbasic/php/config.php:109 +msgid "Set font-size for the entire application" msgstr "" -#: ../../Zotlabs/Access/Permissions.php:73 -msgid "Can administer my channel" +#: ../../view/theme/redbasic/php/config.php:109 +msgid "Examples: 1rem, 100%, 16px" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:283 -msgid "Social Networking" +#: ../../view/theme/redbasic/php/config.php:110 +msgid "Set font-color for posts and comments" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:284 -msgid "Social - Federation" +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Set radius of corners" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:285 -msgid "Social - Mostly Public" +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Example: 4px" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:286 -msgid "Social - Restricted" +#: ../../view/theme/redbasic/php/config.php:112 +msgid "Set shadow depth of photos" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:287 -msgid "Social - Private" +#: ../../view/theme/redbasic/php/config.php:113 +msgid "Set maximum width of content region in pixel" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:290 -msgid "Community Forum" +#: ../../view/theme/redbasic/php/config.php:113 +msgid "Leave empty for default width" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:291 -msgid "Forum - Mostly Public" +#: ../../view/theme/redbasic/php/config.php:114 +msgid "Set size of conversation author photo" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:292 -msgid "Forum - Restricted" +#: ../../view/theme/redbasic/php/config.php:115 +msgid "Set size of followup author photos" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:293 -msgid "Forum - Private" +#: ../../view/theme/redbasic/php/config.php:116 +msgid "Show advanced settings" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:296 -msgid "Feed Republish" +#: ../../util/nconfig.php:34 +msgid "Source channel not found." msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:297 -msgid "Feed - Mostly Public" +#: ../../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:298 -msgid "Feed - Restricted" +#: ../../addon/channelreputation/channelreputation.php:108 +msgid "Enable Community Moderation" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:301 -msgid "Special Purpose" +#: ../../addon/channelreputation/channelreputation.php:116 +msgid "Reputation automatically given to new members" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:302 -msgid "Special - Celebrity/Soapbox" +#: ../../addon/channelreputation/channelreputation.php:117 +msgid "Reputation will never fall below this value" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:303 -msgid "Special - Group Repository" +#: ../../addon/channelreputation/channelreputation.php:118 +msgid "Minimum reputation before posting is allowed" 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:119 +msgid "Minimum reputation before commenting is allowed" msgstr "" -#: ../../Zotlabs/Access/PermissionRoles.php:307 -msgid "Custom/Expert Mode" +#: ../../addon/channelreputation/channelreputation.php:120 +msgid "Minimum reputation before a member is able to moderate other posts" 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 +#: ../../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 "" + +#: ../../addon/channelreputation/channelreputation.php:122 +msgid "Reputation \"cost\" to post" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:123 +msgid "Reputation \"cost\" to comment" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:124 +msgid "" +"Reputation automatically recovers at this rate per hour until it reaches " +"minimum_to_post" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:125 +msgid "" +"When minimum_to_moderate > reputation > minimum_to_post reputation recovers " +"at this rate per hour" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:139 +msgid "Community Moderation Settings" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:229 +msgid "Channel Reputation" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:230 +#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1274 +#: ../../Zotlabs/Lib/ThreadItem.php:463 +msgid "Close" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:233 +msgid "An Error has occurred." +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:251 +msgid "Upvote" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:252 +msgid "Downvote" +msgstr "" + +#: ../../addon/channelreputation/channelreputation.php:374 +msgid "Can moderate reputation on my channel." +msgstr "" + +#: ../../addon/superblock/superblock.php:337 +msgid "Block Completely" +msgstr "" + +#: ../../addon/superblock/Mod_Superblock.php:20 +msgid "Superblock App" +msgstr "" + +#: ../../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 "" + +#: ../../addon/superblock/Mod_Superblock.php:21 +msgid "Block channels" +msgstr "" + +#: ../../addon/superblock/Mod_Superblock.php:63 +msgid "superblock settings updated" +msgstr "" + +#: ../../addon/superblock/Mod_Superblock.php:87 +msgid "Currently blocked" +msgstr "" + +#: ../../addon/superblock/Mod_Superblock.php:89 +msgid "No channels currently blocked" +msgstr "" + +#: ../../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 "" + +#: ../../addon/nsabait/Mod_Nsabait.php:20 +#: ../../addon/nsabait/Mod_Nsabait.php:24 +msgid "NSA Bait App" +msgstr "" + +#: ../../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 "" + +#: ../../addon/nsabait/Mod_Nsabait.php:26 +msgid "Make yourself a political target" +msgstr "" + +#: ../../addon/visage/Mod_Visage.php:21 +msgid "Who viewed my channel/profile" +msgstr "" + +#: ../../addon/visage/Mod_Visage.php:25 +msgid "Recent Channel/Profile Viewers" +msgstr "" + +#: ../../addon/visage/Mod_Visage.php:36 +msgid "No entries." +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:50 +#: ../../addon/openclipatar/openclipatar.php:128 +msgid "System defaults:" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "Preferred Clipart IDs" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "List of preferred clipart ids. These will be shown first." +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "Default Search Term" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "The default search term. These will be shown second." +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Return After" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Page to load after image selection." +msgstr "" + +#: ../../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 "" + +#: ../../addon/openclipatar/openclipatar.php:58 ../../include/nav.php:115 +#: ../../include/channel.php:1430 +msgid "Edit Profile" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:59 +msgid "Profile List" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Order of Preferred" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Sort order of preferred clipart ids." +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:62 +#: ../../addon/openclipatar/openclipatar.php:68 +msgid "Newest first" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:65 +msgid "As entered" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Order of other" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Sort order of other clipart ids." +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:69 +msgid "Most downloaded first" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:70 +msgid "Most liked first" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Preferred IDs Message" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Message to display above preferred results." +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Uploaded by: " +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Drawn by: " +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:182 +#: ../../addon/openclipatar/openclipatar.php:194 +msgid "Use this image" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:192 +msgid "Or select from a free OpenClipart.org image:" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:195 +msgid "Search Term" +msgstr "" + +#: ../../addon/openclipatar/openclipatar.php:232 +msgid "Unknown error. Please try again later." +msgstr "" + +#: ../../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 "" + +#: ../../addon/openclipatar/openclipatar.php:308 +msgid "Profile photo updated successfully." +msgstr "" + +#: ../../addon/bookmarker/bookmarker.php:38 +#: ../../Zotlabs/Lib/ThreadItem.php:440 +msgid "Save Bookmarks" +msgstr "" + +#: ../../addon/queueworker/Mod_Queueworker.php:77 +msgid "Max queueworker threads" +msgstr "" + +#: ../../addon/queueworker/Mod_Queueworker.php:91 +msgid "Assume workers dead after ___ seconds" +msgstr "" + +#: ../../addon/queueworker/Mod_Queueworker.php:105 +msgid "" +"Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)" +msgstr "" + +#: ../../addon/queueworker/Mod_Queueworker.php:116 +msgid "Queueworker Settings" +msgstr "" + +#: ../../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 "" + +#: ../../addon/tour/tour.php:76 +msgid "Edit your profile and change settings." +msgstr "" + +#: ../../addon/tour/tour.php:77 +msgid "Click here to see activity from your connections." +msgstr "" + +#: ../../addon/tour/tour.php:78 +msgid "Click here to see your channel home." +msgstr "" + +#: ../../addon/tour/tour.php:79 +msgid "You can access your private messages from here." +msgstr "" + +#: ../../addon/tour/tour.php:80 +msgid "Create new events here." +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." +msgstr "" + +#: ../../addon/tour/tour.php:82 +msgid "System notifications will arrive here" +msgstr "" + +#: ../../addon/tour/tour.php:83 +msgid "Search for content and users" +msgstr "" + +#: ../../addon/tour/tour.php:84 +msgid "Browse for new contacts" +msgstr "" + +#: ../../addon/tour/tour.php:85 +msgid "Launch installed apps" +msgstr "" + +#: ../../addon/tour/tour.php:86 +msgid "Looking for help? Click here." +msgstr "" + +#: ../../addon/tour/tour.php:87 +msgid "" +"New events have occurred in your network. Click here to see what has " +"happened!" +msgstr "" + +#: ../../addon/tour/tour.php:88 +msgid "You have received a new private message. Click here to see from who!" +msgstr "" + +#: ../../addon/tour/tour.php:89 +msgid "There are events this week. Click here too see which!" +msgstr "" + +#: ../../addon/tour/tour.php:90 +msgid "You have received a new introduction. Click here to see who!" +msgstr "" + +#: ../../addon/tour/tour.php:91 +msgid "" +"There is a new system notification. Click here to see what has happened!" +msgstr "" + +#: ../../addon/tour/tour.php:94 +msgid "Click here to share text, images, videos and sound." +msgstr "" + +#: ../../addon/tour/tour.php:95 +msgid "You can write an optional title for your update (good for long posts)." +msgstr "" + +#: ../../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 "" + +#: ../../addon/tour/tour.php:100 +msgid "Choose who you share with." +msgstr "" + +#: ../../addon/tour/tour.php:102 +msgid "Click here when you are done." +msgstr "" + +#: ../../addon/tour/tour.php:105 +msgid "Adjust from which channels posts should be displayed." +msgstr "" + +#: ../../addon/tour/tour.php:106 +msgid "Only show posts from channels in the specified privacy group." +msgstr "" + +#: ../../addon/tour/tour.php:110 +msgid "" +"Easily find posts containing tags (keywords preceded by the \"#\" symbol)." +msgstr "" + +#: ../../addon/tour/tour.php:111 +msgid "Easily find posts in given category." +msgstr "" + +#: ../../addon/tour/tour.php:112 +msgid "Easily find posts by date." +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." +msgstr "" + +#: ../../addon/tour/tour.php:114 +msgid "Here you see channels you have connected to." +msgstr "" + +#: ../../addon/tour/tour.php:115 +msgid "Save your search so you can repeat it at a later date." +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." +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!" +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" +msgstr "" + +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 +msgid "Add some colour to tag clouds" +msgstr "" + +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 +msgid "Rainbow Tag App" +msgstr "" + +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 +msgid "Rainbow Tag" +msgstr "" + +#: ../../addon/photocache/Mod_Photocache.php:27 +msgid "Photo Cache settings saved." +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." +msgstr "" + +#: ../../addon/photocache/Mod_Photocache.php:42 +msgid "Photo Cache App" +msgstr "" + +#: ../../addon/photocache/Mod_Photocache.php:53 +msgid "Minimal photo size for caching" +msgstr "" + +#: ../../addon/photocache/Mod_Photocache.php:55 +msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default." +msgstr "" + +#: ../../addon/photocache/Mod_Photocache.php:64 +msgid "Photo Cache" +msgstr "" + +#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 +msgid "Gallery" +msgstr "" + +#: ../../addon/gallery/gallery.php:41 +msgid "Photo Gallery" +msgstr "" + +#: ../../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/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 +#: ../../addon/gallery/Mod_Gallery.php:58 +msgid "Gallery App" +msgstr "" + +#: ../../addon/gallery/Mod_Gallery.php:59 +msgid "A simple gallery for your photo albums" +msgstr "" + +#: ../../addon/planets/Mod_Planets.php:20 +#: ../../addon/planets/Mod_Planets.php:23 +msgid "Random Planet App" +msgstr "" + +#: ../../addon/planets/Mod_Planets.php:25 +msgid "" +"Set a random planet from the Star Wars Empire as your location when posting" +msgstr "" + +#: ../../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/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/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/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 +#: ../../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/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 -#: ../../Zotlabs/Module/Editblock.php:113 -msgid "Block Name" +#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1610 +msgid "Male" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2560 -msgid "Blocks" +#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1608 +msgid "Female" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:156 -msgid "Block Title" +#: ../../addon/openid/Mod_Openid.php:30 +msgid "OpenID protocol error. No ID returned." msgstr "" -#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:177 -#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:266 -msgid "Created" +#: ../../addon/openid/Mod_Openid.php:76 ../../addon/openid/Mod_Openid.php:178 +#: ../../Zotlabs/Zot/Auth.php:264 +#, php-format +msgid "Welcome %s. Remote authentication successful." msgstr "" -#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:178 -#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:267 -msgid "Edited" +#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 +msgid "Login failed." 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/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/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/openid/openid.php:49 +msgid "The error message was:" msgstr "" +#: ../../addon/openid/MysqlProvider.php:52 +msgid "First Name" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:53 +msgid "Last Name" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:75 +msgid "Nickname" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:55 +msgid "Full Name" +msgstr "" + +#: ../../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 "" + +#: ../../addon/openid/MysqlProvider.php:58 +#: ../../addon/openid/MysqlProvider.php:59 +#: ../../addon/openid/MysqlProvider.php:60 ../../Zotlabs/Lib/Apps.php:360 +msgid "Profile Photo" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:61 +msgid "Profile Photo 16px" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:62 +msgid "Profile Photo 32px" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:63 +msgid "Profile Photo 48px" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:64 +msgid "Profile Photo 64px" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:65 +msgid "Profile Photo 80px" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:66 +msgid "Profile Photo 128px" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:67 +msgid "Timezone" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:68 +#: ../../Zotlabs/Module/Profiles.php:767 +msgid "Homepage URL" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:358 +msgid "Language" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:70 +msgid "Birth Year" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:71 +msgid "Birth Month" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:72 +msgid "Birth Day" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:73 +msgid "Birthdate" +msgstr "" + +#: ../../addon/openid/MysqlProvider.php:74 +#: ../../Zotlabs/Module/Profiles.php:486 +msgid "Gender" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:19 +msgid "lonely" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:20 +msgid "drunk" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:21 +msgid "horny" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:22 +msgid "stoned" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:23 +msgid "fucked up" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:24 +msgid "clusterfucked" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:25 +msgid "crazy" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:26 +msgid "hurt" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:27 +msgid "sleepy" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:28 +msgid "grumpy" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:29 +msgid "high" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:30 +msgid "semi-conscious" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:31 +msgid "in love" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:32 +msgid "in lust" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:33 +msgid "naked" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:34 +msgid "stinky" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:35 +msgid "sweaty" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:36 +msgid "bleeding out" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:37 +msgid "victorious" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:38 +msgid "defeated" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:39 +msgid "envious" +msgstr "" + +#: ../../addon/moremoods/moremoods.php:40 +msgid "jealous" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:94 +msgid "Hubzilla Directory Stats" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:95 +msgid "Total Hubs" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:97 +msgid "Hubzilla Hubs" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:99 +msgid "Friendica Hubs" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:101 +msgid "Diaspora Pods" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:103 +msgid "Hubzilla Channels" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:105 +msgid "Friendica Channels" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:107 +msgid "Diaspora Channels" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:109 +msgid "Aged 35 and above" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:111 +msgid "Aged 34 and under" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:113 +msgid "Average Age" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:115 +msgid "Known Chatrooms" +msgstr "" + +#: ../../addon/dirstats/dirstats.php:117 +msgid "Known Tags" +msgstr "" + +#: ../../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 "" + +#: ../../addon/redred/Mod_Redred.php:24 +msgid "Channel is required." +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:325 +msgid "Invalid channel." +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:38 +msgid "Hubzilla Crosspost Connector Settings saved." +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:50 +#: ../../addon/statusnet/Mod_Statusnet.php:146 +msgid "Hubzilla Crosspost Connector App" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:51 +msgid "Relay public postings to another Hubzilla channel" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:63 +msgid "Send public postings to Hubzilla channel by default" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:67 +msgid "Hubzilla API Path" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:67 ../../addon/rtof/Mod_Rtof.php:53 +msgid "https://{sitename}/api" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:71 +msgid "Hubzilla login name" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:75 +msgid "Hubzilla channel name" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:79 +#: ../../addon/jappixmini/Mod_Jappixmini.php:195 +msgid "Hubzilla password" +msgstr "" + +#: ../../addon/redred/Mod_Redred.php:87 +msgid "Hubzilla Crosspost Connector" +msgstr "" + +#: ../../addon/redred/redred.php:50 +msgid "Post to Hubzilla" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:106 +msgid "Photos imported" +msgstr "" + +#: ../../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 "" + +#: ../../addon/redphotos/redphotos.php:129 +msgid "Redmatrix Photo Album Import" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:130 +msgid "This will import all your Redmatrix photo albums to this channel." +msgstr "" + +#: ../../addon/redphotos/redphotos.php:131 +#: ../../addon/redfiles/redfiles.php:121 +msgid "Redmatrix Server base URL" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:132 +#: ../../addon/redfiles/redfiles.php:122 +msgid "Redmatrix Login Username" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:133 +#: ../../addon/redfiles/redfiles.php:123 +msgid "Redmatrix Login Password" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:134 +msgid "Import just this album" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:134 +msgid "Leave blank to import all albums" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:135 +msgid "Maximum count to import" +msgstr "" + +#: ../../addon/redphotos/redphotos.php:135 +msgid "0 or blank to import all available" +msgstr "" + +#: ../../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 "" + +#: ../../addon/statusnet/Mod_Statusnet.php:61 +msgid "" +"Please contact your site administrator.<br />The provided API URL is not " +"valid." +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:98 +msgid "We could not contact the GNU social API with the Path you entered." +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:130 +msgid "GNU social settings updated." +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:147 +msgid "" +"Relay public postings to a connected GNU social account (formerly StatusNet)" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:181 +msgid "Globally Available GNU social OAuthKeys" +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)." +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:198 +msgid "Provide your own OAuth Credentials" +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." +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:204 +msgid "OAuth Consumer Key" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:208 +msgid "OAuth Consumer Secret" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Base API Path" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Remember the trailing /" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:216 +msgid "GNU social application name" +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." +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:241 +msgid "Log in with GNU social" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:244 +msgid "Copy the security code from GNU social here" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:254 +msgid "Cancel Connection Process" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:256 +msgid "Current GNU social API is" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:260 +msgid "Cancel GNU social Connection" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:272 +#: ../../addon/twitter/Mod_Twitter.php:147 +msgid "Currently connected to: " +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." +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:282 +msgid "Post to GNU social by default" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:282 +msgid "" +"If enabled your public postings will be posted to the associated GNU-social " +"account by default" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:291 +#: ../../addon/twitter/Mod_Twitter.php:171 +msgid "Clear OAuth configuration" +msgstr "" + +#: ../../addon/statusnet/Mod_Statusnet.php:303 +msgid "GNU-Social Crosspost Connector" +msgstr "" + +#: ../../addon/statusnet/statusnet.php:145 +msgid "Post to GNU social" +msgstr "" + +#: ../../addon/statusnet/statusnet.php:593 +#: ../../Zotlabs/Module/Admin/Site.php:297 +msgid "Site name" +msgstr "" + +#: ../../addon/statusnet/statusnet.php:594 +msgid "API URL" +msgstr "" + +#: ../../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 "" + +#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:500 +#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140 +msgid "Consumer Key" +msgstr "" + +#: ../../addon/statusnet/statusnet.php:597 +msgid "Application name" +msgstr "" + +#: ../../addon/frphotos/frphotos.php:92 +msgid "Friendica Photo Album Import" +msgstr "" + +#: ../../addon/frphotos/frphotos.php:93 +msgid "This will import all your Friendica photo albums to this Red channel." +msgstr "" + +#: ../../addon/frphotos/frphotos.php:94 +msgid "Friendica Server base URL" +msgstr "" + +#: ../../addon/frphotos/frphotos.php:95 +msgid "Friendica Login Username" +msgstr "" + +#: ../../addon/frphotos/frphotos.php:96 +msgid "Friendica Login Password" +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:24 +msgid "Friendica Crosspost Connector Settings saved." +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:36 +msgid "Friendica Crosspost Connector App" +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:37 +msgid "Relay public postings to a connected Friendica account" +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:49 +msgid "Send public postings to Friendica by default" +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:53 +msgid "Friendica API Path" +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:57 +msgid "Friendica login name" +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:61 +msgid "Friendica password" +msgstr "" + +#: ../../addon/rtof/Mod_Rtof.php:69 +msgid "Friendica Crosspost Connector" +msgstr "" + +#: ../../addon/rtof/rtof.php:51 +msgid "Post to Friendica" +msgstr "" + +#: ../../addon/wppost/wppost.php:46 +msgid "Post to WordPress" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:28 +msgid "Wordpress Settings saved." +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:41 +msgid "Wordpress Post App" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:42 +msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:65 +msgid "WordPress username" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:69 +msgid "WordPress password" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:73 +msgid "WordPress API URL" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:74 +msgid "Typically https://your-blog.tld/xmlrpc.php" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:77 +msgid "WordPress blogid" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:78 +msgid "For multi-user sites such as wordpress.com, otherwise leave blank" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:82 +msgid "Post to WordPress by default" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:86 +msgid "Forward comments (requires hubzilla_wp plugin)" +msgstr "" + +#: ../../addon/wppost/Mod_Wppost.php:94 +msgid "Wordpress Post" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:27 +msgid "No server specified" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:73 +msgid "Posts imported" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:113 +msgid "Files imported" +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." +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:135 +#: ../../Zotlabs/Lib/Apps.php:331 +msgid "Content Import" +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." +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:137 +msgid "Include posts" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:137 +msgid "Conversations, Articles, Cards, and other posted content" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:138 +msgid "Include files" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:138 +msgid "Files, Photos and other cloud storage" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:139 +msgid "Original Server base URL" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:140 +#: ../../addon/hzfiles/hzfiles.php:84 +msgid "Since modified date yyyy-mm-dd" +msgstr "" + +#: ../../addon/content_import/Mod_content_import.php:141 +#: ../../addon/hzfiles/hzfiles.php:85 +msgid "Until modified date yyyy-mm-dd" +msgstr "" + +#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 +msgid "Set your location" +msgstr "" + +#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 +msgid "Clear browser location" +msgstr "" + +#: ../../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 "" + +#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 +msgid "Embed (existing) photo from your photo albums" +msgstr "" + +#: ../../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 "" + +#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 +msgid "Tag term:" +msgstr "" + +#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 +msgid "Where are you right now?" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 +msgid "Choose a different album..." +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 +msgid "Comments enabled" +msgstr "" + +#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 +msgid "Comments disabled" +msgstr "" + +#: ../../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 "" + +#: ../../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 -#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Widget/Cdav.php:136 -#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392 msgid "Share" 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/hsse/hsse.php:195 ../../include/conversation.php:1401 +msgid "Page link name" 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/hsse/hsse.php:198 ../../include/conversation.php:1404 +msgid "Post as" msgstr "" -#: ../../Zotlabs/Module/Invite.php:37 -msgid "Total invitation limit exceeded." +#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1406 +#: ../../Zotlabs/Lib/ThreadItem.php:797 +msgid "Bold" msgstr "" -#: ../../Zotlabs/Module/Invite.php:61 +#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1407 +#: ../../Zotlabs/Lib/ThreadItem.php:798 +msgid "Italic" +msgstr "" + +#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1408 +#: ../../Zotlabs/Lib/ThreadItem.php:799 +msgid "Underline" +msgstr "" + +#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1409 +#: ../../Zotlabs/Lib/ThreadItem.php:800 +msgid "Quote" +msgstr "" + +#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1410 +#: ../../Zotlabs/Lib/ThreadItem.php:801 +msgid "Code" +msgstr "" + +#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1411 +#: ../../Zotlabs/Lib/ThreadItem.php:803 +msgid "Attach/Upload file" +msgstr "" + +#: ../../addon/hsse/hsse.php:208 ../../include/conversation.php:1414 +#: ../../Zotlabs/Module/Wiki.php:400 +msgid "Embed an image from your albums" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 +msgid "Toggle voting" +msgstr "" + +#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 +msgid "Disable comments" +msgstr "" + +#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 +msgid "Toggle comments" +msgstr "" + +#: ../../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 "" + +#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 +msgid "Categories (optional, comma-separated list)" +msgstr "" + +#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1431 +#: ../../Zotlabs/Module/Events.php:487 +msgid "Permission settings" +msgstr "" + +#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 +msgid "Other networks and post services" +msgstr "" + +#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456 +#: ../../Zotlabs/Module/Mail.php:296 ../../Zotlabs/Module/Mail.php:439 +msgid "Set expiration date" +msgstr "" + +#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 +msgid "Set publish date" +msgstr "" + +#: ../../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 "" + +#: ../../addon/hsse/Mod_Hsse.php:15 +msgid "WYSIWYG status editor" +msgstr "" + +#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 +msgid "WYSIWYG Status App" +msgstr "" + +#: ../../addon/hsse/Mod_Hsse.php:34 +msgid "WYSIWYG Status" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:131 +msgid "View Larger" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:154 +msgid "Tile Server URL" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:154 +msgid "" +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank" +"\">public tile servers</a>" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:155 +msgid "Nominatim (reverse geocoding) Server URL" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:155 +msgid "" +"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=" +"\"_blank\">Nominatim servers</a>" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:156 +msgid "Default zoom" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:156 +msgid "" +"The default zoom level. (1:world, 18:highest, also depends on tile server)" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include marker on map" +msgstr "" + +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include a marker on the map." +msgstr "" + +#: ../../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 "" + +#: ../../addon/ijpost/Mod_Ijpost.php:23 +msgid "Insane Journal Crosspost Connector Settings saved." +msgstr "" + +#: ../../addon/ijpost/Mod_Ijpost.php:35 +msgid "Insane Journal Crosspost Connector App" +msgstr "" + +#: ../../addon/ijpost/Mod_Ijpost.php:36 +msgid "Relay public postings to Insane Journal" +msgstr "" + +#: ../../addon/ijpost/Mod_Ijpost.php:53 +msgid "InsaneJournal username" +msgstr "" + +#: ../../addon/ijpost/Mod_Ijpost.php:57 +msgid "InsaneJournal password" +msgstr "" + +#: ../../addon/ijpost/Mod_Ijpost.php:61 +msgid "Post to InsaneJournal by default" +msgstr "" + +#: ../../addon/ijpost/Mod_Ijpost.php:69 +msgid "Insane Journal Crosspost Connector" +msgstr "" + +#: ../../addon/ijpost/ijpost.php:44 +msgid "Post to Insane Journal" +msgstr "" + +#: ../../addon/wholikesme/wholikesme.php:29 +msgid "Who likes me?" +msgstr "" + +#: ../../addon/qrator/qrator.php:48 +msgid "QR code" +msgstr "" + +#: ../../addon/qrator/qrator.php:63 +msgid "QR Generator" +msgstr "" + +#: ../../addon/qrator/qrator.php:64 +msgid "Enter some text" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../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 "%s : Not a valid email address." +msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../Zotlabs/Module/Invite.php:75 -msgid "Please join us on $Projectname" +#: ../../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/Invite.php:85 -msgid "Invitation limit exceeded. Please contact your site administrator." +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 +msgid "ActivityPub Protocol Settings updated." +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." +msgstr "" + +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 +msgid "Activitypub Protocol App" +msgstr "" + +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +msgid "Deliver to ActivityPub recipients in privacy groups" +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" +msgstr "" + +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 +msgid "Send multi-media HTML articles" +msgstr "" + +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 +msgid "Not supported by some microblog services such as Mastodon" +msgstr "" + +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 +msgid "Activitypub Protocol" +msgstr "" + +#: ../../addon/ldapauth/ldapauth.php:70 +msgid "An account has been created for you." +msgstr "" + +#: ../../addon/ldapauth/ldapauth.php:77 +msgid "Authentication successful but rejected: account creation is disabled." +msgstr "" + +#: ../../addon/dwpost/Mod_Dwpost.php:24 +msgid "Dreamwidth Crosspost Connector Settings saved." +msgstr "" + +#: ../../addon/dwpost/Mod_Dwpost.php:36 +msgid "Dreamwidth Crosspost Connector App" +msgstr "" + +#: ../../addon/dwpost/Mod_Dwpost.php:37 +msgid "Relay public postings to Dreamwidth" +msgstr "" + +#: ../../addon/dwpost/Mod_Dwpost.php:52 +msgid "Dreamwidth username" +msgstr "" + +#: ../../addon/dwpost/Mod_Dwpost.php:56 +msgid "Dreamwidth password" +msgstr "" + +#: ../../addon/dwpost/Mod_Dwpost.php:60 +msgid "Post to Dreamwidth by default" +msgstr "" + +#: ../../addon/dwpost/Mod_Dwpost.php:68 +msgid "Dreamwidth Crosspost Connector" +msgstr "" + +#: ../../addon/dwpost/dwpost.php:47 +msgid "Post to Dreamwidth" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslap" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslapped" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:20 +msgid "shag" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:20 +msgid "shagged" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:21 +msgid "patent" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:21 +msgid "patented" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:22 +msgid "hug" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:22 +msgid "hugged" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:23 +msgid "murder" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:23 +msgid "murdered" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:24 +msgid "worship" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:24 +msgid "worshipped" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:25 +msgid "kiss" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:25 +msgid "kissed" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempt" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempted" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:27 +msgid "raise eyebrows at" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:27 +msgid "raised their eyebrows at" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:28 +msgid "insult" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:28 +msgid "insulted" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:29 +msgid "praise" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:29 +msgid "praised" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:30 +msgid "be dubious of" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:30 +msgid "was dubious of" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:31 +msgid "eat" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:31 +msgid "ate" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggle and fawn at" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggled and fawned at" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubt" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubted" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:34 +msgid "glare" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:34 +msgid "glared at" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:35 +msgid "fuck" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:35 +msgid "fucked" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonk" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonked" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:37 +msgid "declare undying love for" +msgstr "" + +#: ../../addon/morepokes/morepokes.php:37 +msgid "declared undying love for" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:57 +msgid "Errors encountered deleting database table " +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:498 +msgid "Submit Settings" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "Drop tables when uninstalling?" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "" +"If checked, the Rendezvous database tables will be deleted when the plugin " +"is uninstalled." +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:97 +msgid "Mapbox Access Token" +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." +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:162 +msgid "Rendezvous" +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." +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:168 +msgid "Welcome to Rendezvous!" +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." +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:171 +msgid "Let's meet here" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../addon/rendezvous/rendezvous.php:174 +msgid "New marker" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:175 +msgid "Edit marker" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:176 +msgid "New identity" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:177 +msgid "Delete marker" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:178 +msgid "Delete member" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:179 +msgid "Edit proximity alert" +msgstr "" + +#: ../../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 "" + +#: ../../addon/rendezvous/rendezvous.php:180 +#: ../../addon/rendezvous/rendezvous.php:185 +msgid "distance" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:181 +msgid "Proximity alert distance (meters)" +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):" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:183 +msgid "Marker proximity alert" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:186 +msgid "Reminder note" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:187 +msgid "" +"Enter a note to be displayed when you are within the specified proximity..." +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:199 +msgid "Add new rendezvous" +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." +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:232 +msgid "You have no rendezvous. Press the button above to create a rendezvous!" +msgstr "" + +#: ../../addon/rendezvous/rendezvous.php:401 ../../Zotlabs/Module/Setup.php:718 +msgid "Errors encountered creating database tables." +msgstr "" + +#: ../../addon/startpage/Mod_Startpage.php:50 +msgid "Startpage App" +msgstr "" + +#: ../../addon/startpage/Mod_Startpage.php:51 +msgid "Set a preferred page to load on login from home page" +msgstr "" + +#: ../../addon/startpage/Mod_Startpage.php:62 +msgid "Page to load after login" +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)." +msgstr "" + +#: ../../addon/startpage/Mod_Startpage.php:70 +msgid "Startpage" +msgstr "" + +#: ../../addon/adultphotoflag/adultphotoflag.php:24 +msgid "Flag Adult Photos" +msgstr "" + +#: ../../addon/adultphotoflag/adultphotoflag.php:25 +msgid "" +"Provide photo edit option to hide inappropriate photos from default album " +"view" +msgstr "" + +#: ../../addon/upgrade_info/upgrade_info.php:48 +msgid "Your channel has been upgraded to $Projectname version" +msgstr "" + +#: ../../addon/upgrade_info/upgrade_info.php:50 +msgid "Please have a look at the" +msgstr "" + +#: ../../addon/upgrade_info/upgrade_info.php:52 +msgid "git history" +msgstr "" + +#: ../../addon/upgrade_info/upgrade_info.php:54 +msgid "change log" +msgstr "" + +#: ../../addon/upgrade_info/upgrade_info.php:55 +msgid "for further info." +msgstr "" + +#: ../../addon/upgrade_info/upgrade_info.php:60 +msgid "Upgrade Info" +msgstr "" + +#: ../../addon/upgrade_info/upgrade_info.php:64 +msgid "Do not show this again" +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:65 +msgid "Twitter settings updated." +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:78 +msgid "Twitter Crosspost Connector App" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../addon/twitter/Mod_Twitter.php:127 +msgid "Log in with Twitter" +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:130 +msgid "Copy the PIN from Twitter here" +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." +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Twitter post length" +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Maximum tweet length" +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:162 +msgid "Send public postings to Twitter by default" +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:162 +msgid "" +"If enabled your public postings will be posted to the associated Twitter " +"account by default" +msgstr "" + +#: ../../addon/twitter/Mod_Twitter.php:181 +msgid "Twitter Crosspost Connector" +msgstr "" + +#: ../../addon/twitter/twitter.php:109 +msgid "Post to Twitter" +msgstr "" + +#: ../../addon/pumpio/pumpio.php:152 +msgid "You are now authenticated to pumpio." +msgstr "" + +#: ../../addon/pumpio/pumpio.php:153 +msgid "return to the featured settings page" +msgstr "" + +#: ../../addon/pumpio/pumpio.php:168 +msgid "Post to Pump.io" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:40 +msgid "Pump.io Settings saved." +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:53 +msgid "Pump.io Crosspost Connector App" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:54 +msgid "Relay public posts to pump.io" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:73 +msgid "Pump.io servername" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:73 +msgid "Without \"http://\" or \"https://\"" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:77 +msgid "Pump.io username" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:77 +msgid "Without the servername" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:88 +msgid "You are not authenticated to pumpio" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:90 +msgid "(Re-)Authenticate your pump.io connection" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:94 +msgid "Post to pump.io by default" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:98 +msgid "Should posts be public" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:102 +msgid "Mirror all public posts" +msgstr "" + +#: ../../addon/pumpio/Mod_Pumpio.php:112 +msgid "Pump.io Crosspost Connector" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:123 +msgid "generic profile image" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:124 +msgid "random geometric pattern" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:125 +msgid "monster face" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:126 +msgid "computer generated face" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:127 +msgid "retro arcade style face" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:128 +msgid "Hub default profile photo" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:143 +msgid "Information" +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." +msgstr "" + +#: ../../addon/gravatar/gravatar.php:150 ../../addon/msgfooter/msgfooter.php:46 +#: ../../addon/xmpp/xmpp.php:43 +msgid "Save Settings" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:151 +msgid "Default avatar image" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:151 +msgid "Select default avatar image if none was found at Gravatar. See README" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:152 +msgid "Rating of images" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:152 +msgid "Select the appropriate avatar rating for your site. See README" +msgstr "" + +#: ../../addon/gravatar/gravatar.php:165 +msgid "Gravatar settings updated." +msgstr "" + +#: ../../addon/msgfooter/msgfooter.php:47 +msgid "text to include in all outgoing posts from this site" +msgstr "" + +#: ../../addon/sendzid/Mod_Sendzid.php:14 +msgid "Send your identity to all websites" +msgstr "" + +#: ../../addon/sendzid/Mod_Sendzid.php:20 +msgid "Sendzid App" +msgstr "" + +#: ../../addon/sendzid/Mod_Sendzid.php:32 +msgid "Send ZID" +msgstr "" + +#: ../../addon/cart/widgets/catalogitem.php:57 +#: ../../addon/cart/submodules/hzservices.php:657 +#: ../../addon/cart/submodules/manualcat.php:265 +msgid "Price" +msgstr "" + +#: ../../addon/cart/manual_payments.php:7 +msgid "Error: order mismatch. Please try again." +msgstr "" + +#: ../../addon/cart/manual_payments.php:61 +msgid "Manual payments are not enabled." +msgstr "" + +#: ../../addon/cart/manual_payments.php:68 +#: ../../addon/cart/submodules/paypalbutton.php:392 +#: ../../addon/cart/cart.php:1460 +msgid "Order not found." +msgstr "" + +#: ../../addon/cart/manual_payments.php:77 +msgid "Finished" +msgstr "" + +#: ../../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 "" + +#: ../../addon/cart/submodules/subscriptions.php:151 +msgid "Enable Subscription Management Module" +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:223 +msgid "" +"Cannot include subscription items with different terms in the same order." +msgstr "" + +#: ../../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 "" + +#: ../../addon/cart/submodules/subscriptions.php:419 +msgid "Catalog Description" +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:423 +msgid "Subscription available for purchase." +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:428 +msgid "Maximum active subscriptions to this item per account." +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:431 +msgid "Subscription price." +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:435 +msgid "Quantity" +msgstr "" + +#: ../../addon/cart/submodules/subscriptions.php:439 +msgid "Term" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:62 +msgid "Enable Hubzilla Services Module" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:161 +#: ../../addon/cart/submodules/manualcat.php:174 +msgid "New Sku" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:196 +#: ../../addon/cart/submodules/manualcat.php:210 +msgid "Cannot save edits to locked item." +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:245 +#: ../../addon/cart/submodules/hzservices.php:332 +msgid "SKU not found." +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:298 +#: ../../addon/cart/submodules/hzservices.php:302 +msgid "Invalid Activation Directive." +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:373 +#: ../../addon/cart/submodules/hzservices.php:377 +msgid "Invalid Deactivation Directive." +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:563 +msgid "Add to this privacy group" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:579 +msgid "Set user service class" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:606 +msgid "You must be using a local account to purchase this service." +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:646 +#: ../../addon/cart/submodules/manualcat.php:254 +msgid "Changes Locked" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:650 +#: ../../addon/cart/submodules/manualcat.php:258 +msgid "Item available for purchase." +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:660 +#: ../../addon/cart/submodules/manualcat.php:268 +msgid "Photo URL" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:664 +msgid "Add buyer to privacy group" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:669 +msgid "Add buyer as connection" +msgstr "" + +#: ../../addon/cart/submodules/hzservices.php:677 +#: ../../addon/cart/submodules/hzservices.php:719 +msgid "Set Service Class" +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:85 +msgid "Enable Paypal Button Module" +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:93 +msgid "Use Production Key" +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:100 +msgid "Paypal Sandbox Client Key" +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:107 +msgid "Paypal Sandbox Secret Key" +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:113 +msgid "Paypal Production Client Key" +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:120 +msgid "Paypal Production Secret Key" +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:252 +msgid "Paypal button payments are not enabled." +msgstr "" + +#: ../../addon/cart/submodules/paypalbutton.php:270 +msgid "" +"Paypal button payments are not properly configured. Please choose another " +"payment option." +msgstr "" + +#: ../../addon/cart/submodules/manualcat.php:61 +msgid "Enable Manual Cart Module" +msgstr "" + +#: ../../addon/cart/myshop.php:30 +msgid "Access Denied." +msgstr "" + +#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1328 +msgid "Order Not Found" +msgstr "" + +#: ../../addon/cart/myshop.php:186 ../../addon/cart/myshop.php:220 +#: ../../addon/cart/myshop.php:269 ../../addon/cart/myshop.php:327 +msgid "Invalid Item" +msgstr "" + +#: ../../addon/cart/Settings/Cart.php:56 +msgid "Enable Test Catalog" +msgstr "" + +#: ../../addon/cart/Settings/Cart.php:68 +msgid "Enable Manual Payments" +msgstr "" + +#: ../../addon/cart/Settings/Cart.php:88 +msgid "Base Merchant Currency" +msgstr "" + +#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1257 +msgid "Cart Settings" +msgstr "" + +#: ../../addon/cart/cart.php:150 +msgid "DB Cleanup Failure" +msgstr "" + +#: ../../addon/cart/cart.php:556 +msgid "[cart] Item Added" +msgstr "" + +#: ../../addon/cart/cart.php:945 +msgid "Order already checked out." +msgstr "" + +#: ../../addon/cart/cart.php:1250 +msgid "Drop database tables when uninstalling." +msgstr "" + +#: ../../addon/cart/cart.php:1269 ../../addon/cart/cart.php:1272 +msgid "Shop" +msgstr "" + +#: ../../addon/cart/cart.php:1292 ../../addon/flashcards/Mod_Flashcards.php:37 +#: ../../Zotlabs/Module/Wiki.php:35 +msgid "Profile Unavailable." +msgstr "" + +#: ../../addon/cart/cart.php:1389 +msgid "Cart utilities for orders and payments" +msgstr "" + +#: ../../addon/cart/cart.php:1427 +msgid "You must be logged into the Grid to shop." +msgstr "" + +#: ../../addon/cart/cart.php:1468 +msgid "Access denied." +msgstr "" + +#: ../../addon/cart/cart.php:1520 ../../addon/cart/cart.php:1663 +msgid "No Order Found" +msgstr "" + +#: ../../addon/cart/cart.php:1529 +msgid "An unknown error has occurred Please start again." +msgstr "" + +#: ../../addon/cart/cart.php:1696 +msgid "Invalid Payment Type. Please start again." +msgstr "" + +#: ../../addon/cart/cart.php:1703 +msgid "Order not found" +msgstr "" + +#: ../../addon/nofed/Mod_Nofed.php:21 +msgid "nofed Settings saved." +msgstr "" + +#: ../../addon/nofed/Mod_Nofed.php:33 +msgid "No Federation App" +msgstr "" + +#: ../../addon/nofed/Mod_Nofed.php:34 +msgid "" +"Prevent posting from being federated to anybody. It will exist only on your " +"channel page." +msgstr "" + +#: ../../addon/nofed/Mod_Nofed.php:42 +msgid "Federate posts by default" +msgstr "" + +#: ../../addon/nofed/Mod_Nofed.php:50 +msgid "No Federation" +msgstr "" + +#: ../../addon/nofed/nofed.php:47 +msgid "Federate" +msgstr "" + +#: ../../addon/smileybutton/Mod_Smileybutton.php:35 +msgid "Smileybutton App" +msgstr "" + +#: ../../addon/smileybutton/Mod_Smileybutton.php:36 +msgid "Adds a smileybutton to the jot editor" +msgstr "" + +#: ../../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 "" + +#: ../../addon/redfiles/redfilehelper.php:64 +msgid "file" +msgstr "" + +#: ../../addon/redfiles/redfiles.php:119 +msgid "Redmatrix File Storage Import" +msgstr "" + +#: ../../addon/redfiles/redfiles.php:120 +msgid "This will import all your Redmatrix cloud files to this channel." +msgstr "" + +#: ../../addon/diaspora/p.php:48 ../../addon/diaspora/util.php:336 +#: ../../addon/diaspora/util.php:349 ../../Zotlabs/Lib/Enotify.php:61 +msgid "$projectname" +msgstr "" + +#: ../../addon/diaspora/import_diaspora.php:18 +msgid "No username found in import file." +msgstr "" + +#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:75 +msgid "Unable to create a unique channel address. Import failed." +msgstr "" + +#: ../../addon/diaspora/import_diaspora.php:141 +#: ../../Zotlabs/Module/Import.php:594 +msgid "Import completed." +msgstr "" + +#: ../../addon/diaspora/Mod_Diaspora.php:43 +msgid "Diaspora Protocol Settings updated." +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." +msgstr "" + +#: ../../addon/diaspora/Mod_Diaspora.php:58 +msgid "Diaspora Protocol App" +msgstr "" + +#: ../../addon/diaspora/Mod_Diaspora.php:77 +msgid "Allow any Diaspora member to comment on your public posts" +msgstr "" + +#: ../../addon/diaspora/Mod_Diaspora.php:81 +msgid "Prevent your hashtags from being redirected to other sites" +msgstr "" + +#: ../../addon/diaspora/Mod_Diaspora.php:85 +msgid "Sign and forward posts and comments with no existing Diaspora signature" +msgstr "" + +#: ../../addon/diaspora/Mod_Diaspora.php:90 +msgid "Followed hashtags (comma separated, do not include the #)" +msgstr "" + +#: ../../addon/diaspora/Mod_Diaspora.php:99 +msgid "Diaspora Protocol" +msgstr "" + +#: ../../addon/diaspora/Receiver.php:1536 +#, php-format +msgid "%1$s dislikes %2$s's %3$s" +msgstr "" + +#: ../../addon/diaspora/Receiver.php:2178 ../../Zotlabs/Module/Like.php:457 +#, php-format +msgid "%1$s is attending %2$s's %3$s" +msgstr "" + +#: ../../addon/diaspora/Receiver.php:2180 ../../Zotlabs/Module/Like.php:459 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" +msgstr "" + +#: ../../addon/diaspora/Receiver.php:2182 ../../Zotlabs/Module/Like.php:461 +#, php-format +msgid "%1$s may attend %2$s's %3$s" +msgstr "" + +#: ../../addon/piwik/piwik.php:85 +msgid "" +"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " +"analytics tool." +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)." +msgstr "" + +#: ../../addon/piwik/piwik.php:96 +msgid "Piwik Base URL" +msgstr "" + +#: ../../addon/piwik/piwik.php:96 +msgid "" +"Absolute path to your Piwik installation. (without protocol (http/s), with " +"trailing slash)" +msgstr "" + +#: ../../addon/piwik/piwik.php:97 +msgid "Site ID" +msgstr "" + +#: ../../addon/piwik/piwik.php:98 +msgid "Show opt-out cookie link?" +msgstr "" + +#: ../../addon/piwik/piwik.php:99 +msgid "Asynchronous tracking" +msgstr "" + +#: ../../addon/piwik/piwik.php:100 +msgid "Enable frontend JavaScript error tracking" +msgstr "" + +#: ../../addon/piwik/piwik.php:100 +msgid "This feature requires Piwik >= 2.2.0" +msgstr "" + +#: ../../addon/workflow/workflow.php:212 +msgid "Workflow user." +msgstr "" + +#: ../../addon/workflow/workflow.php:259 +msgid "This channel" +msgstr "" + +#: ../../addon/workflow/workflow.php:272 ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" +msgstr "" + +#: ../../addon/workflow/workflow.php:480 ../../addon/workflow/workflow.php:1233 +#: ../../addon/workflow/workflow.php:1251 +msgid "Workflow" +msgstr "" + +#: ../../addon/workflow/workflow.php:1250 +msgid "Add item to which workflow" +msgstr "" + +#: ../../addon/workflow/workflow.php:1297 +#: ../../addon/workflow/workflow.php:1394 +msgid "Create Workflow Item" +msgstr "" + +#: ../../addon/workflow/workflow.php:2270 +msgid "Link" +msgstr "" + +#: ../../addon/workflow/workflow.php:2272 +msgid "Web link." +msgstr "" + +#: ../../addon/workflow/workflow.php:2291 +#: ../../addon/workflow/workflow.php:2344 ../../Zotlabs/Module/Cdav.php:1375 +#: ../../Zotlabs/Module/Connedit.php:925 +msgid "Title" +msgstr "" + +#: ../../addon/workflow/workflow.php:2293 +#: ../../addon/workflow/workflow.php:2346 +msgid "Brief description or title" +msgstr "" + +#: ../../addon/workflow/workflow.php:2299 ../../Zotlabs/Widget/Notes.php:21 +#: ../../Zotlabs/Lib/Apps.php:369 +msgid "Notes" +msgstr "" + +#: ../../addon/workflow/workflow.php:2301 +#: ../../addon/workflow/workflow.php:2354 +msgid "Notes and Info" +msgstr "" + +#: ../../addon/workflow/workflow.php:2352 +msgid "Body" +msgstr "" + +#: ../../addon/workflow/Settings/Mod_WorkflowSettings.php:101 +msgid "Workflow Settings" +msgstr "" + +#: ../../addon/donate/donate.php:21 +msgid "Project Servers and Resources" +msgstr "" + +#: ../../addon/donate/donate.php:22 +msgid "Project Creator and Tech Lead" +msgstr "" + +#: ../../addon/donate/donate.php:49 +msgid "" +"And the hundreds of other people and organisations who helped make the " +"Hubzilla possible." +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." +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>.)" +msgstr "" + +#: ../../addon/donate/donate.php:54 +msgid "" +"Help support our ground-breaking work in decentralisation, web identity, and " +"privacy." +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." +msgstr "" + +#: ../../addon/donate/donate.php:59 +msgid "Donate" +msgstr "" + +#: ../../addon/donate/donate.php:61 +msgid "" +"Choose a project, developer, or public hub to support with a one-time " +"donation" +msgstr "" + +#: ../../addon/donate/donate.php:62 +msgid "Donate Now" +msgstr "" + +#: ../../addon/donate/donate.php:63 +msgid "" +"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)" +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" +msgstr "" + +#: ../../addon/donate/donate.php:65 +msgid "Sponsor" +msgstr "" + +#: ../../addon/donate/donate.php:68 +msgid "Special thanks to: " +msgstr "" + +#: ../../addon/likebanner/likebanner.php:51 +msgid "Your Webbie:" +msgstr "" + +#: ../../addon/likebanner/likebanner.php:54 +msgid "Fontsize (px):" +msgstr "" + +#: ../../addon/likebanner/likebanner.php:68 +msgid "Link:" +msgstr "" + +#: ../../addon/likebanner/likebanner.php:70 +msgid "Like us on Hubzilla" +msgstr "" + +#: ../../addon/likebanner/likebanner.php:72 +msgid "Embed:" +msgstr "" + +#: ../../addon/chords/chords.php:33 +msgid "Quick Reference" +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." +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." +msgstr "" + +#: ../../addon/chords/Mod_Chords.php:48 +msgid "" +"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " +"E7b13b11 ..." +msgstr "" + +#: ../../addon/chords/Mod_Chords.php:51 +msgid "Guitar Chords" +msgstr "" + +#: ../../addon/chords/Mod_Chords.php:52 +msgid "The complete online chord dictionary" +msgstr "" + +#: ../../addon/chords/Mod_Chords.php:57 +msgid "Tuning" +msgstr "" + +#: ../../addon/chords/Mod_Chords.php:58 +msgid "Chord name: example: Em7" +msgstr "" + +#: ../../addon/chords/Mod_Chords.php:59 +msgid "Show for left handed stringing" +msgstr "" + +#: ../../addon/opensearch/opensearch.php:26 +#, php-format +msgctxt "opensearch" +msgid "Search %1$s (%2$s)" +msgstr "" + +#: ../../addon/opensearch/opensearch.php:28 +msgctxt "opensearch" +msgid "$Projectname" +msgstr "" + +#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Module/Home.php:72 +#: ../../Zotlabs/Module/Home.php:80 ../../Zotlabs/Lib/Enotify.php:66 +msgid "$Projectname" +msgstr "" + +#: ../../addon/opensearch/opensearch.php:43 +msgid "Search $Projectname" +msgstr "" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 +msgid "Fuzzloc Settings updated." +msgstr "" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 +msgid "Fuzzy Location App" +msgstr "" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35 +msgid "" +"Blur your precise location if your channel uses browser location mapping" +msgstr "" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40 +msgid "Minimum offset in meters" +msgstr "" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44 +msgid "Maximum offset in meters" +msgstr "" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 +msgid "Fuzzy Location" +msgstr "" + +#: ../../addon/flattrwidget/flattrwidget.php:50 +msgid "Flattr this!" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 +msgid "Flattr widget settings updated." +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 +msgid "Flattr Widget App" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54 +msgid "Add a Flattr button to your channel page" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 +msgid "Flattr user" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "URL of the Thing to flattr" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "If empty channel URL is used" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "Title of the Thing to flattr" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "If empty \"channel name on The Hubzilla\" will be used" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "Static or dynamic flattr button" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "static" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "dynamic" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "Alignment of the widget" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "left" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "right" +msgstr "" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 +msgid "Flattr Widget" +msgstr "" + +#: ../../addon/hubwall/hubwall.php:19 +msgid "Send email to all members" +msgstr "" + +#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:65 +#, php-format +msgid "%s Administrator" +msgstr "" + +#: ../../addon/hubwall/hubwall.php:50 ../../addon/mailtest/mailtest.php:50 +msgid "No recipients found." +msgstr "" + +#: ../../addon/hubwall/hubwall.php:73 +#, php-format +msgid "%1$d of %2$d messages sent." +msgstr "" + +#: ../../addon/hubwall/hubwall.php:81 +msgid "Send email to all hub members." +msgstr "" + +#: ../../addon/hubwall/hubwall.php:92 ../../addon/mailtest/mailtest.php:96 +msgid "Message subject" +msgstr "" + +#: ../../addon/hubwall/hubwall.php:93 +msgid "Sender Email address" +msgstr "" + +#: ../../addon/hubwall/hubwall.php:94 +msgid "Test mode (only send to hub administrator)" +msgstr "" + +#: ../../addon/notifyadmin/notifyadmin.php:34 +msgid "New registration" msgstr "" -#: ../../Zotlabs/Module/Invite.php:90 #: ../../addon/notifyadmin/notifyadmin.php:40 +#: ../../Zotlabs/Module/Invite.php:90 #, php-format msgid "%s : Message delivery failed." msgstr "" -#: ../../Zotlabs/Module/Invite.php:94 +#: ../../addon/notifyadmin/notifyadmin.php:42 #, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "" -msgstr[1] "" - -#: ../../Zotlabs/Module/Invite.php:110 -msgid "Invite App" +msgid "Message sent to %s. New account registration: %s" +msgstr "" + +#: ../../addon/flashcards/Mod_Flashcards.php:169 +msgid "Not allowed." +msgstr "" + +#: ../../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 "" + +#: ../../addon/flashcards/Mod_Flashcards.php:212 +#: ../../Zotlabs/Module/Filestorage.php:197 +msgid "Set/edit permissions" +msgstr "" + +#: ../../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 "" + +#: ../../addon/libertree/libertree.php:43 +msgid "Post to Libertree" +msgstr "" + +#: ../../addon/libertree/Mod_Libertree.php:25 +msgid "Libertree Crosspost Connector Settings saved." 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/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 "" - -#: ../../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." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:160 -msgid "You will need to supply this invitation code:" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:161 -msgid "1. Register at any $Projectname location (they are all inter-connected)" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:163 -msgid "2. Enter my $Projectname network address into the site searchbar." -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:164 -msgid "or visit" -msgstr "" - -#: ../../Zotlabs/Module/Invite.php:166 -msgid "3. Click [Connect]" -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" -msgstr "" - -#: ../../Zotlabs/Module/Articles.php:51 -msgid "Articles App" -msgstr "" - -#: ../../Zotlabs/Module/Articles.php:52 -msgid "Create interactive articles" -msgstr "" - -#: ../../Zotlabs/Module/Articles.php:115 -msgid "Add Article" -msgstr "" - -#: ../../Zotlabs/Module/Articles.php:222 ../../Zotlabs/Lib/Apps.php:324 -#: ../../include/nav.php:514 -msgid "Articles" -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" -msgstr "" - -#: ../../Zotlabs/Module/Editlayout.php:128 ../../Zotlabs/Module/Layouts.php:129 -#: ../../Zotlabs/Module/Layouts.php:189 -msgid "Layout Name" -msgstr "" - -#: ../../Zotlabs/Module/Editlayout.php:129 ../../Zotlabs/Module/Layouts.php:132 -msgid "Layout Description (Optional)" +msgid "Libertree Crosspost Connector App" msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:137 -msgid "Edit Layout" +#: ../../addon/libertree/Mod_Libertree.php:36 +msgid "Relay public posts to Libertree" 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/libertree/Mod_Libertree.php:51 +msgid "Libertree API token" 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/libertree/Mod_Libertree.php:55 +msgid "Libertree site URL" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." +#: ../../addon/libertree/Mod_Libertree.php:59 +msgid "Post to Libertree by default" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:111 -msgid "Profile Visibility Editor" +#: ../../addon/libertree/Mod_Libertree.php:67 +msgid "Libertree Crosspost Connector" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:361 -#: ../../include/channel.php:1766 -msgid "Profile" +#: ../../addon/randpost/randpost.php:97 +msgid "You're welcome." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:115 -msgid "Click on a contact to add or remove." +#: ../../addon/randpost/randpost.php:98 +msgid "Ah shucks..." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:124 -msgid "Visible To" +#: ../../addon/randpost/randpost.php:99 +msgid "Don't mention it." msgstr "" -#: ../../Zotlabs/Module/Profperm.php:140 -#: ../../Zotlabs/Module/Connections.php:217 -msgid "All Connections" +#: ../../addon/randpost/randpost.php:100 +msgid "<blush>" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 -msgid "Calendar entries imported." +#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:327 +msgid "Report Bug" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 -msgid "No calendar entries found." +#: ../../addon/totp/Mod_Totp.php:23 +msgid "TOTP Two-Step Verification" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:870 -msgid "INVALID EVENT DISMISSED!" +#: ../../addon/totp/Mod_Totp.php:24 +msgid "Enter the 2-step verification generated by your authenticator app:" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:871 -msgid "Summary: " +#: ../../addon/totp/Mod_Totp.php:25 +msgid "Success!" 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/totp/Mod_Totp.php:26 +msgid "Invalid code, please try again." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:872 -msgid "Date: " +#: ../../addon/totp/Mod_Totp.php:27 +msgid "Too many invalid codes..." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 -msgid "Reason: " +#: ../../addon/totp/Mod_Totp.php:28 +msgid "Verify" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:878 -msgid "INVALID CARD DISMISSED!" +#: ../../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 "" -#: ../../Zotlabs/Module/Cdav.php:879 -msgid "Name: " +#: ../../addon/totp/Settings/Totp.php:93 +msgid "Your TOTP secret is" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:899 -msgid "CardDAV App" +#: ../../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/Cdav.php:900 -msgid "CalDAV capable addressbook" +#: ../../addon/totp/Settings/Totp.php:99 +msgid "Test" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:968 ../../Zotlabs/Module/Cal.php:167 -#: ../../Zotlabs/Module/Channel_calendar.php:387 -msgid "Link to source" +#: ../../addon/totp/Settings/Totp.php:100 +msgid "Generate New Secret" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1034 ../../Zotlabs/Module/Events.php:468 -msgid "Event title" +#: ../../addon/totp/Settings/Totp.php:101 +msgid "Go" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:474 -msgid "Start date and time" +#: ../../addon/totp/Settings/Totp.php:102 +msgid "Enter your password" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1036 -msgid "End date and time" +#: ../../addon/totp/Settings/Totp.php:103 +msgid "enter TOTP code from your device" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:497 -msgid "Timezone:" +#: ../../addon/totp/Settings/Totp.php:104 +msgid "Pass!" 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/totp/Settings/Totp.php:105 +msgid "Fail" 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/totp/Settings/Totp.php:106 +msgid "Incorrect password, try again." 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/totp/Settings/Totp.php:107 +msgid "Record your new TOTP secret and rescan the QR code above." 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/totp/Settings/Totp.php:115 +msgid "TOTP Settings" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:708 -#: ../../Zotlabs/Module/Cal.php:207 -msgid "Today" +#: ../../addon/logrot/logrot.php:36 +msgid "Logfile archive directory" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:703 -msgid "Month" +#: ../../addon/logrot/logrot.php:36 +msgid "Directory to store rotated logs" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1064 ../../Zotlabs/Module/Events.php:704 -msgid "Week" +#: ../../addon/logrot/logrot.php:37 +msgid "Logfile size in bytes before rotating" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1065 ../../Zotlabs/Module/Events.php:705 -msgid "Day" +#: ../../addon/logrot/logrot.php:38 +msgid "Number of logfiles to retain" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1066 -msgid "List month" +#: ../../addon/testdrive/testdrive.php:104 +#, php-format +msgid "Your account on %s will expire in a few days." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1067 -msgid "List week" +#: ../../addon/testdrive/testdrive.php:105 +msgid "Your $Productname test account is about to expire." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1068 -msgid "List day" +#: ../../addon/skeleton/Mod_Skeleton.php:32 +msgid "Skeleton App" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1076 -msgid "More" +#: ../../addon/skeleton/Mod_Skeleton.php:33 +msgid "A skeleton for addons, you can copy/paste" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1077 -msgid "Less" +#: ../../addon/skeleton/Mod_Skeleton.php:40 +msgid "Some setting" 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/skeleton/Mod_Skeleton.php:40 +msgid "A setting" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1079 -msgid "Select calendar" +#: ../../addon/skeleton/Mod_Skeleton.php:48 +msgid "Skeleton Settings" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:143 -msgid "Channel Calendars" +#: ../../addon/nsfw/nsfw.php:152 +msgid "Possible adult content" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:129 -#: ../../Zotlabs/Widget/Cdav.php:143 -msgid "CalDAV Calendars" +#: ../../addon/nsfw/nsfw.php:167 +#, php-format +msgid "%s - view" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1082 -msgid "Delete all" +#: ../../addon/nsfw/Mod_Nsfw.php:22 +msgid "NSFW Settings saved." msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1085 -msgid "Sorry! Editing of recurrent events is not yet implemented." +#: ../../addon/nsfw/Mod_Nsfw.php:33 +msgid "NSFW App" 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/nsfw/Mod_Nsfw.php:34 +msgid "Collapse content that contains predefined words" 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/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/Cdav.php:1376 ../../Zotlabs/Module/Connedit.php:924 -msgid "Organisation" +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Comma separated list of keywords to hide" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1377 ../../Zotlabs/Module/Connedit.php:925 -msgid "Title" +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Word, /regular-expression/, lang=xx, lang!=xx" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Connedit.php:926 -#: ../../Zotlabs/Module/Profiles.php:786 -msgid "Phone" +#: ../../addon/nsfw/Mod_Nsfw.php:58 +msgid "NSFW" 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/upload_limits/upload_limits.php:25 +msgid "Show Upload Limits" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Connedit.php:928 -#: ../../Zotlabs/Module/Profiles.php:788 -msgid "Instant messenger" +#: ../../addon/upload_limits/upload_limits.php:27 +msgid "Hubzilla configured maximum size: " msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Connedit.php:929 -#: ../../Zotlabs/Module/Profiles.php:789 -msgid "Website" +#: ../../addon/upload_limits/upload_limits.php:28 +msgid "PHP upload_max_filesize: " 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/upload_limits/upload_limits.php:29 +msgid "PHP post_max_size (must be larger than upload_max_filesize): " msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Connedit.php:931 -#: ../../Zotlabs/Module/Profiles.php:791 -msgid "Note" +#: ../../addon/tictac/tictac.php:21 +msgid "Three Dimensional Tic-Tac-Toe" 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/tictac/tictac.php:54 +msgid "3D Tic-Tac-Toe" 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/tictac/tictac.php:59 +msgid "New game" 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/tictac/tictac.php:60 +msgid "New game with handicap" +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. " +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../addon/tictac/tictac.php:183 +msgid "You go first..." +msgstr "" + +#: ../../addon/tictac/tictac.php:188 +msgid "I'm going first this time..." +msgstr "" + +#: ../../addon/tictac/tictac.php:194 +msgid "You won!" +msgstr "" + +#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 +msgid "\"Cat\" game!" +msgstr "" + +#: ../../addon/tictac/tictac.php:223 +msgid "I won!" +msgstr "" + +#: ../../addon/gnusoc/gnusoc.php:451 +msgid "Follow" +msgstr "" + +#: ../../addon/gnusoc/gnusoc.php:454 +#, php-format +msgid "%1$s is now following %2$s" +msgstr "" + +#: ../../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 "" + +#: ../../addon/gnusoc/Mod_Gnusoc.php:22 +msgid "GNU-Social Protocol App" +msgstr "" + +#: ../../addon/gnusoc/Mod_Gnusoc.php:34 +msgid "GNU-Social Protocol" +msgstr "" + +#: ../../addon/mailtest/mailtest.php:19 +msgid "Send test email" +msgstr "" + +#: ../../addon/mailtest/mailtest.php:66 +msgid "Mail sent." +msgstr "" + +#: ../../addon/mailtest/mailtest.php:68 +msgid "Sending of mail failed." +msgstr "" + +#: ../../addon/mailtest/mailtest.php:77 +msgid "Mail Test" +msgstr "" + +#: ../../addon/ljpost/Mod_Ljpost.php:37 +msgid "Livejournal Crosspost Connector App" +msgstr "" + +#: ../../addon/ljpost/Mod_Ljpost.php:38 +msgid "Relay public posts to Livejournal" +msgstr "" + +#: ../../addon/ljpost/Mod_Ljpost.php:54 +msgid "Livejournal username" +msgstr "" + +#: ../../addon/ljpost/Mod_Ljpost.php:58 +msgid "Livejournal password" +msgstr "" + +#: ../../addon/ljpost/Mod_Ljpost.php:62 +msgid "Post to Livejournal by default" +msgstr "" + +#: ../../addon/ljpost/Mod_Ljpost.php:66 +msgid "Send wall-to-wall posts to Livejournal" +msgstr "" + +#: ../../addon/ljpost/Mod_Ljpost.php:75 +msgid "Livejournal Crosspost Connector" +msgstr "" + +#: ../../addon/ljpost/ljpost.php:49 +msgid "Post to Livejournal" +msgstr "" + +#: ../../addon/ljpost/ljpost.php:125 +msgid "Posted by" +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 +msgid "Invalid game." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417 +msgid "You are not a player in this game." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:242 +msgid "You must be a local channel to create a game." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:260 +msgid "You must select one opponent that is not yourself." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:271 +msgid "Random color chosen." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:279 +msgid "Error creating new game." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 +msgid "Requested channel is not available." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 +msgid "Chess not installed." +msgstr "" + +#: ../../addon/chess/Mod_Chess.php:326 +msgid "You must select a local channel /chess/channelname" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../addon/chess/chess.php:645 +msgid "Enable notifications" +msgstr "" + +#: ../../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 "" + +#: ../../addon/mdpost/mdpost.php:42 +msgid "Use markdown for editing posts" +msgstr "" + +#: ../../addon/hzfiles/hzfiles.php:81 +msgid "Hubzilla File Storage Import" +msgstr "" + +#: ../../addon/hzfiles/hzfiles.php:82 +msgid "This will import all your cloud files from another server." +msgstr "" + +#: ../../addon/hzfiles/hzfiles.php:83 +msgid "Hubzilla Server base URL" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 +msgid "Jappixmini App" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:97 +msgid "Provides a Facebook-like chat using Jappix Mini" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:157 ../../include/channel.php:1526 +#: ../../include/channel.php:1697 +msgid "Status:" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:161 +msgid "Hide Jappixmini Chat-Widget from the webinterface" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:166 +msgid "Jabber username" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:172 +msgid "Jabber server" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:178 +msgid "Jabber BOSH host URL" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:185 +msgid "Jabber password" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:191 +msgid "Encrypt Jabber password with Hubzilla password" +msgstr "" + +#: ../../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 "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:199 +#: ../../addon/jappixmini/Mod_Jappixmini.php:203 +msgid "Approve subscription requests from Hubzilla contacts automatically" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:207 +msgid "Purge internal list of jabber addresses of contacts" +msgstr "" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:212 +msgid "Configuration Help" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1388 ../../Zotlabs/Module/Connedit.php:936 -#: ../../Zotlabs/Module/Profiles.php:796 #: ../../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/Cdav.php:1389 ../../Zotlabs/Module/Connedit.php:937 -#: ../../Zotlabs/Module/Profiles.php:797 -msgid "Add Field" +#: ../../addon/jappixmini/Mod_Jappixmini.php:258 +msgid "Jappixmini Settings" msgstr "" -#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:942 -msgid "P.O. Box" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:943 -msgid "Additional" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:944 -msgid "Street" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:945 -msgid "Locality" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Connedit.php:946 -msgid "Region" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1399 ../../Zotlabs/Module/Connedit.php:947 -msgid "ZIP Code" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1400 ../../Zotlabs/Module/Connedit.php:948 -#: ../../Zotlabs/Module/Profiles.php:757 -msgid "Country" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1447 -msgid "Default Calendar" -msgstr "" - -#: ../../Zotlabs/Module/Cdav.php:1458 -msgid "Default Addressbook" -msgstr "" - -#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25 -msgid "This site is not a directory server" -msgstr "" - -#: ../../Zotlabs/Module/Permcats.php:28 -msgid "Permission category name is required." -msgstr "" - -#: ../../Zotlabs/Module/Permcats.php:47 -msgid "Permission category saved." -msgstr "" - -#: ../../Zotlabs/Module/Permcats.php:62 -msgid "Permission Categories App" -msgstr "" - -#: ../../Zotlabs/Module/Permcats.php:63 -msgid "Create custom connection permission limits" -msgstr "" - -#: ../../Zotlabs/Module/Permcats.php:79 +#: ../../addon/authchoose/Mod_Authchoose.php:22 msgid "" -"Use this form to create permission rules for various classes of people or " -"connections." +"Allow magic authentication only to websites of your immediate connections" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 -msgid "Permission Categories" +#: ../../addon/authchoose/Mod_Authchoose.php:28 +#: ../../addon/authchoose/Mod_Authchoose.php:33 +msgid "Authchoose App" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:120 -msgid "Permission category name" +#: ../../addon/authchoose/Mod_Authchoose.php:39 +msgid "Authchoose" msgstr "" -#: ../../Zotlabs/Module/Permcats.php:121 ../../Zotlabs/Module/Tokens.php:181 -#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:266 +#: ../../addon/pageheader/Mod_Pageheader.php:22 +msgid "pageheader Settings saved." +msgstr "" + +#: ../../addon/pageheader/Mod_Pageheader.php:34 +msgid "Page Header App" +msgstr "" + +#: ../../addon/pageheader/Mod_Pageheader.php:35 +msgid "Inserts a page header" +msgstr "" + +#: ../../addon/pageheader/Mod_Pageheader.php:43 +msgid "Message to display on every page on this server" +msgstr "" + +#: ../../addon/pageheader/Mod_Pageheader.php:51 +msgid "Page Header" +msgstr "" + +#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 +msgid "Popular Channels" +msgstr "" + +#: ../../addon/irc/irc.php:37 +msgid "Channels to auto connect" +msgstr "" + +#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 +msgid "Comma separated list" +msgstr "" + +#: ../../addon/irc/irc.php:45 +msgid "IRC Settings" +msgstr "" + +#: ../../addon/irc/irc.php:54 +msgid "IRC settings saved." +msgstr "" + +#: ../../addon/irc/irc.php:58 +msgid "IRC Chatroom" +msgstr "" + +#: ../../addon/xmpp/xmpp.php:44 +msgid "Jabber BOSH host" +msgstr "" + +#: ../../addon/xmpp/xmpp.php:45 +msgid "Use central userbase" +msgstr "" + +#: ../../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 "" + +#: ../../addon/xmpp/Mod_Xmpp.php:23 +msgid "XMPP settings updated." +msgstr "" + +#: ../../addon/xmpp/Mod_Xmpp.php:35 +msgid "XMPP App" +msgstr "" + +#: ../../addon/xmpp/Mod_Xmpp.php:36 +msgid "Embedded XMPP (Jabber) client" +msgstr "" + +#: ../../addon/xmpp/Mod_Xmpp.php:52 +msgid "Individual credentials" +msgstr "" + +#: ../../addon/xmpp/Mod_Xmpp.php:58 +msgid "Jabber BOSH server" +msgstr "" + +#: ../../addon/xmpp/Mod_Xmpp.php:67 +msgid "XMPP Settings" +msgstr "" + +#: ../../include/zot.php:774 +msgid "Invalid data packet" +msgstr "" + +#: ../../include/zot.php:801 ../../Zotlabs/Lib/Libzot.php:652 +msgid "Unable to verify channel signature" +msgstr "" + +#: ../../include/zot.php:2628 ../../Zotlabs/Lib/Libsync.php:733 +#, php-format +msgid "Unable to verify site signature for %s" +msgstr "" + +#: ../../include/zot.php:4325 +msgid "invalid target signature" +msgstr "" + +#: ../../include/text.php:522 +msgid "prev" +msgstr "" + +#: ../../include/text.php:524 +msgid "first" +msgstr "" + +#: ../../include/text.php:553 +msgid "last" +msgstr "" + +#: ../../include/text.php:556 +msgid "next" +msgstr "" + +#: ../../include/text.php:574 +msgid "older" +msgstr "" + +#: ../../include/text.php:576 +msgid "newer" +msgstr "" + +#: ../../include/text.php:1000 +msgid "No connections" +msgstr "" + +#: ../../include/text.php:1012 ../../include/features.php:133 +#: ../../Zotlabs/Module/Connections.php:351 ../../Zotlabs/Lib/Apps.php:332 +msgid "Connections" +msgstr "" + +#: ../../include/text.php:1032 +#, php-format +msgid "View all %s connections" +msgstr "" + +#: ../../include/text.php:1094 +#, php-format +msgid "Network: %s" +msgstr "" + +#: ../../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 "" + +#: ../../include/text.php:1197 ../../include/text.php:1201 +msgid "poke" +msgstr "" + +#: ../../include/text.php:1197 ../../include/text.php:1201 +#: ../../include/conversation.php:251 +msgid "poked" +msgstr "" + +#: ../../include/text.php:1202 +msgid "ping" +msgstr "" + +#: ../../include/text.php:1202 +msgid "pinged" +msgstr "" + +#: ../../include/text.php:1203 +msgid "prod" +msgstr "" + +#: ../../include/text.php:1203 +msgid "prodded" +msgstr "" + +#: ../../include/text.php:1204 +msgid "slap" +msgstr "" + +#: ../../include/text.php:1204 +msgid "slapped" +msgstr "" + +#: ../../include/text.php:1205 +msgid "finger" +msgstr "" + +#: ../../include/text.php:1205 +msgid "fingered" +msgstr "" + +#: ../../include/text.php:1206 +msgid "rebuff" +msgstr "" + +#: ../../include/text.php:1206 +msgid "rebuffed" +msgstr "" + +#: ../../include/text.php:1229 +msgid "happy" +msgstr "" + +#: ../../include/text.php:1230 +msgid "sad" +msgstr "" + +#: ../../include/text.php:1231 +msgid "mellow" +msgstr "" + +#: ../../include/text.php:1232 +msgid "tired" +msgstr "" + +#: ../../include/text.php:1233 +msgid "perky" +msgstr "" + +#: ../../include/text.php:1234 +msgid "angry" +msgstr "" + +#: ../../include/text.php:1235 +msgid "stupefied" +msgstr "" + +#: ../../include/text.php:1236 +msgid "puzzled" +msgstr "" + +#: ../../include/text.php:1237 +msgid "interested" +msgstr "" + +#: ../../include/text.php:1238 +msgid "bitter" +msgstr "" + +#: ../../include/text.php:1239 +msgid "cheerful" +msgstr "" + +#: ../../include/text.php:1240 +msgid "alive" +msgstr "" + +#: ../../include/text.php:1241 +msgid "annoyed" +msgstr "" + +#: ../../include/text.php:1242 +msgid "anxious" +msgstr "" + +#: ../../include/text.php:1243 +msgid "cranky" +msgstr "" + +#: ../../include/text.php:1244 +msgid "disturbed" +msgstr "" + +#: ../../include/text.php:1245 +msgid "frustrated" +msgstr "" + +#: ../../include/text.php:1246 +msgid "depressed" +msgstr "" + +#: ../../include/text.php:1247 +msgid "motivated" +msgstr "" + +#: ../../include/text.php:1248 +msgid "relaxed" +msgstr "" + +#: ../../include/text.php:1249 +msgid "surprised" +msgstr "" + +#: ../../include/text.php:1437 ../../include/js_strings.php:96 +msgid "Monday" +msgstr "" + +#: ../../include/text.php:1437 ../../include/js_strings.php:97 +msgid "Tuesday" +msgstr "" + +#: ../../include/text.php:1437 ../../include/js_strings.php:98 +msgid "Wednesday" +msgstr "" + +#: ../../include/text.php:1437 ../../include/js_strings.php:99 +msgid "Thursday" +msgstr "" + +#: ../../include/text.php:1437 ../../include/js_strings.php:100 +msgid "Friday" +msgstr "" + +#: ../../include/text.php:1437 ../../include/js_strings.php:101 +msgid "Saturday" +msgstr "" + +#: ../../include/text.php:1437 ../../include/js_strings.php:95 +msgid "Sunday" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:71 +msgid "January" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:72 +msgid "February" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:73 +msgid "March" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:74 +msgid "April" +msgstr "" + +#: ../../include/text.php:1441 +msgid "May" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:76 +msgid "June" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:77 +msgid "July" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:78 +msgid "August" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:79 +msgid "September" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:80 +msgid "October" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:81 +msgid "November" +msgstr "" + +#: ../../include/text.php:1441 ../../include/js_strings.php:82 +msgid "December" +msgstr "" + +#: ../../include/text.php:1515 +msgid "Unknown Attachment" +msgstr "" + +#: ../../include/text.php:1517 ../../Zotlabs/Module/Sharedwithme.php:106 +#: ../../Zotlabs/Storage/Browser.php:293 +msgid "Size" +msgstr "" + +#: ../../include/text.php:1517 ../../include/feedutils.php:870 +msgid "unknown" +msgstr "" + +#: ../../include/text.php:1553 +msgid "remove category" +msgstr "" + +#: ../../include/text.php:1629 +msgid "remove from file" +msgstr "" + +#: ../../include/text.php:1793 ../../include/message.php:13 +msgid "Download binary/encrypted content" +msgstr "" + +#: ../../include/text.php:1941 ../../Zotlabs/Module/Events.php:669 +msgid "Link to Source" +msgstr "" + +#: ../../include/text.php:1963 ../../include/language.php:423 +msgid "default" +msgstr "" + +#: ../../include/text.php:1971 +msgid "Page layout" +msgstr "" + +#: ../../include/text.php:1971 +msgid "You can create your own with the layouts tool" +msgstr "" + +#: ../../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 "" + +#: ../../include/text.php:1982 +msgid "HTML" +msgstr "" + +#: ../../include/text.php:1984 ../../Zotlabs/Widget/Wiki_pages.php:38 +#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../Zotlabs/Module/Wiki.php:217 +msgid "Text" +msgstr "" + +#: ../../include/text.php:1985 +msgid "Comanche Layout" +msgstr "" + +#: ../../include/text.php:1990 +msgid "PHP" +msgstr "" + +#: ../../include/text.php:1999 +msgid "Page content type" +msgstr "" + +#: ../../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 "" + +#: ../../include/text.php:2127 ../../include/conversation.php:146 +#: ../../Zotlabs/Module/Tagger.php:79 +msgid "comment" +msgstr "" + +#: ../../include/text.php:2132 +msgid "activity" +msgstr "" + +#: ../../include/text.php:2233 +msgid "a-z, 0-9, -, and _ only" +msgstr "" + +#: ../../include/text.php:2559 +msgid "Design Tools" +msgstr "" + +#: ../../include/text.php:2562 ../../Zotlabs/Module/Blocks.php:154 +msgid "Blocks" +msgstr "" + +#: ../../include/text.php:2563 ../../Zotlabs/Module/Menu.php:171 +msgid "Menus" +msgstr "" + +#: ../../include/text.php:2564 ../../Zotlabs/Module/Layouts.php:184 +msgid "Layouts" +msgstr "" + +#: ../../include/text.php:2565 +msgid "Pages" +msgstr "" + +#: ../../include/text.php:2577 +msgid "Import" +msgstr "" + +#: ../../include/text.php:2578 +msgid "Import website..." +msgstr "" + +#: ../../include/text.php:2579 +msgid "Select folder to import" +msgstr "" + +#: ../../include/text.php:2580 +msgid "Import from a zipped folder:" +msgstr "" + +#: ../../include/text.php:2581 +msgid "Import from cloud files:" +msgstr "" + +#: ../../include/text.php:2582 +msgid "/cloud/channel/path/to/folder" +msgstr "" + +#: ../../include/text.php:2583 +msgid "Enter path to website files" +msgstr "" + +#: ../../include/text.php:2584 +msgid "Select folder" +msgstr "" + +#: ../../include/text.php:2585 +msgid "Export website..." +msgstr "" + +#: ../../include/text.php:2586 +msgid "Export to a zip file" +msgstr "" + +#: ../../include/text.php:2587 +msgid "website.zip" +msgstr "" + +#: ../../include/text.php:2588 +msgid "Enter a name for the zip file." +msgstr "" + +#: ../../include/text.php:2589 +msgid "Export to cloud files" +msgstr "" + +#: ../../include/text.php:2590 +msgid "/path/to/export/folder" +msgstr "" + +#: ../../include/text.php:2591 +msgid "Enter a path to a cloud files destination." +msgstr "" + +#: ../../include/text.php:2592 +msgid "Specify folder" +msgstr "" + +#: ../../include/text.php:2954 ../../Zotlabs/Storage/Browser.php:131 +msgid "Collection" +msgstr "" + +#: ../../include/opengraph.php:58 +#, php-format +msgid "This is the home page of %s." +msgstr "" + +#: ../../include/event.php:32 ../../include/event.php:95 +msgid "l F d, Y \\@ g:i A" +msgstr "" + +#: ../../include/event.php:40 +msgid "Starts:" +msgstr "" + +#: ../../include/event.php:50 +msgid "Finishes:" +msgstr "" + +#: ../../include/event.php:62 ../../include/event.php:112 +#: ../../include/channel.php:1521 ../../Zotlabs/Module/Directory.php:339 +msgid "Location:" +msgstr "" + +#: ../../include/event.php:95 +msgid "l F d, Y" +msgstr "" + +#: ../../include/event.php:99 +msgid "Start:" +msgstr "" + +#: ../../include/event.php:103 +msgid "End:" +msgstr "" + +#: ../../include/event.php:1064 +msgid "This event has been added to your calendar." +msgstr "" + +#: ../../include/event.php:1290 +msgid "Not specified" +msgstr "" + +#: ../../include/event.php:1291 +msgid "Needs Action" +msgstr "" + +#: ../../include/event.php:1292 +msgid "Completed" +msgstr "" + +#: ../../include/event.php:1293 +msgid "In Process" +msgstr "" + +#: ../../include/event.php:1294 +msgid "Cancelled" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../include/event.php:1377 ../../include/connections.php:730 +msgid "Home, Voice" +msgstr "" + +#: ../../include/event.php:1378 ../../include/connections.php:731 +msgid "Home, Fax" +msgstr "" + +#: ../../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 "" + +#: ../../include/event.php:1380 ../../include/connections.php:733 +msgid "Work, Voice" +msgstr "" + +#: ../../include/event.php:1381 ../../include/connections.php:734 +msgid "Work, Fax" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../include/features.php:86 +msgid "Start calendar week on Monday" +msgstr "" + +#: ../../include/features.php:87 +msgid "Default is Sunday" +msgstr "" + +#: ../../include/features.php:94 +msgid "Event Timezone Selection" +msgstr "" + +#: ../../include/features.php:95 +msgid "Allow event creation in timezones other than your own." +msgstr "" + +#: ../../include/features.php:104 ../../Zotlabs/Lib/Apps.php:342 +msgid "Channel Home" +msgstr "" + +#: ../../include/features.php:108 +msgid "Search by Date" +msgstr "" + +#: ../../include/features.php:109 +msgid "Ability to select posts by date ranges" +msgstr "" + +#: ../../include/features.php:116 +msgid "Tag Cloud" +msgstr "" + +#: ../../include/features.php:117 +msgid "Provide a personal tag cloud on your channel page" +msgstr "" + +#: ../../include/features.php:124 ../../include/features.php:351 +msgid "Use blog/list mode" +msgstr "" + +#: ../../include/features.php:125 ../../include/features.php:352 +msgid "Comments will be displayed separately" +msgstr "" + +#: ../../include/features.php:137 +msgid "Connection Filtering" +msgstr "" + +#: ../../include/features.php:138 +msgid "Filter incoming posts from connections based on keywords/content" +msgstr "" + +#: ../../include/features.php:146 +msgid "Conversation" +msgstr "" + +#: ../../include/features.php:150 +msgid "Community Tagging" +msgstr "" + +#: ../../include/features.php:151 +msgid "Ability to tag existing posts" +msgstr "" + +#: ../../include/features.php:158 +msgid "Emoji Reactions" +msgstr "" + +#: ../../include/features.php:159 +msgid "Add emoji reaction ability to posts" +msgstr "" + +#: ../../include/features.php:166 +msgid "Dislike Posts" +msgstr "" + +#: ../../include/features.php:167 +msgid "Ability to dislike posts/comments" +msgstr "" + +#: ../../include/features.php:174 +msgid "Star Posts" +msgstr "" + +#: ../../include/features.php:175 +msgid "Ability to mark special posts with a star indicator" +msgstr "" + +#: ../../include/features.php:182 +msgid "Reply on comment" +msgstr "" + +#: ../../include/features.php:183 +msgid "Ability to reply on selected comment" +msgstr "" + +#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:346 +msgid "Directory" +msgstr "" + +#: ../../include/features.php:196 +msgid "Advanced Directory Search" +msgstr "" + +#: ../../include/features.php:197 +msgid "Allows creation of complex directory search queries" +msgstr "" + +#: ../../include/features.php:206 +msgid "Editor" +msgstr "" + +#: ../../include/features.php:210 +msgid "Post Categories" +msgstr "" + +#: ../../include/features.php:211 +msgid "Add categories to your posts" +msgstr "" + +#: ../../include/features.php:219 +msgid "Large Photos" +msgstr "" + +#: ../../include/features.php:220 +msgid "" +"Include large (1024px) photo thumbnails in posts. If not enabled, use small " +"(640px) photo thumbnails" +msgstr "" + +#: ../../include/features.php:227 +msgid "Even More Encryption" +msgstr "" + +#: ../../include/features.php:228 +msgid "" +"Allow optional encryption of content end-to-end with a shared secret key" +msgstr "" + +#: ../../include/features.php:235 +msgid "Enable Voting Tools" +msgstr "" + +#: ../../include/features.php:236 +msgid "Provide a class of post which others can vote on" +msgstr "" + +#: ../../include/features.php:243 +msgid "Disable Comments" +msgstr "" + +#: ../../include/features.php:244 +msgid "Provide the option to disable comments for a post" +msgstr "" + +#: ../../include/features.php:251 +msgid "Delayed Posting" +msgstr "" + +#: ../../include/features.php:252 +msgid "Allow posts to be published at a later date" +msgstr "" + +#: ../../include/features.php:259 +msgid "Content Expiration" +msgstr "" + +#: ../../include/features.php:260 +msgid "Remove posts/comments and/or private messages at a future time" +msgstr "" + +#: ../../include/features.php:267 +msgid "Suppress Duplicate Posts/Comments" +msgstr "" + +#: ../../include/features.php:268 +msgid "" +"Prevent posts with identical content to be published with less than two " +"minutes in between submissions." +msgstr "" + +#: ../../include/features.php:275 +msgid "Auto-save drafts of posts and comments" +msgstr "" + +#: ../../include/features.php:276 +msgid "" +"Automatically saves post and comment drafts in local browser storage to help " +"prevent accidental loss of compositions" +msgstr "" + +#: ../../include/features.php:285 +msgid "Manage" +msgstr "" + +#: ../../include/features.php:289 +msgid "Navigation Channel Select" +msgstr "" + +#: ../../include/features.php:290 +msgid "Change channels directly from within the navigation dropdown menu" +msgstr "" + +#: ../../include/features.php:299 ../../Zotlabs/Module/Connections.php:310 +msgid "Network" +msgstr "" + +#: ../../include/features.php:303 ../../Zotlabs/Widget/Savedsearch.php:83 +msgid "Saved Searches" +msgstr "" + +#: ../../include/features.php:304 +msgid "Save search terms for re-use" +msgstr "" + +#: ../../include/features.php:311 ../../include/contact_widgets.php:53 +#: ../../Zotlabs/Widget/Activity_filter.php:137 +#: ../../Zotlabs/Widget/Filer.php:28 +msgid "Saved Folders" +msgstr "" + +#: ../../include/features.php:312 +msgid "Ability to file posts under folders" +msgstr "" + +#: ../../include/features.php:319 +msgid "Alternate Stream Order" +msgstr "" + +#: ../../include/features.php:320 +msgid "" +"Ability to order the stream by last post date, last comment date or " +"unthreaded activities" +msgstr "" + +#: ../../include/features.php:327 +msgid "Contact Filter" +msgstr "" + +#: ../../include/features.php:328 +msgid "Ability to display only posts of a selected contact" +msgstr "" + +#: ../../include/features.php:335 +msgid "Forum Filter" +msgstr "" + +#: ../../include/features.php:336 +msgid "Ability to display only posts of a specific forum" +msgstr "" + +#: ../../include/features.php:343 +msgid "Personal Posts Filter" +msgstr "" + +#: ../../include/features.php:344 +msgid "Ability to display only posts that you've interacted on" +msgstr "" + +#: ../../include/features.php:361 ../../include/nav.php:446 +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 +msgid "Photos" +msgstr "" + +#: ../../include/features.php:365 +msgid "Photo Location" +msgstr "" + +#: ../../include/features.php:366 +msgid "If location data is available on uploaded photos, link this to a map." +msgstr "" + +#: ../../include/features.php:375 ../../Zotlabs/Lib/Apps.php:362 +msgid "Profiles" +msgstr "" + +#: ../../include/features.php:379 +msgid "Advanced Profiles" +msgstr "" + +#: ../../include/features.php:380 +msgid "Additional profile sections and selections" +msgstr "" + +#: ../../include/features.php:387 +msgid "Profile Import/Export" +msgstr "" + +#: ../../include/features.php:388 +msgid "Save and load profile details across sites/channels" +msgstr "" + +#: ../../include/features.php:395 +msgid "Multiple Profiles" +msgstr "" + +#: ../../include/features.php:396 +msgid "Ability to create multiple profiles" +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." +msgstr "" + +#: ../../include/js_strings.php:5 +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 +msgid "Comment" +msgstr "" + +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:502 +#, php-format +msgid "%s show all" +msgstr "" + +#: ../../include/js_strings.php:8 +#, php-format +msgid "%s show less" +msgstr "" + +#: ../../include/js_strings.php:9 +#, php-format +msgid "%s expand" +msgstr "" + +#: ../../include/js_strings.php:10 +#, php-format +msgid "%s collapse" +msgstr "" + +#: ../../include/js_strings.php:11 +msgid "Password too short" +msgstr "" + +#: ../../include/js_strings.php:12 +msgid "Passwords do not match" +msgstr "" + +#: ../../include/js_strings.php:13 +msgid "everybody" +msgstr "" + +#: ../../include/js_strings.php:14 +msgid "Secret Passphrase" +msgstr "" + +#: ../../include/js_strings.php:15 +msgid "Passphrase hint" +msgstr "" + +#: ../../include/js_strings.php:16 +msgid "Notice: Permissions have changed but have not yet been submitted." +msgstr "" + +#: ../../include/js_strings.php:17 +msgid "close all" +msgstr "" + +#: ../../include/js_strings.php:18 +msgid "Nothing new here" +msgstr "" + +#: ../../include/js_strings.php:19 +msgid "Rate This Channel (this is public)" +msgstr "" + +#: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155 +#: ../../Zotlabs/Module/Connedit.php:887 +msgid "Rating" +msgstr "" + +#: ../../include/js_strings.php:21 +msgid "Describe (optional)" +msgstr "" + +#: ../../include/js_strings.php:23 +msgid "Please enter a link URL" +msgstr "" + +#: ../../include/js_strings.php:24 +msgid "Unsaved changes. Are you sure you wish to leave this page?" +msgstr "" + +#: ../../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 "" + +#: ../../include/js_strings.php:26 +msgid "lovely" +msgstr "" + +#: ../../include/js_strings.php:27 +msgid "wonderful" +msgstr "" + +#: ../../include/js_strings.php:28 +msgid "fantastic" +msgstr "" + +#: ../../include/js_strings.php:29 +msgid "great" +msgstr "" + +#: ../../include/js_strings.php:30 +msgid "" +"Your chosen nickname was either already taken or not valid. Please use our " +"suggestion (" +msgstr "" + +#: ../../include/js_strings.php:31 +msgid ") or enter a new one." +msgstr "" + +#: ../../include/js_strings.php:32 +msgid "Thank you, this nickname is valid." +msgstr "" + +#: ../../include/js_strings.php:33 +msgid "A channel name is required." +msgstr "" + +#: ../../include/js_strings.php:34 +msgid "This is a " +msgstr "" + +#: ../../include/js_strings.php:35 +msgid " channel name" +msgstr "" + +#: ../../include/js_strings.php:36 +msgid "Back to reply" +msgstr "" + +#: ../../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 "%d months" +msgid_plural "%d months" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/js_strings.php:46 +#, php-format +msgid "%d years" +msgid_plural "%d years" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/js_strings.php:51 +msgid "timeago.prefixAgo" +msgstr "" + +#: ../../include/js_strings.php:52 +msgid "timeago.prefixFromNow" +msgstr "" + +#: ../../include/js_strings.php:53 +msgid "timeago.suffixAgo" +msgstr "" + +#: ../../include/js_strings.php:54 +msgid "timeago.suffixFromNow" +msgstr "" + +#: ../../include/js_strings.php:57 +msgid "less than a minute" +msgstr "" + +#: ../../include/js_strings.php:58 +msgid "about a minute" +msgstr "" + +#: ../../include/js_strings.php:60 +msgid "about an hour" +msgstr "" + +#: ../../include/js_strings.php:62 +msgid "a day" +msgstr "" + +#: ../../include/js_strings.php:64 +msgid "about a month" +msgstr "" + +#: ../../include/js_strings.php:66 +msgid "about a year" +msgstr "" + +#: ../../include/js_strings.php:68 +msgid " " +msgstr "" + +#: ../../include/js_strings.php:69 +msgid "timeago.numbers" +msgstr "" + +#: ../../include/js_strings.php:75 +msgctxt "long" +msgid "May" +msgstr "" + +#: ../../include/js_strings.php:83 +msgid "Jan" +msgstr "" + +#: ../../include/js_strings.php:84 +msgid "Feb" +msgstr "" + +#: ../../include/js_strings.php:85 +msgid "Mar" +msgstr "" + +#: ../../include/js_strings.php:86 +msgid "Apr" +msgstr "" + +#: ../../include/js_strings.php:87 +msgctxt "short" +msgid "May" +msgstr "" + +#: ../../include/js_strings.php:88 +msgid "Jun" +msgstr "" + +#: ../../include/js_strings.php:89 +msgid "Jul" +msgstr "" + +#: ../../include/js_strings.php:90 +msgid "Aug" +msgstr "" + +#: ../../include/js_strings.php:91 +msgid "Sep" +msgstr "" + +#: ../../include/js_strings.php:92 +msgid "Oct" +msgstr "" + +#: ../../include/js_strings.php:93 +msgid "Nov" +msgstr "" + +#: ../../include/js_strings.php:94 +msgid "Dec" +msgstr "" + +#: ../../include/js_strings.php:102 +msgid "Sun" +msgstr "" + +#: ../../include/js_strings.php:103 +msgid "Mon" +msgstr "" + +#: ../../include/js_strings.php:104 +msgid "Tue" +msgstr "" + +#: ../../include/js_strings.php:105 +msgid "Wed" +msgstr "" + +#: ../../include/js_strings.php:106 +msgid "Thu" +msgstr "" + +#: ../../include/js_strings.php:107 +msgid "Fri" +msgstr "" + +#: ../../include/js_strings.php:108 +msgid "Sat" +msgstr "" + +#: ../../include/js_strings.php:109 +msgctxt "calendar" +msgid "today" +msgstr "" + +#: ../../include/js_strings.php:110 +msgctxt "calendar" +msgid "month" +msgstr "" + +#: ../../include/js_strings.php:111 +msgctxt "calendar" +msgid "week" +msgstr "" + +#: ../../include/js_strings.php:112 +msgctxt "calendar" +msgid "day" +msgstr "" + +#: ../../include/js_strings.php:113 +msgctxt "calendar" +msgid "All day" +msgstr "" + +#: ../../include/help.php:80 +msgid "Help:" +msgstr "" + +#: ../../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 "" + +#: ../../include/help.php:129 +msgid "Not Found" +msgstr "" + +#: ../../include/photos.php:151 +#, php-format +msgid "Image exceeds website size limit of %lu bytes" +msgstr "" + +#: ../../include/photos.php:162 +msgid "Image file is empty." +msgstr "" + +#: ../../include/photos.php:196 ../../Zotlabs/Module/Profile_photo.php:259 +#: ../../Zotlabs/Module/Cover_photo.php:239 +msgid "Unable to process image" +msgstr "" + +#: ../../include/photos.php:324 +msgid "Photo storage failed." +msgstr "" + +#: ../../include/photos.php:373 +msgid "a new photo" +msgstr "" + +#: ../../include/photos.php:377 +#, php-format +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" +msgstr "" + +#: ../../include/photos.php:666 ../../include/nav.php:449 +msgid "Photo Albums" +msgstr "" + +#: ../../include/photos.php:667 ../../Zotlabs/Module/Photos.php:1347 +#: ../../Zotlabs/Module/Photos.php:1360 ../../Zotlabs/Module/Photos.php:1361 +msgid "Recent Photos" +msgstr "" + +#: ../../include/photos.php:671 +msgid "Upload New Photos" +msgstr "" + +#: ../../include/network.php:1726 ../../include/network.php:1727 +msgid "Friendica" +msgstr "" + +#: ../../include/network.php:1728 +msgid "OStatus" +msgstr "" + +#: ../../include/network.php:1729 +msgid "GNU-Social" +msgstr "" + +#: ../../include/network.php:1730 +msgid "RSS/Atom" +msgstr "" + +#: ../../include/network.php:1733 +msgid "Diaspora" +msgstr "" + +#: ../../include/network.php:1734 +msgid "Facebook" +msgstr "" + +#: ../../include/network.php:1735 +msgid "Zot" +msgstr "" + +#: ../../include/network.php:1736 +msgid "LinkedIn" +msgstr "" + +#: ../../include/network.php:1737 +msgid "XMPP/IM" +msgstr "" + +#: ../../include/network.php:1738 +msgid "MySpace" +msgstr "" + +#: ../../include/activities.php:42 +msgid " and " +msgstr "" + +#: ../../include/activities.php:50 +msgid "public profile" +msgstr "" + +#: ../../include/activities.php:59 +#, php-format +msgid "%1$s changed %2$s to “%3$s”" +msgstr "" + +#: ../../include/activities.php:60 +#, php-format +msgid "Visit %1$s's %2$s" +msgstr "" + +#: ../../include/activities.php:63 +#, php-format +msgid "%1$s has an updated %2$s, changing %3$s." +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:16 ../../Zotlabs/Module/Admin/Site.php:293 +msgid "Advanced" +msgstr "" + +#: ../../include/contact_widgets.php:19 +msgid "Find Channels" +msgstr "" + +#: ../../include/contact_widgets.php:20 +msgid "Enter name or interest" +msgstr "" + +#: ../../include/contact_widgets.php:21 +msgid "Connect/Follow" +msgstr "" + +#: ../../include/contact_widgets.php:22 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "" + +#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:416 +#: ../../Zotlabs/Module/Directory.php:421 +#: ../../Zotlabs/Module/Connections.php:358 +msgid "Find" +msgstr "" + +#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Directory.php:420 +#: ../../Zotlabs/Module/Suggest.php:79 +msgid "Channel Suggestions" +msgstr "" + +#: ../../include/contact_widgets.php:26 +msgid "Random Profile" +msgstr "" + +#: ../../include/contact_widgets.php:27 +msgid "Invite Friends" +msgstr "" + +#: ../../include/contact_widgets.php:29 +msgid "Advanced example: name=fred and country=iceland" +msgstr "" + +#: ../../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 "" + +#: ../../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 "" + +#: ../../include/contact_widgets.php:218 +msgid "Common Connections" +msgstr "" + +#: ../../include/contact_widgets.php:222 +#, php-format +msgid "View all %d common connections" +msgstr "" + +#: ../../include/language.php:436 +msgid "Select an alternate language" +msgstr "" + +#: ../../include/import.php:28 +msgid "Unable to import a removed channel." +msgstr "" + +#: ../../include/import.php:54 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." +msgstr "" + +#: ../../include/import.php:120 +msgid "Cloned channel not found. Import failed." +msgstr "" + +#: ../../include/nav.php:90 +msgid "Remote authentication" +msgstr "" + +#: ../../include/nav.php:90 +msgid "Click to authenticate to your home hub" +msgstr "" + +#: ../../include/nav.php:96 ../../Zotlabs/Module/Manage.php:170 +#: ../../Zotlabs/Lib/Apps.php:336 +msgid "Channel Manager" +msgstr "" + +#: ../../include/nav.php:96 +msgid "Manage your channels" +msgstr "" + +#: ../../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 "" + +#: ../../include/nav.php:99 +msgid "Manage your privacy groups" +msgstr "" + +#: ../../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 "" + +#: ../../include/nav.php:101 +msgid "Account/Channel Settings" +msgstr "" + +#: ../../include/nav.php:107 ../../include/nav.php:136 +#: ../../include/nav.php:155 ../../boot.php:1673 +msgid "Logout" +msgstr "" + +#: ../../include/nav.php:107 ../../include/nav.php:136 +msgid "End this session" +msgstr "" + +#: ../../include/nav.php:110 +msgid "Your profile page" +msgstr "" + +#: ../../include/nav.php:113 ../../include/channel.php:1426 +#: ../../Zotlabs/Module/Profiles.php:830 +msgid "Edit Profiles" +msgstr "" + +#: ../../include/nav.php:113 +msgid "Manage/Edit profiles" +msgstr "" + +#: ../../include/nav.php:115 ../../Zotlabs/Widget/Newmember.php:35 +msgid "Edit your profile" +msgstr "" + +#: ../../include/nav.php:122 ../../include/nav.php:126 +#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1674 +msgid "Login" +msgstr "" + +#: ../../include/nav.php:122 ../../include/nav.php:126 +msgid "Sign in" +msgstr "" + +#: ../../include/nav.php:153 +msgid "Take me home" +msgstr "" + +#: ../../include/nav.php:155 +msgid "Log me out of this site" +msgstr "" + +#: ../../include/nav.php:160 ../../Zotlabs/Module/Register.php:293 +#: ../../boot.php:1654 +msgid "Register" +msgstr "" + +#: ../../include/nav.php:160 +msgid "Create an account" +msgstr "" + +#: ../../include/nav.php:172 +msgid "Help and documentation" +msgstr "" + +#: ../../include/nav.php:186 +msgid "Search site @name, !forum, #tag, ?docs, content" +msgstr "" + +#: ../../include/nav.php:192 ../../Zotlabs/Widget/Admin.php:55 +msgid "Admin" +msgstr "" + +#: ../../include/nav.php:192 +msgid "Site Setup and Configuration" +msgstr "" + +#: ../../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 "" + +#: ../../include/nav.php:332 +msgid "@name, !forum, #tag, ?doc, content" +msgstr "" + +#: ../../include/nav.php:333 +msgid "Please wait..." +msgstr "" + +#: ../../include/nav.php:339 +msgid "Add Apps" +msgstr "" + +#: ../../include/nav.php:340 +msgid "Arrange Apps" +msgstr "" + +#: ../../include/nav.php:341 +msgid "Toggle System Apps" +msgstr "" + +#: ../../include/nav.php:423 ../../Zotlabs/Module/Admin/Channels.php:154 +msgid "Channel" +msgstr "" + +#: ../../include/nav.php:426 +msgid "Status Messages and Posts" +msgstr "" + +#: ../../include/nav.php:436 ../../Zotlabs/Module/Help.php:80 +msgid "About" +msgstr "" + +#: ../../include/nav.php:439 +msgid "Profile Details" +msgstr "" + +#: ../../include/nav.php:454 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Storage/Browser.php:278 +msgid "Files" +msgstr "" + +#: ../../include/nav.php:457 +msgid "Files and Storage" +msgstr "" + +#: ../../include/nav.php:479 ../../include/nav.php:482 +#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:329 +msgid "Chatrooms" +msgstr "" + +#: ../../include/nav.php:492 ../../Zotlabs/Lib/Apps.php:328 +msgid "Bookmarks" +msgstr "" + +#: ../../include/nav.php:495 +msgid "Saved Bookmarks" +msgstr "" + +#: ../../include/nav.php:503 ../../Zotlabs/Module/Cards.php:207 +#: ../../Zotlabs/Lib/Apps.php:325 +msgid "Cards" +msgstr "" + +#: ../../include/nav.php:506 +msgid "View Cards" +msgstr "" + +#: ../../include/nav.php:514 ../../Zotlabs/Module/Articles.php:226 +#: ../../Zotlabs/Lib/Apps.php:324 +msgid "Articles" +msgstr "" + +#: ../../include/nav.php:517 +msgid "View Articles" +msgstr "" + +#: ../../include/nav.php:526 ../../Zotlabs/Module/Webpages.php:252 +#: ../../Zotlabs/Lib/Apps.php:340 +msgid "Webpages" +msgstr "" + +#: ../../include/nav.php:529 +msgid "View Webpages" +msgstr "" + +#: ../../include/nav.php:538 ../../Zotlabs/Widget/Wiki_list.php:15 +#: ../../Zotlabs/Module/Wiki.php:206 +msgid "Wikis" +msgstr "" + +#: ../../include/nav.php:541 ../../Zotlabs/Lib/Apps.php:341 +msgid "Wiki" +msgstr "" + +#: ../../include/auth.php:192 +msgid "Delegation session ended." +msgstr "" + +#: ../../include/auth.php:196 +msgid "Logged out." +msgstr "" + +#: ../../include/auth.php:291 +msgid "Email validation is incomplete. Please check your email." +msgstr "" + +#: ../../include/auth.php:307 +msgid "Failed authentication" +msgstr "" + +#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:51 +#: ../../Zotlabs/Module/Profiles.php:736 +msgid "Miscellaneous" +msgstr "" + +#: ../../include/datetime.php:140 +msgid "Birthday" +msgstr "" + +#: ../../include/datetime.php:140 +msgid "Age: " +msgstr "" + +#: ../../include/datetime.php:140 +msgid "YYYY-MM-DD or MM-DD" +msgstr "" + +#: ../../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 "" + +#: ../../include/datetime.php:238 ../../boot.php:2605 +msgid "never" +msgstr "" + +#: ../../include/datetime.php:244 +msgid "less than a second ago" +msgstr "" + +#: ../../include/datetime.php:262 +#, php-format +msgctxt "e.g. 22 hours ago, 1 minute ago" +msgid "%1$d %2$s ago" +msgstr "" + +#: ../../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 "" + +#: ../../include/datetime.php:521 +#, php-format +msgid "Happy Birthday %1$s" +msgstr "" + +#: ../../include/follow.php:37 +msgid "Channel is blocked on this site." +msgstr "" + +#: ../../include/follow.php:42 +msgid "Channel location missing." +msgstr "" + +#: ../../include/follow.php:84 +msgid "Response from remote channel was incomplete." +msgstr "" + +#: ../../include/follow.php:96 +msgid "Premium channel - please visit:" +msgstr "" + +#: ../../include/follow.php:110 +msgid "Channel was deleted and no longer exists." +msgstr "" + +#: ../../include/follow.php:166 +msgid "Remote channel or protocol unavailable." +msgstr "" + +#: ../../include/follow.php:190 +msgid "Channel discovery failed." +msgstr "" + +#: ../../include/follow.php:202 +msgid "Protocol disabled." +msgstr "" + +#: ../../include/follow.php:213 +msgid "Cannot connect to yourself." +msgstr "" + +#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:123 +msgid "channel" +msgstr "" + +#: ../../include/conversation.php:169 +#, php-format +msgid "likes %1$s's %2$s" +msgstr "" + +#: ../../include/conversation.php:172 +#, php-format +msgid "doesn't like %1$s's %2$s" +msgstr "" + +#: ../../include/conversation.php:212 +#, php-format +msgid "%1$s is now connected with %2$s" +msgstr "" + +#: ../../include/conversation.php:247 +#, php-format +msgid "%1$s poked %2$s" +msgstr "" + +#: ../../include/conversation.php:268 ../../Zotlabs/Module/Mood.php:76 +#, php-format +msgctxt "mood" +msgid "%1$s is %2$s" +msgstr "" + +#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:468 +msgid "This is an unsaved preview" +msgstr "" + +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Likes" +msgstr "" + +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Dislikes" +msgstr "" + +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Agree" +msgstr "" + +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Disagree" +msgstr "" + +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Abstain" +msgstr "" + +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Attending" +msgstr "" + +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Not attending" +msgstr "" + +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Might attend" +msgstr "" + +#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:178 +msgid "Select" +msgstr "" + +#: ../../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 "" + +#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:267 +msgid "Toggle Star Status" +msgstr "" + +#: ../../include/conversation.php:700 ../../Zotlabs/Lib/ThreadItem.php:103 +msgid "Private Message" +msgstr "" + +#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:278 +msgid "Message signature validated" +msgstr "" + +#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:279 +msgid "Message signature incorrect" +msgstr "" + +#: ../../include/conversation.php:735 +#: ../../Zotlabs/Module/Admin/Accounts.php:173 +#: ../../Zotlabs/Module/Connections.php:320 +msgid "Approve" +msgstr "" + +#: ../../include/conversation.php:739 +#, php-format +msgid "View %s's profile @ %s" +msgstr "" + +#: ../../include/conversation.php:759 +msgid "Categories:" +msgstr "" + +#: ../../include/conversation.php:760 +msgid "Filed under:" +msgstr "" + +#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:401 +#, php-format +msgid "from %s" +msgstr "" + +#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:404 +#, php-format +msgid "last edited: %s" +msgstr "" + +#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:405 +#, php-format +msgid "Expires: %s" +msgstr "" + +#: ../../include/conversation.php:785 +msgid "View in context" +msgstr "" + +#: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1076 +#: ../../Zotlabs/Lib/ThreadItem.php:469 +msgid "Please wait" +msgstr "" + +#: ../../include/conversation.php:886 +msgid "remove" +msgstr "" + +#: ../../include/conversation.php:890 +msgid "Loading..." +msgstr "" + +#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:291 +msgid "Conversation Tools" +msgstr "" + +#: ../../include/conversation.php:892 +msgid "Delete Selected Items" +msgstr "" + +#: ../../include/conversation.php:935 +msgid "View Source" +msgstr "" + +#: ../../include/conversation.php:945 +msgid "Follow Thread" +msgstr "" + +#: ../../include/conversation.php:954 +msgid "Unfollow Thread" +msgstr "" + +#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:629 +msgid "Recent Activity" +msgstr "" + +#: ../../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 "" + +#: ../../include/conversation.php:1068 +msgid "Edit Connection" +msgstr "" + +#: ../../include/conversation.php:1078 +msgid "Message" +msgstr "" + +#: ../../include/conversation.php:1088 ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Ratings.php:97 +msgid "Ratings" +msgstr "" + +#: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199 +#: ../../Zotlabs/Lib/Apps.php:350 +msgid "Poke" +msgstr "" + +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s likes this." +msgstr "" + +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s doesn't like this." +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" +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." +msgstr "" + +#: ../../include/conversation.php:1228 +#, php-format +msgid "%s don't like this." +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] "" + +#: ../../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] "" + +#: ../../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] "" + +#: ../../include/conversation.php:1723 +msgctxt "noun" +msgid "Abstain" +msgid_plural "Abstains" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/selectors.php:18 +msgid "Profile to assign new connections" +msgstr "" + +#: ../../include/selectors.php:41 +msgid "Frequently" +msgstr "" + +#: ../../include/selectors.php:42 +msgid "Hourly" +msgstr "" + +#: ../../include/selectors.php:43 +msgid "Twice daily" +msgstr "" + +#: ../../include/selectors.php:44 +msgid "Daily" +msgstr "" + +#: ../../include/selectors.php:45 +msgid "Weekly" +msgstr "" + +#: ../../include/selectors.php:46 +msgid "Monthly" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Currently Male" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Currently Female" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Mostly Male" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Mostly Female" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Transgender" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Intersex" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Transsexual" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Hermaphrodite" +msgstr "" + +#: ../../include/selectors.php:60 ../../include/channel.php:1614 +msgid "Neuter" +msgstr "" + +#: ../../include/selectors.php:60 ../../include/channel.php:1616 +msgid "Non-specific" +msgstr "" + +#: ../../include/selectors.php:60 +msgid "Undecided" +msgstr "" + +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Males" +msgstr "" + +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Females" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Gay" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Lesbian" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "No Preference" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Bisexual" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Autosexual" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Abstinent" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Virgin" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Deviant" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Fetish" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Oodles" +msgstr "" + +#: ../../include/selectors.php:96 +msgid "Nonsexual" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Single" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Lonely" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Available" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Unavailable" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Has crush" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Infatuated" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Dating" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Unfaithful" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Sex Addict" +msgstr "" + +#: ../../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 "" + +#: ../../include/selectors.php:134 +msgid "Friends/Benefits" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Casual" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Engaged" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Married" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Imaginarily married" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Partners" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Cohabiting" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Common law" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Happy" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Not looking" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Swinger" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Betrayed" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Separated" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Unstable" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Divorced" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Imaginarily divorced" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Widowed" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Uncertain" +msgstr "" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "It's complicated" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Don't care" +msgstr "" + +#: ../../include/selectors.php:134 +msgid "Ask me" +msgstr "" + +#: ../../include/connections.php:133 +msgid "New window" +msgstr "" + +#: ../../include/connections.php:134 +msgid "Open the selected location in a different window or browser tab" +msgstr "" + +#: ../../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 "" + +#: ../../include/group.php:264 ../../Zotlabs/Lib/Group.php:270 +msgid "Add new connections to this privacy group" +msgstr "" + +#: ../../include/group.php:298 ../../Zotlabs/Lib/Group.php:302 +msgid "edit" +msgstr "" + +#: ../../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 "" + +#: ../../include/group.php:323 ../../Zotlabs/Lib/Group.php:327 +msgid "Channels not in any privacy group" +msgstr "" + +#: ../../include/group.php:325 ../../Zotlabs/Widget/Savedsearch.php:84 +#: ../../Zotlabs/Lib/Group.php:329 +msgid "add" +msgstr "" + +#: ../../include/taxonomy.php:320 +msgid "Trending" +msgstr "" + +#: ../../include/taxonomy.php:320 ../../include/taxonomy.php:449 +#: ../../include/taxonomy.php:470 ../../Zotlabs/Widget/Tagcloud.php:22 +msgid "Tags" +msgstr "" + +#: ../../include/taxonomy.php:550 +msgid "Keywords" +msgstr "" + +#: ../../include/taxonomy.php:571 +msgid "have" +msgstr "" + +#: ../../include/taxonomy.php:571 +msgid "has" +msgstr "" + +#: ../../include/taxonomy.php:572 +msgid "want" +msgstr "" + +#: ../../include/taxonomy.php:572 +msgid "wants" +msgstr "" + +#: ../../include/taxonomy.php:573 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "like" +msgstr "" + +#: ../../include/taxonomy.php:573 +msgid "likes" +msgstr "" + +#: ../../include/taxonomy.php:574 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "dislike" +msgstr "" + +#: ../../include/taxonomy.php:574 +msgid "dislikes" +msgstr "" + +#: ../../include/items.php:984 ../../include/items.php:1044 +msgid "(Unknown)" +msgstr "" + +#: ../../include/items.php:1232 +msgid "Visible to anybody on the internet." +msgstr "" + +#: ../../include/items.php:1234 +msgid "Visible to you only." +msgstr "" + +#: ../../include/items.php:1236 +msgid "Visible to anybody in this network." +msgstr "" + +#: ../../include/items.php:1238 +msgid "Visible to anybody authenticated." +msgstr "" + +#: ../../include/items.php:1240 +#, php-format +msgid "Visible to anybody on %s." +msgstr "" + +#: ../../include/items.php:1242 +msgid "Visible to all connections." +msgstr "" + +#: ../../include/items.php:1244 +msgid "Visible to approved connections." +msgstr "" + +#: ../../include/items.php:1246 +msgid "Visible to specific connections." +msgstr "" + +#: ../../include/items.php:4296 ../../Zotlabs/Module/Group.php:61 +#: ../../Zotlabs/Module/Group.php:213 +msgid "Privacy group not found." +msgstr "" + +#: ../../include/items.php:4312 +msgid "Privacy group is empty." +msgstr "" + +#: ../../include/items.php:4319 +#, php-format +msgid "Privacy group: %s" +msgstr "" + +#: ../../include/items.php:4329 ../../Zotlabs/Module/Connedit.php:867 +#, php-format +msgid "Connection: %s" +msgstr "" + +#: ../../include/items.php:4331 +msgid "Connection not found." +msgstr "" + +#: ../../include/items.php:4673 ../../Zotlabs/Module/Cover_photo.php:303 +msgid "female" +msgstr "" + +#: ../../include/items.php:4674 ../../Zotlabs/Module/Cover_photo.php:304 +#, php-format +msgid "%1$s updated her %2$s" +msgstr "" + +#: ../../include/items.php:4675 ../../Zotlabs/Module/Cover_photo.php:305 +msgid "male" +msgstr "" + +#: ../../include/items.php:4676 ../../Zotlabs/Module/Cover_photo.php:306 +#, php-format +msgid "%1$s updated his %2$s" +msgstr "" + +#: ../../include/items.php:4678 ../../Zotlabs/Module/Cover_photo.php:308 +#, php-format +msgid "%1$s updated their %2$s" +msgstr "" + +#: ../../include/items.php:4680 +msgid "profile photo" +msgstr "" + +#: ../../include/items.php:4872 +#, php-format +msgid "[Edited %s]" +msgstr "" + +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Post" +msgstr "" + +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Comment" +msgstr "" + +#: ../../include/account.php:36 +msgid "Not a valid email address" +msgstr "" + +#: ../../include/account.php:38 +msgid "Your email domain is not among those allowed on this site" +msgstr "" + +#: ../../include/account.php:44 +msgid "Your email address is already registered at this site." +msgstr "" + +#: ../../include/account.php:76 +msgid "An invitation is required." +msgstr "" + +#: ../../include/account.php:80 +msgid "Invitation could not be verified." +msgstr "" + +#: ../../include/account.php:156 +msgid "Please enter the required information." +msgstr "" + +#: ../../include/account.php:223 +msgid "Failed to store account information." +msgstr "" + +#: ../../include/account.php:311 +#, php-format +msgid "Registration confirmation for %s" +msgstr "" + +#: ../../include/account.php:380 +#, php-format +msgid "Registration request at %s" +msgstr "" + +#: ../../include/account.php:402 +msgid "your registration password" +msgstr "" + +#: ../../include/account.php:408 ../../include/account.php:471 +#, php-format +msgid "Registration details for %s" +msgstr "" + +#: ../../include/account.php:482 +msgid "Account approved." +msgstr "" + +#: ../../include/account.php:522 +#, php-format +msgid "Registration revoked for %s" +msgstr "" + +#: ../../include/account.php:805 ../../include/account.php:807 +msgid "Click here to upgrade." +msgstr "" + +#: ../../include/account.php:813 +msgid "This action exceeds the limits set by your subscription plan." +msgstr "" + +#: ../../include/account.php:818 +msgid "This action is not available under your subscription plan." +msgstr "" + +#: ../../include/photo/photo_driver.php:367 +#: ../../Zotlabs/Module/Profile_photo.php:145 +#: ../../Zotlabs/Module/Profile_photo.php:282 +msgid "Profile Photos" +msgstr "" + +#: ../../include/attach.php:267 ../../include/attach.php:375 +msgid "Item was not found." +msgstr "" + +#: ../../include/attach.php:284 +msgid "Unknown error." +msgstr "" + +#: ../../include/attach.php:568 +msgid "No source file." +msgstr "" + +#: ../../include/attach.php:590 +msgid "Cannot locate file to replace" +msgstr "" + +#: ../../include/attach.php:609 +msgid "Cannot locate file to revise/update" +msgstr "" + +#: ../../include/attach.php:751 +#, php-format +msgid "File exceeds size limit of %d" +msgstr "" + +#: ../../include/attach.php:772 +#, php-format +msgid "You have reached your limit of %1$.0f Mbytes attachment storage." +msgstr "" + +#: ../../include/attach.php:954 +msgid "File upload failed. Possible system limit or action terminated." +msgstr "" + +#: ../../include/attach.php:983 +msgid "Stored file could not be verified. Upload failed." +msgstr "" + +#: ../../include/attach.php:1057 ../../include/attach.php:1073 +msgid "Path not available." +msgstr "" + +#: ../../include/attach.php:1122 ../../include/attach.php:1285 +msgid "Empty pathname" +msgstr "" + +#: ../../include/attach.php:1148 +msgid "duplicate filename or path" +msgstr "" + +#: ../../include/attach.php:1173 +msgid "Path not found." +msgstr "" + +#: ../../include/attach.php:1241 +msgid "mkdir failed." +msgstr "" + +#: ../../include/attach.php:1245 +msgid "database storage failed." +msgstr "" + +#: ../../include/attach.php:1291 +msgid "Empty path" +msgstr "" + +#: ../../include/bookmarks.php:34 +#, php-format +msgid "%1$s's bookmarks" +msgstr "" + +#: ../../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 "" + +#: ../../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:260 ../../include/bbcode.php:1282 +msgid "Encrypted content" +msgstr "" + +#: ../../include/bbcode.php:292 +#, php-format +msgid "Install %1$s element %2$s" +msgstr "" + +#: ../../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 "" + +#: ../../include/bbcode.php:306 ../../Zotlabs/Module/Impel.php:43 +msgid "webpage" +msgstr "" + +#: ../../include/bbcode.php:309 ../../Zotlabs/Module/Impel.php:53 +msgid "layout" +msgstr "" + +#: ../../include/bbcode.php:312 ../../Zotlabs/Module/Impel.php:48 +msgid "block" +msgstr "" + +#: ../../include/bbcode.php:315 ../../Zotlabs/Module/Impel.php:60 +msgid "menu" +msgstr "" + +#: ../../include/bbcode.php:376 +msgid "card" +msgstr "" + +#: ../../include/bbcode.php:378 +msgid "article" +msgstr "" + +#: ../../include/bbcode.php:380 ../../include/markdown.php:204 +#: ../../Zotlabs/Module/Tagger.php:77 +msgid "post" +msgstr "" + +#: ../../include/bbcode.php:384 ../../include/markdown.php:202 +#, php-format +msgid "%1$s wrote the following %2$s %3$s" +msgstr "" + +#: ../../include/bbcode.php:461 ../../include/bbcode.php:469 +msgid "Click to open/close" +msgstr "" + +#: ../../include/bbcode.php:469 ../../include/markdown.php:251 +msgid "spoiler" +msgstr "" + +#: ../../include/bbcode.php:482 +msgid "View article" +msgstr "" + +#: ../../include/bbcode.php:482 +msgid "View summary" +msgstr "" + +#: ../../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:1220 +msgid "$1 wrote:" +msgstr "" + +#: ../../include/channel.php:43 +msgid "Unable to obtain identity information from database" +msgstr "" + +#: ../../include/channel.php:76 +msgid "Empty name" +msgstr "" + +#: ../../include/channel.php:79 +msgid "Name too long" +msgstr "" + +#: ../../include/channel.php:196 +msgid "No account identifier" +msgstr "" + +#: ../../include/channel.php:208 +msgid "Nickname is required." +msgstr "" + +#: ../../include/channel.php:222 ../../include/channel.php:655 +#: ../../Zotlabs/Module/Changeaddr.php:46 +msgid "Reserved nickname. Please choose another." +msgstr "" + +#: ../../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 "" + +#: ../../include/channel.php:287 +msgid "Unable to retrieve created identity" +msgstr "" + +#: ../../include/channel.php:429 +msgid "Default Profile" +msgstr "" + +#: ../../include/channel.php:588 ../../include/channel.php:677 +msgid "Unable to retrieve modified identity" +msgstr "" + +#: ../../include/channel.php:1419 ../../Zotlabs/Module/Profiles.php:728 +msgid "Change profile photo" +msgstr "" + +#: ../../include/channel.php:1427 +msgid "Create New Profile" +msgstr "" + +#: ../../include/channel.php:1445 ../../Zotlabs/Module/Profiles.php:820 +msgid "Profile Image" +msgstr "" + +#: ../../include/channel.php:1448 +msgid "Visible to everybody" +msgstr "" + +#: ../../include/channel.php:1449 ../../Zotlabs/Module/Profiles.php:725 +#: ../../Zotlabs/Module/Profiles.php:824 +msgid "Edit visibility" +msgstr "" + +#: ../../include/channel.php:1525 ../../include/channel.php:1653 +msgid "Gender:" +msgstr "" + +#: ../../include/channel.php:1527 ../../include/channel.php:1721 +msgid "Homepage:" +msgstr "" + +#: ../../include/channel.php:1528 +msgid "Online Now" +msgstr "" + +#: ../../include/channel.php:1581 +msgid "Change your profile photo" +msgstr "" + +#: ../../include/channel.php:1612 +msgid "Trans" +msgstr "" + +#: ../../include/channel.php:1651 ../../Zotlabs/Module/Settings/Channel.php:499 +msgid "Full Name:" +msgstr "" + +#: ../../include/channel.php:1658 +msgid "Like this channel" +msgstr "" + +#: ../../include/channel.php:1682 +msgid "j F, Y" +msgstr "" + +#: ../../include/channel.php:1683 +msgid "j F" +msgstr "" + +#: ../../include/channel.php:1690 +msgid "Birthday:" +msgstr "" + +#: ../../include/channel.php:1694 ../../Zotlabs/Module/Directory.php:334 +msgid "Age:" +msgstr "" + +#: ../../include/channel.php:1703 +#, php-format +msgid "for %1$d %2$s" +msgstr "" + +#: ../../include/channel.php:1715 +msgid "Tags:" +msgstr "" + +#: ../../include/channel.php:1719 +msgid "Sexual Preference:" +msgstr "" + +#: ../../include/channel.php:1723 ../../Zotlabs/Module/Directory.php:350 +msgid "Hometown:" +msgstr "" + +#: ../../include/channel.php:1725 +msgid "Political Views:" +msgstr "" + +#: ../../include/channel.php:1727 +msgid "Religion:" +msgstr "" + +#: ../../include/channel.php:1729 ../../Zotlabs/Module/Directory.php:352 +msgid "About:" +msgstr "" + +#: ../../include/channel.php:1731 +msgid "Hobbies/Interests:" +msgstr "" + +#: ../../include/channel.php:1733 +msgid "Likes:" +msgstr "" + +#: ../../include/channel.php:1735 +msgid "Dislikes:" +msgstr "" + +#: ../../include/channel.php:1737 +msgid "Contact information and Social Networks:" +msgstr "" + +#: ../../include/channel.php:1739 +msgid "My other channels:" +msgstr "" + +#: ../../include/channel.php:1741 +msgid "Musical interests:" +msgstr "" + +#: ../../include/channel.php:1743 +msgid "Books, literature:" +msgstr "" + +#: ../../include/channel.php:1745 +msgid "Television:" +msgstr "" + +#: ../../include/channel.php:1747 +msgid "Film/dance/culture/entertainment:" +msgstr "" + +#: ../../include/channel.php:1749 +msgid "Love/Romance:" +msgstr "" + +#: ../../include/channel.php:1751 +msgid "Work/employment:" +msgstr "" + +#: ../../include/channel.php:1753 +msgid "School/education:" +msgstr "" + +#: ../../include/channel.php:1774 ../../Zotlabs/Module/Profperm.php:113 +#: ../../Zotlabs/Lib/Apps.php:361 +msgid "Profile" +msgstr "" + +#: ../../include/channel.php:1776 +msgid "Like this thing" +msgstr "" + +#: ../../include/channel.php:1777 ../../Zotlabs/Module/Events.php:699 +msgid "Export" +msgstr "" + +#: ../../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 "" + +#: ../../include/channel.php:2484 ../../Zotlabs/Module/Rmagic.php:94 +msgid "Enter your channel address (e.g. channel@example.com)" +msgstr "" + +#: ../../include/channel.php:2485 ../../Zotlabs/Module/Rmagic.php:95 +msgid "Authenticate" +msgstr "" + +#: ../../include/channel.php:2640 ../../Zotlabs/Module/Admin/Accounts.php:91 +#, php-format +msgid "Account '%s' deleted" +msgstr "" + +#: ../../include/acl_selectors.php:33 +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +msgid "Visible to your default audience" +msgstr "" + +#: ../../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 "" + +#: ../../include/acl_selectors.php:106 +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +msgid "Only me" +msgstr "" + +#: ../../include/acl_selectors.php:113 +msgid "Who can see this?" +msgstr "" + +#: ../../include/acl_selectors.php:114 +msgid "Custom selection" +msgstr "" + +#: ../../include/acl_selectors.php:115 +msgid "" +"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit " +"the scope of \"Show\"." +msgstr "" + +#: ../../include/acl_selectors.php:116 +msgid "Show" +msgstr "" + +#: ../../include/acl_selectors.php:117 +msgid "Don't show" +msgstr "" + +#: ../../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 "" + +#: ../../include/oembed.php:153 +msgid "View PDF" +msgstr "" + +#: ../../include/oembed.php:357 +msgid " by " +msgstr "" + +#: ../../include/oembed.php:358 +msgid " on " +msgstr "" + +#: ../../include/oembed.php:387 +msgid "Embedded content" +msgstr "" + +#: ../../include/oembed.php:396 +msgid "Embedding disabled" +msgstr "" + +#: ../../include/dir_fns.php:141 ../../Zotlabs/Lib/Libzotdir.php:160 +msgid "Directory Options" +msgstr "" + +#: ../../include/dir_fns.php:143 ../../Zotlabs/Lib/Libzotdir.php:162 +msgid "Safe Mode" +msgstr "" + +#: ../../include/dir_fns.php:144 ../../Zotlabs/Lib/Libzotdir.php:163 +msgid "Public Forums Only" +msgstr "" + +#: ../../include/dir_fns.php:145 ../../Zotlabs/Lib/Libzotdir.php:165 +msgid "This Website Only" +msgstr "" + +#: ../../include/zid.php:368 +#, php-format +msgid "OpenWebAuth: %1$s welcomes %2$s" +msgstr "" + +#: ../../include/message.php:41 +msgid "Unable to determine sender." +msgstr "" + +#: ../../include/message.php:80 +msgid "No recipient provided." +msgstr "" + +#: ../../include/message.php:85 +msgid "[no subject]" +msgstr "" + +#: ../../include/message.php:214 +msgid "Stored post could not be verified." +msgstr "" + +#: ../../Zotlabs/Widget/Activity_order.php:90 +msgid "Commented Date" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_order.php:94 +msgid "Order by last commented date" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_order.php:97 +msgid "Posted Date" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_order.php:101 +msgid "Order by last posted date" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_order.php:104 +msgid "Date Unthreaded" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_order.php:108 +msgid "Order unthreaded by date" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_order.php:123 +msgid "Stream Order" +msgstr "" + +#: ../../Zotlabs/Widget/Archive.php:43 +msgid "Archives" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_pages.php:34 +#: ../../Zotlabs/Widget/Wiki_pages.php:91 +msgid "Add new page" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_pages.php:41 +#: ../../Zotlabs/Widget/Wiki_pages.php:98 ../../Zotlabs/Module/Dreport.php:166 +msgid "Options" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_pages.php:85 +msgid "Wiki Pages" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_pages.php:96 +msgid "Page name" +msgstr "" + +#: ../../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/Widget/Album.php:95 ../../Zotlabs/Widget/Portfolio.php:108 +#: ../../Zotlabs/Module/Embedphotos.php:184 ../../Zotlabs/Module/Photos.php:815 +msgid "Edit Album" +msgstr "" + +#: ../../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/Widget/Tasklist.php:23 +msgid "Tasks" +msgstr "" + +#: ../../Zotlabs/Widget/Pubsites.php:12 ../../Zotlabs/Module/Pubsites.php:24 +msgid "Public Hubs" +msgstr "" + +#: ../../Zotlabs/Widget/Conversations.php:17 +msgid "Received Messages" +msgstr "" + +#: ../../Zotlabs/Widget/Conversations.php:21 +msgid "Sent Messages" +msgstr "" + +#: ../../Zotlabs/Widget/Conversations.php:25 +msgid "Conversations" +msgstr "" + +#: ../../Zotlabs/Widget/Conversations.php:37 +msgid "No messages." +msgstr "" + +#: ../../Zotlabs/Widget/Conversations.php:57 +msgid "Delete conversation" +msgstr "" + +#: ../../Zotlabs/Widget/Chatroom_members.php:11 +msgid "Chat Members" +msgstr "" + +#: ../../Zotlabs/Widget/Activity.php:50 +msgctxt "widget" +msgid "Activity" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:37 +msgid "Select Channel" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:42 +msgid "Read-write" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:43 +msgid "Read-only" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:127 +msgid "Channel Calendar" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:129 ../../Zotlabs/Widget/Cdav.php:143 +#: ../../Zotlabs/Module/Cdav.php:1078 +msgid "CalDAV Calendars" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:131 +msgid "Shared CalDAV Calendars" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:135 +msgid "Share this calendar" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:137 +msgid "Calendar name and color" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:139 +msgid "Create new CalDAV calendar" +msgstr "" + +#: ../../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/Widget/Cdav.php:141 +msgid "Calendar Name" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:142 +msgid "Calendar Tools" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1078 +msgid "Channel Calendars" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:144 +msgid "Import calendar" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:145 +msgid "Select a calendar to import to" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:172 +msgid "Addressbooks" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:174 +msgid "Addressbook name" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:176 +msgid "Create new addressbook" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:177 +msgid "Addressbook Name" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:179 +msgid "Addressbook Tools" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:180 +msgid "Import addressbook" +msgstr "" + +#: ../../Zotlabs/Widget/Cdav.php:181 +msgid "Select an addressbook to import to" +msgstr "" + +#: ../../Zotlabs/Widget/Savedsearch.php:75 +msgid "Remove term" +msgstr "" + +#: ../../Zotlabs/Widget/Suggestedchats.php:32 +msgid "Suggested Chatrooms" +msgstr "" + +#: ../../Zotlabs/Widget/Settings_menu.php:32 +msgid "Account settings" +msgstr "" + +#: ../../Zotlabs/Widget/Settings_menu.php:38 +msgid "Channel settings" +msgstr "" + +#: ../../Zotlabs/Widget/Settings_menu.php:46 +msgid "Display settings" +msgstr "" + +#: ../../Zotlabs/Widget/Settings_menu.php:53 +msgid "Manage locations" +msgstr "" + +#: ../../Zotlabs/Widget/Chatroom_list.php:20 +msgid "Overview" +msgstr "" + +#: ../../Zotlabs/Widget/Suggestions.php:48 ../../Zotlabs/Module/Suggest.php:73 +msgid "Ignore/Hide" +msgstr "" + +#: ../../Zotlabs/Widget/Suggestions.php:53 +msgid "Suggestions" +msgstr "" + +#: ../../Zotlabs/Widget/Suggestions.php:54 +msgid "See more..." +msgstr "" + +#: ../../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/Widget/Bookmarkedchats.php:24 +msgid "Bookmarked Chatrooms" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:23 +#: ../../Zotlabs/Lib/NativeWikiPage.php:562 +msgctxt "wiki_history" +msgid "Message" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:24 +#: ../../Zotlabs/Lib/NativeWikiPage.php:563 +msgid "Date" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:25 +#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 +msgid "Revert" +msgstr "" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:26 +#: ../../Zotlabs/Lib/NativeWikiPage.php:565 +msgid "Compare" +msgstr "" + +#: ../../Zotlabs/Widget/Hq_controls.php:14 +msgid "HQ Control Panel" +msgstr "" + +#: ../../Zotlabs/Widget/Hq_controls.php:17 +msgid "Create a new post" +msgstr "" + +#: ../../Zotlabs/Widget/Mailmenu.php:13 +msgid "Private Mail Menu" +msgstr "" + +#: ../../Zotlabs/Widget/Mailmenu.php:15 +msgid "Combined View" +msgstr "" + +#: ../../Zotlabs/Widget/Mailmenu.php:20 +msgid "Inbox" +msgstr "" + +#: ../../Zotlabs/Widget/Mailmenu.php:25 +msgid "Outbox" +msgstr "" + +#: ../../Zotlabs/Widget/Mailmenu.php:30 +msgid "New Message" +msgstr "" + +#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 +msgid "photo/image" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:288 +msgid "Site" +msgstr "" + +#: ../../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/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60 +msgid "Member registrations waiting for confirmation" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:24 +#: ../../Zotlabs/Module/Admin/Channels.php:146 +#: ../../Zotlabs/Module/Admin.php:114 +msgid "Channels" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:25 ../../Zotlabs/Module/Admin/Security.php:93 +msgid "Security" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:357 +msgid "Features" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Addons.php:343 +#: ../../Zotlabs/Module/Admin/Addons.php:441 +msgid "Addons" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:28 ../../Zotlabs/Module/Admin/Themes.php:123 +#: ../../Zotlabs/Module/Admin/Themes.php:157 +msgid "Themes" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:29 +msgid "Inspect queue" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:30 ../../Zotlabs/Module/Admin/Profs.php:168 +msgid "Profile Fields" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:31 +msgid "DB updates" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:48 ../../Zotlabs/Widget/Admin.php:58 +#: ../../Zotlabs/Module/Admin/Logs.php:83 +msgid "Logs" +msgstr "" + +#: ../../Zotlabs/Widget/Admin.php:56 +msgid "Addon Features" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:36 +#, php-format +msgid "Show posts related to the %s privacy group" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:45 +msgid "Show my privacy groups" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:66 +msgid "Show posts to this forum" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:77 +msgid "Show forums" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:91 +msgid "Starred Posts" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:95 +msgid "Show posts that I have starred" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:106 +msgid "Personal Posts" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:110 +msgid "Show posts that mention or involve me" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:131 +#, php-format +msgid "Show posts that I have filed to %s" +msgstr "" + +#: ../../Zotlabs/Widget/Activity_filter.php:141 +msgid "Show filed post categories" +msgstr "" + +#: ../../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/Widget/Activity_filter.php:196 +msgid "Stream Filters" +msgstr "" + +#: ../../Zotlabs/Widget/Appstore.php:11 +msgid "App Collections" +msgstr "" + +#: ../../Zotlabs/Widget/Appstore.php:13 +msgid "Installed apps" +msgstr "" + +#: ../../Zotlabs/Widget/Appstore.php:14 ../../Zotlabs/Module/Apps.php:50 +msgid "Available Apps" +msgstr "" + +#: ../../Zotlabs/Widget/Eventstools.php:13 +msgid "Events Tools" +msgstr "" + +#: ../../Zotlabs/Widget/Eventstools.php:14 +msgid "Export Calendar" +msgstr "" + +#: ../../Zotlabs/Widget/Eventstools.php:15 +msgid "Import Calendar" +msgstr "" + +#: ../../Zotlabs/Widget/Rating.php:51 +msgid "Rating Tools" +msgstr "" + +#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 +msgid "Rate Me" +msgstr "" + +#: ../../Zotlabs/Widget/Rating.php:60 +msgid "View Ratings" +msgstr "" + +#: ../../Zotlabs/Widget/Cover_photo.php:65 +msgid "Click to show more" +msgstr "" + +#: ../../Zotlabs/Widget/Follow.php:22 +#, php-format +msgid "You have %1$.0f of %2$.0f allowed connections." +msgstr "" + +#: ../../Zotlabs/Widget/Follow.php:29 +msgid "Add New Connection" +msgstr "" + +#: ../../Zotlabs/Widget/Follow.php:30 +msgid "Enter channel address" +msgstr "" + +#: ../../Zotlabs/Widget/Follow.php:31 +msgid "Examples: bob@example.com, https://example.com/barbara" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:31 +msgid "Profile Creation" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:33 +msgid "Upload profile photo" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:34 +msgid "Upload cover photo" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:38 +msgid "Find and Connect with others" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:40 +msgid "View the directory" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:41 ../../Zotlabs/Module/Go.php:38 +msgid "View friend suggestions" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:42 +msgid "Manage your connections" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:45 +msgid "Communicate" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:47 +msgid "View your channel homepage" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:48 +msgid "View your network stream" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:54 +msgid "Documentation" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:57 +msgid "Missing Features?" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:59 +msgid "Pin apps to navigation bar" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:60 +msgid "Install more apps" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:71 +msgid "View public stream" +msgstr "" + +#: ../../Zotlabs/Widget/Newmember.php:75 +#: ../../Zotlabs/Module/Settings/Display.php:205 +msgid "New Member Links" +msgstr "" + +#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:723 +msgid "Me" +msgstr "" + +#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:724 +msgid "Family" +msgstr "" + +#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:726 +msgid "Acquaintances" +msgstr "" + +#: ../../Zotlabs/Widget/Affinity.php:34 ../../Zotlabs/Module/Connections.php:97 +#: ../../Zotlabs/Module/Connections.php:111 +#: ../../Zotlabs/Module/Connedit.php:727 +msgid "All" +msgstr "" + +#: ../../Zotlabs/Widget/Affinity.php:54 +msgid "Refresh" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:16 +msgid "New Network Activity" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:17 +msgid "New Network Activity Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:20 +msgid "View your network activity" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:23 +msgid "Mark all notifications read" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:26 +#: ../../Zotlabs/Widget/Notifications.php:45 +#: ../../Zotlabs/Widget/Notifications.php:152 +msgid "Show new posts only" +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" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:35 +msgid "New Home Activity" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:36 +msgid "New Home Activity Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:39 +msgid "View your home activity" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:42 +#: ../../Zotlabs/Widget/Notifications.php:149 +msgid "Mark all notifications seen" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:54 +msgid "New Mails" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:55 +msgid "New Mails Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:58 +msgid "View your private mails" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:61 +msgid "Mark all messages seen" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:69 +msgid "New Events" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:70 +msgid "New Events Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:73 +msgid "View events" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:76 +msgid "Mark all events seen" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:84 +#: ../../Zotlabs/Module/Connections.php:164 +msgid "New Connections" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:85 +msgid "New Connections Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:88 +msgid "View all connections" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:96 +msgid "New Files" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:97 +msgid "New Files Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:104 +#: ../../Zotlabs/Widget/Notifications.php:105 +msgid "Notices" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:108 +msgid "View all notices" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:111 +msgid "Mark all notices seen" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:132 +msgid "New Registrations" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:133 +msgid "New Registrations Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:142 +#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 +msgid "Public Stream" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:143 +msgid "Public Stream Notifications" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:146 +msgid "View the public stream" +msgstr "" + +#: ../../Zotlabs/Widget/Notifications.php:161 +msgid "Sorry, you have got no notifications at the moment" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:39 +#, php-format +msgid "This channel is limited to %d tokens" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:45 +msgid "Name and Password are required." +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:85 +msgid "Token saved." +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:99 +msgid "Guest Access App" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:100 +msgid "Create access tokens so that non-members can access private content" +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." +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:" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:170 +msgid "Guest Access Tokens" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:177 +msgid "Login Name" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:178 +msgid "Login Password" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:179 +msgid "Expires (yyyy-mm-dd)" +msgstr "" + +#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 +msgid "Their Settings" +msgstr "" + +#: ../../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/Permcats.php:123 ../../Zotlabs/Module/Tokens.php:183 -#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:264 +#: ../../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/Permcats.php:126 ../../Zotlabs/Module/Tokens.php:186 -#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:269 +#: ../../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/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187 +#: ../../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" @@ -987,739 +8011,53 @@ msgid "" "individual settings. You can <strong>not</strong> change those settings here." 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." -msgstr "" - -#: ../../Zotlabs/Module/Channel.php:98 ../../Zotlabs/Module/Hcard.php:37 -#: ../../Zotlabs/Module/Profile.php:45 -msgid "Posts and comments" -msgstr "" - -#: ../../Zotlabs/Module/Channel.php:105 ../../Zotlabs/Module/Hcard.php:44 -#: ../../Zotlabs/Module/Profile.php:52 -msgid "Only posts" -msgstr "" - -#: ../../Zotlabs/Module/Channel.php:122 -#, php-format -msgid "This is the home page of %s." -msgstr "" - -#: ../../Zotlabs/Module/Channel.php:176 -msgid "Insufficient permissions. Request redirected to profile page." -msgstr "" - -#: ../../Zotlabs/Module/Channel.php:193 ../../Zotlabs/Module/Network.php:173 -msgid "Search Results For:" -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" -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." -msgstr "" - -#: ../../Zotlabs/Module/Lang.php:17 -msgid "Language App" -msgstr "" - -#: ../../Zotlabs/Module/Lang.php:18 -msgid "Change UI language" -msgstr "" - -#: ../../Zotlabs/Module/Uexport.php:61 -msgid "Channel Export App" -msgstr "" - -#: ../../Zotlabs/Module/Uexport.php:62 -msgid "Export your channel" -msgstr "" - -#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 -msgid "Export Channel" -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." -msgstr "" - -#: ../../Zotlabs/Module/Uexport.php:75 -msgid "Export Content" -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." -msgstr "" - -#: ../../Zotlabs/Module/Uexport.php:78 -msgid "Export your posts from a given year." -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." -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>" -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>" -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)." -msgstr "" - -#: ../../Zotlabs/Module/Hq.php:140 -msgid "Welcome to Hubzilla!" -msgstr "" - -#: ../../Zotlabs/Module/Hq.php:140 -msgid "You have got no unseen posts..." -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." -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" -msgstr "" - -#: ../../Zotlabs/Module/Search.php:230 -#, php-format -msgid "Items tagged with: %s" -msgstr "" - -#: ../../Zotlabs/Module/Search.php:232 -#, php-format -msgid "Search results for: %s" -msgstr "" - -#: ../../Zotlabs/Module/Pubstream.php:20 -msgid "Public Stream App" -msgstr "" - -#: ../../Zotlabs/Module/Pubstream.php:21 -msgid "The unmoderated public stream of this hub" -msgstr "" - -#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 -#: ../../Zotlabs/Widget/Notifications.php:142 -msgid "Public Stream" -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:66 -msgid "" -"Please select another location to become primary before removing the primary " -"location." -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:176 -msgid "Drop" -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:124 -msgid "" -"When possible, drop a location by logging into that website/hub and removing " -"your channel." -msgstr "" - -#: ../../Zotlabs/Module/Locs.php:125 -msgid "Use this form to drop the location if the hub is no longer operating." -msgstr "" - -#: ../../Zotlabs/Module/Apporder.php:47 -msgid "Change Order of Pinned Navbar Apps" -msgstr "" - -#: ../../Zotlabs/Module/Apporder.php:47 -msgid "Change Order of App Tray Apps" -msgstr "" - -#: ../../Zotlabs/Module/Apporder.php:48 -msgid "" -"Use arrows to move the corresponding app left (top) or right (bottom) in the " -"navbar" -msgstr "" - -#: ../../Zotlabs/Module/Apporder.php:48 -msgid "Use arrows to move the corresponding app up or down in the app tray" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:208 -msgid "Menu not found." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:63 -msgid "Unable to create element." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:87 -msgid "Unable to update menu element." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:103 -msgid "Unable to add menu element." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Menu.php:231 -#: ../../Zotlabs/Module/Xchan.php:41 -msgid "Not found." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 -msgid "Menu Item Permissions" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247 -#: ../../Zotlabs/Module/Settings/Channel.php:526 -msgid "(click to open/close)" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 -msgid "Link Name" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 -msgid "Link or Submenu Target" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:175 -msgid "Enter URL of the link or select a menu name to create a submenu" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256 -msgid "Use magic-auth if available" -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" -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" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257 -msgid "Open link in new window" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 -msgid "Order in list" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 -msgid "Higher numbers will sink to bottom of listing" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:179 -msgid "Submit and finish" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:180 -msgid "Submit and continue" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:189 -msgid "Menu:" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:192 -msgid "Link Target" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:195 -msgid "Edit menu" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:198 -msgid "Edit element" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:199 -msgid "Drop element" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:200 -msgid "New element" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:201 -msgid "Edit this menu container" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:202 -msgid "Add menu element" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:203 -msgid "Delete this menu item" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:204 -msgid "Edit this menu item" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:222 -msgid "Menu item not found." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:235 -msgid "Menu item deleted." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:237 -msgid "Menu item could not be deleted." -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:244 -msgid "Edit Menu Element" -msgstr "" - -#: ../../Zotlabs/Module/Mitem.php:254 -msgid "Link text" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:113 -#: ../../Zotlabs/Module/Channel_calendar.php:51 -msgid "Event can not end before it has started." -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." -msgstr "" - -#: ../../Zotlabs/Module/Events.php:122 -#: ../../Zotlabs/Module/Channel_calendar.php:59 -msgid "Event title and start time are required." -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." -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" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:468 -msgid "Edit event title" -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" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:470 -msgid "Categories (comma-separated list)" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:471 -msgid "Edit Category" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:471 -msgid "Category" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:474 -msgid "Edit start date and time" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Events.php:478 -msgid "Finish date and time are not known or not relevant" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:477 -msgid "Edit finish date and time" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:477 -msgid "Finish date and time" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Events.php:480 -msgid "Adjust for viewer timezone" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:479 -msgid "" -"Important for events that happen in a particular place. Not practical for " -"global holidays." -msgstr "" - -#: ../../Zotlabs/Module/Events.php:481 -msgid "Edit Description" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:483 -msgid "Edit Location" -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" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:487 ../../addon/hsse/hsse.php:225 -#: ../../include/conversation.php:1431 -msgid "Permission settings" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:502 -msgid "Advanced Options" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:613 -msgid "l, F j" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:641 -#: ../../Zotlabs/Module/Channel_calendar.php:370 -msgid "Edit event" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:643 -#: ../../Zotlabs/Module/Channel_calendar.php:372 -msgid "Delete event" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:669 ../../include/text.php:1939 -msgid "Link to Source" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:677 -#: ../../Zotlabs/Module/Channel_calendar.php:401 -msgid "calendar" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:696 -msgid "Edit Event" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:696 -msgid "Create Event" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:699 ../../include/channel.php:1769 -msgid "Export" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:739 -msgid "Event removed" -msgstr "" - -#: ../../Zotlabs/Module/Events.php:742 -#: ../../Zotlabs/Module/Channel_calendar.php:488 -msgid "Failed to remove event" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 -msgid "App installed." -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:49 -msgid "Malformed app." -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:132 -msgid "Embed code" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Edit App" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Create App" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:143 -msgid "Name of app" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:144 -msgid "Location (URL) of app" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:146 -msgid "Photo icon URL" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:146 -msgid "80 x 80 pixels - optional" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:147 -msgid "Categories (optional, comma separated list)" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:148 -msgid "Version ID" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:149 -msgid "Price of app" -msgstr "" - -#: ../../Zotlabs/Module/Appman.php:150 -msgid "Location (URL) to purchase app" -msgstr "" - -#: ../../Zotlabs/Module/Regmod.php:15 -msgid "Please login." -msgstr "" - -#: ../../Zotlabs/Module/Magic.php:78 -msgid "Hub not found." -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" -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" -msgstr "" - -#: ../../Zotlabs/Module/Subthread.php:143 -#, php-format -msgid "%1$s is following %2$s's %3$s" -msgstr "" - -#: ../../Zotlabs/Module/Subthread.php:145 -#, php-format -msgid "%1$s stopped following %2$s's %3$s" -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 +#: ../../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/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/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 "" - -#: ../../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 "" - -#: ../../Zotlabs/Module/Article_edit.php:128 +#: ../../Zotlabs/Module/Article_edit.php:127 msgid "Edit Article" msgstr "" +#: ../../Zotlabs/Module/Network.php:109 +msgid "No such group" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:158 +msgid "No such channel" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:173 ../../Zotlabs/Module/Channel.php:183 +msgid "Search Results For:" +msgstr "" + +#: ../../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/Network.php:242 +msgid "Privacy group is empty" +msgstr "" + +#: ../../Zotlabs/Module/Network.php:252 +msgid "Privacy group: " +msgstr "" + #: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:68 msgid "Nothing to import." msgstr "" @@ -1755,153 +8093,236 @@ msgstr "" msgid "File to Upload" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:147 ../../Zotlabs/Module/Manage.php:138 +#: ../../Zotlabs/Module/Import.php:157 #, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." +msgid "Your service plan only allows %d channels." 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" +#: ../../Zotlabs/Module/Import.php:184 +msgid "No channel. Import failed." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:159 -msgid "Your real name is recommended." +#: ../../Zotlabs/Module/Import.php:622 +msgid "You must be logged in to use this feature." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:160 +#: ../../Zotlabs/Module/Import.php:627 +msgid "Import Channel" +msgstr "" + +#: ../../Zotlabs/Module/Import.php:628 msgid "" -"Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation " -"Group\"" +"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/Module/New_channel.php:165 +#: ../../Zotlabs/Module/Import.php:630 +msgid "Or provide the old server/hub details" +msgstr "" + +#: ../../Zotlabs/Module/Import.php:632 +msgid "Your old identity address (xyz@example.com)" +msgstr "" + +#: ../../Zotlabs/Module/Import.php:633 +msgid "Your old login email address" +msgstr "" + +#: ../../Zotlabs/Module/Import.php:634 +msgid "Your old login password" +msgstr "" + +#: ../../Zotlabs/Module/Import.php:635 +msgid "Import a few months of posts if possible (limited by available memory" +msgstr "" + +#: ../../Zotlabs/Module/Import.php:637 msgid "" -"This will be used to create a unique network address (like an email address)." +"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/Module/New_channel.php:167 -msgid "Allowed characters are a-z 0-9, - and _" +#: ../../Zotlabs/Module/Import.php:639 +msgid "Make this hub my primary location" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:175 -msgid "Channel name" +#: ../../Zotlabs/Module/Import.php:640 +msgid "Move this channel (disable all previous locations)" +msgstr "" + +#: ../../Zotlabs/Module/Import.php:641 +msgid "Use this channel nickname instead of the one provided" +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." +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." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:52 +msgid "Maximum daily site registrations exceeded. Please try again tomorrow." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:58 +msgid "" +"Please indicate acceptance of the Terms of Service. Registration failed." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:92 +msgid "Passwords do not match." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:135 +msgid "Registration successful. Continue to create your first channel..." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:138 +msgid "" +"Registration successful. Please check your email for validation instructions." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:145 +msgid "Your registration is pending approval by the site owner." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:148 +msgid "Your registration can not be processed." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:195 +msgid "Registration on this hub is disabled." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:204 +msgid "Registration on this hub is by approval only." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:205 ../../Zotlabs/Module/Register.php:214 +msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:213 +msgid "Registration on this hub is by invitation only." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:224 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." +msgstr "" + +#: ../../Zotlabs/Module/Register.php:239 ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Terms of Service" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:245 +#, php-format +msgid "I accept the %s for this website" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:252 +#, php-format +msgid "I am over %s years of age and accept the %s for this website" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:257 +msgid "Your email address" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:258 +msgid "Choose a password" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:259 +msgid "Please re-enter your password" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:260 +msgid "Please enter your invitation code" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:261 +msgid "Your Name" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:261 +msgid "Real names are preferred." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:177 #: ../../Zotlabs/Module/Register.php:263 +#: ../../Zotlabs/Module/New_channel.php:177 msgid "Choose a short nickname" msgstr "" +#: ../../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/Module/Register.php:264 #: ../../Zotlabs/Module/New_channel.php:178 #: ../../Zotlabs/Module/Settings/Channel.php:535 -#: ../../Zotlabs/Module/Register.php:264 msgid "Channel role and privacy" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:178 +#: ../../Zotlabs/Module/Register.php:264 msgid "" -"Select a channel permission role compatible with your usage needs and " -"privacy requirements." +"Select a channel permission role for your usage needs and privacy " +"requirements." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:178 #: ../../Zotlabs/Module/Register.php:264 +#: ../../Zotlabs/Module/New_channel.php:178 msgid "Read more about channel permission roles" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:181 -msgid "Create a Channel" +#: ../../Zotlabs/Module/Register.php:265 +msgid "no" msgstr "" -#: ../../Zotlabs/Module/New_channel.php:182 +#: ../../Zotlabs/Module/Register.php:265 +msgid "yes" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:290 +msgid "Registration" +msgstr "" + +#: ../../Zotlabs/Module/Register.php:294 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." +"This site requires email verification. After completing this form, please " +"check your email for further instructions." msgstr "" -#: ../../Zotlabs/Module/New_channel.php:183 -msgid "" -"or <a href=\"import\">import an existing channel</a> from another location." +#: ../../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/Module/New_channel.php:188 -msgid "Validate" +#: ../../Zotlabs/Module/Search.php:230 +#, php-format +msgid "Items tagged with: %s" msgstr "" -#: ../../Zotlabs/Module/Removeme.php:35 -msgid "" -"Channel removals are not allowed within 48 hours of changing the account " -"password." -msgstr "" - -#: ../../Zotlabs/Module/Removeme.php:60 -msgid "Remove This Channel" -msgstr "" - -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -#: ../../Zotlabs/Module/Changeaddr.php:78 -msgid "WARNING: " -msgstr "" - -#: ../../Zotlabs/Module/Removeme.php:61 -msgid "This channel will be completely removed from the network. " -msgstr "" - -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "This action is permanent and can not be undone!" -msgstr "" - -#: ../../Zotlabs/Module/Removeme.php:62 -#: ../../Zotlabs/Module/Removeaccount.php:59 -#: ../../Zotlabs/Module/Changeaddr.php:79 -msgid "Please enter your password for verification:" -msgstr "" - -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "Remove this channel and all its clones from the network" -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" -msgstr "" - -#: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:594 -msgid "Remove Channel" -msgstr "" - -#: ../../Zotlabs/Module/Sharedwithme.php:103 -msgid "Files: shared with me" -msgstr "" - -#: ../../Zotlabs/Module/Sharedwithme.php:105 -msgid "NEW" -msgstr "" - -#: ../../Zotlabs/Module/Sharedwithme.php:106 -#: ../../Zotlabs/Storage/Browser.php:293 ../../include/text.php:1515 -msgid "Size" -msgstr "" - -#: ../../Zotlabs/Module/Sharedwithme.php:107 -#: ../../Zotlabs/Storage/Browser.php:294 -msgid "Last Modified" -msgstr "" - -#: ../../Zotlabs/Module/Sharedwithme.php:108 -msgid "Remove all files" -msgstr "" - -#: ../../Zotlabs/Module/Sharedwithme.php:109 -msgid "Remove this file" +#: ../../Zotlabs/Module/Search.php:232 +#, php-format +msgid "Search results for: %s" msgstr "" #: ../../Zotlabs/Module/Setup.php:167 @@ -1941,6 +8362,12 @@ msgstr "" msgid "System check" msgstr "" +#: ../../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/Module/Setup.php:261 msgid "Check again" msgstr "" @@ -2334,10 +8761,6 @@ msgid "" "server root." msgstr "" -#: ../../Zotlabs/Module/Setup.php:718 ../../addon/rendezvous/rendezvous.php:401 -msgid "Errors encountered creating database tables." -msgstr "" - #: ../../Zotlabs/Module/Setup.php:764 msgid "<h1>What next?</h1>" msgstr "" @@ -2347,6 +8770,1057 @@ msgid "" "IMPORTANT: You will need to [manually] setup a scheduled task for the poller." msgstr "" +#: ../../Zotlabs/Module/Viewconnections.php:65 +msgid "No connections." +msgstr "" + +#: ../../Zotlabs/Module/Viewconnections.php:83 +#, php-format +msgid "Visit %s's profile [%s]" +msgstr "" + +#: ../../Zotlabs/Module/Viewconnections.php:113 +msgid "View Connections" +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." +msgstr "" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Hub URL" +msgstr "" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" +msgstr "" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" +msgstr "" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" +msgstr "" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" +msgstr "" + +#: ../../Zotlabs/Module/Pubsites.php:49 +msgid "Rate" +msgstr "" + +#: ../../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/Module/Channel.php:99 ../../Zotlabs/Module/Hcard.php:37 +#: ../../Zotlabs/Module/Profile.php:45 +msgid "Posts and comments" +msgstr "" + +#: ../../Zotlabs/Module/Channel.php:106 ../../Zotlabs/Module/Hcard.php:44 +#: ../../Zotlabs/Module/Profile.php:52 +msgid "Only posts" +msgstr "" + +#: ../../Zotlabs/Module/Channel.php:166 +msgid "Insufficient permissions. Request redirected to profile page." +msgstr "" + +#: ../../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/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." +msgstr "" + +#: ../../Zotlabs/Module/Profperm.php:111 +msgid "Profile Visibility Editor" +msgstr "" + +#: ../../Zotlabs/Module/Profperm.php:115 +msgid "Click on a contact to add or remove." +msgstr "" + +#: ../../Zotlabs/Module/Profperm.php:124 +msgid "Visible To" +msgstr "" + +#: ../../Zotlabs/Module/Profperm.php:140 +#: ../../Zotlabs/Module/Connections.php:217 +msgid "All Connections" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:45 +msgid "Privacy group created." +msgstr "" + +#: ../../Zotlabs/Module/Group.php:48 +msgid "Could not create privacy group." +msgstr "" + +#: ../../Zotlabs/Module/Group.php:80 +msgid "Privacy group updated." +msgstr "" + +#: ../../Zotlabs/Module/Group.php:106 +msgid "Privacy Groups App" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:107 +msgid "Management of privacy groups" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:142 +msgid "Add Group" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:146 +msgid "Privacy group name" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256 +msgid "Members are visible to other channels" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 +msgid "Members" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:182 +msgid "Privacy group removed." +msgstr "" + +#: ../../Zotlabs/Module/Group.php:185 +msgid "Unable to remove privacy group." +msgstr "" + +#: ../../Zotlabs/Module/Group.php:251 +#, php-format +msgid "Privacy Group: %s" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:253 +msgid "Privacy group name: " +msgstr "" + +#: ../../Zotlabs/Module/Group.php:258 +msgid "Delete Group" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:269 +msgid "Group members" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:271 +msgid "Not in this group" +msgstr "" + +#: ../../Zotlabs/Module/Group.php:303 +msgid "Click a channel to toggle membership" +msgstr "" + +#: ../../Zotlabs/Module/Card_edit.php:128 +msgid "Edit Card" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:21 +msgid "This page is available only to site members" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:27 +msgid "Welcome" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:29 +msgid "What would you like to do?" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:31 +msgid "" +"Please bookmark this page if you would like to return to it in the future" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:35 +msgid "Upload a profile photo" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:36 +msgid "Upload a cover photo" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:37 +msgid "Edit your default profile" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:39 +msgid "View the channel directory" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:40 +msgid "View/edit your channel settings" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:41 +msgid "View the site or project documentation" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:42 +msgid "Visit your channel homepage" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:43 +msgid "" +"View your connections and/or add somebody whose address you already know" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:44 +msgid "" +"View your personal stream (this may be empty until you add some connections)" +msgstr "" + +#: ../../Zotlabs/Module/Go.php:52 +msgid "View the public stream. Warning: this content is not moderated" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:45 +msgid "Name is required" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:49 +msgid "Key and Secret are required" +msgstr "" + +#: ../../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/Module/Oauth.php:100 +msgid "OAuth Apps Manager App" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:101 +msgid "OAuth authentication tokens for mobile and remote apps" +msgstr "" + +#: ../../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/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth2.php:118 +#: ../../Zotlabs/Module/Oauth2.php:146 +msgid "Name of application" +msgstr "" + +#: ../../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/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 +#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 +msgid "Redirect" +msgstr "" + +#: ../../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/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 +msgid "Icon url" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Sources.php:123 +#: ../../Zotlabs/Module/Sources.php:158 +msgid "Optional" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:128 +msgid "Application not found." +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:171 +msgid "Connected OAuth Apps" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:175 ../../Zotlabs/Module/Oauth2.php:196 +msgid "Client key starts with" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:176 ../../Zotlabs/Module/Oauth2.php:197 +msgid "No name" +msgstr "" + +#: ../../Zotlabs/Module/Oauth.php:177 ../../Zotlabs/Module/Oauth2.php:198 +msgid "Remove authorization" +msgstr "" + +#: ../../Zotlabs/Module/Editwebpage.php:139 +msgid "Page link" +msgstr "" + +#: ../../Zotlabs/Module/Editwebpage.php:166 +msgid "Edit Webpage" +msgstr "" + +#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 +msgid "This site is not a directory server" +msgstr "" + +#: ../../Zotlabs/Module/Dirsearch.php:33 +msgid "This directory server requires an access token" +msgstr "" + +#: ../../Zotlabs/Module/Hq.php:140 +msgid "Welcome to Hubzilla!" +msgstr "" + +#: ../../Zotlabs/Module/Hq.php:140 +msgid "You have got no unseen posts..." +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:102 +msgid "Chatrooms App" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:103 +msgid "Access Controlled Chatrooms" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:196 +msgid "Room not found" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:212 +msgid "Leave Room" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:213 +msgid "Delete Room" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:214 +msgid "I am away right now" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:215 +msgid "I am online" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:217 +msgid "Bookmark this room" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:240 +msgid "New Chatroom" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:241 +msgid "Chatroom name" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:242 +msgid "Expiration of chats (minutes)" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:258 +#, php-format +msgid "%1$s's Chatrooms" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:263 +msgid "No chatrooms available" +msgstr "" + +#: ../../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/Module/Chat.php:267 +msgid "Expiration" +msgstr "" + +#: ../../Zotlabs/Module/Chat.php:268 +msgid "min" +msgstr "" + +#: ../../Zotlabs/Module/Channel_calendar.php:51 +#: ../../Zotlabs/Module/Events.php:113 +msgid "Event can not end before it has started." +msgstr "" + +#: ../../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/Module/Channel_calendar.php:59 +#: ../../Zotlabs/Module/Events.php:122 +msgid "Event title and start time are required." +msgstr "" + +#: ../../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/Module/Channel_calendar.php:370 +#: ../../Zotlabs/Module/Events.php:641 +msgid "Edit event" +msgstr "" + +#: ../../Zotlabs/Module/Channel_calendar.php:372 +#: ../../Zotlabs/Module/Events.php:643 +msgid "Delete event" +msgstr "" + +#: ../../Zotlabs/Module/Channel_calendar.php:387 +#: ../../Zotlabs/Module/Cdav.php:966 ../../Zotlabs/Module/Cal.php:167 +msgid "Link to source" +msgstr "" + +#: ../../Zotlabs/Module/Channel_calendar.php:401 +#: ../../Zotlabs/Module/Events.php:677 +msgid "calendar" +msgstr "" + +#: ../../Zotlabs/Module/Channel_calendar.php:488 +#: ../../Zotlabs/Module/Events.php:742 +msgid "Failed to remove event" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:56 +msgid "Like/Dislike" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:61 +msgid "This action is restricted to members." +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." +msgstr "" + +#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 +#: ../../Zotlabs/Module/Like.php:175 +msgid "Invalid request." +msgstr "" + +#: ../../Zotlabs/Module/Like.php:152 +msgid "thing" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:198 +msgid "Channel unavailable." +msgstr "" + +#: ../../Zotlabs/Module/Like.php:246 +msgid "Previous action reversed." +msgstr "" + +#: ../../Zotlabs/Module/Like.php:451 +#, php-format +msgid "%1$s agrees with %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:453 +#, php-format +msgid "%1$s doesn't agree with %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:455 +#, php-format +msgid "%1$s abstains from a decision on %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Like.php:572 +msgid "Action completed." +msgstr "" + +#: ../../Zotlabs/Module/Like.php:573 +msgid "Thank you." +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:165 +msgid "Poke App" +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:166 +msgid "Poke somebody in your addressbook" +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:200 +msgid "Poke somebody" +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:203 +msgid "Poke/Prod" +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:204 +msgid "Poke, prod or do other things to somebody" +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:211 +msgid "Recipient" +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:212 +msgid "Choose what you wish to do to recipient" +msgstr "" + +#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 +msgid "Make this post private" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 +msgid "Calendar entries imported." +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 +msgid "No calendar entries found." +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:870 +msgid "INVALID EVENT DISMISSED!" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:871 +msgid "Summary: " +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:872 +msgid "Date: " +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 +msgid "Reason: " +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:878 +msgid "INVALID CARD DISMISSED!" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:879 +msgid "Name: " +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:899 +msgid "CardDAV App" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:900 +msgid "CalDAV capable addressbook" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1032 ../../Zotlabs/Module/Events.php:468 +msgid "Event title" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:474 +msgid "Start date and time" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1034 +msgid "End date and time" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1035 ../../Zotlabs/Module/Events.php:497 +msgid "Timezone:" +msgstr "" + +#: ../../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/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:708 +#: ../../Zotlabs/Module/Cal.php:207 +msgid "Today" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:703 +msgid "Month" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:704 +msgid "Week" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:705 +msgid "Day" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1064 +msgid "List month" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1065 +msgid "List week" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1066 +msgid "List day" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1074 +msgid "More" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1075 +msgid "Less" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1077 +msgid "Select calendar" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1080 +msgid "Delete all" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1083 +msgid "Sorry! Editing of recurrent events is not yet implemented." +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1374 ../../Zotlabs/Module/Connedit.php:924 +msgid "Organisation" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Connedit.php:926 +msgid "Phone" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Connedit.php:928 +msgid "Instant messenger" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Connedit.php:929 +msgid "Website" +msgstr "" + +#: ../../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/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Connedit.php:931 +msgid "Note" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Connedit.php:937 +msgid "Add Field" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:942 +msgid "P.O. Box" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Connedit.php:943 +msgid "Additional" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:944 +msgid "Street" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:945 +msgid "Locality" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:946 +msgid "Region" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:947 +msgid "ZIP Code" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Connedit.php:948 +msgid "Country" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1445 +msgid "Default Calendar" +msgstr "" + +#: ../../Zotlabs/Module/Cdav.php:1456 +msgid "Default Addressbook" +msgstr "" + +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." +msgstr "" + +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" +msgstr "" + +#: ../../Zotlabs/Module/Item.php:382 +msgid "Unable to locate original post." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:668 +msgid "Empty post discarded." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1077 +msgid "Duplicate post suppressed." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1222 +msgid "System error. Post not saved." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1252 +msgid "Your comment is awaiting approval." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1369 +msgid "Unable to obtain post information from database." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1376 +#, php-format +msgid "You have reached your limit of %1$.0f top level posts." +msgstr "" + +#: ../../Zotlabs/Module/Item.php:1383 +#, php-format +msgid "You have reached your limit of %1$.0f webpages." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:209 +msgid "Menu not found." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:63 +msgid "Unable to create element." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:87 +msgid "Unable to update menu element." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:103 +msgid "Unable to add menu element." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Xchan.php:41 +#: ../../Zotlabs/Module/Menu.php:232 +msgid "Not found." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 +msgid "Menu Item Permissions" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:168 ../../Zotlabs/Module/Mitem.php:247 +#: ../../Zotlabs/Module/Settings/Channel.php:526 +msgid "(click to open/close)" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 +msgid "Link Name" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 +msgid "Link or Submenu Target" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:175 +msgid "Enter URL of the link or select a menu name to create a submenu" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:176 ../../Zotlabs/Module/Mitem.php:256 +msgid "Use magic-auth if available" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257 +msgid "Open link in new window" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 +msgid "Order in list" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 +msgid "Higher numbers will sink to bottom of listing" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:179 +msgid "Submit and finish" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:180 +msgid "Submit and continue" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:189 +msgid "Menu:" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:192 +msgid "Link Target" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:195 +msgid "Edit menu" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:198 +msgid "Edit element" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:199 +msgid "Drop element" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:200 +msgid "New element" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:201 +msgid "Edit this menu container" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:202 +msgid "Add menu element" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:203 +msgid "Delete this menu item" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:204 +msgid "Edit this menu item" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:222 +msgid "Menu item not found." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:235 +msgid "Menu item deleted." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:237 +msgid "Menu item could not be deleted." +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:244 +msgid "Edit Menu Element" +msgstr "" + +#: ../../Zotlabs/Module/Mitem.php:254 +msgid "Link text" +msgstr "" + +#: ../../Zotlabs/Module/Profile.php:93 +msgid "vcard" +msgstr "" + +#: ../../Zotlabs/Module/Sharedwithme.php:103 +msgid "Files: shared with me" +msgstr "" + +#: ../../Zotlabs/Module/Sharedwithme.php:105 +msgid "NEW" +msgstr "" + +#: ../../Zotlabs/Module/Sharedwithme.php:107 +#: ../../Zotlabs/Storage/Browser.php:294 +msgid "Last Modified" +msgstr "" + +#: ../../Zotlabs/Module/Sharedwithme.php:108 +msgid "Remove all files" +msgstr "" + +#: ../../Zotlabs/Module/Sharedwithme.php:109 +msgid "Remove this file" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:23 +msgid "Documentation Search" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:82 +msgid "Administrators" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:83 +msgid "Developers" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:84 +msgid "Tutorials" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:95 +msgid "$Projectname Documentation" +msgstr "" + +#: ../../Zotlabs/Module/Help.php:96 +msgid "Contents" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:48 +msgid "Webpages App" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:49 +msgid "Provide managed web pages on your channel" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:69 +msgid "Import Webpage Elements" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:70 +msgid "Import selected" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:93 +msgid "Export Webpage Elements" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:94 +msgid "Export selected" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:263 +msgid "Actions" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:264 +msgid "Page Link" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:265 +msgid "Page Title" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:266 ../../Zotlabs/Module/Blocks.php:157 +#: ../../Zotlabs/Module/Menu.php:178 ../../Zotlabs/Module/Layouts.php:191 +msgid "Created" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:267 ../../Zotlabs/Module/Blocks.php:158 +#: ../../Zotlabs/Module/Menu.php:179 ../../Zotlabs/Module/Layouts.php:192 +msgid "Edited" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:295 +msgid "Invalid file type." +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:307 +msgid "Error opening zip file" +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:318 +msgid "Invalid folder path." +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:345 +msgid "No webpage elements detected." +msgstr "" + +#: ../../Zotlabs/Module/Webpages.php:420 +msgid "Import complete." +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:103 +msgid "File not found." +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:152 +msgid "Permission Denied." +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:185 +msgid "Edit file permissions" +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:198 +msgid "Include all files and sub folders" +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:199 +msgid "Return to file list" +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:201 +msgid "Copy/paste this code to attach file to a post" +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:202 +msgid "Copy/paste this URL to link file from a web page" +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:204 +msgid "Share this file" +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:205 +msgid "Show URL to this file" +msgstr "" + +#: ../../Zotlabs/Module/Filestorage.php:206 +#: ../../Zotlabs/Storage/Browser.php:411 +msgid "Show in your contacts shared folder" +msgstr "" + +#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 +msgid "Tag removed" +msgstr "" + +#: ../../Zotlabs/Module/Tagrm.php:123 +msgid "Remove Item Tag" +msgstr "" + +#: ../../Zotlabs/Module/Tagrm.php:125 +msgid "Select a tag to remove: " +msgstr "" + #: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135 msgid "Continue" msgstr "" @@ -2400,6 +9874,70 @@ msgstr "" msgid "Restricted or Premium Channel" msgstr "" +#: ../../Zotlabs/Module/Cloud.php:116 +msgid "Not found" +msgstr "" + +#: ../../Zotlabs/Module/Cloud.php:122 +msgid "Please refresh page" +msgstr "" + +#: ../../Zotlabs/Module/Cloud.php:125 +msgid "Unknown error" +msgstr "" + +#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1671 +#, php-format +msgid "🔁 Repeated %1$s's %2$s" +msgstr "" + +#: ../../Zotlabs/Module/Share.php:119 +msgid "Post repeated" +msgstr "" + +#: ../../Zotlabs/Module/Acl.php:360 +msgid "network" +msgstr "" + +#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 +msgid "Item is not editable" +msgstr "" + +#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 +msgid "Edit post" +msgstr "" + +#: ../../Zotlabs/Module/Tagger.php:48 +msgid "Post not found." +msgstr "" + +#: ../../Zotlabs/Module/Tagger.php:119 +#, php-format +msgid "%1$s tagged %2$s's %3$s with %4$s" +msgstr "" + +#: ../../Zotlabs/Module/Authorize.php:17 +msgid "Unknown App" +msgstr "" + +#: ../../Zotlabs/Module/Authorize.php:29 +msgid "Authorize" +msgstr "" + +#: ../../Zotlabs/Module/Authorize.php:30 +#, php-format +msgid "Do you authorize the app %s to access your channel data?" +msgstr "" + +#: ../../Zotlabs/Module/Authorize.php:32 +msgid "Allow" +msgstr "" + +#: ../../Zotlabs/Module/Authorize.php:33 +#: ../../Zotlabs/Module/Admin/Accounts.php:174 +msgid "Deny" +msgstr "" + #: ../../Zotlabs/Module/Admin/Queue.php:35 msgid "Queue Statistics" msgstr "" @@ -2428,16 +9966,61 @@ msgstr "" msgid "Last known contact" 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" +#: ../../Zotlabs/Module/Admin/Themes.php:26 +msgid "Theme settings updated." 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" +#: ../../Zotlabs/Module/Admin/Themes.php:61 +msgid "No themes found." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Themes.php:95 +#: ../../Zotlabs/Module/Admin/Addons.php:311 +msgid "Disable" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Themes.php:97 +#: ../../Zotlabs/Module/Admin/Addons.php:314 +msgid "Enable" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Themes.php:116 +msgid "Screenshot" +msgstr "" + +#: ../../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 "" + +#: ../../Zotlabs/Module/Admin/Themes.php:124 +#: ../../Zotlabs/Module/Admin/Addons.php:344 +msgid "Toggle" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Themes.php:134 +#: ../../Zotlabs/Module/Admin/Addons.php:352 +msgid "Author: " +msgstr "" + +#: ../../Zotlabs/Module/Admin/Themes.php:135 +#: ../../Zotlabs/Module/Admin/Addons.php:353 +msgid "Maintainer: " +msgstr "" + +#: ../../Zotlabs/Module/Admin/Themes.php:162 +msgid "[Experimental]" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Themes.php:163 +msgid "[Unsupported]" msgstr "" #: ../../Zotlabs/Module/Admin/Features.php:56 @@ -2449,68 +10032,124 @@ msgstr "" msgid "Manage Additional Features" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:19 -#: ../../Zotlabs/Module/Admin/Dbsync.php:59 -msgid "Update has been marked successful" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:32 -#, php-format -msgid "Verification of update %s failed. Check system logs." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:35 -#: ../../Zotlabs/Module/Admin/Dbsync.php:74 -#, php-format -msgid "Update %s was successfully applied." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:39 -#, php-format -msgid "Verifying update %s did not return a status. Unknown if it succeeded." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:42 -#, php-format -msgid "Update %s does not contain a verification function." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:46 -#: ../../Zotlabs/Module/Admin/Dbsync.php:81 -#, php-format -msgid "Update function %s could not be found." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:71 -#, php-format -msgid "Executing update procedure %s failed. Check system logs." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:78 -#, php-format +#: ../../Zotlabs/Module/Admin/Security.php:83 msgid "" -"Update %s did not return a status. It cannot be determined if it was " -"successful." +"By default, unfiltered HTML is allowed in embedded media. This is inherently " +"insecure." msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:99 -msgid "Failed Updates" +#: ../../Zotlabs/Module/Admin/Security.php:86 +msgid "" +"The recommended setting is to only allow unfiltered HTML from the following " +"sites:" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:101 -msgid "Mark success (if update was manually applied)" +#: ../../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 "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:102 -msgid "Attempt to verify this update if a verification procedure exists" +#: ../../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 "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:103 -msgid "Attempt to execute this update step automatically" +#: ../../Zotlabs/Module/Admin/Security.php:95 +msgid "Block public" msgstr "" -#: ../../Zotlabs/Module/Admin/Dbsync.php:108 -msgid "No failed updates." +#: ../../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 "" + +#: ../../Zotlabs/Module/Admin/Security.php:96 +msgid "Provide a cloud root directory" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:96 +msgid "" +"The cloud root directory lists all channel names which provide public files" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:97 +msgid "Show total disk space available to cloud uploads" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:98 +msgid "Set \"Transport Security\" HTTP header" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:99 +msgid "Set \"Content Security Policy\" HTTP header" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:100 +msgid "Allowed email domains" +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" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:101 +msgid "Not allowed email domains" +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." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:102 +msgid "Allow communications only from these sites" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:102 +msgid "" +"One site per line. Leave empty to allow communication from anywhere by " +"default" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:103 +msgid "Block communications from these sites" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:104 +msgid "Allow communications only from these channels" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:104 +msgid "" +"One channel (hash) per line. Leave empty to allow from any channel by default" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:105 +msgid "Block communications from these channels" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:106 +msgid "Only allow embeds from secure (SSL) websites and links." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:107 +msgid "Allow unfiltered embedded HTML content only from these domains" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:107 +msgid "One site per line. By default embedded content is filtered." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Security.php:108 +msgid "Block embedded HTML from these domains" msgstr "" #: ../../Zotlabs/Module/Admin/Accounts.php:37 @@ -2531,11 +10170,6 @@ msgstr[1] "" msgid "Account not found" msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2632 -#, php-format -msgid "Account '%s' deleted" -msgstr "" - #: ../../Zotlabs/Module/Admin/Accounts.php:99 #, php-format msgid "Account '%s' blocked" @@ -2546,25 +10180,6 @@ msgstr "" msgid "Account '%s' unblocked" 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" -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" -msgstr "" - #: ../../Zotlabs/Module/Admin/Accounts.php:169 #: ../../Zotlabs/Module/Admin/Channels.php:148 msgid "select all" @@ -2582,16 +10197,6 @@ msgstr "" msgid "No registrations." msgstr "" -#: ../../Zotlabs/Module/Admin/Accounts.php:173 -#: ../../Zotlabs/Module/Connections.php:320 ../../include/conversation.php:735 -msgid "Approve" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Authorize.php:33 -msgid "Deny" -msgstr "" - #: ../../Zotlabs/Module/Admin/Accounts.php:176 #: ../../Zotlabs/Module/Connedit.php:636 msgid "Block" @@ -2638,205 +10243,10 @@ msgid "" "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: ../../Zotlabs/Module/Admin/Logs.php:28 -msgid "Log settings updated." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48 -#: ../../Zotlabs/Widget/Admin.php:58 -msgid "Logs" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Logs.php:85 -msgid "Clear" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Logs.php:91 -msgid "Debugging" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "Log file" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "" -"Must be writable by web server. Relative to your top-level webserver " -"directory." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Logs.php:93 -msgid "Log level" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:31 -#, php-format -msgid "%s channel censored/uncensored" -msgid_plural "%s channels censored/uncensored" -msgstr[0] "" -msgstr[1] "" - -#: ../../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] "" - -#: ../../Zotlabs/Module/Admin/Channels.php:46 -#, php-format -msgid "%s channel deleted" -msgid_plural "%s channels deleted" -msgstr[0] "" -msgstr[1] "" - -#: ../../Zotlabs/Module/Admin/Channels.php:65 -msgid "Channel not found" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:75 -#, php-format -msgid "Channel '%s' deleted" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' censored" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' uncensored" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code allowed" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code disallowed" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:146 -#: ../../Zotlabs/Module/Admin.php:114 ../../Zotlabs/Widget/Admin.php:24 -msgid "Channels" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:150 -msgid "Censor" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:151 -msgid "Uncensor" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:152 -msgid "Allow Code" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:153 -msgid "Disallow Code" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:423 -msgid "Channel" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Channels.php:158 -msgid "UID" -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?" -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?" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:26 -msgid "Theme settings updated." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:61 -msgid "No themes found." -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." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:95 -#: ../../Zotlabs/Module/Admin/Addons.php:310 -msgid "Disable" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:97 -#: ../../Zotlabs/Module/Admin/Addons.php:313 -msgid "Enable" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:116 -msgid "Screenshot" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:123 -#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28 -msgid "Themes" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:124 -#: ../../Zotlabs/Module/Admin/Addons.php:343 -msgid "Toggle" -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" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:134 -#: ../../Zotlabs/Module/Admin/Addons.php:351 -msgid "Author: " -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:135 -#: ../../Zotlabs/Module/Admin/Addons.php:352 -msgid "Maintainer: " -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:162 -msgid "[Experimental]" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Themes.php:163 -msgid "[Unsupported]" -msgstr "" - #: ../../Zotlabs/Module/Admin/Site.php:161 msgid "Site settings updated." 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" -msgstr "" - #: ../../Zotlabs/Module/Admin/Site.php:198 #: ../../Zotlabs/Module/Settings/Display.php:119 #, php-format @@ -2884,15 +10294,6 @@ 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 -msgid "Site" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Site.php:290 -#: ../../Zotlabs/Module/Register.php:277 -msgid "Registration" -msgstr "" - #: ../../Zotlabs/Module/Admin/Site.php:291 msgid "File upload" msgstr "" @@ -2901,15 +10302,6 @@ msgstr "" msgid "Policies" msgstr "" -#: ../../Zotlabs/Module/Admin/Site.php:293 ../../include/contact_widgets.php:16 -msgid "Advanced" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Site.php:297 -#: ../../addon/statusnet/statusnet.php:593 -msgid "Site name" -msgstr "" - #: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Banner/Logo" msgstr "" @@ -3276,96 +10668,145 @@ msgstr "" msgid "Region or country" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:289 +#: ../../Zotlabs/Module/Admin/Logs.php:28 +msgid "Log settings updated." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Logs.php:85 +msgid "Clear" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Logs.php:91 +msgid "Debugging" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "Log file" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "" +"Must be writable by web server. Relative to your top-level webserver " +"directory." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Logs.php:93 +msgid "Log level" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Channels.php:31 #, php-format -msgid "Plugin %s disabled." -msgstr "" +msgid "%s channel censored/uncensored" +msgid_plural "%s channels censored/uncensored" +msgstr[0] "" +msgstr[1] "" -#: ../../Zotlabs/Module/Admin/Addons.php:294 +#: ../../Zotlabs/Module/Admin/Channels.php:40 #, php-format -msgid "Plugin %s enabled." +msgid "%s channel code allowed/disallowed" +msgid_plural "%s channels code allowed/disallowed" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Module/Admin/Channels.php:46 +#, php-format +msgid "%s channel deleted" +msgid_plural "%s channels deleted" +msgstr[0] "" +msgstr[1] "" + +#: ../../Zotlabs/Module/Admin/Channels.php:65 +msgid "Channel not found" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:342 -#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Widget/Admin.php:27 -msgid "Addons" +#: ../../Zotlabs/Module/Admin/Channels.php:75 +#, php-format +msgid "Channel '%s' deleted" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:353 -msgid "Minimum project version: " +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' censored" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:354 -msgid "Maximum project version: " +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' uncensored" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:355 -msgid "Minimum PHP version: " +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code allowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:356 -msgid "Compatible Server Roles: " +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code disallowed" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:357 -msgid "Requires: " +#: ../../Zotlabs/Module/Admin/Channels.php:150 +msgid "Censor" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:358 -#: ../../Zotlabs/Module/Admin/Addons.php:445 -msgid "Disabled - version incompatibility" +#: ../../Zotlabs/Module/Admin/Channels.php:151 +msgid "Uncensor" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:414 -msgid "Enter the public git repository URL of the addon repo." +#: ../../Zotlabs/Module/Admin/Channels.php:152 +msgid "Allow Code" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:415 -msgid "Addon repo git URL" +#: ../../Zotlabs/Module/Admin/Channels.php:153 +msgid "Disallow Code" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "Custom repo name" +#: ../../Zotlabs/Module/Admin/Channels.php:158 +msgid "UID" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "(optional)" +#: ../../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 "" -#: ../../Zotlabs/Module/Admin/Addons.php:417 -msgid "Download Addon Repo" +#: ../../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 "" -#: ../../Zotlabs/Module/Admin/Addons.php:424 -msgid "Install new repo" +#: ../../Zotlabs/Module/Admin/Account_edit.php:29 +#, php-format +msgid "Password changed for account %d." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:425 ../../Zotlabs/Lib/Apps.php:536 -msgid "Install" +#: ../../Zotlabs/Module/Admin/Account_edit.php:46 +msgid "Account settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:448 -msgid "Manage Repos" +#: ../../Zotlabs/Module/Admin/Account_edit.php:61 +msgid "Account not found." msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:449 -msgid "Installed Addon Repositories" +#: ../../Zotlabs/Module/Admin/Account_edit.php:68 +msgid "Account Edit" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:450 -msgid "Install a New Addon Repository" +#: ../../Zotlabs/Module/Admin/Account_edit.php:69 +msgid "New Password" msgstr "" -#: ../../Zotlabs/Module/Admin/Addons.php:457 -msgid "Switch branch" +#: ../../Zotlabs/Module/Admin/Account_edit.php:70 +msgid "New Password again" 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" +#: ../../Zotlabs/Module/Admin/Account_edit.php:71 +msgid "Account language (for emails)" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:72 +msgid "Service class" msgstr "" #: ../../Zotlabs/Module/Admin/Profs.php:89 @@ -3407,15 +10848,6 @@ msgstr "" msgid "Additional info (optional)" 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" -msgstr "" - #: ../../Zotlabs/Module/Admin/Profs.php:103 msgid "Field definition not found" msgstr "" @@ -3424,10 +10856,6 @@ msgstr "" msgid "Edit Profile Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Profs.php:168 ../../Zotlabs/Widget/Admin.php:30 -msgid "Profile Fields" -msgstr "" - #: ../../Zotlabs/Module/Admin/Profs.php:169 msgid "Basic Profile Fields" msgstr "" @@ -3452,175 +10880,431 @@ msgstr "" msgid "Create Custom Field" msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:29 +#: ../../Zotlabs/Module/Admin/Dbsync.php:19 +#: ../../Zotlabs/Module/Admin/Dbsync.php:59 +msgid "Update has been marked successful" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:32 #, php-format -msgid "Password changed for account %d." +msgid "Verification of update %s failed. Check system logs." msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:46 -msgid "Account settings updated." +#: ../../Zotlabs/Module/Admin/Dbsync.php:35 +#: ../../Zotlabs/Module/Admin/Dbsync.php:74 +#, php-format +msgid "Update %s was successfully applied." msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:61 -msgid "Account not found." +#: ../../Zotlabs/Module/Admin/Dbsync.php:39 +#, php-format +msgid "Verifying update %s did not return a status. Unknown if it succeeded." msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:68 -msgid "Account Edit" +#: ../../Zotlabs/Module/Admin/Dbsync.php:42 +#, php-format +msgid "Update %s does not contain a verification function." msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:69 -msgid "New Password" +#: ../../Zotlabs/Module/Admin/Dbsync.php:46 +#: ../../Zotlabs/Module/Admin/Dbsync.php:81 +#, php-format +msgid "Update function %s could not be found." msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:70 -msgid "New Password again" +#: ../../Zotlabs/Module/Admin/Dbsync.php:71 +#, php-format +msgid "Executing update procedure %s failed. Check system logs." msgstr "" -#: ../../Zotlabs/Module/Admin/Account_edit.php:71 -msgid "Account language (for emails)" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Account_edit.php:72 -msgid "Service class" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:83 +#: ../../Zotlabs/Module/Admin/Dbsync.php:78 +#, php-format msgid "" -"By default, unfiltered HTML is allowed in embedded media. This is inherently " -"insecure." +"Update %s did not return a status. It cannot be determined if it was " +"successful." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../Zotlabs/Module/Admin/Dbsync.php:99 +msgid "Failed Updates" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:101 +msgid "Mark success (if update was manually applied)" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:102 +msgid "Attempt to verify this update if a verification procedure exists" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:103 +msgid "Attempt to execute this update step automatically" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:108 +msgid "No failed updates." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:290 +#, php-format +msgid "Plugin %s disabled." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:295 +#, php-format +msgid "Plugin %s enabled." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:354 +msgid "Minimum project version: " +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:355 +msgid "Maximum project version: " +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:356 +msgid "Minimum PHP version: " +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:357 +msgid "Compatible Server Roles: " +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:358 +msgid "Requires: " +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:359 +#: ../../Zotlabs/Module/Admin/Addons.php:446 +msgid "Disabled - version incompatibility" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:415 +msgid "Enter the public git repository URL of the addon repo." +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:416 +msgid "Addon repo git URL" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "Custom repo name" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "(optional)" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:418 +msgid "Download Addon Repo" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:425 +msgid "Install new repo" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:426 ../../Zotlabs/Lib/Apps.php:536 +msgid "Install" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:449 +msgid "Manage Repos" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:450 +msgid "Installed Addon Repositories" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:451 +msgid "Install a New Addon Repository" +msgstr "" + +#: ../../Zotlabs/Module/Admin/Addons.php:458 +msgid "Switch branch" +msgstr "" + +#: ../../Zotlabs/Module/Apps.php:50 +msgid "Installed Apps" +msgstr "" + +#: ../../Zotlabs/Module/Apps.php:53 +msgid "Manage Apps" +msgstr "" + +#: ../../Zotlabs/Module/Apps.php:54 +msgid "Create Custom App" +msgstr "" + +#: ../../Zotlabs/Module/Achievements.php:38 +msgid "Some blurb about what to do when you're new here" +msgstr "" + +#: ../../Zotlabs/Module/Removeme.php:35 msgid "" -"The recommended setting is to only allow unfiltered HTML from the following " -"sites:" +"Channel removals are not allowed within 48 hours of changing the account " +"password." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:87 +#: ../../Zotlabs/Module/Removeme.php:60 +msgid "Remove This Channel" +msgstr "" + +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +#: ../../Zotlabs/Module/Changeaddr.php:78 +msgid "WARNING: " +msgstr "" + +#: ../../Zotlabs/Module/Removeme.php:61 +msgid "This channel will be completely removed from the network. " +msgstr "" + +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "This action is permanent and can not be undone!" +msgstr "" + +#: ../../Zotlabs/Module/Removeme.php:62 +#: ../../Zotlabs/Module/Removeaccount.php:59 +#: ../../Zotlabs/Module/Changeaddr.php:79 +msgid "Please enter your password for verification:" +msgstr "" + +#: ../../Zotlabs/Module/Removeme.php:63 +msgid "Remove this channel and all its clones from the network" +msgstr "" + +#: ../../Zotlabs/Module/Removeme.php:63 msgid "" -"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/" -"<br />https://vimeo.com/<br />https://soundcloud.com/<br />" +"By default only the instance of the channel located on this hub will be " +"removed from the network" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:88 +#: ../../Zotlabs/Module/Removeme.php:64 +#: ../../Zotlabs/Module/Settings/Channel.php:594 +msgid "Remove Channel" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:468 +msgid "Edit event title" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:470 +msgid "Categories (comma-separated list)" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:471 +msgid "Edit Category" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:471 +msgid "Category" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:474 +msgid "Edit start date and time" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Events.php:478 +msgid "Finish date and time are not known or not relevant" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:477 +msgid "Edit finish date and time" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:477 +msgid "Finish date and time" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:479 ../../Zotlabs/Module/Events.php:480 +msgid "Adjust for viewer timezone" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:479 msgid "" -"All other embedded content will be filtered, <strong>unless</strong> " -"embedded content from that site is explicitly blocked." +"Important for events that happen in a particular place. Not practical for " +"global holidays." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:93 ../../Zotlabs/Widget/Admin.php:25 -msgid "Security" +#: ../../Zotlabs/Module/Events.php:481 +msgid "Edit Description" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:95 -msgid "Block public" +#: ../../Zotlabs/Module/Events.php:483 +msgid "Edit Location" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:95 +#: ../../Zotlabs/Module/Events.php:502 +msgid "Advanced Options" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:613 +msgid "l, F j" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:696 +msgid "Edit Event" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:696 +msgid "Create Event" +msgstr "" + +#: ../../Zotlabs/Module/Events.php:739 +msgid "Event removed" +msgstr "" + +#: ../../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 "" + +#: ../../Zotlabs/Module/Manage.php:145 +msgid "Create a new channel" +msgstr "" + +#: ../../Zotlabs/Module/Manage.php:171 +msgid "Current Channel" +msgstr "" + +#: ../../Zotlabs/Module/Manage.php:173 +msgid "Switch to one of your channels by selecting it." +msgstr "" + +#: ../../Zotlabs/Module/Manage.php:174 +msgid "Default Channel" +msgstr "" + +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Make Default" +msgstr "" + +#: ../../Zotlabs/Module/Manage.php:178 +#, php-format +msgid "%d new messages" +msgstr "" + +#: ../../Zotlabs/Module/Manage.php:179 +#, php-format +msgid "%d new introductions" +msgstr "" + +#: ../../Zotlabs/Module/Manage.php:181 +msgid "Delegated Channel" +msgstr "" + +#: ../../Zotlabs/Module/Chanview.php:139 +msgid "toggle full screen mode" +msgstr "" + +#: ../../Zotlabs/Module/Pubstream.php:20 +msgid "Public Stream App" +msgstr "" + +#: ../../Zotlabs/Module/Pubstream.php:21 +msgid "The unmoderated public stream of this hub" +msgstr "" + +#: ../../Zotlabs/Module/Chatsvc.php:131 +msgid "Away" +msgstr "" + +#: ../../Zotlabs/Module/Chatsvc.php:136 +msgid "Online" +msgstr "" + +#: ../../Zotlabs/Module/Permcats.php:28 +msgid "Permission category name is required." +msgstr "" + +#: ../../Zotlabs/Module/Permcats.php:47 +msgid "Permission category saved." +msgstr "" + +#: ../../Zotlabs/Module/Permcats.php:62 +msgid "Permission Categories App" +msgstr "" + +#: ../../Zotlabs/Module/Permcats.php:63 +msgid "Create custom connection permission limits" +msgstr "" + +#: ../../Zotlabs/Module/Permcats.php:79 msgid "" -"Check to block public access to all otherwise public personal pages on this " -"site unless you are currently authenticated." +"Use this form to create permission rules for various classes of people or " +"connections." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "Provide a cloud root directory" +#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 +msgid "Permission Categories" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:96 +#: ../../Zotlabs/Module/Permcats.php:120 +msgid "Permission category name" +msgstr "" + +#: ../../Zotlabs/Module/Email_resend.php:12 +#: ../../Zotlabs/Module/Email_validation.php:24 +msgid "Token verification failed." +msgstr "" + +#: ../../Zotlabs/Module/Email_resend.php:30 +msgid "Email verification resent" +msgstr "" + +#: ../../Zotlabs/Module/Email_resend.php:33 +msgid "Unable to resend email verification message." +msgstr "" + +#: ../../Zotlabs/Module/Ratings.php:70 +msgid "No ratings" +msgstr "" + +#: ../../Zotlabs/Module/Ratings.php:98 +msgid "Rating: " +msgstr "" + +#: ../../Zotlabs/Module/Ratings.php:99 +msgid "Website: " +msgstr "" + +#: ../../Zotlabs/Module/Ratings.php:101 +msgid "Description: " +msgstr "" + +#: ../../Zotlabs/Module/Cal.php:64 +msgid "Permissions denied." +msgstr "" + +#: ../../Zotlabs/Module/Viewsrc.php:43 +msgid "item" +msgstr "" + +#: ../../Zotlabs/Module/Apporder.php:47 +msgid "Change Order of Pinned Navbar Apps" +msgstr "" + +#: ../../Zotlabs/Module/Apporder.php:47 +msgid "Change Order of App Tray Apps" +msgstr "" + +#: ../../Zotlabs/Module/Apporder.php:48 msgid "" -"The cloud root directory lists all channel names which provide public files" +"Use arrows to move the corresponding app left (top) or right (bottom) in the " +"navbar" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:97 -msgid "Show total disk space available to cloud uploads" +#: ../../Zotlabs/Module/Apporder.php:48 +msgid "Use arrows to move the corresponding app up or down in the app tray" msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:98 -msgid "Set \"Transport Security\" HTTP header" +#: ../../Zotlabs/Module/Oexchange.php:27 +msgid "Unable to find your hub." msgstr "" -#: ../../Zotlabs/Module/Admin/Security.php:99 -msgid "Set \"Content Security Policy\" HTTP header" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:100 -msgid "Allowed email domains" -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" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:101 -msgid "Not allowed email domains" -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." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:102 -msgid "Allow communications only from these sites" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:102 -msgid "" -"One site per line. Leave empty to allow communication from anywhere by " -"default" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:103 -msgid "Block communications from these sites" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:104 -msgid "Allow communications only from these channels" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:104 -msgid "" -"One channel (hash) per line. Leave empty to allow from any channel by default" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:105 -msgid "Block communications from these channels" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:106 -msgid "Only allow embeds from secure (SSL) websites and links." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:107 -msgid "Allow unfiltered embedded HTML content only from these domains" -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:107 -msgid "One site per line. By default embedded content is filtered." -msgstr "" - -#: ../../Zotlabs/Module/Admin/Security.php:108 -msgid "Block embedded HTML from these domains" -msgstr "" - -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." -msgstr "" - -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" -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" +#: ../../Zotlabs/Module/Oexchange.php:41 +msgid "Post successful." msgstr "" #: ../../Zotlabs/Module/Moderate.php:65 @@ -3631,25 +11315,1661 @@ msgstr "" msgid "Comment deleted" 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" +#: ../../Zotlabs/Module/Removeaccount.php:35 +msgid "" +"Account removals are not allowed within 48 hours of changing the account " +"password." 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." +#: ../../Zotlabs/Module/Removeaccount.php:57 +msgid "Remove This Account" +msgstr "" + +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "" +"This account and all its channels will be completely removed from the " +"network. " +msgstr "" + +#: ../../Zotlabs/Module/Removeaccount.php:60 +msgid "" +"Remove this account, all its channels and all its channel clones from the " +"network" +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" +msgstr "" + +#: ../../Zotlabs/Module/Removeaccount.php:61 +#: ../../Zotlabs/Module/Settings/Account.php:105 +msgid "Remove Account" +msgstr "" + +#: ../../Zotlabs/Module/Lang.php:17 +msgid "Language App" +msgstr "" + +#: ../../Zotlabs/Module/Lang.php:18 +msgid "Change UI language" +msgstr "" + +#: ../../Zotlabs/Module/Uexport.php:61 +msgid "Channel Export App" +msgstr "" + +#: ../../Zotlabs/Module/Uexport.php:62 +msgid "Export your channel" +msgstr "" + +#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 +msgid "Export Channel" +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." +msgstr "" + +#: ../../Zotlabs/Module/Uexport.php:75 +msgid "Export Content" +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." +msgstr "" + +#: ../../Zotlabs/Module/Uexport.php:78 +msgid "Export your posts from a given year." +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." +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>" +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>" +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)." +msgstr "" + +#: ../../Zotlabs/Module/Display.php:396 +msgid "Article" +msgstr "" + +#: ../../Zotlabs/Module/Display.php:448 +msgid "Item has been removed." +msgstr "" + +#: ../../Zotlabs/Module/Common.php:14 +msgid "No channel." +msgstr "" + +#: ../../Zotlabs/Module/Common.php:45 +msgid "No connections in common." +msgstr "" + +#: ../../Zotlabs/Module/Common.php:65 +msgid "View Common Connections" +msgstr "" + +#: ../../Zotlabs/Module/Impel.php:185 +#, php-format +msgid "%s element installed" +msgstr "" + +#: ../../Zotlabs/Module/Impel.php:188 +#, php-format +msgid "%s element installation failed" +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:159 +msgid "Your real name is recommended." +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:160 +msgid "" +"Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation " +"Group\"" +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:165 +msgid "" +"This will be used to create a unique network address (like an email address)." +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:167 +msgid "Allowed characters are a-z 0-9, - and _" +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:175 +msgid "Channel name" +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:178 +msgid "" +"Select a channel permission role compatible with your usage needs and " +"privacy requirements." +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:181 +msgid "Create a Channel" +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." +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:183 +msgid "" +"or <a href=\"import\">import an existing channel</a> from another location." +msgstr "" + +#: ../../Zotlabs/Module/New_channel.php:188 +msgid "Validate" +msgstr "" + +#: ../../Zotlabs/Module/Magic.php:78 +msgid "Hub not found." +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:337 +msgid "sent you a private message" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:393 +msgid "added your channel" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:418 +msgid "requires approval" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:428 +msgid "g A l F d" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:446 +msgid "[today]" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:456 +msgid "posted an event" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:490 +msgid "shared a file with you" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Private forum" +msgstr "" + +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Public forum" +msgstr "" + +#: ../../Zotlabs/Module/Service_limits.php:23 +msgid "No service class restrictions found." +msgstr "" + +#: ../../Zotlabs/Module/Mood.php:134 +msgid "Mood App" +msgstr "" + +#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155 +msgid "Set your current mood and tell your friends" +msgstr "" + +#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 +msgid "Mood" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "About this site" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:22 +msgid "Site Name" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:26 +msgid "Administrator" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "Software and Project information" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:30 +msgid "This site is powered by $Projectname" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:31 +msgid "" +"Federated and decentralised networking and identity services provided by Zot" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Additional federated transport protocols:" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:36 +#, php-format +msgid "Version %s" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:37 +msgid "Project homepage" +msgstr "" + +#: ../../Zotlabs/Module/Siteinfo.php:38 +msgid "Developer homepage" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 +msgid "App installed." +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:49 +msgid "Malformed app." +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:132 +msgid "Embed code" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Edit App" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Create App" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:143 +msgid "Name of app" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:144 +msgid "Location (URL) of app" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:146 +msgid "Photo icon URL" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:146 +msgid "80 x 80 pixels - optional" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:147 +msgid "Categories (optional, comma separated list)" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:148 +msgid "Version ID" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:149 +msgid "Price of app" +msgstr "" + +#: ../../Zotlabs/Module/Appman.php:150 +msgid "Location (URL) to purchase app" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:97 +msgid "Blocked accounts" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:98 +msgid "Expired accounts" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:99 +msgid "Expiring accounts" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:120 +msgid "Message queues" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:134 +msgid "Your software should be updated" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:139 +msgid "Summary" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Registered accounts" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Pending registrations" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Registered channels" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Active addons" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Version" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (master)" +msgstr "" + +#: ../../Zotlabs/Module/Admin.php:148 +msgid "Repository version (dev)" +msgstr "" + +#: ../../Zotlabs/Module/Cards.php:51 +msgid "Cards App" +msgstr "" + +#: ../../Zotlabs/Module/Cards.php:52 +msgid "Create personal planning cards" +msgstr "" + +#: ../../Zotlabs/Module/Cards.php:112 +msgid "Add Card" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:116 +msgid "No default suggestions were found." +msgstr "" + +#: ../../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 "" + +#: ../../Zotlabs/Module/Directory.php:283 +msgid "Status: " +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:285 +msgid "Homepage: " +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:345 +msgid "Description:" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:354 +msgid "Public Forum:" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:357 +msgid "Keywords: " +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:360 +msgid "Don't suggest" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:362 +msgid "Common connections (estimated):" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Global Directory" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Local Directory" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:417 +msgid "Finding:" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:422 +msgid "next page" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:422 +msgid "previous page" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:423 +msgid "Sort options" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:424 +msgid "Alphabetic" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:425 +msgid "Reverse Alphabetic" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:426 +msgid "Newest to Oldest" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:427 +msgid "Oldest to Newest" +msgstr "" + +#: ../../Zotlabs/Module/Directory.php:444 +msgid "No entries (some entries may be hidden)." +msgstr "" + +#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 +msgid "Authorize application connection" +msgstr "" + +#: ../../Zotlabs/Module/Api.php:75 +msgid "Return to your app and insert this Security Code:" +msgstr "" + +#: ../../Zotlabs/Module/Api.php:85 +msgid "Please login to continue." +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?" +msgstr "" + +#: ../../Zotlabs/Module/Regmod.php:15 +msgid "Please login." +msgstr "" + +#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 +#: ../../Zotlabs/Module/Editblock.php:113 +msgid "Block Name" +msgstr "" + +#: ../../Zotlabs/Module/Blocks.php:156 +msgid "Block Title" +msgstr "" + +#: ../../Zotlabs/Module/Email_validation.php:36 +msgid "Email Verification Required" +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." +msgstr "" + +#: ../../Zotlabs/Module/Email_validation.php:38 +msgid "Resend Email" +msgstr "" + +#: ../../Zotlabs/Module/Email_validation.php:41 +msgid "Validation token" +msgstr "" + +#: ../../Zotlabs/Module/Attach.php:13 +msgid "Item not available." +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:91 +#: ../../Zotlabs/Module/Cover_photo.php:83 +msgid "Image uploaded but image cropping failed." +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:164 +#: ../../Zotlabs/Module/Cover_photo.php:210 +msgid "Image resize failed." +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:294 +#: ../../Zotlabs/Module/Cover_photo.php:263 +msgid "Image upload failed." +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:313 +#: ../../Zotlabs/Module/Cover_photo.php:280 +msgid "Unable to process image." +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." +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" +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." +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:495 +#: ../../Zotlabs/Module/Cover_photo.php:426 +msgid "Upload File:" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:496 +#: ../../Zotlabs/Module/Cover_photo.php:427 +msgid "Select a profile:" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Use Photo for Profile" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Change Profile Photo" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:498 +msgid "Use" +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" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:509 +#: ../../Zotlabs/Module/Cover_photo.php:438 ../../Zotlabs/Module/Wiki.php:405 +msgid "Choose a different album" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:514 +#: ../../Zotlabs/Module/Cover_photo.php:444 +msgid "Select existing photo" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:533 +#: ../../Zotlabs/Module/Cover_photo.php:461 +msgid "Crop Image" +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:534 +#: ../../Zotlabs/Module/Cover_photo.php:462 +msgid "Please adjust the image cropping for optimum viewing." +msgstr "" + +#: ../../Zotlabs/Module/Profile_photo.php:536 +#: ../../Zotlabs/Module/Cover_photo.php:464 +msgid "Done Editing" +msgstr "" + +#: ../../Zotlabs/Module/Editblock.php:138 +msgid "Edit Block" +msgstr "" + +#: ../../Zotlabs/Module/Filer.php:52 +msgid "Enter a folder name" +msgstr "" + +#: ../../Zotlabs/Module/Filer.php:52 +msgid "or select an existing folder (doubleclick)" +msgstr "" + +#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 +msgid "Save to Folder" +msgstr "" + +#: ../../Zotlabs/Module/Editlayout.php:128 ../../Zotlabs/Module/Layouts.php:129 +#: ../../Zotlabs/Module/Layouts.php:189 +msgid "Layout Name" +msgstr "" + +#: ../../Zotlabs/Module/Editlayout.php:129 ../../Zotlabs/Module/Layouts.php:132 +msgid "Layout Description (Optional)" +msgstr "" + +#: ../../Zotlabs/Module/Editlayout.php:137 +msgid "Edit Layout" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:58 +#: ../../Zotlabs/Module/Connections.php:115 +#: ../../Zotlabs/Module/Connections.php:273 +msgid "Active" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:63 +#: ../../Zotlabs/Module/Connections.php:181 +#: ../../Zotlabs/Module/Connections.php:278 +msgid "Blocked" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:68 +#: ../../Zotlabs/Module/Connections.php:188 +#: ../../Zotlabs/Module/Connections.php:277 +msgid "Ignored" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:73 +#: ../../Zotlabs/Module/Connections.php:202 +#: ../../Zotlabs/Module/Connections.php:276 +msgid "Hidden" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:78 +#: ../../Zotlabs/Module/Connections.php:195 +msgid "Archived/Unreachable" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:83 +#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:180 +#: ../../Zotlabs/Module/Notifications.php:50 +msgid "New" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:157 +msgid "Active Connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:160 +msgid "Show active connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:167 +msgid "Show pending (new) connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:184 +msgid "Only show blocked connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:191 +msgid "Only show ignored connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:198 +msgid "Only show archived/unreachable connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:205 +msgid "Only show hidden connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:220 +msgid "Show all connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:274 +msgid "Pending approval" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:275 +msgid "Archived" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:279 +msgid "Not connected at this location" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:296 +#, php-format +msgid "%1$s [%2$s]" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:297 +msgid "Edit connection" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:299 +msgid "Delete connection" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:308 +msgid "Channel address" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:313 +msgid "Call" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:315 +msgid "Status" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:317 +msgid "Connected" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:319 +msgid "Approve connection" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:321 +msgid "Ignore connection" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:322 +#: ../../Zotlabs/Module/Connedit.php:644 +msgid "Ignore" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:323 +msgid "Recent activity" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:328 +msgid "Connect at this location" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:356 +msgid "Search your connections" +msgstr "" + +#: ../../Zotlabs/Module/Connections.php:357 +msgid "Connections search" +msgstr "" + +#: ../../Zotlabs/Module/Cover_photo.php:194 +#: ../../Zotlabs/Module/Cover_photo.php:252 +msgid "Cover Photos" +msgstr "" + +#: ../../Zotlabs/Module/Cover_photo.php:424 +msgid "Your cover photo may be visible to anybody on the internet" +msgstr "" + +#: ../../Zotlabs/Module/Cover_photo.php:428 +msgid "Change Cover Photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:78 +msgid "Page owner information could not be retrieved." +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 +msgid "Album not found." +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:103 +msgid "Delete Album" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 +msgid "Delete Photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:527 +msgid "No photos selected" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:576 +msgid "Access to this item is restricted." +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:619 +#, php-format +msgid "%1$.2f MB of %2$.2f MB photo storage used." +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:622 +#, php-format +msgid "%1$.2f MB photo storage used." +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:664 +msgid "Upload Photos" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:668 +msgid "Enter an album name" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:669 +msgid "or select an existing album (doubleclick)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:670 +msgid "Create a status post for this upload" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:672 +msgid "Description (optional)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:758 +msgid "Show Newest First" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:760 +msgid "Show Oldest First" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 +msgid "Add Photos" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:865 +msgid "Permission denied. Access to this item may be restricted." +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:867 +msgid "Photo not available" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:925 +msgid "Use as profile photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:926 +msgid "Use as cover photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:933 +msgid "Private Photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:948 +msgid "View Full Size" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1030 +msgid "Edit photo" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1032 +msgid "Rotate CW (right)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1033 +msgid "Rotate CCW (left)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1036 +msgid "Move photo to album" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1037 +msgid "Enter a new album name" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1038 +msgid "or select an existing one (doubleclick)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1043 +msgid "Add a Tag" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1051 +msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1054 +msgid "Flag as adult in album view" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "I like this (toggle)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "I don't like this (toggle)" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 +#: ../../Zotlabs/Lib/ThreadItem.php:793 +msgid "This is you" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 +#: ../../Zotlabs/Lib/ThreadItem.php:232 ../../Zotlabs/Lib/ThreadItem.php:244 +msgid "View all" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1246 +msgid "Photo Tools" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1255 +msgid "In This Photo:" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1260 +msgid "Map" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 +msgctxt "noun" +msgid "Likes" +msgstr "" + +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 +msgctxt "noun" +msgid "Dislikes" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:19 +msgid "No valid account found." +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:33 +msgid "Password reset request issued. Check your email." +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 +#, php-format +msgid "Site Member (%s)" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 +#, php-format +msgid "Password reset requested at %s" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:68 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1683 +msgid "Password Reset" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:92 +msgid "Your password has been reset as requested." +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:93 +msgid "Your new password is" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:94 +msgid "Save or copy your new password - and then" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:95 +msgid "click here to login" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:96 +msgid "" +"Your password may be changed from the <em>Settings</em> page after " +"successful login." +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:117 +#, php-format +msgid "Your password has changed at %s" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:130 +msgid "Forgot your Password?" +msgstr "" + +#: ../../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 "" + +#: ../../Zotlabs/Module/Lostpass.php:132 +msgid "Email Address" +msgstr "" + +#: ../../Zotlabs/Module/Lostpass.php:133 ../../Zotlabs/Module/Pdledit.php:77 +msgid "Reset" +msgstr "" + +#: ../../Zotlabs/Module/Follow.php:36 +msgid "Connection added." +msgstr "" + +#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 +msgid "Invalid item." +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." +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." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:44 +msgid "Profile deleted." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 +msgid "Profile-" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 +msgid "New profile created." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:111 +msgid "Profile unavailable to clone." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:146 +msgid "Profile unavailable to export." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:252 +msgid "Profile Name is required." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:459 +msgid "Marital Status" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:463 +msgid "Romantic Partner" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 +msgid "Likes" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 +msgid "Dislikes" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 +msgid "Work/Employment" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:478 +msgid "Religion" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:482 +msgid "Political Views" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:490 +msgid "Sexual Preference" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:494 +msgid "Homepage" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:498 +msgid "Interests" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:594 +msgid "Profile updated." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:678 +msgid "Hide your connections list from viewers of this profile" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:722 +msgid "Edit Profile Details" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:724 +msgid "View this profile" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:726 +msgid "Profile Tools" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:727 +msgid "Change cover photo" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Create a new profile using these settings" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:730 +msgid "Clone this profile" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:731 +msgid "Delete this profile" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Add profile things" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:733 +msgid "Personal" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:735 +msgid "Relationship" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:738 +msgid "Import profile from file" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:739 +msgid "Export profile to file" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:740 +msgid "Your gender" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "Marital status" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:742 +msgid "Sexual preference" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:745 +msgid "Profile name" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:747 +msgid "This is your default profile." +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Your full name" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:750 +msgid "Title/Description" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:753 +msgid "Street address" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:754 +msgid "Locality/City" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:755 +msgid "Region/State" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:756 +msgid "Postal/Zip code" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Who (if applicable)" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:763 +msgid "Since (date)" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:766 +msgid "Tell us about yourself" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:768 +msgid "Hometown" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:769 +msgid "Political views" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:770 +msgid "Religious views" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Keywords used in directory listings" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Example: fishing photography software" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:774 +msgid "Musical interests" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:775 +msgid "Books, literature" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:776 +msgid "Television" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:777 +msgid "Film/Dance/Culture/Entertainment" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:778 +msgid "Hobbies/Interests" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:779 +msgid "Love/Romance" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:781 +msgid "School/Education" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:782 +msgid "Contact information and social networks" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:783 +msgid "My other channels" +msgstr "" + +#: ../../Zotlabs/Module/Profiles.php:785 +msgid "Communications" +msgstr "" + +#: ../../Zotlabs/Module/Subthread.php:143 +#, php-format +msgid "%1$s is following %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Subthread.php:145 +#, php-format +msgid "%1$s stopped following %2$s's %3$s" +msgstr "" + +#: ../../Zotlabs/Module/Articles.php:52 +msgid "Articles App" +msgstr "" + +#: ../../Zotlabs/Module/Articles.php:53 +msgid "Create interactive articles" +msgstr "" + +#: ../../Zotlabs/Module/Articles.php:116 +msgid "Add Article" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:62 +msgid "Bookmark added" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:78 +msgid "Bookmarks App" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:79 +msgid "Bookmark links from posts and manage them" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:92 +msgid "My Bookmarks" +msgstr "" + +#: ../../Zotlabs/Module/Bookmarks.php:103 +msgid "My Connections Bookmarks" +msgstr "" + +#: ../../Zotlabs/Module/Probe.php:18 +msgid "Remote Diagnostics App" +msgstr "" + +#: ../../Zotlabs/Module/Probe.php:19 +msgid "Perform diagnostics on remote channels" +msgstr "" + +#: ../../Zotlabs/Module/Changeaddr.php:35 +msgid "" +"Channel name changes are not allowed within 48 hours of changing the account " +"password." +msgstr "" + +#: ../../Zotlabs/Module/Changeaddr.php:77 +msgid "Change channel nickname/address" +msgstr "" + +#: ../../Zotlabs/Module/Changeaddr.php:78 +msgid "Any/all connections on other networks will be lost!" +msgstr "" + +#: ../../Zotlabs/Module/Changeaddr.php:80 +msgid "New channel address" +msgstr "" + +#: ../../Zotlabs/Module/Changeaddr.php:81 +msgid "Rename Channel" +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:37 +msgid "Total invitation limit exceeded." +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:61 +#, php-format +msgid "%s : Not a valid email address." +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:75 +msgid "Please join us on $Projectname" +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:85 +msgid "Invitation limit exceeded. Please contact your site administrator." +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" +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." +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:160 +msgid "You will need to supply this invitation code:" +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:161 +msgid "1. Register at any $Projectname location (they are all inter-connected)" +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:163 +msgid "2. Enter my $Projectname network address into the site searchbar." +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:164 +msgid "or visit" +msgstr "" + +#: ../../Zotlabs/Module/Invite.php:166 +msgid "3. Click [Connect]" +msgstr "" + +#: ../../Zotlabs/Module/Notes.php:56 +msgid "Notes App" +msgstr "" + +#: ../../Zotlabs/Module/Notes.php:57 +msgid "A simple notes app with a widget (note: notes are not encrypted)" +msgstr "" + +#: ../../Zotlabs/Module/Xchan.php:10 +msgid "Xchan Lookup" +msgstr "" + +#: ../../Zotlabs/Module/Xchan.php:13 +msgid "Lookup xchan beginning with (or webbie): " +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:77 +msgid "Unable to lookup recipient." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:84 +msgid "Unable to communicate with requested channel." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:91 +msgid "Cannot verify requested channel." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:109 +msgid "Selected channel has private message restrictions. Send failed." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:164 +msgid "Messages" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:177 +msgid "message" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:218 +msgid "Message recalled." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:231 +msgid "Conversation removed." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:367 +msgid "Expires YYYY-MM-DD HH:MM" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:274 +msgid "Requested channel is not in this network" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:282 +msgid "Send Private Message" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 +msgid "To:" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 +msgid "Subject:" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:434 +msgid "Attach file" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:293 +msgid "Send" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:397 +msgid "Delete message" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:398 +msgid "Delivery report" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:399 +msgid "Recall message" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:401 +msgid "Message has been recalled." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:419 +msgid "Delete Conversation" +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." +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:425 +msgid "Send Reply" +msgstr "" + +#: ../../Zotlabs/Module/Mail.php:430 +#, php-format +msgid "Your message for %s (%s):" +msgstr "" + +#: ../../Zotlabs/Module/Affinity.php:35 +msgid "Affinity Tool settings updated." +msgstr "" + +#: ../../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 "" + +#: ../../Zotlabs/Module/Affinity.php:52 +msgid "Affinity Tool App" +msgstr "" + +#: ../../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 "" + +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "Default maximum affinity level" +msgstr "" + +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "0-99 default 99" +msgstr "" + +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "Default minimum affinity level" +msgstr "" + +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "0-99 - default 0" +msgstr "" + +#: ../../Zotlabs/Module/Affinity.php:76 +msgid "Persistent affinity levels" +msgstr "" + +#: ../../Zotlabs/Module/Affinity.php:76 +msgid "" +"If disabled the max and min levels will be reset to default after page reload" +msgstr "" + +#: ../../Zotlabs/Module/Affinity.php:84 +msgid "Affinity Tool Settings" +msgstr "" + +#: ../../Zotlabs/Module/Rate.php:156 +msgid "Website:" +msgstr "" + +#: ../../Zotlabs/Module/Rate.php:159 +#, php-format +msgid "Remote Channel [%s] (not yet known on this site)" +msgstr "" + +#: ../../Zotlabs/Module/Rate.php:160 +msgid "Rating (this information is public)" +msgstr "" + +#: ../../Zotlabs/Module/Rate.php:161 +msgid "Optionally explain your rating (this information is public)" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Network.php:41 +#: ../../Zotlabs/Module/Settings/Channel_home.php:44 +msgid "Max height of content (in pixels)" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Network.php:43 +#: ../../Zotlabs/Module/Settings/Channel_home.php:46 +msgid "Click to expand content exceeding this height" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Network.php:58 +msgid "Stream Settings" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Features.php:43 +msgid "Additional Features" msgstr "" #: ../../Zotlabs/Module/Settings/Channel.php:327 @@ -3722,10 +13042,6 @@ msgstr "" msgid "Basic Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel.php:499 ../../include/channel.php:1643 -msgid "Full Name:" -msgstr "" - #: ../../Zotlabs/Module/Settings/Channel.php:500 #: ../../Zotlabs/Module/Settings/Account.php:104 msgid "Email Address:" @@ -3935,14 +13251,6 @@ msgstr "" msgid "Unseen private messages" 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" -msgstr "" - #: ../../Zotlabs/Module/Settings/Channel.php:568 msgid "Upcoming events" msgstr "" @@ -4047,38 +13355,6 @@ msgstr "" msgid "Remove this channel." msgstr "" -#: ../../Zotlabs/Module/Settings/Features.php:43 -msgid "Additional Features" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Events.php:39 -msgid "Events Settings" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Calendar.php:39 -msgid "Calendar Settings" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Conversation.php:22 -msgid "Settings saved." -msgstr "" - -#: ../../Zotlabs/Module/Settings/Conversation.php:24 -msgid "Settings saved. Reload page please." -msgstr "" - -#: ../../Zotlabs/Module/Settings/Conversation.php:46 -msgid "Conversation Settings" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Connections.php:39 -msgid "Connections Settings" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Photos.php:39 -msgid "Photos Settings" -msgstr "" - #: ../../Zotlabs/Module/Settings/Account.php:19 msgid "Not valid email." msgstr "" @@ -4131,23 +13407,10 @@ msgstr "" msgid "Leave password fields blank unless changing" msgstr "" -#: ../../Zotlabs/Module/Settings/Account.php:105 -#: ../../Zotlabs/Module/Removeaccount.php:61 -msgid "Remove Account" -msgstr "" - #: ../../Zotlabs/Module/Settings/Account.php:106 msgid "Remove this account including all its channels" msgstr "" -#: ../../Zotlabs/Module/Settings/Profiles.php:47 -msgid "Profiles Settings" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Manage.php:39 -msgid "Channel Manager Settings" -msgstr "" - #: ../../Zotlabs/Module/Settings/Featured.php:24 msgid "No feature settings configured" msgstr "" @@ -4160,14 +13423,12 @@ msgstr "" msgid "Please save/submit changes to any panel before opening another." msgstr "" -#: ../../Zotlabs/Module/Settings/Channel_home.php:44 -#: ../../Zotlabs/Module/Settings/Network.php:41 -msgid "Max height of content (in pixels)" +#: ../../Zotlabs/Module/Settings/Events.php:39 +msgid "Events Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Channel_home.php:46 -#: ../../Zotlabs/Module/Settings/Network.php:43 -msgid "Click to expand content exceeding this height" +#: ../../Zotlabs/Module/Settings/Manage.php:39 +msgid "Channel Manager Settings" msgstr "" #: ../../Zotlabs/Module/Settings/Channel_home.php:59 @@ -4178,12 +13439,8 @@ msgstr "" msgid "Channel Home Settings" msgstr "" -#: ../../Zotlabs/Module/Settings/Directory.php:39 -msgid "Directory Settings" -msgstr "" - -#: ../../Zotlabs/Module/Settings/Editor.php:39 -msgid "Editor Settings" +#: ../../Zotlabs/Module/Settings/Calendar.php:39 +msgid "Calendar Settings" msgstr "" #: ../../Zotlabs/Module/Settings/Display.php:128 @@ -4269,96 +13526,296 @@ msgstr "" msgid "Link post titles to source" msgstr "" -#: ../../Zotlabs/Module/Settings/Display.php:205 -#: ../../Zotlabs/Widget/Newmember.php:75 -msgid "New Member Links" -msgstr "" - #: ../../Zotlabs/Module/Settings/Display.php:205 msgid "Display new member quick links menu" msgstr "" -#: ../../Zotlabs/Module/Settings/Network.php:58 -msgid "Stream Settings" +#: ../../Zotlabs/Module/Settings/Directory.php:39 +msgid "Directory Settings" 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" +#: ../../Zotlabs/Module/Settings/Editor.php:39 +msgid "Editor Settings" msgstr "" -#: ../../Zotlabs/Module/Embedphotos.php:184 ../../Zotlabs/Module/Photos.php:815 -#: ../../Zotlabs/Widget/Portfolio.php:108 ../../Zotlabs/Widget/Album.php:95 -msgid "Edit Album" +#: ../../Zotlabs/Module/Settings/Connections.php:39 +msgid "Connections Settings" 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" +#: ../../Zotlabs/Module/Settings/Photos.php:39 +msgid "Photos Settings" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:39 +#: ../../Zotlabs/Module/Settings/Profiles.php:47 +msgid "Profiles Settings" +msgstr "" + +#: ../../Zotlabs/Module/Settings/Conversation.php:22 +msgid "Settings saved." +msgstr "" + +#: ../../Zotlabs/Module/Settings/Conversation.php:24 +msgid "Settings saved. Reload page please." +msgstr "" + +#: ../../Zotlabs/Module/Settings/Conversation.php:46 +msgid "Conversation Settings" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:68 +msgid "Unable to update menu." +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:79 +msgid "Unable to create menu." +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 +msgid "Menu Name" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:161 +msgid "Unique name (not visible on webpage) - required" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:175 +msgid "Menu Title" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:162 +msgid "Visible on webpage - leave empty for no title" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:163 +msgid "Allow Bookmarks" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:222 +msgid "Menu may be used to store saved bookmarks" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:164 ../../Zotlabs/Module/Menu.php:225 +msgid "Submit and proceed" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:177 ../../Zotlabs/Module/Locs.php:120 +msgid "Drop" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:181 +msgid "Bookmarks allowed" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:183 +msgid "Delete this menu" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:184 ../../Zotlabs/Module/Menu.php:219 +msgid "Edit menu contents" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:185 +msgid "Edit this menu" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:201 +msgid "Menu could not be deleted." +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:214 +msgid "Edit Menu" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:218 +msgid "Add or remove entries to this menu" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Menu name" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Must be unique, only seen by you" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:221 +msgid "Menu title" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:221 +msgid "Menu title as seen by others" +msgstr "" + +#: ../../Zotlabs/Module/Menu.php:222 +msgid "Allow bookmarks" +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:67 ../../Zotlabs/Module/Connedit.php:81 +msgid "Could not access contact record." +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:189 +msgid "Default Permissions App" +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:190 +msgid "Set custom default permissions for new connections" +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:867 +msgid "Connection Default Permissions" +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:868 +msgid "Apply these permissions automatically" +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 +msgid "Permission role" +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870 +msgid "Add permission role" +msgstr "" + +#: ../../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 "" + +#: ../../Zotlabs/Module/Defperms.php:262 +msgid "Automatic approval settings" +msgstr "" + +#: ../../Zotlabs/Module/Defperms.php:270 +msgid "" +"Some individual permissions may have been preset or locked based on your " +"channel type and privacy settings." +msgstr "" + +#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68 +msgid "This setting requires special processing and editing has been blocked." +msgstr "" + +#: ../../Zotlabs/Module/Pconfig.php:57 +msgid "Configuration Editor" +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 "" + +#: ../../Zotlabs/Module/Oauth2.php:54 +msgid "Name and Secret are required" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:106 +msgid "OAuth2 Apps Manager App" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:107 +msgid "OAuth2 authenticatication tokens for mobile and remote apps" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:115 +msgid "Add OAuth2 application" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 +msgid "Grant Types" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122 +msgid "leave blank unless your application sepcifically requires this" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 +msgid "Authorization scope" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:134 +msgid "OAuth2 Application not found." +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150 +msgid "leave blank unless your application specifically requires this" +msgstr "" + +#: ../../Zotlabs/Module/Oauth2.php:192 +msgid "Connected OAuth2 Apps" +msgstr "" + +#: ../../Zotlabs/Module/Randprof.php:29 +msgid "Random Channel App" +msgstr "" + +#: ../../Zotlabs/Module/Randprof.php:30 +msgid "Visit a random channel in the $Projectname network" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:59 +msgid "Invalid message" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "no results" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:107 +msgid "channel sync processed" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:111 +msgid "queued" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "posted" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "accepted for delivery" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:123 +msgid "updated" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:126 +msgid "update ignored" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:129 +msgid "permission denied" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:133 +msgid "recipient not found" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:136 +msgid "mail recalled" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:139 +msgid "duplicate mail received" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:142 +msgid "mail delivered" +msgstr "" + +#: ../../Zotlabs/Module/Dreport.php:162 #, php-format -msgid "This channel is limited to %d tokens" +msgid "Delivery report for %1$s" msgstr "" -#: ../../Zotlabs/Module/Tokens.php:45 -msgid "Name and Password are required." -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:85 -msgid "Token saved." -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:99 -msgid "Guest Access App" -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:100 -msgid "Create access tokens so that non-members can access private content" -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." -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:" -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:170 -msgid "Guest Access Tokens" -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:177 -msgid "Login Name" -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:178 -msgid "Login Password" -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:179 -msgid "Expires (yyyy-mm-dd)" -msgstr "" - -#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 -msgid "Their Settings" -msgstr "" - -#: ../../Zotlabs/Module/Achievements.php:38 -msgid "Some blurb about what to do when you're new here" +#: ../../Zotlabs/Module/Dreport.php:167 +msgid "Redeliver" msgstr "" #: ../../Zotlabs/Module/Thing.php:120 @@ -4414,748 +13871,52 @@ msgstr "" msgid "URL for photo of thing (optional)" 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" -msgstr "" - #: ../../Zotlabs/Module/Thing.php:362 msgid "Add Thing to your Profile" msgstr "" -#: ../../Zotlabs/Module/Notify.php:61 ../../Zotlabs/Module/Notifications.php:55 -msgid "No more system notifications." -msgstr "" - -#: ../../Zotlabs/Module/Notify.php:65 ../../Zotlabs/Module/Notifications.php:59 -msgid "System Notifications" -msgstr "" - -#: ../../Zotlabs/Module/Follow.php:36 -msgid "Connection added." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:157 -#, php-format -msgid "Your service plan only allows %d channels." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:184 -msgid "No channel. Import failed." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:594 -#: ../../addon/diaspora/import_diaspora.php:141 -msgid "Import completed." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:622 -msgid "You must be logged in to use this feature." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:627 -msgid "Import Channel" -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." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:630 -msgid "Or provide the old server/hub details" -msgstr "" - -#: ../../Zotlabs/Module/Import.php:632 -msgid "Your old identity address (xyz@example.com)" -msgstr "" - -#: ../../Zotlabs/Module/Import.php:633 -msgid "Your old login email address" -msgstr "" - -#: ../../Zotlabs/Module/Import.php:634 -msgid "Your old login password" -msgstr "" - -#: ../../Zotlabs/Module/Import.php:635 -msgid "Import a few months of posts if possible (limited by available memory" -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." -msgstr "" - -#: ../../Zotlabs/Module/Import.php:639 -msgid "Make this hub my primary location" -msgstr "" - -#: ../../Zotlabs/Module/Import.php:640 -msgid "Move this channel (disable all previous locations)" -msgstr "" - -#: ../../Zotlabs/Module/Import.php:641 -msgid "Use this channel nickname instead of the one provided" -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." -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." -msgstr "" - #: ../../Zotlabs/Module/Rmagic.php:44 msgid "Authentication failed." msgstr "" -#: ../../Zotlabs/Module/Rmagic.php:93 ../../boot.php:1677 -#: ../../include/channel.php:2475 -msgid "Remote Authentication" +#: ../../Zotlabs/Module/Pdledit.php:26 +msgid "Layout updated." msgstr "" -#: ../../Zotlabs/Module/Rmagic.php:94 ../../include/channel.php:2476 -msgid "Enter your channel address (e.g. channel@example.com)" +#: ../../Zotlabs/Module/Pdledit.php:42 +msgid "PDL Editor App" msgstr "" -#: ../../Zotlabs/Module/Rmagic.php:95 ../../include/channel.php:2477 -msgid "Authenticate" +#: ../../Zotlabs/Module/Pdledit.php:43 +msgid "Provides the ability to edit system page layouts" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:54 -msgid "Name and Secret are required" +#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99 +msgid "Edit System Page Description" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:106 -msgid "OAuth2 Apps Manager App" +#: ../../Zotlabs/Module/Pdledit.php:77 +msgid "(modified)" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:107 -msgid "OAuth2 authenticatication tokens for mobile and remote apps" +#: ../../Zotlabs/Module/Pdledit.php:94 +msgid "Layout not found." msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:115 -msgid "Add OAuth2 application" +#: ../../Zotlabs/Module/Pdledit.php:100 +msgid "Module Name:" msgstr "" -#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146 -#: ../../Zotlabs/Module/Oauth.php:113 -msgid "Name of application" +#: ../../Zotlabs/Module/Pdledit.php:101 +msgid "Layout Help" 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" +#: ../../Zotlabs/Module/Pdledit.php:102 +msgid "Edit another layout" 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" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 -#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 -msgid "Redirect" -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" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 -msgid "Grant Types" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:122 -msgid "leave blank unless your application sepcifically requires this" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 -msgid "Authorization scope" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:134 -msgid "OAuth2 Application not found." -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" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:149 ../../Zotlabs/Module/Oauth2.php:150 -msgid "leave blank unless your application specifically requires this" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:192 -msgid "Connected OAuth2 Apps" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:196 ../../Zotlabs/Module/Oauth.php:175 -msgid "Client key starts with" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:197 ../../Zotlabs/Module/Oauth.php:176 -msgid "No name" -msgstr "" - -#: ../../Zotlabs/Module/Oauth2.php:198 ../../Zotlabs/Module/Oauth.php:177 -msgid "Remove authorization" -msgstr "" - -#: ../../Zotlabs/Module/Cal.php:64 -msgid "Permissions denied." -msgstr "" - -#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 -msgid "Authorize application connection" -msgstr "" - -#: ../../Zotlabs/Module/Api.php:75 -msgid "Return to your app and insert this Security Code:" -msgstr "" - -#: ../../Zotlabs/Module/Api.php:85 -msgid "Please login to continue." -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?" -msgstr "" - -#: ../../Zotlabs/Module/Attach.php:13 -msgid "Item not available." -msgstr "" - -#: ../../Zotlabs/Module/Randprof.php:29 -msgid "Random Channel App" -msgstr "" - -#: ../../Zotlabs/Module/Randprof.php:30 -msgid "Visit a random channel in the $Projectname network" -msgstr "" - -#: ../../Zotlabs/Module/Editblock.php:138 -msgid "Edit Block" -msgstr "" - -#: ../../Zotlabs/Module/Profile.php:93 -msgid "vcard" -msgstr "" - -#: ../../Zotlabs/Module/Apps.php:50 ../../Zotlabs/Widget/Appstore.php:14 -msgid "Available Apps" -msgstr "" - -#: ../../Zotlabs/Module/Apps.php:50 -msgid "Installed Apps" -msgstr "" - -#: ../../Zotlabs/Module/Apps.php:53 -msgid "Manage Apps" -msgstr "" - -#: ../../Zotlabs/Module/Apps.php:54 -msgid "Create Custom App" -msgstr "" - -#: ../../Zotlabs/Module/Mood.php:76 ../../include/conversation.php:268 -#, php-format -msgctxt "mood" -msgid "%1$s is %2$s" -msgstr "" - -#: ../../Zotlabs/Module/Mood.php:134 -msgid "Mood App" -msgstr "" - -#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155 -msgid "Set your current mood and tell your friends" -msgstr "" - -#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 -msgid "Mood" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:58 -#: ../../Zotlabs/Module/Connections.php:115 -#: ../../Zotlabs/Module/Connections.php:273 -msgid "Active" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:63 -#: ../../Zotlabs/Module/Connections.php:181 -#: ../../Zotlabs/Module/Connections.php:278 -msgid "Blocked" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:68 -#: ../../Zotlabs/Module/Connections.php:188 -#: ../../Zotlabs/Module/Connections.php:277 -msgid "Ignored" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:73 -#: ../../Zotlabs/Module/Connections.php:202 -#: ../../Zotlabs/Module/Connections.php:276 -msgid "Hidden" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:78 -#: ../../Zotlabs/Module/Connections.php:195 -msgid "Archived/Unreachable" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:83 -#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:179 -#: ../../Zotlabs/Module/Notifications.php:50 -msgid "New" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:97 -#: ../../Zotlabs/Module/Connections.php:111 -#: ../../Zotlabs/Module/Connedit.php:727 ../../Zotlabs/Widget/Affinity.php:34 -msgid "All" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:157 -msgid "Active Connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:160 -msgid "Show active connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:164 -#: ../../Zotlabs/Widget/Notifications.php:84 -msgid "New Connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:167 -msgid "Show pending (new) connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:184 -msgid "Only show blocked connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:191 -msgid "Only show ignored connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:198 -msgid "Only show archived/unreachable connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:205 -msgid "Only show hidden connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:220 -msgid "Show all connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:274 -msgid "Pending approval" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:275 -msgid "Archived" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:279 -msgid "Not connected at this location" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:296 -#, php-format -msgid "%1$s [%2$s]" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:297 -msgid "Edit connection" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:299 -msgid "Delete connection" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:308 -msgid "Channel address" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:310 ../../include/features.php:299 -msgid "Network" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:313 -msgid "Call" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:315 -msgid "Status" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:317 -msgid "Connected" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:319 -msgid "Approve connection" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:321 -msgid "Ignore connection" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:322 -#: ../../Zotlabs/Module/Connedit.php:644 -msgid "Ignore" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:323 -msgid "Recent activity" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:348 ../../Zotlabs/Lib/Apps.php:332 -#: ../../include/text.php:1010 ../../include/features.php:133 -msgid "Connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:353 -msgid "Search your connections" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:354 -msgid "Connections search" -msgstr "" - -#: ../../Zotlabs/Module/Connections.php:355 -#: ../../Zotlabs/Module/Directory.php:416 -#: ../../Zotlabs/Module/Directory.php:421 ../../include/contact_widgets.php:23 -msgid "Find" -msgstr "" - -#: ../../Zotlabs/Module/Viewsrc.php:43 -msgid "item" -msgstr "" - -#: ../../Zotlabs/Module/Bookmarks.php:62 -msgid "Bookmark added" -msgstr "" - -#: ../../Zotlabs/Module/Bookmarks.php:78 -msgid "Bookmarks App" -msgstr "" - -#: ../../Zotlabs/Module/Bookmarks.php:79 -msgid "Bookmark links from posts and manage them" -msgstr "" - -#: ../../Zotlabs/Module/Bookmarks.php:92 -msgid "My Bookmarks" -msgstr "" - -#: ../../Zotlabs/Module/Bookmarks.php:103 -msgid "My Connections Bookmarks" -msgstr "" - -#: ../../Zotlabs/Module/Removeaccount.php:35 -msgid "" -"Account removals are not allowed within 48 hours of changing the account " -"password." -msgstr "" - -#: ../../Zotlabs/Module/Removeaccount.php:57 -msgid "Remove This Account" -msgstr "" - -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "" -"This account and all its channels will be completely removed from the " -"network. " -msgstr "" - -#: ../../Zotlabs/Module/Removeaccount.php:60 -msgid "" -"Remove this account, all its channels and all its channel clones from the " -"network" -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" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:78 -msgid "Page owner information could not be retrieved." -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 -msgid "Album not found." -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:103 -msgid "Delete Album" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 -msgid "Delete Photo" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:527 -msgid "No photos selected" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:576 -msgid "Access to this item is restricted." -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:619 -#, php-format -msgid "%1$.2f MB of %2$.2f MB photo storage used." -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:622 -#, php-format -msgid "%1$.2f MB photo storage used." -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:664 -msgid "Upload Photos" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:668 -msgid "Enter an album name" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:669 -msgid "or select an existing album (doubleclick)" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:670 -msgid "Create a status post for this upload" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:672 -msgid "Description (optional)" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:758 -msgid "Show Newest First" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:760 -msgid "Show Oldest First" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 -msgid "Add Photos" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:865 -msgid "Permission denied. Access to this item may be restricted." -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:867 -msgid "Photo not available" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:925 -msgid "Use as profile photo" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:926 -msgid "Use as cover photo" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:933 -msgid "Private Photo" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:948 -msgid "View Full Size" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1030 -msgid "Edit photo" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1032 -msgid "Rotate CW (right)" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1033 -msgid "Rotate CCW (left)" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1036 -msgid "Move photo to album" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1037 -msgid "Enter a new album name" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1038 -msgid "or select an existing one (doubleclick)" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1043 -msgid "Add a Tag" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1051 -msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1054 -msgid "Flag as adult in album view" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 -msgid "I like this (toggle)" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 -msgid "I don't like this (toggle)" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:469 -#: ../../include/conversation.php:787 -msgid "Please wait" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 -#: ../../Zotlabs/Lib/ThreadItem.php:793 -msgid "This is you" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1214 -#: ../../Zotlabs/Lib/ThreadItem.php:795 ../../include/js_strings.php:6 -msgid "Comment" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Likes" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Dislikes" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Agree" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Disagree" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Abstain" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Attending" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Not attending" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Might attend" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Module/Photos.php:1143 -#: ../../Zotlabs/Lib/ThreadItem.php:232 ../../Zotlabs/Lib/ThreadItem.php:244 -msgid "View all" -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] "" - -#: ../../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] "" - -#: ../../Zotlabs/Module/Photos.php:1246 -msgid "Photo Tools" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1255 -msgid "In This Photo:" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1260 -msgid "Map" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 -msgctxt "noun" -msgid "Likes" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 -msgctxt "noun" -msgid "Dislikes" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1274 ../../Zotlabs/Lib/ThreadItem.php:463 -#: ../../addon/channelreputation/channelreputation.php:230 -#: ../../include/acl_selectors.php:125 -msgid "Close" -msgstr "" - -#: ../../Zotlabs/Module/Photos.php:1347 ../../Zotlabs/Module/Photos.php:1360 -#: ../../Zotlabs/Module/Photos.php:1361 ../../include/photos.php:667 -msgid "Recent Photos" -msgstr "" - -#: ../../Zotlabs/Module/Wiki.php:35 -#: ../../addon/flashcards/Mod_Flashcards.php:35 ../../addon/cart/cart.php:1298 -msgid "Profile Unavailable." +#: ../../Zotlabs/Module/Pdledit.php:103 +msgid "System layout" msgstr "" #: ../../Zotlabs/Module/Wiki.php:52 @@ -5166,13 +13927,6 @@ msgstr "" msgid "Provide a wiki for your channel" 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" -msgstr "" - #: ../../Zotlabs/Module/Wiki.php:133 msgid "Error retrieving wiki" msgstr "" @@ -5185,20 +13939,10 @@ msgstr "" msgid "Error downloading wiki: " msgstr "" -#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:15 -#: ../../include/nav.php:538 -msgid "Wikis" -msgstr "" - #: ../../Zotlabs/Module/Wiki.php:212 msgid "Download" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:214 ../../Zotlabs/Module/Chat.php:264 -#: ../../Zotlabs/Module/Profiles.php:831 ../../Zotlabs/Module/Manage.php:145 -msgid "Create New" -msgstr "" - #: ../../Zotlabs/Module/Wiki.php:216 msgid "Wiki name" msgstr "" @@ -5207,24 +13951,6 @@ msgstr "" msgid "Content type" 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" -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" -msgstr "" - -#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Widget/Wiki_pages.php:38 -#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1982 -msgid "Text" -msgstr "" - #: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:292 msgid "Type" msgstr "" @@ -5265,11 +13991,6 @@ msgstr "" msgid "Revision Comparison" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 -#: ../../Zotlabs/Widget/Wiki_page_history.php:25 -msgid "Revert" -msgstr "" - #: ../../Zotlabs/Module/Wiki.php:374 msgid "Short description of your changes (optional)" msgstr "" @@ -5286,53 +14007,6 @@ msgstr "" msgid "Embed image from photo albums" msgstr "" -#: ../../Zotlabs/Module/Wiki.php:400 ../../addon/hsse/hsse.php:208 -#: ../../include/conversation.php:1414 -msgid "Embed an image from your albums" -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" -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" -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" -msgstr "" - -#: ../../Zotlabs/Module/Wiki.php:405 ../../Zotlabs/Module/Profile_photo.php:509 -#: ../../Zotlabs/Module/Cover_photo.php:438 -msgid "Choose a different album" -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" -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" -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" -msgstr "" - #: ../../Zotlabs/Module/Wiki.php:410 msgid "History" msgstr "" @@ -5389,308 +14063,25 @@ msgstr "" msgid "You must be authenticated." msgstr "" -#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1574 +#: ../../Zotlabs/Module/Home.php:90 #, php-format -msgid "🔁 Repeated %1$s's %2$s" +msgid "Welcome to %s" msgstr "" -#: ../../Zotlabs/Module/Share.php:119 -msgid "Post repeated" +#: ../../Zotlabs/Module/Suggest.php:40 +msgid "Suggest Channels App" msgstr "" -#: ../../Zotlabs/Module/Chanview.php:139 -msgid "toggle full screen mode" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:26 -msgid "Layout updated." -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:42 -msgid "PDL Editor App" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:43 -msgid "Provides the ability to edit system page layouts" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:56 ../../Zotlabs/Module/Pdledit.php:99 -msgid "Edit System Page Description" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:77 -msgid "(modified)" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:77 ../../Zotlabs/Module/Lostpass.php:133 -msgid "Reset" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:94 -msgid "Layout not found." -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:100 -msgid "Module Name:" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:101 -msgid "Layout Help" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:102 -msgid "Edit another layout" -msgstr "" - -#: ../../Zotlabs/Module/Pdledit.php:103 -msgid "System layout" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:165 -msgid "Poke App" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:166 -msgid "Poke somebody in your addressbook" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:350 -#: ../../include/conversation.php:1098 -msgid "Poke" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:200 -msgid "Poke somebody" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:203 -msgid "Poke/Prod" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:204 -msgid "Poke, prod or do other things to somebody" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:211 -msgid "Recipient" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:212 -msgid "Choose what you wish to do to recipient" -msgstr "" - -#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 -msgid "Make this post private" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:91 -#: ../../Zotlabs/Module/Cover_photo.php:83 -msgid "Image uploaded but image cropping failed." -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:145 -#: ../../Zotlabs/Module/Profile_photo.php:282 -#: ../../include/photo/photo_driver.php:367 -msgid "Profile Photos" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:164 -#: ../../Zotlabs/Module/Cover_photo.php:210 -msgid "Image resize failed." -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:252 -#: ../../addon/openclipatar/openclipatar.php:298 +#: ../../Zotlabs/Module/Suggest.php:41 msgid "" -"Shift-reload the page or clear browser cache if the new photo does not " -"display immediately." +"Suggestions for channels in the $Projectname network you might be interested " +"in" msgstr "" -#: ../../Zotlabs/Module/Profile_photo.php:259 -#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/photos.php:196 -msgid "Unable to process image" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:294 -#: ../../Zotlabs/Module/Cover_photo.php:263 -msgid "Image upload failed." -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:313 -#: ../../Zotlabs/Module/Cover_photo.php:280 -msgid "Unable to process image." -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." -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:493 +#: ../../Zotlabs/Module/Suggest.php:54 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 "" - -#: ../../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 "" - -#: ../../Zotlabs/Module/Profile_photo.php:495 -#: ../../Zotlabs/Module/Cover_photo.php:426 -msgid "Upload File:" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:496 -#: ../../Zotlabs/Module/Cover_photo.php:427 -msgid "Select a profile:" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Use Photo for Profile" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Change Profile Photo" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:498 -msgid "Use" -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" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:514 -#: ../../Zotlabs/Module/Cover_photo.php:444 -msgid "Select existing photo" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:533 -#: ../../Zotlabs/Module/Cover_photo.php:461 -msgid "Crop Image" -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:534 -#: ../../Zotlabs/Module/Cover_photo.php:462 -msgid "Please adjust the image cropping for optimum viewing." -msgstr "" - -#: ../../Zotlabs/Module/Profile_photo.php:536 -#: ../../Zotlabs/Module/Cover_photo.php:464 -msgid "Done Editing" -msgstr "" - -#: ../../Zotlabs/Module/Chatsvc.php:131 -msgid "Away" -msgstr "" - -#: ../../Zotlabs/Module/Chatsvc.php:136 -msgid "Online" -msgstr "" - -#: ../../Zotlabs/Module/Item.php:382 -msgid "Unable to locate original post." -msgstr "" - -#: ../../Zotlabs/Module/Item.php:668 -msgid "Empty post discarded." -msgstr "" - -#: ../../Zotlabs/Module/Item.php:1082 -msgid "Duplicate post suppressed." -msgstr "" - -#: ../../Zotlabs/Module/Item.php:1227 -msgid "System error. Post not saved." -msgstr "" - -#: ../../Zotlabs/Module/Item.php:1263 -msgid "Your comment is awaiting approval." -msgstr "" - -#: ../../Zotlabs/Module/Item.php:1380 -msgid "Unable to obtain post information from database." -msgstr "" - -#: ../../Zotlabs/Module/Item.php:1387 -#, php-format -msgid "You have reached your limit of %1$.0f top level posts." -msgstr "" - -#: ../../Zotlabs/Module/Item.php:1394 -#, php-format -msgid "You have reached your limit of %1$.0f webpages." -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:337 -msgid "sent you a private message" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:393 -msgid "added your channel" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:418 -msgid "requires approval" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:428 -msgid "g A l F d" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:446 -msgid "[today]" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:456 -msgid "posted an event" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:490 -msgid "shared a file with you" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Private forum" -msgstr "" - -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Public forum" -msgstr "" - -#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 -msgid "Invalid item." -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." -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." -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:81 ../../Zotlabs/Module/Defperms.php:67 -msgid "Could not access contact record." +"No suggestions available. If this is a new site, please try again in 24 " +"hours." msgstr "" #: ../../Zotlabs/Module/Connedit.php:112 @@ -5727,12 +14118,6 @@ msgstr "" msgid "Connection has been removed." 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" -msgstr "" - #: ../../Zotlabs/Module/Connedit.php:611 #, php-format msgid "View %s's profile" @@ -5754,10 +14139,6 @@ msgstr "" msgid "Fetch updated photo" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:629 ../../include/conversation.php:1048 -msgid "Recent Activity" -msgstr "" - #: ../../Zotlabs/Module/Connedit.php:632 msgid "View recent posts and comments" msgstr "" @@ -5839,18 +14220,6 @@ msgstr "" msgid "Open Set Affinity section by default" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:30 -msgid "Me" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:31 -msgid "Family" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:33 -msgid "Acquaintances" -msgstr "" - #: ../../Zotlabs/Module/Connedit.php:756 msgid "Filter" msgstr "" @@ -5897,31 +14266,10 @@ msgid "" "not supported by their network." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:254 -msgid "Connection Default Permissions" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4323 -#, php-format -msgid "Connection: %s" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:255 -msgid "Apply these permissions automatically" -msgstr "" - #: ../../Zotlabs/Module/Connedit.php:868 msgid "Connection requests will be approved without your interaction" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256 -msgid "Permission role" -msgstr "" - -#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:257 -msgid "Add permission role" -msgstr "" - #: ../../Zotlabs/Module/Connedit.php:877 msgid "This connection's primary address is" msgstr "" @@ -5930,12 +14278,6 @@ msgstr "" msgid "Available locations:" 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." -msgstr "" - #: ../../Zotlabs/Module/Connedit.php:884 msgid "Connection Tools" msgstr "" @@ -5944,11 +14286,6 @@ msgstr "" msgid "Slide to adjust your degree of friendship" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155 -#: ../../include/js_strings.php:20 -msgid "Rating" -msgstr "" - #: ../../Zotlabs/Module/Connedit.php:888 msgid "Slide to adjust your rating" msgstr "" @@ -6000,185 +14337,17 @@ msgstr "" msgid "Details" msgstr "" -#: ../../Zotlabs/Module/Chat.php:102 -msgid "Chatrooms App" +#: ../../Zotlabs/Module/Notifications.php:55 ../../Zotlabs/Module/Notify.php:61 +msgid "No more system notifications." msgstr "" -#: ../../Zotlabs/Module/Chat.php:103 -msgid "Access Controlled Chatrooms" +#: ../../Zotlabs/Module/Notifications.php:59 ../../Zotlabs/Module/Notify.php:65 +msgid "System Notifications" msgstr "" -#: ../../Zotlabs/Module/Chat.php:196 -msgid "Room not found" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:212 -msgid "Leave Room" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:213 -msgid "Delete Room" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:214 -msgid "I am away right now" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:215 -msgid "I am online" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:217 -msgid "Bookmark this room" -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:" -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" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:240 -msgid "New Chatroom" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:241 -msgid "Chatroom name" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:242 -msgid "Expiration of chats (minutes)" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:258 -#, php-format -msgid "%1$s's Chatrooms" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:263 -msgid "No chatrooms available" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:267 -msgid "Expiration" -msgstr "" - -#: ../../Zotlabs/Module/Chat.php:268 -msgid "min" -msgstr "" - -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 -#: ../../include/features.php:361 ../../include/nav.php:446 -msgid "Photos" -msgstr "" - -#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:339 -#: ../../Zotlabs/Storage/Browser.php:278 ../../include/nav.php:454 -msgid "Files" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:67 -msgid "Unable to update menu." -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:78 -msgid "Unable to create menu." -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:160 ../../Zotlabs/Module/Menu.php:173 -msgid "Menu Name" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:160 -msgid "Unique name (not visible on webpage) - required" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 -msgid "Menu Title" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:161 -msgid "Visible on webpage - leave empty for no title" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:162 -msgid "Allow Bookmarks" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221 -msgid "Menu may be used to store saved bookmarks" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:224 -msgid "Submit and proceed" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2561 -msgid "Menus" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:180 -msgid "Bookmarks allowed" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:182 -msgid "Delete this menu" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:183 ../../Zotlabs/Module/Menu.php:218 -msgid "Edit menu contents" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:184 -msgid "Edit this menu" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:200 -msgid "Menu could not be deleted." -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:213 -msgid "Edit Menu" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:217 -msgid "Add or remove entries to this menu" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Menu name" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Must be unique, only seen by you" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:220 -msgid "Menu title" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:220 -msgid "Menu title as seen by others" -msgstr "" - -#: ../../Zotlabs/Module/Menu.php:221 -msgid "Allow bookmarks" -msgstr "" - -#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2562 -msgid "Layouts" -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" +#: ../../Zotlabs/Module/Notifications.php:60 +#: ../../Zotlabs/Lib/ThreadItem.php:450 +msgid "Mark all seen" msgstr "" #: ../../Zotlabs/Module/Layouts.php:186 @@ -6193,894 +14362,48 @@ msgstr "" msgid "Download PDL file" msgstr "" -#: ../../Zotlabs/Module/Notes.php:56 -msgid "Notes App" +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." msgstr "" -#: ../../Zotlabs/Module/Notes.php:57 -msgid "A simple notes app with a widget (note: notes are not encrypted)" +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." msgstr "" -#: ../../Zotlabs/Module/Cloud.php:123 -msgid "Not found" -msgstr "" - -#: ../../Zotlabs/Module/Cloud.php:129 -msgid "Please refresh page" -msgstr "" - -#: ../../Zotlabs/Module/Cloud.php:132 -msgid "Unknown error" -msgstr "" - -#: ../../Zotlabs/Module/Email_validation.php:24 -#: ../../Zotlabs/Module/Email_resend.php:12 -msgid "Token verification failed." -msgstr "" - -#: ../../Zotlabs/Module/Email_validation.php:36 -msgid "Email Verification Required" -msgstr "" - -#: ../../Zotlabs/Module/Email_validation.php:37 -#, php-format +#: ../../Zotlabs/Module/Locs.php:66 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." +"Please select another location to become primary before removing the primary " +"location." msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:38 -msgid "Resend Email" +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" msgstr "" -#: ../../Zotlabs/Module/Email_validation.php:41 -msgid "Validation token" +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." msgstr "" -#: ../../Zotlabs/Module/Tagger.php:48 -msgid "Post not found." +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:204 -#: ../../include/bbcode.php:362 -msgid "post" +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146 -#: ../../include/text.php:2125 -msgid "comment" +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." msgstr "" -#: ../../Zotlabs/Module/Tagger.php:119 -#, php-format -msgid "%1$s tagged %2$s's %3$s with %4$s" -msgstr "" - -#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68 -msgid "This setting requires special processing and editing has been blocked." -msgstr "" - -#: ../../Zotlabs/Module/Pconfig.php:57 -msgid "Configuration Editor" -msgstr "" - -#: ../../Zotlabs/Module/Pconfig.php:58 +#: ../../Zotlabs/Module/Locs.php:124 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." +"When possible, drop a location by logging into that website/hub and removing " +"your channel." msgstr "" -#: ../../Zotlabs/Module/Affinity.php:35 -msgid "Affinity Tool settings updated." -msgstr "" - -#: ../../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 "" - -#: ../../Zotlabs/Module/Affinity.php:52 -msgid "Affinity Tool App" -msgstr "" - -#: ../../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 "" - -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "Default maximum affinity level" -msgstr "" - -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "0-99 default 99" -msgstr "" - -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "Default minimum affinity level" -msgstr "" - -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "0-99 - default 0" -msgstr "" - -#: ../../Zotlabs/Module/Affinity.php:76 -msgid "Persistent affinity levels" -msgstr "" - -#: ../../Zotlabs/Module/Affinity.php:76 -msgid "" -"If disabled the max and min levels will be reset to default after page reload" -msgstr "" - -#: ../../Zotlabs/Module/Affinity.php:84 -msgid "Affinity Tool Settings" -msgstr "" - -#: ../../Zotlabs/Module/Defperms.php:189 -msgid "Default Permissions App" -msgstr "" - -#: ../../Zotlabs/Module/Defperms.php:190 -msgid "Set custom default permissions for new connections" -msgstr "" - -#: ../../Zotlabs/Module/Defperms.php:262 -msgid "Automatic approval settings" -msgstr "" - -#: ../../Zotlabs/Module/Defperms.php:270 -msgid "" -"Some individual permissions may have been preset or locked based on your " -"channel type and privacy settings." -msgstr "" - -#: ../../Zotlabs/Module/Authorize.php:17 -msgid "Unknown App" -msgstr "" - -#: ../../Zotlabs/Module/Authorize.php:29 -msgid "Authorize" -msgstr "" - -#: ../../Zotlabs/Module/Authorize.php:30 -#, php-format -msgid "Do you authorize the app %s to access your channel data?" -msgstr "" - -#: ../../Zotlabs/Module/Authorize.php:32 -msgid "Allow" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:45 -msgid "Privacy group created." -msgstr "" - -#: ../../Zotlabs/Module/Group.php:48 -msgid "Could not create privacy group." -msgstr "" - -#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:213 -#: ../../include/items.php:4290 -msgid "Privacy group not found." -msgstr "" - -#: ../../Zotlabs/Module/Group.php:80 -msgid "Privacy group updated." -msgstr "" - -#: ../../Zotlabs/Module/Group.php:106 -msgid "Privacy Groups App" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:107 -msgid "Management of privacy groups" -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" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:142 -msgid "Add Group" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:146 -msgid "Privacy group name" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256 -msgid "Members are visible to other channels" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 -msgid "Members" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:182 -msgid "Privacy group removed." -msgstr "" - -#: ../../Zotlabs/Module/Group.php:185 -msgid "Unable to remove privacy group." -msgstr "" - -#: ../../Zotlabs/Module/Group.php:251 -#, php-format -msgid "Privacy Group: %s" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:253 -msgid "Privacy group name: " -msgstr "" - -#: ../../Zotlabs/Module/Group.php:258 -msgid "Delete Group" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:269 -msgid "Group members" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:271 -msgid "Not in this group" -msgstr "" - -#: ../../Zotlabs/Module/Group.php:303 -msgid "Click a channel to toggle membership" -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." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:44 -msgid "Profile deleted." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 -msgid "Profile-" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 -msgid "New profile created." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:111 -msgid "Profile unavailable to clone." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:146 -msgid "Profile unavailable to export." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:252 -msgid "Profile Name is required." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:459 -msgid "Marital Status" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:463 -msgid "Romantic Partner" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 -msgid "Likes" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 -msgid "Dislikes" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 -msgid "Work/Employment" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:478 -msgid "Religion" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:482 -msgid "Political Views" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:486 -#: ../../addon/openid/MysqlProvider.php:74 -msgid "Gender" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:490 -msgid "Sexual Preference" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:494 -msgid "Homepage" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:498 -msgid "Interests" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:594 -msgid "Profile updated." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:678 -msgid "Hide your connections list from viewers of this profile" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:722 -msgid "Edit Profile Details" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:724 -msgid "View this profile" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:725 ../../Zotlabs/Module/Profiles.php:824 -#: ../../include/channel.php:1441 -msgid "Edit visibility" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Profile Tools" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:727 -msgid "Change cover photo" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1411 -msgid "Change profile photo" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Create a new profile using these settings" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:730 -msgid "Clone this profile" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:731 -msgid "Delete this profile" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:732 -msgid "Add profile things" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:733 -msgid "Personal" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Relationship" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:736 ../../Zotlabs/Widget/Newmember.php:51 -#: ../../include/datetime.php:58 -msgid "Miscellaneous" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:738 -msgid "Import profile from file" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:739 -msgid "Export profile to file" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:740 -msgid "Your gender" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:741 -msgid "Marital status" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:742 -msgid "Sexual preference" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:745 -msgid "Profile name" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:747 -msgid "This is your default profile." -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:749 -msgid "Your full name" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:750 -msgid "Title/Description" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:753 -msgid "Street address" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:754 -msgid "Locality/City" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:755 -msgid "Region/State" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:756 -msgid "Postal/Zip code" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Who (if applicable)" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:763 -msgid "Since (date)" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:766 -msgid "Tell us about yourself" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:767 -#: ../../addon/openid/MysqlProvider.php:68 -msgid "Homepage URL" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:768 -msgid "Hometown" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:769 -msgid "Political views" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:770 -msgid "Religious views" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Keywords used in directory listings" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Example: fishing photography software" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:774 -msgid "Musical interests" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:775 -msgid "Books, literature" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:776 -msgid "Television" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:777 -msgid "Film/Dance/Culture/Entertainment" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:778 -msgid "Hobbies/Interests" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:779 -msgid "Love/Romance" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:781 -msgid "School/Education" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:782 -msgid "Contact information and social networks" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:783 -msgid "My other channels" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:785 -msgid "Communications" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1437 -msgid "Profile Image" -msgstr "" - -#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1418 -#: ../../include/nav.php:113 -msgid "Edit Profiles" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:21 -msgid "This page is available only to site members" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:27 -msgid "Welcome" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:29 -msgid "What would you like to do?" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:31 -msgid "" -"Please bookmark this page if you would like to return to it in the future" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:35 -msgid "Upload a profile photo" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:36 -msgid "Upload a cover photo" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:37 -msgid "Edit your default profile" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:38 ../../Zotlabs/Widget/Newmember.php:41 -msgid "View friend suggestions" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:39 -msgid "View the channel directory" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:40 -msgid "View/edit your channel settings" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:41 -msgid "View the site or project documentation" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:42 -msgid "Visit your channel homepage" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:43 -msgid "" -"View your connections and/or add somebody whose address you already know" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:44 -msgid "" -"View your personal stream (this may be empty until you add some connections)" -msgstr "" - -#: ../../Zotlabs/Module/Go.php:52 -msgid "View the public stream. Warning: this content is not moderated" -msgstr "" - -#: ../../Zotlabs/Module/Editwebpage.php:139 -msgid "Page link" -msgstr "" - -#: ../../Zotlabs/Module/Editwebpage.php:166 -msgid "Edit Webpage" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:145 -msgid "Create a new channel" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:336 -#: ../../include/nav.php:96 -msgid "Channel Manager" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:171 -msgid "Current Channel" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:173 -msgid "Switch to one of your channels by selecting it." -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:174 -msgid "Default Channel" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Make Default" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:178 -#, php-format -msgid "%d new messages" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:179 -#, php-format -msgid "%d new introductions" -msgstr "" - -#: ../../Zotlabs/Module/Manage.php:181 -msgid "Delegated Channel" -msgstr "" - -#: ../../Zotlabs/Module/Cards.php:51 -msgid "Cards App" -msgstr "" - -#: ../../Zotlabs/Module/Cards.php:52 -msgid "Create personal planning cards" -msgstr "" - -#: ../../Zotlabs/Module/Cards.php:112 -msgid "Add Card" -msgstr "" - -#: ../../Zotlabs/Module/Cards.php:207 ../../Zotlabs/Lib/Apps.php:325 -#: ../../include/nav.php:503 -msgid "Cards" -msgstr "" - -#: ../../Zotlabs/Module/Dirsearch.php:33 -msgid "This directory server requires an access token" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:21 -msgid "About this site" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:22 -msgid "Site Name" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:26 -msgid "Administrator" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:28 ../../Zotlabs/Module/Register.php:239 -msgid "Terms of Service" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:29 -msgid "Software and Project information" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:30 -msgid "This site is powered by $Projectname" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:31 -msgid "" -"Federated and decentralised networking and identity services provided by Zot" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Additional federated transport protocols:" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:36 -#, php-format -msgid "Version %s" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:37 -msgid "Project homepage" -msgstr "" - -#: ../../Zotlabs/Module/Siteinfo.php:38 -msgid "Developer homepage" -msgstr "" - -#: ../../Zotlabs/Module/Ratings.php:70 -msgid "No ratings" -msgstr "" - -#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35 -#: ../../include/conversation.php:1088 -msgid "Ratings" -msgstr "" - -#: ../../Zotlabs/Module/Ratings.php:98 -msgid "Rating: " -msgstr "" - -#: ../../Zotlabs/Module/Ratings.php:99 -msgid "Website: " -msgstr "" - -#: ../../Zotlabs/Module/Ratings.php:101 -msgid "Description: " -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:48 -msgid "Webpages App" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:49 -msgid "Provide managed web pages on your channel" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:69 -msgid "Import Webpage Elements" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:70 -msgid "Import selected" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:93 -msgid "Export Webpage Elements" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:94 -msgid "Export selected" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:340 -#: ../../include/nav.php:526 -msgid "Webpages" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:263 -msgid "Actions" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:264 -msgid "Page Link" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:265 -msgid "Page Title" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:295 -msgid "Invalid file type." -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:307 -msgid "Error opening zip file" -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:318 -msgid "Invalid folder path." -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:345 -msgid "No webpage elements detected." -msgstr "" - -#: ../../Zotlabs/Module/Webpages.php:420 -msgid "Import complete." -msgstr "" - -#: ../../Zotlabs/Module/Changeaddr.php:35 -msgid "" -"Channel name changes are not allowed within 48 hours of changing the account " -"password." -msgstr "" - -#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:222 -#: ../../include/channel.php:655 -msgid "Reserved nickname. Please choose another." -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." -msgstr "" - -#: ../../Zotlabs/Module/Changeaddr.php:77 -msgid "Change channel nickname/address" -msgstr "" - -#: ../../Zotlabs/Module/Changeaddr.php:78 -msgid "Any/all connections on other networks will be lost!" -msgstr "" - -#: ../../Zotlabs/Module/Changeaddr.php:80 -msgid "New channel address" -msgstr "" - -#: ../../Zotlabs/Module/Changeaddr.php:81 -msgid "Rename Channel" -msgstr "" - -#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 -msgid "Item is not editable" -msgstr "" - -#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 -msgid "Edit post" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:59 -msgid "Invalid message" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:93 -msgid "no results" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:107 -msgid "channel sync processed" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:111 -msgid "queued" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:115 -msgid "posted" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:119 -msgid "accepted for delivery" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:123 -msgid "updated" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:126 -msgid "update ignored" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:129 -msgid "permission denied" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:133 -msgid "recipient not found" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:136 -msgid "mail recalled" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:139 -msgid "duplicate mail received" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:142 -msgid "mail delivered" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:162 -#, php-format -msgid "Delivery report for %1$s" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:166 ../../Zotlabs/Widget/Wiki_pages.php:41 -#: ../../Zotlabs/Widget/Wiki_pages.php:98 -msgid "Options" -msgstr "" - -#: ../../Zotlabs/Module/Dreport.php:167 -msgid "Redeliver" +#: ../../Zotlabs/Module/Locs.php:125 +msgid "Use this form to drop the location if the hub is no longer operating." msgstr "" #: ../../Zotlabs/Module/Sources.php:41 @@ -7143,11 +14466,6 @@ msgid "" "separated)" msgstr "" -#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 -#: ../../Zotlabs/Module/Oauth.php:117 -msgid "Optional" -msgstr "" - #: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159 msgid "Resend posts with this channel as author" msgstr "" @@ -7176,407 +14494,6 @@ msgstr "" msgid "Unable to remove source." msgstr "" -#: ../../Zotlabs/Module/Like.php:56 -msgid "Like/Dislike" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:61 -msgid "This action is restricted to members." -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." -msgstr "" - -#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 -#: ../../Zotlabs/Module/Like.php:175 -msgid "Invalid request." -msgstr "" - -#: ../../Zotlabs/Module/Like.php:123 ../../include/conversation.php:122 -msgid "channel" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:152 -msgid "thing" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:198 -msgid "Channel unavailable." -msgstr "" - -#: ../../Zotlabs/Module/Like.php:246 -msgid "Previous action reversed." -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" -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" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:451 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:453 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:455 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:457 ../../addon/diaspora/Receiver.php:2178 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:459 ../../addon/diaspora/Receiver.php:2180 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:461 ../../addon/diaspora/Receiver.php:2182 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "" - -#: ../../Zotlabs/Module/Like.php:572 -msgid "Action completed." -msgstr "" - -#: ../../Zotlabs/Module/Like.php:573 -msgid "Thank you." -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:116 -msgid "No default suggestions were found." -msgstr "" - -#: ../../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 "" - -#: ../../Zotlabs/Module/Directory.php:283 -msgid "Status: " -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:285 -msgid "Homepage: " -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:334 ../../include/channel.php:1686 -msgid "Age:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1513 -#: ../../include/event.php:62 ../../include/event.php:112 -msgid "Location:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:345 -msgid "Description:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:350 ../../include/channel.php:1715 -msgid "Hometown:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:352 ../../include/channel.php:1721 -msgid "About:" -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" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:354 -msgid "Public Forum:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:357 -msgid "Keywords: " -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:360 -msgid "Don't suggest" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:362 -msgid "Common connections (estimated):" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Global Directory" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Local Directory" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:417 -msgid "Finding:" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:420 ../../Zotlabs/Module/Suggest.php:79 -#: ../../include/contact_widgets.php:24 -msgid "Channel Suggestions" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:422 -msgid "next page" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:422 -msgid "previous page" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:423 -msgid "Sort options" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:424 -msgid "Alphabetic" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:425 -msgid "Reverse Alphabetic" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:426 -msgid "Newest to Oldest" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:427 -msgid "Oldest to Newest" -msgstr "" - -#: ../../Zotlabs/Module/Directory.php:444 -msgid "No entries (some entries may be hidden)." -msgstr "" - -#: ../../Zotlabs/Module/Xchan.php:10 -msgid "Xchan Lookup" -msgstr "" - -#: ../../Zotlabs/Module/Xchan.php:13 -msgid "Lookup xchan beginning with (or webbie): " -msgstr "" - -#: ../../Zotlabs/Module/Suggest.php:40 -msgid "Suggest Channels App" -msgstr "" - -#: ../../Zotlabs/Module/Suggest.php:41 -msgid "" -"Suggestions for channels in the $Projectname network you might be interested " -"in" -msgstr "" - -#: ../../Zotlabs/Module/Suggest.php:54 -msgid "" -"No suggestions available. If this is a new site, please try again in 24 " -"hours." -msgstr "" - -#: ../../Zotlabs/Module/Suggest.php:73 ../../Zotlabs/Widget/Suggestions.php:48 -msgid "Ignore/Hide" -msgstr "" - -#: ../../Zotlabs/Module/Oexchange.php:27 -msgid "Unable to find your hub." -msgstr "" - -#: ../../Zotlabs/Module/Oexchange.php:41 -msgid "Post successful." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:77 -msgid "Unable to lookup recipient." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:84 -msgid "Unable to communicate with requested channel." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:91 -msgid "Cannot verify requested channel." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:109 -msgid "Selected channel has private message restrictions. Send failed." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:164 -msgid "Messages" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:177 -msgid "message" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:218 -msgid "Message recalled." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:231 -msgid "Conversation removed." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:246 ../../Zotlabs/Module/Mail.php:367 -msgid "Expires YYYY-MM-DD HH:MM" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:274 -msgid "Requested channel is not in this network" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:282 -msgid "Send Private Message" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 -msgid "To:" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 -msgid "Subject:" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:434 -msgid "Attach file" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:293 -msgid "Send" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:296 ../../Zotlabs/Module/Mail.php:439 -#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456 -msgid "Set expiration date" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:397 -msgid "Delete message" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:398 -msgid "Delivery report" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:399 -msgid "Recall message" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:401 -msgid "Message has been recalled." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:419 -msgid "Delete Conversation" -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." -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:425 -msgid "Send Reply" -msgstr "" - -#: ../../Zotlabs/Module/Mail.php:430 -#, php-format -msgid "Your message for %s (%s):" -msgstr "" - -#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12 -msgid "Public Hubs" -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." -msgstr "" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Hub URL" -msgstr "" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Access Type" -msgstr "" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Registration Policy" -msgstr "" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Stats" -msgstr "" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Software" -msgstr "" - -#: ../../Zotlabs/Module/Pubsites.php:49 -msgid "Rate" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:288 -msgid "webpage" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:294 -msgid "block" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:291 -msgid "layout" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:297 -msgid "menu" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:185 -#, php-format -msgid "%s element installed" -msgstr "" - -#: ../../Zotlabs/Module/Impel.php:188 -#, php-format -msgid "%s element installation failed" -msgstr "" - #: ../../Zotlabs/Module/Rbmark.php:94 msgid "Select a bookmark folder" msgstr "" @@ -7593,770 +14510,10 @@ msgstr "" msgid "Or enter new bookmark folder name" msgstr "" -#: ../../Zotlabs/Module/Filer.php:52 -msgid "Enter a folder name" -msgstr "" - -#: ../../Zotlabs/Module/Filer.php:52 -msgid "or select an existing folder (doubleclick)" -msgstr "" - -#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 -msgid "Save to Folder" -msgstr "" - -#: ../../Zotlabs/Module/Probe.php:18 -msgid "Remote Diagnostics App" -msgstr "" - -#: ../../Zotlabs/Module/Probe.php:19 -msgid "Perform diagnostics on remote channels" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:52 -msgid "Maximum daily site registrations exceeded. Please try again tomorrow." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:58 +#: ../../Zotlabs/Zot/Auth.php:152 msgid "" -"Please indicate acceptance of the Terms of Service. Registration failed." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:92 -msgid "Passwords do not match." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:135 -msgid "Registration successful. Continue to create your first channel..." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:138 -msgid "" -"Registration successful. Please check your email for validation instructions." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:145 -msgid "Your registration is pending approval by the site owner." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:148 -msgid "Your registration can not be processed." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:195 -msgid "Registration on this hub is disabled." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:204 -msgid "Registration on this hub is by approval only." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:205 ../../Zotlabs/Module/Register.php:214 -msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:213 -msgid "Registration on this hub is by invitation only." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:224 -msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:245 -#, php-format -msgid "I accept the %s for this website" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:252 -#, php-format -msgid "I am over %s years of age and accept the %s for this website" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:257 -msgid "Your email address" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:258 -msgid "Choose a password" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:259 -msgid "Please re-enter your password" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:260 -msgid "Please enter your invitation code" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:261 -msgid "Your Name" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:261 -msgid "Real names are preferred." -msgstr "" - -#: ../../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/Module/Register.php:264 -msgid "" -"Select a channel permission role for your usage needs and privacy " -"requirements." -msgstr "" - -#: ../../Zotlabs/Module/Register.php:265 -msgid "no" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:265 -msgid "yes" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:293 ../../boot.php:1656 -#: ../../include/nav.php:160 -msgid "Register" -msgstr "" - -#: ../../Zotlabs/Module/Register.php:294 -msgid "" -"This site requires email verification. After completing this form, please " -"check your email for further instructions." -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:194 -#: ../../Zotlabs/Module/Cover_photo.php:252 -msgid "Cover Photos" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:303 ../../include/items.php:4667 -msgid "female" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:304 ../../include/items.php:4668 -#, php-format -msgid "%1$s updated her %2$s" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:305 ../../include/items.php:4669 -msgid "male" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:306 ../../include/items.php:4670 -#, php-format -msgid "%1$s updated his %2$s" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:308 ../../include/items.php:4672 -#, php-format -msgid "%1$s updated their %2$s" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:310 ../../include/channel.php:2207 -msgid "cover photo" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:424 -msgid "Your cover photo may be visible to anybody on the internet" -msgstr "" - -#: ../../Zotlabs/Module/Cover_photo.php:428 -msgid "Change Cover Photo" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:23 -msgid "Documentation Search" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:436 -msgid "About" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:82 -msgid "Administrators" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:83 -msgid "Developers" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:84 -msgid "Tutorials" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:95 -msgid "$Projectname Documentation" -msgstr "" - -#: ../../Zotlabs/Module/Help.php:96 -msgid "Contents" -msgstr "" - -#: ../../Zotlabs/Module/Display.php:396 -msgid "Article" -msgstr "" - -#: ../../Zotlabs/Module/Display.php:448 -msgid "Item has been removed." -msgstr "" - -#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 -msgid "Tag removed" -msgstr "" - -#: ../../Zotlabs/Module/Tagrm.php:123 -msgid "Remove Item Tag" -msgstr "" - -#: ../../Zotlabs/Module/Tagrm.php:125 -msgid "Select a tag to remove: " -msgstr "" - -#: ../../Zotlabs/Module/Network.php:109 -msgid "No such group" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:158 -msgid "No such channel" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:242 -msgid "Privacy group is empty" -msgstr "" - -#: ../../Zotlabs/Module/Network.php:252 -msgid "Privacy group: " -msgstr "" - -#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29 -msgid "Invalid channel." -msgstr "" - -#: ../../Zotlabs/Module/Acl.php:360 -msgid "network" -msgstr "" - -#: ../../Zotlabs/Module/Home.php:72 ../../Zotlabs/Module/Home.php:80 -#: ../../Zotlabs/Lib/Enotify.php:66 ../../addon/opensearch/opensearch.php:42 -msgid "$Projectname" -msgstr "" - -#: ../../Zotlabs/Module/Home.php:90 -#, php-format -msgid "Welcome to %s" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:103 -msgid "File not found." -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:152 -msgid "Permission Denied." -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:185 -msgid "Edit file permissions" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:197 -#: ../../addon/flashcards/Mod_Flashcards.php:217 -msgid "Set/edit permissions" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:198 -msgid "Include all files and sub folders" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:199 -msgid "Return to file list" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:201 -msgid "Copy/paste this code to attach file to a post" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:202 -msgid "Copy/paste this URL to link file from a web page" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:204 -msgid "Share this file" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:205 -msgid "Show URL to this file" -msgstr "" - -#: ../../Zotlabs/Module/Filestorage.php:206 -#: ../../Zotlabs/Storage/Browser.php:411 -msgid "Show in your contacts shared folder" -msgstr "" - -#: ../../Zotlabs/Module/Common.php:14 -msgid "No channel." -msgstr "" - -#: ../../Zotlabs/Module/Common.php:45 -msgid "No connections in common." -msgstr "" - -#: ../../Zotlabs/Module/Common.php:65 -msgid "View Common Connections" -msgstr "" - -#: ../../Zotlabs/Module/Email_resend.php:30 -msgid "Email verification resent" -msgstr "" - -#: ../../Zotlabs/Module/Email_resend.php:33 -msgid "Unable to resend email verification message." -msgstr "" - -#: ../../Zotlabs/Module/Viewconnections.php:65 -msgid "No connections." -msgstr "" - -#: ../../Zotlabs/Module/Viewconnections.php:83 -#, php-format -msgid "Visit %s's profile [%s]" -msgstr "" - -#: ../../Zotlabs/Module/Viewconnections.php:113 -msgid "View Connections" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:97 -msgid "Blocked accounts" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:98 -msgid "Expired accounts" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:99 -msgid "Expiring accounts" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:120 -msgid "Message queues" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:134 -msgid "Your software should be updated" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:139 -msgid "Summary" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Registered accounts" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:143 -msgid "Pending registrations" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:144 -msgid "Registered channels" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Active addons" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Version" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Repository version (master)" -msgstr "" - -#: ../../Zotlabs/Module/Admin.php:148 -msgid "Repository version (dev)" -msgstr "" - -#: ../../Zotlabs/Module/Service_limits.php:23 -msgid "No service class restrictions found." -msgstr "" - -#: ../../Zotlabs/Module/Rate.php:156 -msgid "Website:" -msgstr "" - -#: ../../Zotlabs/Module/Rate.php:159 -#, php-format -msgid "Remote Channel [%s] (not yet known on this site)" -msgstr "" - -#: ../../Zotlabs/Module/Rate.php:160 -msgid "Rating (this information is public)" -msgstr "" - -#: ../../Zotlabs/Module/Rate.php:161 -msgid "Optionally explain your rating (this information is public)" -msgstr "" - -#: ../../Zotlabs/Module/Card_edit.php:128 -msgid "Edit Card" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:19 -msgid "No valid account found." -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:33 -msgid "Password reset request issued. Check your email." -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 -#, php-format -msgid "Site Member (%s)" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 -#, php-format -msgid "Password reset requested at %s" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:68 -msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1685 -msgid "Password Reset" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:92 -msgid "Your password has been reset as requested." -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:93 -msgid "Your new password is" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:94 -msgid "Save or copy your new password - and then" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:95 -msgid "click here to login" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:96 -msgid "" -"Your password may be changed from the <em>Settings</em> page after " -"successful login." -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:117 -#, php-format -msgid "Your password has changed at %s" -msgstr "" - -#: ../../Zotlabs/Module/Lostpass.php:130 -msgid "Forgot your Password?" -msgstr "" - -#: ../../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 "" - -#: ../../Zotlabs/Module/Lostpass.php:132 -msgid "Email Address" -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:45 -msgid "Name is required" -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:49 -msgid "Key and Secret are required" -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:100 -msgid "OAuth Apps Manager App" -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:101 -msgid "OAuth authentication tokens for mobile and remote apps" -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140 -#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:614 -msgid "Consumer Key" -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 -msgid "Icon url" -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:128 -msgid "Application not found." -msgstr "" - -#: ../../Zotlabs/Module/Oauth.php:171 -msgid "Connected OAuth Apps" -msgstr "" - -#: ../../Zotlabs/Module/Notifications.php:60 -#: ../../Zotlabs/Lib/ThreadItem.php:450 -msgid "Mark all seen" -msgstr "" - -#: ../../Zotlabs/Lib/Activity.php:1559 -#, php-format -msgid "Likes %1$s's %2$s" -msgstr "" - -#: ../../Zotlabs/Lib/Activity.php:1562 -#, php-format -msgid "Doesn't like %1$s's %2$s" -msgstr "" - -#: ../../Zotlabs/Lib/Activity.php:1565 -#, php-format -msgid "Will attend %1$s's %2$s" -msgstr "" - -#: ../../Zotlabs/Lib/Activity.php:1568 -#, php-format -msgid "Will not attend %1$s's %2$s" -msgstr "" - -#: ../../Zotlabs/Lib/Activity.php:1571 -#, php-format -msgid "May attend %1$s's %2$s" -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" -msgstr "" - -#: ../../Zotlabs/Lib/Techlevels.php:10 -msgid "0. Beginner/Basic" -msgstr "" - -#: ../../Zotlabs/Lib/Techlevels.php:11 -msgid "1. Novice - not skilled but willing to learn" -msgstr "" - -#: ../../Zotlabs/Lib/Techlevels.php:12 -msgid "2. Intermediate - somewhat comfortable" -msgstr "" - -#: ../../Zotlabs/Lib/Techlevels.php:13 -msgid "3. Advanced - very comfortable" -msgstr "" - -#: ../../Zotlabs/Lib/Techlevels.php:14 -msgid "4. Expert - I can write computer code" -msgstr "" - -#: ../../Zotlabs/Lib/Techlevels.php:15 -msgid "5. Wizard - I probably know more than you do" -msgstr "" - -#: ../../Zotlabs/Lib/Libzot.php:652 ../../include/zot.php:801 -msgid "Unable to verify channel signature" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:322 -msgid "Apps" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:323 -msgid "Affinity Tool" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:326 -msgid "Site Admin" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:327 ../../addon/buglink/buglink.php:16 -msgid "Report Bug" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:328 ../../include/nav.php:492 -msgid "Bookmarks" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:329 ../../Zotlabs/Widget/Chatroom_list.php:16 -#: ../../include/nav.php:479 ../../include/nav.php:482 -msgid "Chatrooms" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:330 -msgid "Content Filter" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:331 -#: ../../addon/content_import/Mod_content_import.php:135 -msgid "Content Import" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:333 -msgid "Remote Diagnostics" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:334 -msgid "Suggest Channels" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1676 ../../include/nav.php:122 -#: ../../include/nav.php:126 -msgid "Login" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:337 -msgid "Stream" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:341 ../../include/nav.php:541 -msgid "Wiki" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:342 ../../include/features.php:104 -msgid "Channel Home" -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" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:346 ../../include/features.php:192 -msgid "Directory" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:348 -msgid "Mail" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:351 -msgid "Chat" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:353 -msgid "Probe" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:354 -msgid "Suggest" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:355 -msgid "Random Channel" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:356 -msgid "Invite" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:357 ../../Zotlabs/Widget/Admin.php:26 -msgid "Features" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:358 ../../addon/openid/MysqlProvider.php:69 -msgid "Language" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:359 -msgid "Post" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:360 ../../addon/openid/MysqlProvider.php:58 -#: ../../addon/openid/MysqlProvider.php:59 -#: ../../addon/openid/MysqlProvider.php:60 -msgid "Profile Photo" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:362 ../../include/features.php:375 -msgid "Profiles" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:364 -msgid "Notifications" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:365 -msgid "Order Apps" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:366 -msgid "CardDAV" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:368 -msgid "Guest Access" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:369 ../../Zotlabs/Widget/Notes.php:21 -msgid "Notes" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:370 -msgid "OAuth Apps Manager" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:371 -msgid "OAuth2 Apps Manager" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:372 -msgid "PDL Editor" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:374 -msgid "Premium Channel" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:376 -msgid "My Chatrooms" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:377 -msgid "Channel Export" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:554 -msgid "Purchase" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:559 -msgid "Undelete" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:568 -msgid "Add to app-tray" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:569 -msgid "Remove from app-tray" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:570 -msgid "Pin to navbar" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:571 -msgid "Unpin from navbar" +"Remote authentication blocked. You are logged into this site locally. Please " +"logout and retry." msgstr "" #: ../../Zotlabs/Lib/Permcat.php:82 @@ -8379,238 +14536,39 @@ msgctxt "permcat" msgid "publisher" msgstr "" -#: ../../Zotlabs/Lib/NativeWikiPage.php:42 -#: ../../Zotlabs/Lib/NativeWikiPage.php:94 -msgid "(No Title)" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:109 -msgid "Wiki page create failed." -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:122 -msgid "Wiki not found." -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:133 -msgid "Destination name already exists" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:166 -#: ../../Zotlabs/Lib/NativeWikiPage.php:362 -msgid "Page not found" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:197 -msgid "Error reading page content" -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" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:390 -msgid "Page update failed." -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:424 -msgid "Nothing deleted" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:490 -msgid "Compare: object not found." -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:496 -msgid "Page updated" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:499 -msgid "Untitled" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:505 -msgid "Wiki resource_id required for git commit" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:562 -#: ../../Zotlabs/Widget/Wiki_page_history.php:23 -msgctxt "wiki_history" -msgid "Message" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:563 -#: ../../Zotlabs/Widget/Wiki_page_history.php:24 -msgid "Date" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:565 -#: ../../Zotlabs/Widget/Wiki_page_history.php:26 -msgid "Compare" -msgstr "" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:754 -#: ../../include/bbcode.php:924 -msgid "Different viewers will see this text differently" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:34 -#: ../../include/acl_selectors.php:33 -msgid "Visible to your default audience" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../include/acl_selectors.php:106 -msgid "Only me" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Public" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -msgid "Anybody in the $Projectname network" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:110 +#: ../../Zotlabs/Lib/Activity.php:1656 #, php-format -msgid "Any account on %s" +msgid "Likes %1$s's %2$s" msgstr "" -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Any of my connections" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Only connections I specifically allow" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:113 -msgid "Anybody authenticated (could include visitors from other networks)" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:114 -msgid "Any connections including those who haven't yet been approved" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:150 -msgid "" -"This is your default setting for the audience of your normal stream, and " -"posts." -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:151 -msgid "" -"This is your default setting for who can view your default channel profile" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:152 -msgid "This is your default setting for who can view your connections" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:153 -msgid "" -"This is your default setting for who can view your file storage and photos" -msgstr "" - -#: ../../Zotlabs/Lib/PermissionDescription.php:154 -msgid "This is your default setting for the audience of your webpages" -msgstr "" - -#: ../../Zotlabs/Lib/Libzotdir.php:160 ../../include/dir_fns.php:141 -msgid "Directory Options" -msgstr "" - -#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../include/dir_fns.php:143 -msgid "Safe Mode" -msgstr "" - -#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../include/dir_fns.php:144 -msgid "Public Forums Only" -msgstr "" - -#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../include/dir_fns.php:145 -msgid "This Website Only" -msgstr "" - -#: ../../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 "" - -#: ../../Zotlabs/Lib/Group.php:270 ../../include/group.php:264 -msgid "Add new connections to this privacy group" -msgstr "" - -#: ../../Zotlabs/Lib/Group.php:302 ../../include/group.php:298 -msgid "edit" -msgstr "" - -#: ../../Zotlabs/Lib/Group.php:325 ../../include/group.php:321 -msgid "Edit group" -msgstr "" - -#: ../../Zotlabs/Lib/Group.php:326 ../../include/group.php:322 -msgid "Add privacy group" -msgstr "" - -#: ../../Zotlabs/Lib/Group.php:327 ../../include/group.php:323 -msgid "Channels not in any privacy group" -msgstr "" - -#: ../../Zotlabs/Lib/Group.php:329 ../../Zotlabs/Widget/Savedsearch.php:84 -#: ../../include/group.php:325 -msgid "add" -msgstr "" - -#: ../../Zotlabs/Lib/Chatroom.php:23 -msgid "Missing room name" -msgstr "" - -#: ../../Zotlabs/Lib/Chatroom.php:32 -msgid "Duplicate room name" -msgstr "" - -#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 -msgid "Invalid room specifier." -msgstr "" - -#: ../../Zotlabs/Lib/Chatroom.php:122 -msgid "Room not found." -msgstr "" - -#: ../../Zotlabs/Lib/Chatroom.php:143 -msgid "Room is full" -msgstr "" - -#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2632 +#: ../../Zotlabs/Lib/Activity.php:1659 #, php-format -msgid "Unable to verify site signature for %s" +msgid "Doesn't like %1$s's %2$s" +msgstr "" + +#: ../../Zotlabs/Lib/Activity.php:1662 +#, php-format +msgid "Will attend %1$s's %2$s" +msgstr "" + +#: ../../Zotlabs/Lib/Activity.php:1665 +#, php-format +msgid "Will not attend %1$s's %2$s" +msgstr "" + +#: ../../Zotlabs/Lib/Activity.php:1668 +#, php-format +msgid "May attend %1$s's %2$s" msgstr "" #: ../../Zotlabs/Lib/Enotify.php:60 msgid "$Projectname Notification" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:336 -#: ../../addon/diaspora/util.php:349 ../../addon/diaspora/p.php:48 -msgid "$projectname" -msgstr "" - #: ../../Zotlabs/Lib/Enotify.php:63 msgid "Thank You," msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:65 ../../addon/hubwall/hubwall.php:33 -#, php-format -msgid "%s Administrator" -msgstr "" - #: ../../Zotlabs/Lib/Enotify.php:66 #, php-format msgid "This email was sent by %1$s at %2$s." @@ -8865,6 +14823,26 @@ msgstr "" msgid "edited a comment dated %s" msgstr "" +#: ../../Zotlabs/Lib/Chatroom.php:23 +msgid "Missing room name" +msgstr "" + +#: ../../Zotlabs/Lib/Chatroom.php:32 +msgid "Duplicate room name" +msgstr "" + +#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 +msgid "Invalid room specifier." +msgstr "" + +#: ../../Zotlabs/Lib/Chatroom.php:122 +msgid "Room not found." +msgstr "" + +#: ../../Zotlabs/Lib/Chatroom.php:143 +msgid "Room is full" +msgstr "" + #: ../../Zotlabs/Lib/NativeWiki.php:143 msgid "Wiki updated successfully" msgstr "" @@ -8873,22 +14851,205 @@ msgstr "" msgid "Wiki files deleted successfully" msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:67 -msgid "Source code of failed update: " +#: ../../Zotlabs/Lib/Apps.php:322 +msgid "Apps" msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:88 -#, php-format -msgid "Update Error at %s" +#: ../../Zotlabs/Lib/Apps.php:323 +msgid "Affinity Tool" msgstr "" -#: ../../Zotlabs/Lib/DB_Upgrade.php:94 -#, php-format -msgid "Update %s failed. See error logs." +#: ../../Zotlabs/Lib/Apps.php:326 +msgid "Site Admin" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:103 ../../include/conversation.php:700 -msgid "Private Message" +#: ../../Zotlabs/Lib/Apps.php:330 +msgid "Content Filter" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:333 +msgid "Remote Diagnostics" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:334 +msgid "Suggest Channels" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:337 +msgid "Stream" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:348 +msgid "Mail" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:351 +msgid "Chat" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:353 +msgid "Probe" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:354 +msgid "Suggest" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:355 +msgid "Random Channel" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:356 +msgid "Invite" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:359 +msgid "Post" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:364 +msgid "Notifications" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:365 +msgid "Order Apps" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:366 +msgid "CardDAV" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:368 +msgid "Guest Access" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:370 +msgid "OAuth Apps Manager" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:371 +msgid "OAuth2 Apps Manager" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:372 +msgid "PDL Editor" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:374 +msgid "Premium Channel" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:376 +msgid "My Chatrooms" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:377 +msgid "Channel Export" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:554 +msgid "Purchase" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:559 +msgid "Undelete" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:568 +msgid "Add to app-tray" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:569 +msgid "Remove from app-tray" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:570 +msgid "Pin to navbar" +msgstr "" + +#: ../../Zotlabs/Lib/Apps.php:571 +msgid "Unpin from navbar" +msgstr "" + +#: ../../Zotlabs/Lib/Techlevels.php:10 +msgid "0. Beginner/Basic" +msgstr "" + +#: ../../Zotlabs/Lib/Techlevels.php:11 +msgid "1. Novice - not skilled but willing to learn" +msgstr "" + +#: ../../Zotlabs/Lib/Techlevels.php:12 +msgid "2. Intermediate - somewhat comfortable" +msgstr "" + +#: ../../Zotlabs/Lib/Techlevels.php:13 +msgid "3. Advanced - very comfortable" +msgstr "" + +#: ../../Zotlabs/Lib/Techlevels.php:14 +msgid "4. Expert - I can write computer code" +msgstr "" + +#: ../../Zotlabs/Lib/Techlevels.php:15 +msgid "5. Wizard - I probably know more than you do" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:42 +#: ../../Zotlabs/Lib/NativeWikiPage.php:94 +msgid "(No Title)" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:109 +msgid "Wiki page create failed." +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:122 +msgid "Wiki not found." +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:133 +msgid "Destination name already exists" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:166 +#: ../../Zotlabs/Lib/NativeWikiPage.php:362 +msgid "Page not found" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:197 +msgid "Error reading page content" +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" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:390 +msgid "Page update failed." +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:424 +msgid "Nothing deleted" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:490 +msgid "Compare: object not found." +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:496 +msgid "Page updated" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:499 +msgid "Untitled" +msgstr "" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:505 +msgid "Wiki resource_id required for git commit" msgstr "" #: ../../Zotlabs/Lib/ThreadItem.php:130 @@ -8899,10 +15060,6 @@ msgstr "" msgid "Admin Delete" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:178 ../../include/conversation.php:690 -msgid "Select" -msgstr "" - #: ../../Zotlabs/Lib/ThreadItem.php:203 msgid "I will attend" msgstr "" @@ -8927,34 +15084,10 @@ msgstr "" msgid "I abstain" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:267 ../../include/conversation.php:695 -msgid "Toggle Star Status" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:278 ../../include/conversation.php:707 -msgid "Message signature validated" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:279 ../../include/conversation.php:708 -msgid "Message signature incorrect" -msgstr "" - #: ../../Zotlabs/Lib/ThreadItem.php:287 msgid "Add Tag" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:291 ../../include/conversation.php:891 -msgid "Conversation Tools" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:307 ../../include/taxonomy.php:573 -msgid "like" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:308 ../../include/taxonomy.php:574 -msgid "dislike" -msgstr "" - #: ../../Zotlabs/Lib/ThreadItem.php:309 msgid "Reply on this comment" msgstr "" @@ -9007,21 +15140,6 @@ msgstr "" msgid "via Wall-To-Wall:" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:401 ../../include/conversation.php:766 -#, php-format -msgid "from %s" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:404 ../../include/conversation.php:769 -#, php-format -msgid "last edited: %s" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:405 ../../include/conversation.php:770 -#, php-format -msgid "Expires: %s" -msgstr "" - #: ../../Zotlabs/Lib/ThreadItem.php:413 msgid "Attend" msgstr "" @@ -9042,58 +15160,14 @@ msgstr "" msgid "Go to previous comment" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:440 -#: ../../addon/bookmarker/bookmarker.php:38 -msgid "Save Bookmarks" -msgstr "" - #: ../../Zotlabs/Lib/ThreadItem.php:441 msgid "Add to Calendar" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../include/conversation.php:483 -msgid "This is an unsaved preview" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:502 ../../include/js_strings.php:7 -#, php-format -msgid "%s show all" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:797 ../../addon/hsse/hsse.php:200 -#: ../../include/conversation.php:1406 -msgid "Bold" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:798 ../../addon/hsse/hsse.php:201 -#: ../../include/conversation.php:1407 -msgid "Italic" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:799 ../../addon/hsse/hsse.php:202 -#: ../../include/conversation.php:1408 -msgid "Underline" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:800 ../../addon/hsse/hsse.php:203 -#: ../../include/conversation.php:1409 -msgid "Quote" -msgstr "" - -#: ../../Zotlabs/Lib/ThreadItem.php:801 ../../addon/hsse/hsse.php:204 -#: ../../include/conversation.php:1410 -msgid "Code" -msgstr "" - #: ../../Zotlabs/Lib/ThreadItem.php:802 msgid "Image" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:803 ../../addon/hsse/hsse.php:205 -#: ../../include/conversation.php:1411 -msgid "Attach/Upload file" -msgstr "" - #: ../../Zotlabs/Lib/ThreadItem.php:804 msgid "Insert Link" msgstr "" @@ -9114,26 +15188,213 @@ msgstr "" msgid "Your website URL (optional)" msgstr "" -#: ../../Zotlabs/Zot/Auth.php:152 -msgid "" -"Remote authentication blocked. You are logged into this site locally. Please " -"logout and retry." +#: ../../Zotlabs/Lib/DB_Upgrade.php:67 +msgid "Source code of failed update: " msgstr "" -#: ../../Zotlabs/Zot/Auth.php:264 ../../addon/openid/Mod_Openid.php:76 -#: ../../addon/openid/Mod_Openid.php:178 +#: ../../Zotlabs/Lib/DB_Upgrade.php:88 #, php-format -msgid "Welcome %s. Remote authentication successful." +msgid "Update Error at %s" +msgstr "" + +#: ../../Zotlabs/Lib/DB_Upgrade.php:94 +#, php-format +msgid "Update %s failed. See error logs." +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:108 +msgid "Public" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:109 +msgid "Anybody in the $Projectname network" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:110 +#, php-format +msgid "Any account on %s" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:113 +msgid "Anybody authenticated (could include visitors from other networks)" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:114 +msgid "Any connections including those who haven't yet been approved" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:150 +msgid "" +"This is your default setting for the audience of your normal stream, and " +"posts." +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:151 +msgid "" +"This is your default setting for who can view your default channel profile" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:152 +msgid "This is your default setting for who can view your connections" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:153 +msgid "" +"This is your default setting for who can view your file storage and photos" +msgstr "" + +#: ../../Zotlabs/Lib/PermissionDescription.php:154 +msgid "This is your default setting for the audience of your webpages" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:283 +msgid "Social Networking" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:284 +msgid "Social - Federation" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:285 +msgid "Social - Mostly Public" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:286 +msgid "Social - Restricted" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:287 +msgid "Social - Private" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:290 +msgid "Community Forum" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:291 +msgid "Forum - Mostly Public" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:292 +msgid "Forum - Restricted" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:293 +msgid "Forum - Private" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:296 +msgid "Feed Republish" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:297 +msgid "Feed - Mostly Public" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:298 +msgid "Feed - Restricted" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:301 +msgid "Special Purpose" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:302 +msgid "Special - Celebrity/Soapbox" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:303 +msgid "Special - Group Repository" +msgstr "" + +#: ../../Zotlabs/Access/PermissionRoles.php:307 +msgid "Custom/Expert Mode" +msgstr "" + +#: ../../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" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:61 +msgid "Can upload/modify my file storage and photos" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:62 +msgid "Can view my channel webpages" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:63 +msgid "Can view my wiki pages" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:64 +msgid "Can create/edit my channel webpages" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:65 +msgid "Can write to my wiki pages" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:66 +msgid "Can post on my channel (wall) page" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:67 +msgid "Can comment on or like my posts" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:68 +msgid "Can send me private mail messages" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:69 +msgid "Can like/dislike profiles and profile things" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:70 +msgid "Can forward to all my channel connections via ! mentions in posts" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:71 +msgid "Can chat with me" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:72 +msgid "Can source my public posts in derived channels" +msgstr "" + +#: ../../Zotlabs/Access/Permissions.php:73 +msgid "Can administer my channel" msgstr "" #: ../../Zotlabs/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:295 msgid "parent" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2952 -msgid "Collection" -msgstr "" - #: ../../Zotlabs/Storage/Browser.php:134 msgid "Principal" msgstr "" @@ -9188,6259 +15449,40 @@ msgstr "" msgid "Drop files here to immediately upload" msgstr "" -#: ../../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/Widget/Cdav.php:37 -msgid "Select Channel" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:42 -msgid "Read-write" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:43 -msgid "Read-only" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:127 -msgid "Channel Calendar" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:131 -msgid "Shared CalDAV Calendars" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:135 -msgid "Share this calendar" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:137 -msgid "Calendar name and color" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:139 -msgid "Create new CalDAV calendar" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:141 -msgid "Calendar Name" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:142 -msgid "Calendar Tools" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:144 -msgid "Import calendar" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:145 -msgid "Select a calendar to import to" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:172 -msgid "Addressbooks" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:174 -msgid "Addressbook name" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:176 -msgid "Create new addressbook" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:177 -msgid "Addressbook Name" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:179 -msgid "Addressbook Tools" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:180 -msgid "Import addressbook" -msgstr "" - -#: ../../Zotlabs/Widget/Cdav.php:181 -msgid "Select an addressbook to import to" -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" -msgstr "" - -#: ../../Zotlabs/Widget/Eventstools.php:13 -msgid "Events Tools" -msgstr "" - -#: ../../Zotlabs/Widget/Eventstools.php:14 -msgid "Export Calendar" -msgstr "" - -#: ../../Zotlabs/Widget/Eventstools.php:15 -msgid "Import Calendar" -msgstr "" - -#: ../../Zotlabs/Widget/Suggestedchats.php:32 -msgid "Suggested Chatrooms" -msgstr "" - -#: ../../Zotlabs/Widget/Hq_controls.php:14 -msgid "HQ Control Panel" -msgstr "" - -#: ../../Zotlabs/Widget/Hq_controls.php:17 -msgid "Create a new post" -msgstr "" - -#: ../../Zotlabs/Widget/Mailmenu.php:13 -msgid "Private Mail Menu" -msgstr "" - -#: ../../Zotlabs/Widget/Mailmenu.php:15 -msgid "Combined View" -msgstr "" - -#: ../../Zotlabs/Widget/Mailmenu.php:20 -msgid "Inbox" -msgstr "" - -#: ../../Zotlabs/Widget/Mailmenu.php:25 -msgid "Outbox" -msgstr "" - -#: ../../Zotlabs/Widget/Mailmenu.php:30 -msgid "New Message" -msgstr "" - -#: ../../Zotlabs/Widget/Chatroom_list.php:20 -msgid "Overview" -msgstr "" - -#: ../../Zotlabs/Widget/Rating.php:51 -msgid "Rating Tools" -msgstr "" - -#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 -msgid "Rate Me" -msgstr "" - -#: ../../Zotlabs/Widget/Rating.php:60 -msgid "View Ratings" -msgstr "" - -#: ../../Zotlabs/Widget/Activity.php:50 -msgctxt "widget" -msgid "Activity" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:36 -#, php-format -msgid "Show posts related to the %s privacy group" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:45 -msgid "Show my privacy groups" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:66 -msgid "Show posts to this forum" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:77 -msgid "Show forums" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:91 -msgid "Starred Posts" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:95 -msgid "Show posts that I have starred" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:106 -msgid "Personal Posts" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:110 -msgid "Show posts that mention or involve me" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:131 -#, php-format -msgid "Show posts that I have filed to %s" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:137 -#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53 -#: ../../include/features.php:311 -msgid "Saved Folders" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_filter.php:141 -msgid "Show filed post categories" -msgstr "" - -#: ../../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/Widget/Activity_filter.php:196 -msgid "Stream Filters" -msgstr "" - -#: ../../Zotlabs/Widget/Follow.php:22 -#, php-format -msgid "You have %1$.0f of %2$.0f allowed connections." -msgstr "" - -#: ../../Zotlabs/Widget/Follow.php:29 -msgid "Add New Connection" -msgstr "" - -#: ../../Zotlabs/Widget/Follow.php:30 -msgid "Enter channel address" -msgstr "" - -#: ../../Zotlabs/Widget/Follow.php:31 -msgid "Examples: bob@example.com, https://example.com/barbara" -msgstr "" - -#: ../../Zotlabs/Widget/Archive.php:43 -msgid "Archives" -msgstr "" - -#: ../../Zotlabs/Widget/Conversations.php:17 -msgid "Received Messages" -msgstr "" - -#: ../../Zotlabs/Widget/Conversations.php:21 -msgid "Sent Messages" -msgstr "" - -#: ../../Zotlabs/Widget/Conversations.php:25 -msgid "Conversations" -msgstr "" - -#: ../../Zotlabs/Widget/Conversations.php:37 -msgid "No messages." -msgstr "" - -#: ../../Zotlabs/Widget/Conversations.php:57 -msgid "Delete conversation" -msgstr "" - -#: ../../Zotlabs/Widget/Chatroom_members.php:11 -msgid "Chat Members" -msgstr "" - -#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 -msgid "photo/image" -msgstr "" - -#: ../../Zotlabs/Widget/Savedsearch.php:75 -msgid "Remove term" -msgstr "" - -#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:303 -msgid "Saved Searches" -msgstr "" - -#: ../../Zotlabs/Widget/Wiki_pages.php:34 -#: ../../Zotlabs/Widget/Wiki_pages.php:91 -msgid "Add new page" -msgstr "" - -#: ../../Zotlabs/Widget/Wiki_pages.php:85 -msgid "Wiki Pages" -msgstr "" - -#: ../../Zotlabs/Widget/Wiki_pages.php:96 -msgid "Page name" -msgstr "" - -#: ../../Zotlabs/Widget/Affinity.php:54 -msgid "Refresh" -msgstr "" - -#: ../../Zotlabs/Widget/Tasklist.php:23 -msgid "Tasks" -msgstr "" - -#: ../../Zotlabs/Widget/Suggestions.php:53 -msgid "Suggestions" -msgstr "" - -#: ../../Zotlabs/Widget/Suggestions.php:54 -msgid "See more..." -msgstr "" - -#: ../../Zotlabs/Widget/Activity_order.php:90 -msgid "Commented Date" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_order.php:94 -msgid "Order by last commented date" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_order.php:97 -msgid "Posted Date" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_order.php:101 -msgid "Order by last posted date" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_order.php:104 -msgid "Date Unthreaded" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_order.php:108 -msgid "Order unthreaded by date" -msgstr "" - -#: ../../Zotlabs/Widget/Activity_order.php:123 -msgid "Stream Order" -msgstr "" - -#: ../../Zotlabs/Widget/Cover_photo.php:65 -msgid "Click to show more" -msgstr "" - -#: ../../Zotlabs/Widget/Tagcloud.php:22 ../../include/taxonomy.php:320 -#: ../../include/taxonomy.php:449 ../../include/taxonomy.php:470 -msgid "Tags" -msgstr "" - -#: ../../Zotlabs/Widget/Appstore.php:11 -msgid "App Collections" -msgstr "" - -#: ../../Zotlabs/Widget/Appstore.php:13 -msgid "Installed apps" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:31 -msgid "Profile Creation" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:33 -msgid "Upload profile photo" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:34 -msgid "Upload cover photo" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:35 ../../include/nav.php:115 -msgid "Edit your profile" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:38 -msgid "Find and Connect with others" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:40 -msgid "View the directory" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:42 -msgid "Manage your connections" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:45 -msgid "Communicate" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:47 -msgid "View your channel homepage" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:48 -msgid "View your network stream" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:54 -msgid "Documentation" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:57 -msgid "Missing Features?" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:59 -msgid "Pin apps to navigation bar" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:60 -msgid "Install more apps" -msgstr "" - -#: ../../Zotlabs/Widget/Newmember.php:71 -msgid "View public stream" -msgstr "" - -#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60 -msgid "Member registrations waiting for confirmation" -msgstr "" - -#: ../../Zotlabs/Widget/Admin.php:29 -msgid "Inspect queue" -msgstr "" - -#: ../../Zotlabs/Widget/Admin.php:31 -msgid "DB updates" -msgstr "" - -#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:192 -msgid "Admin" -msgstr "" - -#: ../../Zotlabs/Widget/Admin.php:56 -msgid "Addon Features" -msgstr "" - -#: ../../Zotlabs/Widget/Settings_menu.php:32 -msgid "Account settings" -msgstr "" - -#: ../../Zotlabs/Widget/Settings_menu.php:38 -msgid "Channel settings" -msgstr "" - -#: ../../Zotlabs/Widget/Settings_menu.php:46 -msgid "Display settings" -msgstr "" - -#: ../../Zotlabs/Widget/Settings_menu.php:53 -msgid "Manage locations" -msgstr "" - -#: ../../Zotlabs/Widget/Bookmarkedchats.php:24 -msgid "Bookmarked Chatrooms" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:16 -msgid "New Network Activity" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:17 -msgid "New Network Activity Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:20 -msgid "View your network activity" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:23 -msgid "Mark all notifications read" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:26 -#: ../../Zotlabs/Widget/Notifications.php:45 -#: ../../Zotlabs/Widget/Notifications.php:152 -msgid "Show new posts only" -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" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:35 -msgid "New Home Activity" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:36 -msgid "New Home Activity Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:39 -msgid "View your home activity" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:42 -#: ../../Zotlabs/Widget/Notifications.php:149 -msgid "Mark all notifications seen" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:54 -msgid "New Mails" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:55 -msgid "New Mails Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:58 -msgid "View your private mails" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:61 -msgid "Mark all messages seen" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:69 -msgid "New Events" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:70 -msgid "New Events Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:73 -msgid "View events" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:76 -msgid "Mark all events seen" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:85 -msgid "New Connections Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:88 -msgid "View all connections" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:96 -msgid "New Files" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:97 -msgid "New Files Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:104 -#: ../../Zotlabs/Widget/Notifications.php:105 -msgid "Notices" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:108 -msgid "View all notices" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:111 -msgid "Mark all notices seen" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:132 -msgid "New Registrations" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:133 -msgid "New Registrations Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:143 -msgid "Public Stream Notifications" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:146 -msgid "View the public stream" -msgstr "" - -#: ../../Zotlabs/Widget/Notifications.php:161 -msgid "Sorry, you have got no notifications at the moment" -msgstr "" - -#: ../../util/nconfig.php:34 -msgid "Source channel not found." -msgstr "" - -#: ../../widget/Netselect/Netselect.php:24 -msgid "Network/Protocol" -msgstr "" - -#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1735 -msgid "Zot" -msgstr "" - -#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1733 -msgid "Diaspora" -msgstr "" - -#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1726 -#: ../../include/network.php:1727 -msgid "Friendica" -msgstr "" - -#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1728 -msgid "OStatus" -msgstr "" - -#: ../../boot.php:1655 +#: ../../boot.php:1653 msgid "Create an account to access services and applications" msgstr "" -#: ../../boot.php:1675 ../../include/nav.php:107 ../../include/nav.php:136 -#: ../../include/nav.php:155 -msgid "Logout" -msgstr "" - -#: ../../boot.php:1679 +#: ../../boot.php:1677 msgid "Login/Email" msgstr "" -#: ../../boot.php:1680 +#: ../../boot.php:1678 msgid "Password" msgstr "" -#: ../../boot.php:1681 +#: ../../boot.php:1679 msgid "Remember me" msgstr "" -#: ../../boot.php:1684 +#: ../../boot.php:1682 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:2480 +#: ../../boot.php:2478 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "" -#: ../../boot.php:2485 +#: ../../boot.php:2483 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../boot.php:2601 +#: ../../boot.php:2599 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "" -#: ../../boot.php:2606 +#: ../../boot.php:2604 msgid "Cron/Scheduled tasks not running." msgstr "" - -#: ../../boot.php:2607 ../../include/datetime.php:238 -msgid "never" -msgstr "" - -#: ../../store/[data]/smarty3/compiled/a0a1289f91f53b2c12e4e0b45ffe8291540ba895_0.file.cover_photo.tpl.php:127 -msgid "Cover Photo" -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)" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:98 -msgid "Theme settings" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:100 -#: ../../view/theme/redbasic/php/config.php:99 -msgid "Narrow navbar" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:101 -#: ../../view/theme/redbasic/php/config.php:100 -msgid "Navigation bar background color" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:102 -#: ../../view/theme/redbasic/php/config.php:101 -msgid "Navigation bar icon color " -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:103 -#: ../../view/theme/redbasic/php/config.php:102 -msgid "Navigation bar active icon color " -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:104 -#: ../../view/theme/redbasic/php/config.php:103 -msgid "Link color" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:105 -#: ../../view/theme/redbasic/php/config.php:104 -msgid "Set font-color for banner" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:106 -#: ../../view/theme/redbasic/php/config.php:105 -msgid "Set the background color" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:107 -#: ../../view/theme/redbasic/php/config.php:106 -msgid "Set the background image" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:108 -#: ../../view/theme/redbasic/php/config.php:107 -msgid "Set the background color of items" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:109 -#: ../../view/theme/redbasic/php/config.php:108 -msgid "Set the background color of comments" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:110 -#: ../../view/theme/redbasic/php/config.php:109 -msgid "Set font-size for the entire application" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:110 -#: ../../view/theme/redbasic/php/config.php:109 -msgid "Examples: 1rem, 100%, 16px" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:110 -msgid "Set font-color for posts and comments" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:112 -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Set radius of corners" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:112 -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Example: 4px" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:113 -#: ../../view/theme/redbasic/php/config.php:112 -msgid "Set shadow depth of photos" -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" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:114 -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Leave empty for default width" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:115 -msgid "Left align page content" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:116 -#: ../../view/theme/redbasic/php/config.php:114 -msgid "Set size of conversation author photo" -msgstr "" - -#: ../../view/theme/redbasic_c/php/config.php:117 -#: ../../view/theme/redbasic/php/config.php:115 -msgid "Set size of followup author photos" -msgstr "" - -#: ../../view/theme/redbasic/php/config.php:116 -msgid "Show advanced settings" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:57 -msgid "Errors encountered deleting database table " -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:612 -msgid "Submit Settings" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:96 -msgid "Drop tables when uninstalling?" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:96 -msgid "" -"If checked, the Rendezvous database tables will be deleted when the plugin " -"is uninstalled." -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:97 -msgid "Mapbox Access Token" -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." -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:162 -msgid "Rendezvous" -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." -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:168 -msgid "Welcome to Rendezvous!" -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." -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:171 -msgid "Let's meet here" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:174 -msgid "New marker" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:175 -msgid "Edit marker" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:176 -msgid "New identity" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:177 -msgid "Delete marker" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:178 -msgid "Delete member" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:179 -msgid "Edit proximity alert" -msgstr "" - -#: ../../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 "" - -#: ../../addon/rendezvous/rendezvous.php:180 -#: ../../addon/rendezvous/rendezvous.php:185 -msgid "distance" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:181 -msgid "Proximity alert distance (meters)" -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):" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:183 -msgid "Marker proximity alert" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:186 -msgid "Reminder note" -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:187 -msgid "" -"Enter a note to be displayed when you are within the specified proximity..." -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:199 -msgid "Add new rendezvous" -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." -msgstr "" - -#: ../../addon/rendezvous/rendezvous.php:232 -msgid "You have no rendezvous. Press the button above to create a rendezvous!" -msgstr "" - -#: ../../addon/skeleton/Mod_Skeleton.php:32 -msgid "Skeleton App" -msgstr "" - -#: ../../addon/skeleton/Mod_Skeleton.php:33 -msgid "A skeleton for addons, you can copy/paste" -msgstr "" - -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "Some setting" -msgstr "" - -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "A setting" -msgstr "" - -#: ../../addon/skeleton/Mod_Skeleton.php:48 -msgid "Skeleton Settings" -msgstr "" - -#: ../../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 "" - -#: ../../addon/gnusoc/Mod_Gnusoc.php:22 -msgid "GNU-Social Protocol App" -msgstr "" - -#: ../../addon/gnusoc/Mod_Gnusoc.php:34 -msgid "GNU-Social Protocol" -msgstr "" - -#: ../../addon/gnusoc/gnusoc.php:451 -msgid "Follow" -msgstr "" - -#: ../../addon/gnusoc/gnusoc.php:454 -#, php-format -msgid "%1$s is now following %2$s" -msgstr "" - -#: ../../addon/planets/Mod_Planets.php:20 -#: ../../addon/planets/Mod_Planets.php:23 -msgid "Random Planet App" -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" -msgstr "" - -#: ../../addon/planets/Mod_Planets.php:25 -msgid "" -"Set a random planet from the Star Wars Empire as your location when posting" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:50 -#: ../../addon/openclipatar/openclipatar.php:128 -msgid "System defaults:" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:54 -msgid "Preferred Clipart IDs" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:54 -msgid "List of preferred clipart ids. These will be shown first." -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:55 -msgid "Default Search Term" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:55 -msgid "The default search term. These will be shown second." -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:56 -msgid "Return After" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:56 -msgid "Page to load after image selection." -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1422 -#: ../../include/nav.php:115 -msgid "Edit Profile" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:59 -msgid "Profile List" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:61 -msgid "Order of Preferred" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:61 -msgid "Sort order of preferred clipart ids." -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:62 -#: ../../addon/openclipatar/openclipatar.php:68 -msgid "Newest first" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:65 -msgid "As entered" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Order of other" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Sort order of other clipart ids." -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:69 -msgid "Most downloaded first" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:70 -msgid "Most liked first" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Preferred IDs Message" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Message to display above preferred results." -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Uploaded by: " -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Drawn by: " -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:182 -#: ../../addon/openclipatar/openclipatar.php:194 -msgid "Use this image" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:192 -msgid "Or select from a free OpenClipart.org image:" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:195 -msgid "Search Term" -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:232 -msgid "Unknown error. Please try again later." -msgstr "" - -#: ../../addon/openclipatar/openclipatar.php:308 -msgid "Profile photo updated successfully." -msgstr "" - -#: ../../addon/adultphotoflag/adultphotoflag.php:24 -msgid "Flag Adult Photos" -msgstr "" - -#: ../../addon/adultphotoflag/adultphotoflag.php:25 -msgid "" -"Provide photo edit option to hide inappropriate photos from default album " -"view" -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." -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:93 -msgid "Your TOTP secret is" -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." -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:99 -msgid "Test" -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:100 -msgid "Generate New Secret" -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:101 -msgid "Go" -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:102 -msgid "Enter your password" -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:103 -msgid "enter TOTP code from your device" -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:104 -msgid "Pass!" -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:105 -msgid "Fail" -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:106 -msgid "Incorrect password, try again." -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:107 -msgid "Record your new TOTP secret and rescan the QR code above." -msgstr "" - -#: ../../addon/totp/Settings/Totp.php:115 -msgid "TOTP Settings" -msgstr "" - -#: ../../addon/totp/Mod_Totp.php:23 -msgid "TOTP Two-Step Verification" -msgstr "" - -#: ../../addon/totp/Mod_Totp.php:24 -msgid "Enter the 2-step verification generated by your authenticator app:" -msgstr "" - -#: ../../addon/totp/Mod_Totp.php:25 -msgid "Success!" -msgstr "" - -#: ../../addon/totp/Mod_Totp.php:26 -msgid "Invalid code, please try again." -msgstr "" - -#: ../../addon/totp/Mod_Totp.php:27 -msgid "Too many invalid codes..." -msgstr "" - -#: ../../addon/totp/Mod_Totp.php:28 -msgid "Verify" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:28 -msgid "Wordpress Settings saved." -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:41 -msgid "Wordpress Post App" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:42 -msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:65 -msgid "WordPress username" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:69 -msgid "WordPress password" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:73 -msgid "WordPress API URL" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:74 -msgid "Typically https://your-blog.tld/xmlrpc.php" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:77 -msgid "WordPress blogid" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:78 -msgid "For multi-user sites such as wordpress.com, otherwise leave blank" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:82 -msgid "Post to WordPress by default" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:86 -msgid "Forward comments (requires hubzilla_wp plugin)" -msgstr "" - -#: ../../addon/wppost/Mod_Wppost.php:94 -msgid "Wordpress Post" -msgstr "" - -#: ../../addon/wppost/wppost.php:46 -msgid "Post to WordPress" -msgstr "" - -#: ../../addon/nsfw/nsfw.php:152 -msgid "Possible adult content" -msgstr "" - -#: ../../addon/nsfw/nsfw.php:167 -#, php-format -msgid "%s - view" -msgstr "" - -#: ../../addon/nsfw/Mod_Nsfw.php:22 -msgid "NSFW Settings saved." -msgstr "" - -#: ../../addon/nsfw/Mod_Nsfw.php:33 -msgid "NSFW App" -msgstr "" - -#: ../../addon/nsfw/Mod_Nsfw.php:34 -msgid "Collapse content that contains predefined words" -msgstr "" - -#: ../../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 "" - -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Comma separated list of keywords to hide" -msgstr "" - -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Word, /regular-expression/, lang=xx, lang!=xx" -msgstr "" - -#: ../../addon/nsfw/Mod_Nsfw.php:58 -msgid "NSFW" -msgstr "" - -#: ../../addon/flashcards/Mod_Flashcards.php:174 -msgid "Not allowed." -msgstr "" - -#: ../../addon/queueworker/Mod_Queueworker.php:77 -msgid "Max queueworker threads" -msgstr "" - -#: ../../addon/queueworker/Mod_Queueworker.php:91 -msgid "Assume workers dead after ___ seconds" -msgstr "" - -#: ../../addon/queueworker/Mod_Queueworker.php:105 -msgid "" -"Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)" -msgstr "" - -#: ../../addon/queueworker/Mod_Queueworker.php:116 -msgid "Queueworker Settings" -msgstr "" - -#: ../../addon/ijpost/Mod_Ijpost.php:23 -msgid "Insane Journal Crosspost Connector Settings saved." -msgstr "" - -#: ../../addon/ijpost/Mod_Ijpost.php:35 -msgid "Insane Journal Crosspost Connector App" -msgstr "" - -#: ../../addon/ijpost/Mod_Ijpost.php:36 -msgid "Relay public postings to Insane Journal" -msgstr "" - -#: ../../addon/ijpost/Mod_Ijpost.php:53 -msgid "InsaneJournal username" -msgstr "" - -#: ../../addon/ijpost/Mod_Ijpost.php:57 -msgid "InsaneJournal password" -msgstr "" - -#: ../../addon/ijpost/Mod_Ijpost.php:61 -msgid "Post to InsaneJournal by default" -msgstr "" - -#: ../../addon/ijpost/Mod_Ijpost.php:69 -msgid "Insane Journal Crosspost Connector" -msgstr "" - -#: ../../addon/ijpost/ijpost.php:45 -msgid "Post to Insane Journal" -msgstr "" - -#: ../../addon/dwpost/dwpost.php:48 -msgid "Post to Dreamwidth" -msgstr "" - -#: ../../addon/dwpost/Mod_Dwpost.php:24 -msgid "Dreamwidth Crosspost Connector Settings saved." -msgstr "" - -#: ../../addon/dwpost/Mod_Dwpost.php:36 -msgid "Dreamwidth Crosspost Connector App" -msgstr "" - -#: ../../addon/dwpost/Mod_Dwpost.php:37 -msgid "Relay public postings to Dreamwidth" -msgstr "" - -#: ../../addon/dwpost/Mod_Dwpost.php:52 -msgid "Dreamwidth username" -msgstr "" - -#: ../../addon/dwpost/Mod_Dwpost.php:56 -msgid "Dreamwidth password" -msgstr "" - -#: ../../addon/dwpost/Mod_Dwpost.php:60 -msgid "Post to Dreamwidth by default" -msgstr "" - -#: ../../addon/dwpost/Mod_Dwpost.php:68 -msgid "Dreamwidth Crosspost Connector" -msgstr "" - -#: ../../addon/notifyadmin/notifyadmin.php:34 -msgid "New registration" -msgstr "" - -#: ../../addon/notifyadmin/notifyadmin.php:42 -#, php-format -msgid "Message sent to %s. New account registration: %s" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:94 -msgid "Hubzilla Directory Stats" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:95 -msgid "Total Hubs" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:97 -msgid "Hubzilla Hubs" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:99 -msgid "Friendica Hubs" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:101 -msgid "Diaspora Pods" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:103 -msgid "Hubzilla Channels" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:105 -msgid "Friendica Channels" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:107 -msgid "Diaspora Channels" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:109 -msgid "Aged 35 and above" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:111 -msgid "Aged 34 and under" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:113 -msgid "Average Age" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:115 -msgid "Known Chatrooms" -msgstr "" - -#: ../../addon/dirstats/dirstats.php:117 -msgid "Known Tags" -msgstr "" - -#: ../../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 "" - -#: ../../addon/likebanner/likebanner.php:51 -msgid "Your Webbie:" -msgstr "" - -#: ../../addon/likebanner/likebanner.php:54 -msgid "Fontsize (px):" -msgstr "" - -#: ../../addon/likebanner/likebanner.php:68 -msgid "Link:" -msgstr "" - -#: ../../addon/likebanner/likebanner.php:70 -msgid "Like us on Hubzilla" -msgstr "" - -#: ../../addon/likebanner/likebanner.php:72 -msgid "Embed:" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:106 -msgid "Photos imported" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:129 -msgid "Redmatrix Photo Album Import" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:130 -msgid "This will import all your Redmatrix photo albums to this channel." -msgstr "" - -#: ../../addon/redphotos/redphotos.php:131 -#: ../../addon/redfiles/redfiles.php:121 -msgid "Redmatrix Server base URL" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:132 -#: ../../addon/redfiles/redfiles.php:122 -msgid "Redmatrix Login Username" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:133 -#: ../../addon/redfiles/redfiles.php:123 -msgid "Redmatrix Login Password" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:134 -msgid "Import just this album" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:134 -msgid "Leave blank to import all albums" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:135 -msgid "Maximum count to import" -msgstr "" - -#: ../../addon/redphotos/redphotos.php:135 -msgid "0 or blank to import all available" -msgstr "" - -#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 -msgid "Popular Channels" -msgstr "" - -#: ../../addon/irc/irc.php:37 -msgid "Channels to auto connect" -msgstr "" - -#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 -msgid "Comma separated list" -msgstr "" - -#: ../../addon/irc/irc.php:45 -msgid "IRC Settings" -msgstr "" - -#: ../../addon/irc/irc.php:54 -msgid "IRC settings saved." -msgstr "" - -#: ../../addon/irc/irc.php:58 -msgid "IRC Chatroom" -msgstr "" - -#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 -msgid "Gallery" -msgstr "" - -#: ../../addon/gallery/gallery.php:41 -msgid "Photo Gallery" -msgstr "" - -#: ../../addon/gallery/Mod_Gallery.php:58 -msgid "Gallery App" -msgstr "" - -#: ../../addon/gallery/Mod_Gallery.php:59 -msgid "A simple gallery for your photo albums" -msgstr "" - -#: ../../addon/ljpost/Mod_Ljpost.php:36 -msgid "Livejournal Crosspost Connector App" -msgstr "" - -#: ../../addon/ljpost/Mod_Ljpost.php:37 -msgid "Relay public posts to Livejournal" -msgstr "" - -#: ../../addon/ljpost/Mod_Ljpost.php:54 -msgid "Livejournal username" -msgstr "" - -#: ../../addon/ljpost/Mod_Ljpost.php:58 -msgid "Livejournal password" -msgstr "" - -#: ../../addon/ljpost/Mod_Ljpost.php:62 -msgid "Post to Livejournal by default" -msgstr "" - -#: ../../addon/ljpost/Mod_Ljpost.php:70 -msgid "Livejournal Crosspost Connector" -msgstr "" - -#: ../../addon/ljpost/ljpost.php:45 -msgid "Post to Livejournal" -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." -msgstr "" - -#: ../../addon/openid/openid.php:49 -msgid "The error message was:" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:52 -msgid "First Name" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:53 -msgid "Last Name" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:75 -msgid "Nickname" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:55 -msgid "Full Name" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:61 -msgid "Profile Photo 16px" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:62 -msgid "Profile Photo 32px" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:63 -msgid "Profile Photo 48px" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:64 -msgid "Profile Photo 64px" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:65 -msgid "Profile Photo 80px" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:66 -msgid "Profile Photo 128px" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:67 -msgid "Timezone" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:70 -msgid "Birth Year" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:71 -msgid "Birth Month" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:72 -msgid "Birth Day" -msgstr "" - -#: ../../addon/openid/MysqlProvider.php:73 -msgid "Birthdate" -msgstr "" - -#: ../../addon/openid/Mod_Openid.php:30 -msgid "OpenID protocol error. No ID returned." -msgstr "" - -#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 -msgid "Login failed." -msgstr "" - -#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1602 -msgid "Male" -msgstr "" - -#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1600 -msgid "Female" -msgstr "" - -#: ../../addon/randpost/randpost.php:97 -msgid "You're welcome." -msgstr "" - -#: ../../addon/randpost/randpost.php:98 -msgid "Ah shucks..." -msgstr "" - -#: ../../addon/randpost/randpost.php:99 -msgid "Don't mention it." -msgstr "" - -#: ../../addon/randpost/randpost.php:100 -msgid "<blush>" -msgstr "" - -#: ../../addon/startpage/Mod_Startpage.php:50 -msgid "Startpage App" -msgstr "" - -#: ../../addon/startpage/Mod_Startpage.php:51 -msgid "Set a preferred page to load on login from home page" -msgstr "" - -#: ../../addon/startpage/Mod_Startpage.php:62 -msgid "Page to load after login" -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)." -msgstr "" - -#: ../../addon/startpage/Mod_Startpage.php:70 -msgid "Startpage" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslap" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslapped" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shag" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shagged" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patent" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patented" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hug" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hugged" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murder" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murdered" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worship" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worshipped" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kiss" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kissed" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempt" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempted" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raise eyebrows at" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raised their eyebrows at" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insult" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insulted" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praise" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praised" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "be dubious of" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "was dubious of" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "eat" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "ate" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggle and fawn at" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggled and fawned at" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubt" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubted" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glare" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glared at" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fuck" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fucked" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonk" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonked" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declare undying love for" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declared undying love for" -msgstr "" - -#: ../../addon/diaspora/Receiver.php:1536 -#, php-format -msgid "%1$s dislikes %2$s's %3$s" -msgstr "" - -#: ../../addon/diaspora/Mod_Diaspora.php:43 -msgid "Diaspora Protocol Settings updated." -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." -msgstr "" - -#: ../../addon/diaspora/Mod_Diaspora.php:58 -msgid "Diaspora Protocol App" -msgstr "" - -#: ../../addon/diaspora/Mod_Diaspora.php:77 -msgid "Allow any Diaspora member to comment on your public posts" -msgstr "" - -#: ../../addon/diaspora/Mod_Diaspora.php:81 -msgid "Prevent your hashtags from being redirected to other sites" -msgstr "" - -#: ../../addon/diaspora/Mod_Diaspora.php:85 -msgid "Sign and forward posts and comments with no existing Diaspora signature" -msgstr "" - -#: ../../addon/diaspora/Mod_Diaspora.php:90 -msgid "Followed hashtags (comma separated, do not include the #)" -msgstr "" - -#: ../../addon/diaspora/Mod_Diaspora.php:99 -msgid "Diaspora Protocol" -msgstr "" - -#: ../../addon/diaspora/import_diaspora.php:18 -msgid "No username found in import file." -msgstr "" - -#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:75 -msgid "Unable to create a unique channel address. Import failed." -msgstr "" - -#: ../../addon/photocache/Mod_Photocache.php:27 -msgid "Photo Cache settings saved." -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." -msgstr "" - -#: ../../addon/photocache/Mod_Photocache.php:42 -msgid "Photo Cache App" -msgstr "" - -#: ../../addon/photocache/Mod_Photocache.php:53 -msgid "Minimal photo size for caching" -msgstr "" - -#: ../../addon/photocache/Mod_Photocache.php:55 -msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default." -msgstr "" - -#: ../../addon/photocache/Mod_Photocache.php:64 -msgid "Photo Cache" -msgstr "" - -#: ../../addon/testdrive/testdrive.php:104 -#, php-format -msgid "Your account on %s will expire in a few days." -msgstr "" - -#: ../../addon/testdrive/testdrive.php:105 -msgid "Your $Productname test account is about to expire." -msgstr "" - -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 -msgid "Add some colour to tag clouds" -msgstr "" - -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 -msgid "Rainbow Tag App" -msgstr "" - -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 -msgid "Rainbow Tag" -msgstr "" - -#: ../../addon/upload_limits/upload_limits.php:25 -msgid "Show Upload Limits" -msgstr "" - -#: ../../addon/upload_limits/upload_limits.php:27 -msgid "Hubzilla configured maximum size: " -msgstr "" - -#: ../../addon/upload_limits/upload_limits.php:28 -msgid "PHP upload_max_filesize: " -msgstr "" - -#: ../../addon/upload_limits/upload_limits.php:29 -msgid "PHP post_max_size (must be larger than upload_max_filesize): " -msgstr "" - -#: ../../addon/gravatar/gravatar.php:123 -msgid "generic profile image" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:124 -msgid "random geometric pattern" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:125 -msgid "monster face" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:126 -msgid "computer generated face" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:127 -msgid "retro arcade style face" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:128 -msgid "Hub default profile photo" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:143 -msgid "Information" -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." -msgstr "" - -#: ../../addon/gravatar/gravatar.php:150 ../../addon/msgfooter/msgfooter.php:46 -#: ../../addon/xmpp/xmpp.php:43 -msgid "Save Settings" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:151 -msgid "Default avatar image" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:151 -msgid "Select default avatar image if none was found at Gravatar. See README" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:152 -msgid "Rating of images" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:152 -msgid "Select the appropriate avatar rating for your site. See README" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:165 -msgid "Gravatar settings updated." -msgstr "" - -#: ../../addon/hzfiles/hzfiles.php:81 -msgid "Hubzilla File Storage Import" -msgstr "" - -#: ../../addon/hzfiles/hzfiles.php:82 -msgid "This will import all your cloud files from another server." -msgstr "" - -#: ../../addon/hzfiles/hzfiles.php:83 -msgid "Hubzilla Server base URL" -msgstr "" - -#: ../../addon/hzfiles/hzfiles.php:84 -#: ../../addon/content_import/Mod_content_import.php:140 -msgid "Since modified date yyyy-mm-dd" -msgstr "" - -#: ../../addon/hzfiles/hzfiles.php:85 -#: ../../addon/content_import/Mod_content_import.php:141 -msgid "Until modified date yyyy-mm-dd" -msgstr "" - -#: ../../addon/visage/Mod_Visage.php:21 -msgid "Who viewed my channel/profile" -msgstr "" - -#: ../../addon/visage/Mod_Visage.php:25 -msgid "Recent Channel/Profile Viewers" -msgstr "" - -#: ../../addon/visage/Mod_Visage.php:36 -msgid "No entries." -msgstr "" - -#: ../../addon/nsabait/Mod_Nsabait.php:20 -#: ../../addon/nsabait/Mod_Nsabait.php:24 -msgid "NSA Bait App" -msgstr "" - -#: ../../addon/nsabait/Mod_Nsabait.php:26 -msgid "Make yourself a political target" -msgstr "" - -#: ../../addon/mailtest/mailtest.php:19 -msgid "Send test email" -msgstr "" - -#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50 -msgid "No recipients found." -msgstr "" - -#: ../../addon/mailtest/mailtest.php:66 -msgid "Mail sent." -msgstr "" - -#: ../../addon/mailtest/mailtest.php:68 -msgid "Sending of mail failed." -msgstr "" - -#: ../../addon/mailtest/mailtest.php:77 -msgid "Mail Test" -msgstr "" - -#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92 -msgid "Message subject" -msgstr "" - -#: ../../addon/mdpost/mdpost.php:42 -msgid "Use markdown for editing posts" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:119 -msgid "View Larger" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:135 -msgid "Tile Server URL" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:135 -msgid "" -"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank" -"\">public tile servers</a>" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:136 -msgid "Nominatim (reverse geocoding) Server URL" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:136 -msgid "" -"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=" -"\"_blank\">Nominatim servers</a>" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:137 -msgid "Default zoom" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:137 -msgid "" -"The default zoom level. (1:world, 18:highest, also depends on tile server)" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include marker on map" -msgstr "" - -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include a marker on the map." -msgstr "" - -#: ../../addon/msgfooter/msgfooter.php:47 -msgid "text to include in all outgoing posts from this site" -msgstr "" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 -msgid "Fuzzloc Settings updated." -msgstr "" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 -msgid "Fuzzy Location App" -msgstr "" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35 -msgid "" -"Blur your precise location if your channel uses browser location mapping" -msgstr "" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40 -msgid "Minimum offset in meters" -msgstr "" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44 -msgid "Maximum offset in meters" -msgstr "" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 -msgid "Fuzzy Location" -msgstr "" - -#: ../../addon/rtof/rtof.php:51 -msgid "Post to Friendica" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:24 -msgid "Friendica Crosspost Connector Settings saved." -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:36 -msgid "Friendica Crosspost Connector App" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:37 -msgid "Relay public postings to a connected Friendica account" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:49 -msgid "Send public postings to Friendica by default" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:53 -msgid "Friendica API Path" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:53 ../../addon/redred/Mod_Redred.php:67 -msgid "https://{sitename}/api" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:57 -msgid "Friendica login name" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:61 -msgid "Friendica password" -msgstr "" - -#: ../../addon/rtof/Mod_Rtof.php:69 -msgid "Friendica Crosspost Connector" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:96 -msgid "Jappixmini App" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:97 -msgid "Provides a Facebook-like chat using Jappix Mini" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:157 ../../include/channel.php:1518 -#: ../../include/channel.php:1689 -msgid "Status:" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:161 -msgid "Hide Jappixmini Chat-Widget from the webinterface" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:166 -msgid "Jabber username" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:172 -msgid "Jabber server" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:178 -msgid "Jabber BOSH host URL" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:185 -msgid "Jabber password" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:191 -msgid "Encrypt Jabber password with Hubzilla password" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:195 -#: ../../addon/redred/Mod_Redred.php:79 -msgid "Hubzilla password" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:199 -#: ../../addon/jappixmini/Mod_Jappixmini.php:203 -msgid "Approve subscription requests from Hubzilla contacts automatically" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:207 -msgid "Purge internal list of jabber addresses of contacts" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:212 -msgid "Configuration Help" -msgstr "" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:258 -msgid "Jappixmini Settings" -msgstr "" - -#: ../../addon/upgrade_info/upgrade_info.php:48 -msgid "Your channel has been upgraded to $Projectname version" -msgstr "" - -#: ../../addon/upgrade_info/upgrade_info.php:50 -msgid "Please have a look at the" -msgstr "" - -#: ../../addon/upgrade_info/upgrade_info.php:52 -msgid "git history" -msgstr "" - -#: ../../addon/upgrade_info/upgrade_info.php:54 -msgid "change log" -msgstr "" - -#: ../../addon/upgrade_info/upgrade_info.php:55 -msgid "for further info." -msgstr "" - -#: ../../addon/upgrade_info/upgrade_info.php:60 -msgid "Upgrade Info" -msgstr "" - -#: ../../addon/upgrade_info/upgrade_info.php:64 -msgid "Do not show this again" -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" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:108 -msgid "Enable Community Moderation" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:116 -msgid "Reputation automatically given to new members" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:117 -msgid "Reputation will never fall below this value" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:118 -msgid "Minimum reputation before posting is allowed" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:119 -msgid "Minimum reputation before commenting is allowed" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:120 -msgid "Minimum reputation before a member is able to moderate other posts" -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" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:122 -msgid "Reputation \"cost\" to post" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:123 -msgid "Reputation \"cost\" to comment" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:124 -msgid "" -"Reputation automatically recovers at this rate per hour until it reaches " -"minimum_to_post" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:125 -msgid "" -"When minimum_to_moderate > reputation > minimum_to_post reputation recovers " -"at this rate per hour" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:139 -msgid "Community Moderation Settings" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:229 -msgid "Channel Reputation" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:233 -msgid "An Error has occurred." -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:251 -msgid "Upvote" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:252 -msgid "Downvote" -msgstr "" - -#: ../../addon/channelreputation/channelreputation.php:374 -msgid "Can moderate reputation on my channel." -msgstr "" - -#: ../../addon/superblock/superblock.php:337 -msgid "Block Completely" -msgstr "" - -#: ../../addon/superblock/Mod_Superblock.php:20 -msgid "Superblock App" -msgstr "" - -#: ../../addon/superblock/Mod_Superblock.php:21 -msgid "Block channels" -msgstr "" - -#: ../../addon/superblock/Mod_Superblock.php:63 -msgid "superblock settings updated" -msgstr "" - -#: ../../addon/superblock/Mod_Superblock.php:87 -msgid "Currently blocked" -msgstr "" - -#: ../../addon/superblock/Mod_Superblock.php:89 -msgid "No channels currently blocked" -msgstr "" - -#: ../../addon/nofed/Mod_Nofed.php:21 -msgid "nofed Settings saved." -msgstr "" - -#: ../../addon/nofed/Mod_Nofed.php:33 -msgid "No Federation App" -msgstr "" - -#: ../../addon/nofed/Mod_Nofed.php:34 -msgid "" -"Prevent posting from being federated to anybody. It will exist only on your " -"channel page." -msgstr "" - -#: ../../addon/nofed/Mod_Nofed.php:42 -msgid "Federate posts by default" -msgstr "" - -#: ../../addon/nofed/Mod_Nofed.php:50 -msgid "No Federation" -msgstr "" - -#: ../../addon/nofed/nofed.php:47 -msgid "Federate" -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:24 -msgid "Channel is required." -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:38 -msgid "Hubzilla Crosspost Connector Settings saved." -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:50 -#: ../../addon/statusnet/Mod_Statusnet.php:146 -msgid "Hubzilla Crosspost Connector App" -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:51 -msgid "Relay public postings to another Hubzilla channel" -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:63 -msgid "Send public postings to Hubzilla channel by default" -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:67 -msgid "Hubzilla API Path" -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:71 -msgid "Hubzilla login name" -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:75 -msgid "Hubzilla channel name" -msgstr "" - -#: ../../addon/redred/Mod_Redred.php:87 -msgid "Hubzilla Crosspost Connector" -msgstr "" - -#: ../../addon/redred/redred.php:50 -msgid "Post to Hubzilla" -msgstr "" - -#: ../../addon/logrot/logrot.php:36 -msgid "Logfile archive directory" -msgstr "" - -#: ../../addon/logrot/logrot.php:36 -msgid "Directory to store rotated logs" -msgstr "" - -#: ../../addon/logrot/logrot.php:37 -msgid "Logfile size in bytes before rotating" -msgstr "" - -#: ../../addon/logrot/logrot.php:38 -msgid "Number of logfiles to retain" -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:27 -msgid "No server specified" -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:73 -msgid "Posts imported" -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:113 -msgid "Files imported" -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." -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." -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:137 -msgid "Include posts" -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:137 -msgid "Conversations, Articles, Cards, and other posted content" -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:138 -msgid "Include files" -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:138 -msgid "Files, Photos and other cloud storage" -msgstr "" - -#: ../../addon/content_import/Mod_content_import.php:139 -msgid "Original Server base URL" -msgstr "" - -#: ../../addon/frphotos/frphotos.php:92 -msgid "Friendica Photo Album Import" -msgstr "" - -#: ../../addon/frphotos/frphotos.php:93 -msgid "This will import all your Friendica photo albums to this Red channel." -msgstr "" - -#: ../../addon/frphotos/frphotos.php:94 -msgid "Friendica Server base URL" -msgstr "" - -#: ../../addon/frphotos/frphotos.php:95 -msgid "Friendica Login Username" -msgstr "" - -#: ../../addon/frphotos/frphotos.php:96 -msgid "Friendica Login Password" -msgstr "" - -#: ../../addon/hsse/Mod_Hsse.php:15 -msgid "WYSIWYG status editor" -msgstr "" - -#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 -msgid "WYSIWYG Status App" -msgstr "" - -#: ../../addon/hsse/Mod_Hsse.php:34 -msgid "WYSIWYG Status" -msgstr "" - -#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 -msgid "Set your location" -msgstr "" - -#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 -msgid "Clear browser location" -msgstr "" - -#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 -msgid "Embed (existing) photo from your photo albums" -msgstr "" - -#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 -msgid "Tag term:" -msgstr "" - -#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 -msgid "Where are you right now?" -msgstr "" - -#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 -msgid "Choose a different album..." -msgstr "" - -#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 -msgid "Comments enabled" -msgstr "" - -#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 -msgid "Comments disabled" -msgstr "" - -#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 -msgid "Page link name" -msgstr "" - -#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 -msgid "Post as" -msgstr "" - -#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 -msgid "Toggle voting" -msgstr "" - -#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 -msgid "Disable comments" -msgstr "" - -#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 -msgid "Toggle comments" -msgstr "" - -#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 -msgid "Categories (optional, comma-separated list)" -msgstr "" - -#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 -msgid "Other networks and post services" -msgstr "" - -#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 -msgid "Set publish date" -msgstr "" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 -msgid "ActivityPub Protocol Settings updated." -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." -msgstr "" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 -msgid "Activitypub Protocol App" -msgstr "" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 -msgid "Deliver to ActivityPub recipients in privacy groups" -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" -msgstr "" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 -msgid "Send multi-media HTML articles" -msgstr "" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 -msgid "Not supported by some microblog services such as Mastodon" -msgstr "" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 -msgid "Activitypub Protocol" -msgstr "" - -#: ../../addon/donate/donate.php:21 -msgid "Project Servers and Resources" -msgstr "" - -#: ../../addon/donate/donate.php:22 -msgid "Project Creator and Tech Lead" -msgstr "" - -#: ../../addon/donate/donate.php:49 -msgid "" -"And the hundreds of other people and organisations who helped make the " -"Hubzilla possible." -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." -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>.)" -msgstr "" - -#: ../../addon/donate/donate.php:54 -msgid "" -"Help support our ground-breaking work in decentralisation, web identity, and " -"privacy." -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." -msgstr "" - -#: ../../addon/donate/donate.php:59 -msgid "Donate" -msgstr "" - -#: ../../addon/donate/donate.php:61 -msgid "" -"Choose a project, developer, or public hub to support with a one-time " -"donation" -msgstr "" - -#: ../../addon/donate/donate.php:62 -msgid "Donate Now" -msgstr "" - -#: ../../addon/donate/donate.php:63 -msgid "" -"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)" -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" -msgstr "" - -#: ../../addon/donate/donate.php:65 -msgid "Sponsor" -msgstr "" - -#: ../../addon/donate/donate.php:68 -msgid "Special thanks to: " -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." -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." -msgstr "" - -#: ../../addon/chords/Mod_Chords.php:48 -msgid "" -"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " -"E7b13b11 ..." -msgstr "" - -#: ../../addon/chords/Mod_Chords.php:51 -msgid "Guitar Chords" -msgstr "" - -#: ../../addon/chords/Mod_Chords.php:52 -msgid "The complete online chord dictionary" -msgstr "" - -#: ../../addon/chords/Mod_Chords.php:57 -msgid "Tuning" -msgstr "" - -#: ../../addon/chords/Mod_Chords.php:58 -msgid "Chord name: example: Em7" -msgstr "" - -#: ../../addon/chords/Mod_Chords.php:59 -msgid "Show for left handed stringing" -msgstr "" - -#: ../../addon/chords/chords.php:33 -msgid "Quick Reference" -msgstr "" - -#: ../../addon/libertree/libertree.php:43 -msgid "Post to Libertree" -msgstr "" - -#: ../../addon/libertree/Mod_Libertree.php:25 -msgid "Libertree Crosspost Connector Settings saved." -msgstr "" - -#: ../../addon/libertree/Mod_Libertree.php:35 -msgid "Libertree Crosspost Connector App" -msgstr "" - -#: ../../addon/libertree/Mod_Libertree.php:36 -msgid "Relay public posts to Libertree" -msgstr "" - -#: ../../addon/libertree/Mod_Libertree.php:51 -msgid "Libertree API token" -msgstr "" - -#: ../../addon/libertree/Mod_Libertree.php:55 -msgid "Libertree site URL" -msgstr "" - -#: ../../addon/libertree/Mod_Libertree.php:59 -msgid "Post to Libertree by default" -msgstr "" - -#: ../../addon/libertree/Mod_Libertree.php:67 -msgid "Libertree Crosspost Connector" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 -msgid "Flattr widget settings updated." -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 -msgid "Flattr Widget App" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54 -msgid "Add a Flattr button to your channel page" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 -msgid "Flattr user" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "URL of the Thing to flattr" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "If empty channel URL is used" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 -msgid "Title of the Thing to flattr" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 -msgid "If empty \"channel name on The Hubzilla\" will be used" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "Static or dynamic flattr button" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "static" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "dynamic" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "Alignment of the widget" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "left" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "right" -msgstr "" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 -msgid "Flattr Widget" -msgstr "" - -#: ../../addon/flattrwidget/flattrwidget.php:50 -msgid "Flattr this!" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:61 -msgid "" -"Please contact your site administrator.<br />The provided API URL is not " -"valid." -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:98 -msgid "We could not contact the GNU social API with the Path you entered." -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:130 -msgid "GNU social settings updated." -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:147 -msgid "" -"Relay public postings to a connected GNU social account (formerly StatusNet)" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:181 -msgid "Globally Available GNU social OAuthKeys" -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)." -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:198 -msgid "Provide your own OAuth Credentials" -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." -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:204 -msgid "OAuth Consumer Key" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:208 -msgid "OAuth Consumer Secret" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Base API Path" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Remember the trailing /" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:216 -msgid "GNU social application name" -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." -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:241 -msgid "Log in with GNU social" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:244 -msgid "Copy the security code from GNU social here" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:254 -msgid "Cancel Connection Process" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:256 -msgid "Current GNU social API is" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:260 -msgid "Cancel GNU social Connection" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:272 -#: ../../addon/twitter/Mod_Twitter.php:147 -msgid "Currently connected to: " -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." -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:282 -msgid "Post to GNU social by default" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:282 -msgid "" -"If enabled your public postings will be posted to the associated GNU-social " -"account by default" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:171 -msgid "Clear OAuth configuration" -msgstr "" - -#: ../../addon/statusnet/Mod_Statusnet.php:303 -msgid "GNU-Social Crosspost Connector" -msgstr "" - -#: ../../addon/statusnet/statusnet.php:145 -msgid "Post to GNU social" -msgstr "" - -#: ../../addon/statusnet/statusnet.php:594 -msgid "API URL" -msgstr "" - -#: ../../addon/statusnet/statusnet.php:597 -msgid "Application name" -msgstr "" - -#: ../../addon/qrator/qrator.php:48 -msgid "QR code" -msgstr "" - -#: ../../addon/qrator/qrator.php:63 -msgid "QR Generator" -msgstr "" - -#: ../../addon/qrator/qrator.php:64 -msgid "Enter some text" -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 -msgid "Invalid game." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417 -msgid "You are not a player in this game." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:242 -msgid "You must be a local channel to create a game." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:260 -msgid "You must select one opponent that is not yourself." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:271 -msgid "Random color chosen." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:279 -msgid "Error creating new game." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 -msgid "Requested channel is not available." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 -msgid "Chess not installed." -msgstr "" - -#: ../../addon/chess/Mod_Chess.php:326 -msgid "You must select a local channel /chess/channelname" -msgstr "" - -#: ../../addon/chess/chess.php:645 -msgid "Enable notifications" -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:65 -msgid "Twitter settings updated." -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:78 -msgid "Twitter Crosspost Connector App" -msgstr "" - -#: ../../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 "" - -#: ../../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 "" - -#: ../../addon/twitter/Mod_Twitter.php:127 -msgid "Log in with Twitter" -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:130 -msgid "Copy the PIN from Twitter here" -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." -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Twitter post length" -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Maximum tweet length" -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:162 -msgid "Send public postings to Twitter by default" -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:162 -msgid "" -"If enabled your public postings will be posted to the associated Twitter " -"account by default" -msgstr "" - -#: ../../addon/twitter/Mod_Twitter.php:181 -msgid "Twitter Crosspost Connector" -msgstr "" - -#: ../../addon/twitter/twitter.php:107 -msgid "Post to Twitter" -msgstr "" - -#: ../../addon/smileybutton/Mod_Smileybutton.php:35 -msgid "Smileybutton App" -msgstr "" - -#: ../../addon/smileybutton/Mod_Smileybutton.php:36 -msgid "Adds a smileybutton to the jot editor" -msgstr "" - -#: ../../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 "" - -#: ../../addon/cart/Settings/Cart.php:56 -msgid "Enable Test Catalog" -msgstr "" - -#: ../../addon/cart/Settings/Cart.php:68 -msgid "Enable Manual Payments" -msgstr "" - -#: ../../addon/cart/Settings/Cart.php:88 -msgid "Base Merchant Currency" -msgstr "" - -#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1263 -msgid "Cart Settings" -msgstr "" - -#: ../../addon/cart/myshop.php:30 -msgid "Access Denied." -msgstr "" - -#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1334 -msgid "Order Not Found" -msgstr "" - -#: ../../addon/cart/myshop.php:186 ../../addon/cart/myshop.php:220 -#: ../../addon/cart/myshop.php:269 ../../addon/cart/myshop.php:327 -msgid "Invalid Item" -msgstr "" - -#: ../../addon/cart/cart.php:159 -msgid "DB Cleanup Failure" -msgstr "" - -#: ../../addon/cart/cart.php:565 -msgid "[cart] Item Added" -msgstr "" - -#: ../../addon/cart/cart.php:953 -msgid "Order already checked out." -msgstr "" - -#: ../../addon/cart/cart.php:1256 -msgid "Drop database tables when uninstalling." -msgstr "" - -#: ../../addon/cart/cart.php:1275 ../../addon/cart/cart.php:1278 -msgid "Shop" -msgstr "" - -#: ../../addon/cart/cart.php:1395 -msgid "Cart utilities for orders and payments" -msgstr "" - -#: ../../addon/cart/cart.php:1433 -msgid "You must be logged into the Grid to shop." -msgstr "" - -#: ../../addon/cart/cart.php:1466 -#: ../../addon/cart/submodules/paypalbutton.php:392 -#: ../../addon/cart/manual_payments.php:68 -msgid "Order not found." -msgstr "" - -#: ../../addon/cart/cart.php:1474 -msgid "Access denied." -msgstr "" - -#: ../../addon/cart/cart.php:1526 ../../addon/cart/cart.php:1669 -msgid "No Order Found" -msgstr "" - -#: ../../addon/cart/cart.php:1535 -msgid "An unknown error has occurred Please start again." -msgstr "" - -#: ../../addon/cart/cart.php:1702 -msgid "Invalid Payment Type. Please start again." -msgstr "" - -#: ../../addon/cart/cart.php:1709 -msgid "Order not found" -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:85 -msgid "Enable Paypal Button Module" -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:93 -msgid "Use Production Key" -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:100 -msgid "Paypal Sandbox Client Key" -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:107 -msgid "Paypal Sandbox Secret Key" -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:113 -msgid "Paypal Production Client Key" -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:120 -msgid "Paypal Production Secret Key" -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:252 -msgid "Paypal button payments are not enabled." -msgstr "" - -#: ../../addon/cart/submodules/paypalbutton.php:270 -msgid "" -"Paypal button payments are not properly configured. Please choose another " -"payment option." -msgstr "" - -#: ../../addon/cart/submodules/manualcat.php:61 -msgid "Enable Manual Cart Module" -msgstr "" - -#: ../../addon/cart/submodules/manualcat.php:173 -#: ../../addon/cart/submodules/hzservices.php:160 -msgid "New Sku" -msgstr "" - -#: ../../addon/cart/submodules/manualcat.php:209 -#: ../../addon/cart/submodules/hzservices.php:195 -msgid "Cannot save edits to locked item." -msgstr "" - -#: ../../addon/cart/submodules/manualcat.php:252 -#: ../../addon/cart/submodules/hzservices.php:644 -msgid "Changes Locked" -msgstr "" - -#: ../../addon/cart/submodules/manualcat.php:256 -#: ../../addon/cart/submodules/hzservices.php:648 -msgid "Item available for purchase." -msgstr "" - -#: ../../addon/cart/submodules/manualcat.php:263 -#: ../../addon/cart/submodules/hzservices.php:655 -msgid "Price" -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:62 -msgid "Enable Hubzilla Services Module" -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:243 -#: ../../addon/cart/submodules/hzservices.php:330 -msgid "SKU not found." -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:296 -#: ../../addon/cart/submodules/hzservices.php:300 -msgid "Invalid Activation Directive." -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:371 -#: ../../addon/cart/submodules/hzservices.php:375 -msgid "Invalid Deactivation Directive." -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:561 -msgid "Add to this privacy group" -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:577 -msgid "Set user service class" -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:604 -msgid "You must be using a local account to purchase this service." -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:659 -msgid "Add buyer to privacy group" -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:664 -msgid "Add buyer as connection" -msgstr "" - -#: ../../addon/cart/submodules/hzservices.php:672 -#: ../../addon/cart/submodules/hzservices.php:714 -msgid "Set Service Class" -msgstr "" - -#: ../../addon/cart/submodules/subscriptions.php:151 -msgid "Enable Subscription Management Module" -msgstr "" - -#: ../../addon/cart/submodules/subscriptions.php:223 -msgid "" -"Cannot include subscription items with different terms in the same order." -msgstr "" - -#: ../../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 "" - -#: ../../addon/cart/submodules/subscriptions.php:419 -msgid "Catalog Description" -msgstr "" - -#: ../../addon/cart/submodules/subscriptions.php:423 -msgid "Subscription available for purchase." -msgstr "" - -#: ../../addon/cart/submodules/subscriptions.php:428 -msgid "Maximum active subscriptions to this item per account." -msgstr "" - -#: ../../addon/cart/submodules/subscriptions.php:431 -msgid "Subscription price." -msgstr "" - -#: ../../addon/cart/submodules/subscriptions.php:435 -msgid "Quantity" -msgstr "" - -#: ../../addon/cart/submodules/subscriptions.php:439 -msgid "Term" -msgstr "" - -#: ../../addon/cart/manual_payments.php:7 -msgid "Error: order mismatch. Please try again." -msgstr "" - -#: ../../addon/cart/manual_payments.php:61 -msgid "Manual payments are not enabled." -msgstr "" - -#: ../../addon/cart/manual_payments.php:77 -msgid "Finished" -msgstr "" - -#: ../../addon/piwik/piwik.php:85 -msgid "" -"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " -"analytics tool." -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)." -msgstr "" - -#: ../../addon/piwik/piwik.php:96 -msgid "Piwik Base URL" -msgstr "" - -#: ../../addon/piwik/piwik.php:96 -msgid "" -"Absolute path to your Piwik installation. (without protocol (http/s), with " -"trailing slash)" -msgstr "" - -#: ../../addon/piwik/piwik.php:97 -msgid "Site ID" -msgstr "" - -#: ../../addon/piwik/piwik.php:98 -msgid "Show opt-out cookie link?" -msgstr "" - -#: ../../addon/piwik/piwik.php:99 -msgid "Asynchronous tracking" -msgstr "" - -#: ../../addon/piwik/piwik.php:100 -msgid "Enable frontend JavaScript error tracking" -msgstr "" - -#: ../../addon/piwik/piwik.php:100 -msgid "This feature requires Piwik >= 2.2.0" -msgstr "" - -#: ../../addon/tour/tour.php:76 -msgid "Edit your profile and change settings." -msgstr "" - -#: ../../addon/tour/tour.php:77 -msgid "Click here to see activity from your connections." -msgstr "" - -#: ../../addon/tour/tour.php:78 -msgid "Click here to see your channel home." -msgstr "" - -#: ../../addon/tour/tour.php:79 -msgid "You can access your private messages from here." -msgstr "" - -#: ../../addon/tour/tour.php:80 -msgid "Create new events here." -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." -msgstr "" - -#: ../../addon/tour/tour.php:82 -msgid "System notifications will arrive here" -msgstr "" - -#: ../../addon/tour/tour.php:83 -msgid "Search for content and users" -msgstr "" - -#: ../../addon/tour/tour.php:84 -msgid "Browse for new contacts" -msgstr "" - -#: ../../addon/tour/tour.php:85 -msgid "Launch installed apps" -msgstr "" - -#: ../../addon/tour/tour.php:86 -msgid "Looking for help? Click here." -msgstr "" - -#: ../../addon/tour/tour.php:87 -msgid "" -"New events have occurred in your network. Click here to see what has " -"happened!" -msgstr "" - -#: ../../addon/tour/tour.php:88 -msgid "You have received a new private message. Click here to see from who!" -msgstr "" - -#: ../../addon/tour/tour.php:89 -msgid "There are events this week. Click here too see which!" -msgstr "" - -#: ../../addon/tour/tour.php:90 -msgid "You have received a new introduction. Click here to see who!" -msgstr "" - -#: ../../addon/tour/tour.php:91 -msgid "" -"There is a new system notification. Click here to see what has happened!" -msgstr "" - -#: ../../addon/tour/tour.php:94 -msgid "Click here to share text, images, videos and sound." -msgstr "" - -#: ../../addon/tour/tour.php:95 -msgid "You can write an optional title for your update (good for long posts)." -msgstr "" - -#: ../../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 "" - -#: ../../addon/tour/tour.php:100 -msgid "Choose who you share with." -msgstr "" - -#: ../../addon/tour/tour.php:102 -msgid "Click here when you are done." -msgstr "" - -#: ../../addon/tour/tour.php:105 -msgid "Adjust from which channels posts should be displayed." -msgstr "" - -#: ../../addon/tour/tour.php:106 -msgid "Only show posts from channels in the specified privacy group." -msgstr "" - -#: ../../addon/tour/tour.php:110 -msgid "" -"Easily find posts containing tags (keywords preceded by the \"#\" symbol)." -msgstr "" - -#: ../../addon/tour/tour.php:111 -msgid "Easily find posts in given category." -msgstr "" - -#: ../../addon/tour/tour.php:112 -msgid "Easily find posts by date." -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." -msgstr "" - -#: ../../addon/tour/tour.php:114 -msgid "Here you see channels you have connected to." -msgstr "" - -#: ../../addon/tour/tour.php:115 -msgid "Save your search so you can repeat it at a later date." -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." -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!" -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" -msgstr "" - -#: ../../addon/sendzid/Mod_Sendzid.php:14 -msgid "Send your identity to all websites" -msgstr "" - -#: ../../addon/sendzid/Mod_Sendzid.php:20 -msgid "Sendzid App" -msgstr "" - -#: ../../addon/sendzid/Mod_Sendzid.php:32 -msgid "Send ZID" -msgstr "" - -#: ../../addon/tictac/tictac.php:21 -msgid "Three Dimensional Tic-Tac-Toe" -msgstr "" - -#: ../../addon/tictac/tictac.php:54 -msgid "3D Tic-Tac-Toe" -msgstr "" - -#: ../../addon/tictac/tictac.php:59 -msgid "New game" -msgstr "" - -#: ../../addon/tictac/tictac.php:60 -msgid "New game with handicap" -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. " -msgstr "" - -#: ../../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 "" - -#: ../../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 "" - -#: ../../addon/tictac/tictac.php:183 -msgid "You go first..." -msgstr "" - -#: ../../addon/tictac/tictac.php:188 -msgid "I'm going first this time..." -msgstr "" - -#: ../../addon/tictac/tictac.php:194 -msgid "You won!" -msgstr "" - -#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 -msgid "\"Cat\" game!" -msgstr "" - -#: ../../addon/tictac/tictac.php:223 -msgid "I won!" -msgstr "" - -#: ../../addon/pageheader/Mod_Pageheader.php:22 -msgid "pageheader Settings saved." -msgstr "" - -#: ../../addon/pageheader/Mod_Pageheader.php:34 -msgid "Page Header App" -msgstr "" - -#: ../../addon/pageheader/Mod_Pageheader.php:35 -msgid "Inserts a page header" -msgstr "" - -#: ../../addon/pageheader/Mod_Pageheader.php:43 -msgid "Message to display on every page on this server" -msgstr "" - -#: ../../addon/pageheader/Mod_Pageheader.php:51 -msgid "Page Header" -msgstr "" - -#: ../../addon/authchoose/Mod_Authchoose.php:22 -msgid "" -"Allow magic authentication only to websites of your immediate connections" -msgstr "" - -#: ../../addon/authchoose/Mod_Authchoose.php:28 -#: ../../addon/authchoose/Mod_Authchoose.php:33 -msgid "Authchoose App" -msgstr "" - -#: ../../addon/authchoose/Mod_Authchoose.php:39 -msgid "Authchoose" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:19 -msgid "lonely" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:20 -msgid "drunk" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:21 -msgid "horny" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:22 -msgid "stoned" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:23 -msgid "fucked up" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:24 -msgid "clusterfucked" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:25 -msgid "crazy" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:26 -msgid "hurt" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:27 -msgid "sleepy" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:28 -msgid "grumpy" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:29 -msgid "high" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:30 -msgid "semi-conscious" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:31 -msgid "in love" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:32 -msgid "in lust" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:33 -msgid "naked" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:34 -msgid "stinky" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:35 -msgid "sweaty" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:36 -msgid "bleeding out" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:37 -msgid "victorious" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:38 -msgid "defeated" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:39 -msgid "envious" -msgstr "" - -#: ../../addon/moremoods/moremoods.php:40 -msgid "jealous" -msgstr "" - -#: ../../addon/xmpp/Mod_Xmpp.php:23 -msgid "XMPP settings updated." -msgstr "" - -#: ../../addon/xmpp/Mod_Xmpp.php:35 -msgid "XMPP App" -msgstr "" - -#: ../../addon/xmpp/Mod_Xmpp.php:36 -msgid "Embedded XMPP (Jabber) client" -msgstr "" - -#: ../../addon/xmpp/Mod_Xmpp.php:52 -msgid "Individual credentials" -msgstr "" - -#: ../../addon/xmpp/Mod_Xmpp.php:58 -msgid "Jabber BOSH server" -msgstr "" - -#: ../../addon/xmpp/Mod_Xmpp.php:67 -msgid "XMPP Settings" -msgstr "" - -#: ../../addon/xmpp/xmpp.php:44 -msgid "Jabber BOSH host" -msgstr "" - -#: ../../addon/xmpp/xmpp.php:45 -msgid "Use central userbase" -msgstr "" - -#: ../../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 "" - -#: ../../addon/wholikesme/wholikesme.php:29 -msgid "Who likes me?" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:40 -msgid "Pump.io Settings saved." -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:53 -msgid "Pump.io Crosspost Connector App" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:54 -msgid "Relay public posts to pump.io" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:73 -msgid "Pump.io servername" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:73 -msgid "Without \"http://\" or \"https://\"" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:77 -msgid "Pump.io username" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:77 -msgid "Without the servername" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:88 -msgid "You are not authenticated to pumpio" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:90 -msgid "(Re-)Authenticate your pump.io connection" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:94 -msgid "Post to pump.io by default" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:98 -msgid "Should posts be public" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:102 -msgid "Mirror all public posts" -msgstr "" - -#: ../../addon/pumpio/Mod_Pumpio.php:112 -msgid "Pump.io Crosspost Connector" -msgstr "" - -#: ../../addon/pumpio/pumpio.php:152 -msgid "You are now authenticated to pumpio." -msgstr "" - -#: ../../addon/pumpio/pumpio.php:153 -msgid "return to the featured settings page" -msgstr "" - -#: ../../addon/pumpio/pumpio.php:168 -msgid "Post to Pump.io" -msgstr "" - -#: ../../addon/ldapauth/ldapauth.php:70 -msgid "An account has been created for you." -msgstr "" - -#: ../../addon/ldapauth/ldapauth.php:77 -msgid "Authentication successful but rejected: account creation is disabled." -msgstr "" - -#: ../../addon/opensearch/opensearch.php:26 -#, php-format -msgctxt "opensearch" -msgid "Search %1$s (%2$s)" -msgstr "" - -#: ../../addon/opensearch/opensearch.php:28 -msgctxt "opensearch" -msgid "$Projectname" -msgstr "" - -#: ../../addon/opensearch/opensearch.php:43 -msgid "Search $Projectname" -msgstr "" - -#: ../../addon/redfiles/redfiles.php:119 -msgid "Redmatrix File Storage Import" -msgstr "" - -#: ../../addon/redfiles/redfiles.php:120 -msgid "This will import all your Redmatrix cloud files to this channel." -msgstr "" - -#: ../../addon/redfiles/redfilehelper.php:64 -msgid "file" -msgstr "" - -#: ../../addon/hubwall/hubwall.php:19 -msgid "Send email to all members" -msgstr "" - -#: ../../addon/hubwall/hubwall.php:73 -#, php-format -msgid "%1$d of %2$d messages sent." -msgstr "" - -#: ../../addon/hubwall/hubwall.php:81 -msgid "Send email to all hub members." -msgstr "" - -#: ../../addon/hubwall/hubwall.php:93 -msgid "Sender Email address" -msgstr "" - -#: ../../addon/hubwall/hubwall.php:94 -msgid "Test mode (only send to hub administrator)" -msgstr "" - -#: ../../include/selectors.php:18 -msgid "Profile to assign new connections" -msgstr "" - -#: ../../include/selectors.php:41 -msgid "Frequently" -msgstr "" - -#: ../../include/selectors.php:42 -msgid "Hourly" -msgstr "" - -#: ../../include/selectors.php:43 -msgid "Twice daily" -msgstr "" - -#: ../../include/selectors.php:44 -msgid "Daily" -msgstr "" - -#: ../../include/selectors.php:45 -msgid "Weekly" -msgstr "" - -#: ../../include/selectors.php:46 -msgid "Monthly" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Currently Male" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Currently Female" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Mostly Male" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Mostly Female" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Transgender" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Intersex" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Transsexual" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Hermaphrodite" -msgstr "" - -#: ../../include/selectors.php:60 ../../include/channel.php:1606 -msgid "Neuter" -msgstr "" - -#: ../../include/selectors.php:60 ../../include/channel.php:1608 -msgid "Non-specific" -msgstr "" - -#: ../../include/selectors.php:60 -msgid "Undecided" -msgstr "" - -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Males" -msgstr "" - -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Females" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Gay" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Lesbian" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "No Preference" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Bisexual" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Autosexual" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Abstinent" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Virgin" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Deviant" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Fetish" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Oodles" -msgstr "" - -#: ../../include/selectors.php:96 -msgid "Nonsexual" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Single" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Lonely" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Available" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Unavailable" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Has crush" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Infatuated" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Dating" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Unfaithful" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Sex Addict" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Friends/Benefits" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Casual" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Engaged" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Married" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Imaginarily married" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Partners" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Cohabiting" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Common law" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Happy" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Not looking" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Swinger" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Betrayed" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Separated" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Unstable" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Divorced" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Imaginarily divorced" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Widowed" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Uncertain" -msgstr "" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "It's complicated" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Don't care" -msgstr "" - -#: ../../include/selectors.php:134 -msgid "Ask me" -msgstr "" - -#: ../../include/conversation.php:169 -#, php-format -msgid "likes %1$s's %2$s" -msgstr "" - -#: ../../include/conversation.php:172 -#, php-format -msgid "doesn't like %1$s's %2$s" -msgstr "" - -#: ../../include/conversation.php:212 -#, php-format -msgid "%1$s is now connected with %2$s" -msgstr "" - -#: ../../include/conversation.php:247 -#, php-format -msgid "%1$s poked %2$s" -msgstr "" - -#: ../../include/conversation.php:251 ../../include/text.php:1195 -#: ../../include/text.php:1199 -msgid "poked" -msgstr "" - -#: ../../include/conversation.php:739 -#, php-format -msgid "View %s's profile @ %s" -msgstr "" - -#: ../../include/conversation.php:759 -msgid "Categories:" -msgstr "" - -#: ../../include/conversation.php:760 -msgid "Filed under:" -msgstr "" - -#: ../../include/conversation.php:785 -msgid "View in context" -msgstr "" - -#: ../../include/conversation.php:886 -msgid "remove" -msgstr "" - -#: ../../include/conversation.php:890 -msgid "Loading..." -msgstr "" - -#: ../../include/conversation.php:892 -msgid "Delete Selected Items" -msgstr "" - -#: ../../include/conversation.php:935 -msgid "View Source" -msgstr "" - -#: ../../include/conversation.php:945 -msgid "Follow Thread" -msgstr "" - -#: ../../include/conversation.php:954 -msgid "Unfollow Thread" -msgstr "" - -#: ../../include/conversation.php:1068 -msgid "Edit Connection" -msgstr "" - -#: ../../include/conversation.php:1078 -msgid "Message" -msgstr "" - -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s likes this." -msgstr "" - -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s doesn't like this." -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" -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." -msgstr "" - -#: ../../include/conversation.php:1228 -#, php-format -msgid "%s don't like this." -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] "" - -#: ../../include/conversation.php:1723 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/bookmarks.php:34 -#, php-format -msgid "%1$s's bookmarks" -msgstr "" - -#: ../../include/import.php:28 -msgid "Unable to import a removed channel." -msgstr "" - -#: ../../include/import.php:54 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." -msgstr "" - -#: ../../include/import.php:120 -msgid "Cloned channel not found. Import failed." -msgstr "" - -#: ../../include/text.php:520 -msgid "prev" -msgstr "" - -#: ../../include/text.php:522 -msgid "first" -msgstr "" - -#: ../../include/text.php:551 -msgid "last" -msgstr "" - -#: ../../include/text.php:554 -msgid "next" -msgstr "" - -#: ../../include/text.php:572 -msgid "older" -msgstr "" - -#: ../../include/text.php:574 -msgid "newer" -msgstr "" - -#: ../../include/text.php:998 -msgid "No connections" -msgstr "" - -#: ../../include/text.php:1030 -#, php-format -msgid "View all %s connections" -msgstr "" - -#: ../../include/text.php:1092 -#, php-format -msgid "Network: %s" -msgstr "" - -#: ../../include/text.php:1195 ../../include/text.php:1199 -msgid "poke" -msgstr "" - -#: ../../include/text.php:1200 -msgid "ping" -msgstr "" - -#: ../../include/text.php:1200 -msgid "pinged" -msgstr "" - -#: ../../include/text.php:1201 -msgid "prod" -msgstr "" - -#: ../../include/text.php:1201 -msgid "prodded" -msgstr "" - -#: ../../include/text.php:1202 -msgid "slap" -msgstr "" - -#: ../../include/text.php:1202 -msgid "slapped" -msgstr "" - -#: ../../include/text.php:1203 -msgid "finger" -msgstr "" - -#: ../../include/text.php:1203 -msgid "fingered" -msgstr "" - -#: ../../include/text.php:1204 -msgid "rebuff" -msgstr "" - -#: ../../include/text.php:1204 -msgid "rebuffed" -msgstr "" - -#: ../../include/text.php:1227 -msgid "happy" -msgstr "" - -#: ../../include/text.php:1228 -msgid "sad" -msgstr "" - -#: ../../include/text.php:1229 -msgid "mellow" -msgstr "" - -#: ../../include/text.php:1230 -msgid "tired" -msgstr "" - -#: ../../include/text.php:1231 -msgid "perky" -msgstr "" - -#: ../../include/text.php:1232 -msgid "angry" -msgstr "" - -#: ../../include/text.php:1233 -msgid "stupefied" -msgstr "" - -#: ../../include/text.php:1234 -msgid "puzzled" -msgstr "" - -#: ../../include/text.php:1235 -msgid "interested" -msgstr "" - -#: ../../include/text.php:1236 -msgid "bitter" -msgstr "" - -#: ../../include/text.php:1237 -msgid "cheerful" -msgstr "" - -#: ../../include/text.php:1238 -msgid "alive" -msgstr "" - -#: ../../include/text.php:1239 -msgid "annoyed" -msgstr "" - -#: ../../include/text.php:1240 -msgid "anxious" -msgstr "" - -#: ../../include/text.php:1241 -msgid "cranky" -msgstr "" - -#: ../../include/text.php:1242 -msgid "disturbed" -msgstr "" - -#: ../../include/text.php:1243 -msgid "frustrated" -msgstr "" - -#: ../../include/text.php:1244 -msgid "depressed" -msgstr "" - -#: ../../include/text.php:1245 -msgid "motivated" -msgstr "" - -#: ../../include/text.php:1246 -msgid "relaxed" -msgstr "" - -#: ../../include/text.php:1247 -msgid "surprised" -msgstr "" - -#: ../../include/text.php:1435 ../../include/js_strings.php:96 -msgid "Monday" -msgstr "" - -#: ../../include/text.php:1435 ../../include/js_strings.php:97 -msgid "Tuesday" -msgstr "" - -#: ../../include/text.php:1435 ../../include/js_strings.php:98 -msgid "Wednesday" -msgstr "" - -#: ../../include/text.php:1435 ../../include/js_strings.php:99 -msgid "Thursday" -msgstr "" - -#: ../../include/text.php:1435 ../../include/js_strings.php:100 -msgid "Friday" -msgstr "" - -#: ../../include/text.php:1435 ../../include/js_strings.php:101 -msgid "Saturday" -msgstr "" - -#: ../../include/text.php:1435 ../../include/js_strings.php:95 -msgid "Sunday" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:71 -msgid "January" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:72 -msgid "February" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:73 -msgid "March" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:74 -msgid "April" -msgstr "" - -#: ../../include/text.php:1439 -msgid "May" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:76 -msgid "June" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:77 -msgid "July" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:78 -msgid "August" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:79 -msgid "September" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:80 -msgid "October" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:81 -msgid "November" -msgstr "" - -#: ../../include/text.php:1439 ../../include/js_strings.php:82 -msgid "December" -msgstr "" - -#: ../../include/text.php:1513 -msgid "Unknown Attachment" -msgstr "" - -#: ../../include/text.php:1515 ../../include/feedutils.php:858 -msgid "unknown" -msgstr "" - -#: ../../include/text.php:1551 -msgid "remove category" -msgstr "" - -#: ../../include/text.php:1627 -msgid "remove from file" -msgstr "" - -#: ../../include/text.php:1791 ../../include/message.php:13 -msgid "Download binary/encrypted content" -msgstr "" - -#: ../../include/text.php:1961 ../../include/language.php:423 -msgid "default" -msgstr "" - -#: ../../include/text.php:1969 -msgid "Page layout" -msgstr "" - -#: ../../include/text.php:1969 -msgid "You can create your own with the layouts tool" -msgstr "" - -#: ../../include/text.php:1980 -msgid "HTML" -msgstr "" - -#: ../../include/text.php:1983 -msgid "Comanche Layout" -msgstr "" - -#: ../../include/text.php:1988 -msgid "PHP" -msgstr "" - -#: ../../include/text.php:1997 -msgid "Page content type" -msgstr "" - -#: ../../include/text.php:2130 -msgid "activity" -msgstr "" - -#: ../../include/text.php:2231 -msgid "a-z, 0-9, -, and _ only" -msgstr "" - -#: ../../include/text.php:2557 -msgid "Design Tools" -msgstr "" - -#: ../../include/text.php:2563 -msgid "Pages" -msgstr "" - -#: ../../include/text.php:2575 -msgid "Import" -msgstr "" - -#: ../../include/text.php:2576 -msgid "Import website..." -msgstr "" - -#: ../../include/text.php:2577 -msgid "Select folder to import" -msgstr "" - -#: ../../include/text.php:2578 -msgid "Import from a zipped folder:" -msgstr "" - -#: ../../include/text.php:2579 -msgid "Import from cloud files:" -msgstr "" - -#: ../../include/text.php:2580 -msgid "/cloud/channel/path/to/folder" -msgstr "" - -#: ../../include/text.php:2581 -msgid "Enter path to website files" -msgstr "" - -#: ../../include/text.php:2582 -msgid "Select folder" -msgstr "" - -#: ../../include/text.php:2583 -msgid "Export website..." -msgstr "" - -#: ../../include/text.php:2584 -msgid "Export to a zip file" -msgstr "" - -#: ../../include/text.php:2585 -msgid "website.zip" -msgstr "" - -#: ../../include/text.php:2586 -msgid "Enter a name for the zip file." -msgstr "" - -#: ../../include/text.php:2587 -msgid "Export to cloud files" -msgstr "" - -#: ../../include/text.php:2588 -msgid "/path/to/export/folder" -msgstr "" - -#: ../../include/text.php:2589 -msgid "Enter a path to a cloud files destination." -msgstr "" - -#: ../../include/text.php:2590 -msgid "Specify folder" -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" -msgstr "" - -#: ../../include/contact_widgets.php:20 -msgid "Enter name or interest" -msgstr "" - -#: ../../include/contact_widgets.php:21 -msgid "Connect/Follow" -msgstr "" - -#: ../../include/contact_widgets.php:22 -msgid "Examples: Robert Morgenstein, Fishing" -msgstr "" - -#: ../../include/contact_widgets.php:26 -msgid "Random Profile" -msgstr "" - -#: ../../include/contact_widgets.php:27 -msgid "Invite Friends" -msgstr "" - -#: ../../include/contact_widgets.php:29 -msgid "Advanced example: name=fred and country=iceland" -msgstr "" - -#: ../../include/contact_widgets.php:218 -msgid "Common Connections" -msgstr "" - -#: ../../include/contact_widgets.php:222 -#, php-format -msgid "View all %d common connections" -msgstr "" - -#: ../../include/markdown.php:202 ../../include/bbcode.php:366 -#, php-format -msgid "%1$s wrote the following %2$s %3$s" -msgstr "" - -#: ../../include/follow.php:37 -msgid "Channel is blocked on this site." -msgstr "" - -#: ../../include/follow.php:42 -msgid "Channel location missing." -msgstr "" - -#: ../../include/follow.php:84 -msgid "Response from remote channel was incomplete." -msgstr "" - -#: ../../include/follow.php:96 -msgid "Premium channel - please visit:" -msgstr "" - -#: ../../include/follow.php:110 -msgid "Channel was deleted and no longer exists." -msgstr "" - -#: ../../include/follow.php:166 -msgid "Remote channel or protocol unavailable." -msgstr "" - -#: ../../include/follow.php:190 -msgid "Channel discovery failed." -msgstr "" - -#: ../../include/follow.php:202 -msgid "Protocol disabled." -msgstr "" - -#: ../../include/follow.php:213 -msgid "Cannot connect to yourself." -msgstr "" - -#: ../../include/js_strings.php:5 -msgid "Delete this item?" -msgstr "" - -#: ../../include/js_strings.php:8 -#, php-format -msgid "%s show less" -msgstr "" - -#: ../../include/js_strings.php:9 -#, php-format -msgid "%s expand" -msgstr "" - -#: ../../include/js_strings.php:10 -#, php-format -msgid "%s collapse" -msgstr "" - -#: ../../include/js_strings.php:11 -msgid "Password too short" -msgstr "" - -#: ../../include/js_strings.php:12 -msgid "Passwords do not match" -msgstr "" - -#: ../../include/js_strings.php:13 -msgid "everybody" -msgstr "" - -#: ../../include/js_strings.php:14 -msgid "Secret Passphrase" -msgstr "" - -#: ../../include/js_strings.php:15 -msgid "Passphrase hint" -msgstr "" - -#: ../../include/js_strings.php:16 -msgid "Notice: Permissions have changed but have not yet been submitted." -msgstr "" - -#: ../../include/js_strings.php:17 -msgid "close all" -msgstr "" - -#: ../../include/js_strings.php:18 -msgid "Nothing new here" -msgstr "" - -#: ../../include/js_strings.php:19 -msgid "Rate This Channel (this is public)" -msgstr "" - -#: ../../include/js_strings.php:21 -msgid "Describe (optional)" -msgstr "" - -#: ../../include/js_strings.php:23 -msgid "Please enter a link URL" -msgstr "" - -#: ../../include/js_strings.php:24 -msgid "Unsaved changes. Are you sure you wish to leave this page?" -msgstr "" - -#: ../../include/js_strings.php:26 -msgid "lovely" -msgstr "" - -#: ../../include/js_strings.php:27 -msgid "wonderful" -msgstr "" - -#: ../../include/js_strings.php:28 -msgid "fantastic" -msgstr "" - -#: ../../include/js_strings.php:29 -msgid "great" -msgstr "" - -#: ../../include/js_strings.php:30 -msgid "" -"Your chosen nickname was either already taken or not valid. Please use our " -"suggestion (" -msgstr "" - -#: ../../include/js_strings.php:31 -msgid ") or enter a new one." -msgstr "" - -#: ../../include/js_strings.php:32 -msgid "Thank you, this nickname is valid." -msgstr "" - -#: ../../include/js_strings.php:33 -msgid "A channel name is required." -msgstr "" - -#: ../../include/js_strings.php:34 -msgid "This is a " -msgstr "" - -#: ../../include/js_strings.php:35 -msgid " channel name" -msgstr "" - -#: ../../include/js_strings.php:36 -msgid "Back to reply" -msgstr "" - -#: ../../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 "%d months" -msgid_plural "%d months" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/js_strings.php:46 -#, php-format -msgid "%d years" -msgid_plural "%d years" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/js_strings.php:51 -msgid "timeago.prefixAgo" -msgstr "" - -#: ../../include/js_strings.php:52 -msgid "timeago.prefixFromNow" -msgstr "" - -#: ../../include/js_strings.php:53 -msgid "timeago.suffixAgo" -msgstr "" - -#: ../../include/js_strings.php:54 -msgid "timeago.suffixFromNow" -msgstr "" - -#: ../../include/js_strings.php:57 -msgid "less than a minute" -msgstr "" - -#: ../../include/js_strings.php:58 -msgid "about a minute" -msgstr "" - -#: ../../include/js_strings.php:60 -msgid "about an hour" -msgstr "" - -#: ../../include/js_strings.php:62 -msgid "a day" -msgstr "" - -#: ../../include/js_strings.php:64 -msgid "about a month" -msgstr "" - -#: ../../include/js_strings.php:66 -msgid "about a year" -msgstr "" - -#: ../../include/js_strings.php:68 -msgid " " -msgstr "" - -#: ../../include/js_strings.php:69 -msgid "timeago.numbers" -msgstr "" - -#: ../../include/js_strings.php:75 -msgctxt "long" -msgid "May" -msgstr "" - -#: ../../include/js_strings.php:83 -msgid "Jan" -msgstr "" - -#: ../../include/js_strings.php:84 -msgid "Feb" -msgstr "" - -#: ../../include/js_strings.php:85 -msgid "Mar" -msgstr "" - -#: ../../include/js_strings.php:86 -msgid "Apr" -msgstr "" - -#: ../../include/js_strings.php:87 -msgctxt "short" -msgid "May" -msgstr "" - -#: ../../include/js_strings.php:88 -msgid "Jun" -msgstr "" - -#: ../../include/js_strings.php:89 -msgid "Jul" -msgstr "" - -#: ../../include/js_strings.php:90 -msgid "Aug" -msgstr "" - -#: ../../include/js_strings.php:91 -msgid "Sep" -msgstr "" - -#: ../../include/js_strings.php:92 -msgid "Oct" -msgstr "" - -#: ../../include/js_strings.php:93 -msgid "Nov" -msgstr "" - -#: ../../include/js_strings.php:94 -msgid "Dec" -msgstr "" - -#: ../../include/js_strings.php:102 -msgid "Sun" -msgstr "" - -#: ../../include/js_strings.php:103 -msgid "Mon" -msgstr "" - -#: ../../include/js_strings.php:104 -msgid "Tue" -msgstr "" - -#: ../../include/js_strings.php:105 -msgid "Wed" -msgstr "" - -#: ../../include/js_strings.php:106 -msgid "Thu" -msgstr "" - -#: ../../include/js_strings.php:107 -msgid "Fri" -msgstr "" - -#: ../../include/js_strings.php:108 -msgid "Sat" -msgstr "" - -#: ../../include/js_strings.php:109 -msgctxt "calendar" -msgid "today" -msgstr "" - -#: ../../include/js_strings.php:110 -msgctxt "calendar" -msgid "month" -msgstr "" - -#: ../../include/js_strings.php:111 -msgctxt "calendar" -msgid "week" -msgstr "" - -#: ../../include/js_strings.php:112 -msgctxt "calendar" -msgid "day" -msgstr "" - -#: ../../include/js_strings.php:113 -msgctxt "calendar" -msgid "All day" -msgstr "" - -#: ../../include/message.php:41 -msgid "Unable to determine sender." -msgstr "" - -#: ../../include/message.php:80 -msgid "No recipient provided." -msgstr "" - -#: ../../include/message.php:85 -msgid "[no subject]" -msgstr "" - -#: ../../include/message.php:214 -msgid "Stored post could not be verified." -msgstr "" - -#: ../../include/activities.php:42 -msgid " and " -msgstr "" - -#: ../../include/activities.php:50 -msgid "public profile" -msgstr "" - -#: ../../include/activities.php:59 -#, php-format -msgid "%1$s changed %2$s to “%3$s”" -msgstr "" - -#: ../../include/activities.php:60 -#, php-format -msgid "Visit %1$s's %2$s" -msgstr "" - -#: ../../include/activities.php:63 -#, php-format -msgid "%1$s has an updated %2$s, changing %3$s." -msgstr "" - -#: ../../include/attach.php:267 ../../include/attach.php:375 -msgid "Item was not found." -msgstr "" - -#: ../../include/attach.php:284 -msgid "Unknown error." -msgstr "" - -#: ../../include/attach.php:568 -msgid "No source file." -msgstr "" - -#: ../../include/attach.php:590 -msgid "Cannot locate file to replace" -msgstr "" - -#: ../../include/attach.php:609 -msgid "Cannot locate file to revise/update" -msgstr "" - -#: ../../include/attach.php:751 -#, php-format -msgid "File exceeds size limit of %d" -msgstr "" - -#: ../../include/attach.php:772 -#, php-format -msgid "You have reached your limit of %1$.0f Mbytes attachment storage." -msgstr "" - -#: ../../include/attach.php:954 -msgid "File upload failed. Possible system limit or action terminated." -msgstr "" - -#: ../../include/attach.php:983 -msgid "Stored file could not be verified. Upload failed." -msgstr "" - -#: ../../include/attach.php:1057 ../../include/attach.php:1073 -msgid "Path not available." -msgstr "" - -#: ../../include/attach.php:1122 ../../include/attach.php:1285 -msgid "Empty pathname" -msgstr "" - -#: ../../include/attach.php:1148 -msgid "duplicate filename or path" -msgstr "" - -#: ../../include/attach.php:1173 -msgid "Path not found." -msgstr "" - -#: ../../include/attach.php:1241 -msgid "mkdir failed." -msgstr "" - -#: ../../include/attach.php:1245 -msgid "database storage failed." -msgstr "" - -#: ../../include/attach.php:1291 -msgid "Empty path" -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." -msgstr "" - -#: ../../include/items.php:965 ../../include/items.php:1025 -msgid "(Unknown)" -msgstr "" - -#: ../../include/items.php:1213 -msgid "Visible to anybody on the internet." -msgstr "" - -#: ../../include/items.php:1215 -msgid "Visible to you only." -msgstr "" - -#: ../../include/items.php:1217 -msgid "Visible to anybody in this network." -msgstr "" - -#: ../../include/items.php:1219 -msgid "Visible to anybody authenticated." -msgstr "" - -#: ../../include/items.php:1221 -#, php-format -msgid "Visible to anybody on %s." -msgstr "" - -#: ../../include/items.php:1223 -msgid "Visible to all connections." -msgstr "" - -#: ../../include/items.php:1225 -msgid "Visible to approved connections." -msgstr "" - -#: ../../include/items.php:1227 -msgid "Visible to specific connections." -msgstr "" - -#: ../../include/items.php:4306 -msgid "Privacy group is empty." -msgstr "" - -#: ../../include/items.php:4313 -#, php-format -msgid "Privacy group: %s" -msgstr "" - -#: ../../include/items.php:4325 -msgid "Connection not found." -msgstr "" - -#: ../../include/items.php:4674 -msgid "profile photo" -msgstr "" - -#: ../../include/items.php:4866 -#, php-format -msgid "[Edited %s]" -msgstr "" - -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Post" -msgstr "" - -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Comment" -msgstr "" - -#: ../../include/channel.php:43 -msgid "Unable to obtain identity information from database" -msgstr "" - -#: ../../include/channel.php:76 -msgid "Empty name" -msgstr "" - -#: ../../include/channel.php:79 -msgid "Name too long" -msgstr "" - -#: ../../include/channel.php:196 -msgid "No account identifier" -msgstr "" - -#: ../../include/channel.php:208 -msgid "Nickname is required." -msgstr "" - -#: ../../include/channel.php:287 -msgid "Unable to retrieve created identity" -msgstr "" - -#: ../../include/channel.php:429 -msgid "Default Profile" -msgstr "" - -#: ../../include/channel.php:588 ../../include/channel.php:677 -msgid "Unable to retrieve modified identity" -msgstr "" - -#: ../../include/channel.php:1419 -msgid "Create New Profile" -msgstr "" - -#: ../../include/channel.php:1440 -msgid "Visible to everybody" -msgstr "" - -#: ../../include/channel.php:1517 ../../include/channel.php:1645 -msgid "Gender:" -msgstr "" - -#: ../../include/channel.php:1519 ../../include/channel.php:1713 -msgid "Homepage:" -msgstr "" - -#: ../../include/channel.php:1520 -msgid "Online Now" -msgstr "" - -#: ../../include/channel.php:1573 -msgid "Change your profile photo" -msgstr "" - -#: ../../include/channel.php:1604 -msgid "Trans" -msgstr "" - -#: ../../include/channel.php:1650 -msgid "Like this channel" -msgstr "" - -#: ../../include/channel.php:1674 -msgid "j F, Y" -msgstr "" - -#: ../../include/channel.php:1675 -msgid "j F" -msgstr "" - -#: ../../include/channel.php:1682 -msgid "Birthday:" -msgstr "" - -#: ../../include/channel.php:1695 -#, php-format -msgid "for %1$d %2$s" -msgstr "" - -#: ../../include/channel.php:1707 -msgid "Tags:" -msgstr "" - -#: ../../include/channel.php:1711 -msgid "Sexual Preference:" -msgstr "" - -#: ../../include/channel.php:1717 -msgid "Political Views:" -msgstr "" - -#: ../../include/channel.php:1719 -msgid "Religion:" -msgstr "" - -#: ../../include/channel.php:1723 -msgid "Hobbies/Interests:" -msgstr "" - -#: ../../include/channel.php:1725 -msgid "Likes:" -msgstr "" - -#: ../../include/channel.php:1727 -msgid "Dislikes:" -msgstr "" - -#: ../../include/channel.php:1729 -msgid "Contact information and Social Networks:" -msgstr "" - -#: ../../include/channel.php:1731 -msgid "My other channels:" -msgstr "" - -#: ../../include/channel.php:1733 -msgid "Musical interests:" -msgstr "" - -#: ../../include/channel.php:1735 -msgid "Books, literature:" -msgstr "" - -#: ../../include/channel.php:1737 -msgid "Television:" -msgstr "" - -#: ../../include/channel.php:1739 -msgid "Film/dance/culture/entertainment:" -msgstr "" - -#: ../../include/channel.php:1741 -msgid "Love/Romance:" -msgstr "" - -#: ../../include/channel.php:1743 -msgid "Work/employment:" -msgstr "" - -#: ../../include/channel.php:1745 -msgid "School/education:" -msgstr "" - -#: ../../include/channel.php:1768 -msgid "Like this thing" -msgstr "" - -#: ../../include/event.php:32 ../../include/event.php:95 -msgid "l F d, Y \\@ g:i A" -msgstr "" - -#: ../../include/event.php:40 -msgid "Starts:" -msgstr "" - -#: ../../include/event.php:50 -msgid "Finishes:" -msgstr "" - -#: ../../include/event.php:95 -msgid "l F d, Y" -msgstr "" - -#: ../../include/event.php:99 -msgid "Start:" -msgstr "" - -#: ../../include/event.php:103 -msgid "End:" -msgstr "" - -#: ../../include/event.php:1058 -msgid "This event has been added to your calendar." -msgstr "" - -#: ../../include/event.php:1284 -msgid "Not specified" -msgstr "" - -#: ../../include/event.php:1285 -msgid "Needs Action" -msgstr "" - -#: ../../include/event.php:1286 -msgid "Completed" -msgstr "" - -#: ../../include/event.php:1287 -msgid "In Process" -msgstr "" - -#: ../../include/event.php:1288 -msgid "Cancelled" -msgstr "" - -#: ../../include/event.php:1371 ../../include/connections.php:725 -msgid "Home, Voice" -msgstr "" - -#: ../../include/event.php:1372 ../../include/connections.php:726 -msgid "Home, Fax" -msgstr "" - -#: ../../include/event.php:1374 ../../include/connections.php:728 -msgid "Work, Voice" -msgstr "" - -#: ../../include/event.php:1375 ../../include/connections.php:729 -msgid "Work, Fax" -msgstr "" - -#: ../../include/network.php:1729 -msgid "GNU-Social" -msgstr "" - -#: ../../include/network.php:1730 -msgid "RSS/Atom" -msgstr "" - -#: ../../include/network.php:1734 -msgid "Facebook" -msgstr "" - -#: ../../include/network.php:1736 -msgid "LinkedIn" -msgstr "" - -#: ../../include/network.php:1737 -msgid "XMPP/IM" -msgstr "" - -#: ../../include/network.php:1738 -msgid "MySpace" -msgstr "" - -#: ../../include/language.php:436 -msgid "Select an alternate language" -msgstr "" - -#: ../../include/acl_selectors.php:113 -msgid "Who can see this?" -msgstr "" - -#: ../../include/acl_selectors.php:114 -msgid "Custom selection" -msgstr "" - -#: ../../include/acl_selectors.php:115 -msgid "" -"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit " -"the scope of \"Show\"." -msgstr "" - -#: ../../include/acl_selectors.php:116 -msgid "Show" -msgstr "" - -#: ../../include/acl_selectors.php:117 -msgid "Don't show" -msgstr "" - -#: ../../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 "" - -#: ../../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 "" - -#: ../../include/bbcode.php:258 ../../include/bbcode.php:1264 -msgid "Encrypted content" -msgstr "" - -#: ../../include/bbcode.php:274 -#, php-format -msgid "Install %1$s element %2$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." -msgstr "" - -#: ../../include/bbcode.php:358 -msgid "card" -msgstr "" - -#: ../../include/bbcode.php:360 -msgid "article" -msgstr "" - -#: ../../include/bbcode.php:443 ../../include/bbcode.php:451 -msgid "Click to open/close" -msgstr "" - -#: ../../include/bbcode.php:451 -msgid "spoiler" -msgstr "" - -#: ../../include/bbcode.php:464 -msgid "View article" -msgstr "" - -#: ../../include/bbcode.php:464 -msgid "View summary" -msgstr "" - -#: ../../include/bbcode.php:1202 -msgid "$1 wrote:" -msgstr "" - -#: ../../include/oembed.php:153 -msgid "View PDF" -msgstr "" - -#: ../../include/oembed.php:357 -msgid " by " -msgstr "" - -#: ../../include/oembed.php:358 -msgid " on " -msgstr "" - -#: ../../include/oembed.php:387 -msgid "Embedded content" -msgstr "" - -#: ../../include/oembed.php:396 -msgid "Embedding disabled" -msgstr "" - -#: ../../include/zid.php:363 -#, php-format -msgid "OpenWebAuth: %1$s welcomes %2$s" -msgstr "" - -#: ../../include/features.php:86 -msgid "Start calendar week on Monday" -msgstr "" - -#: ../../include/features.php:87 -msgid "Default is Sunday" -msgstr "" - -#: ../../include/features.php:94 -msgid "Event Timezone Selection" -msgstr "" - -#: ../../include/features.php:95 -msgid "Allow event creation in timezones other than your own." -msgstr "" - -#: ../../include/features.php:108 -msgid "Search by Date" -msgstr "" - -#: ../../include/features.php:109 -msgid "Ability to select posts by date ranges" -msgstr "" - -#: ../../include/features.php:116 -msgid "Tag Cloud" -msgstr "" - -#: ../../include/features.php:117 -msgid "Provide a personal tag cloud on your channel page" -msgstr "" - -#: ../../include/features.php:124 ../../include/features.php:351 -msgid "Use blog/list mode" -msgstr "" - -#: ../../include/features.php:125 ../../include/features.php:352 -msgid "Comments will be displayed separately" -msgstr "" - -#: ../../include/features.php:137 -msgid "Connection Filtering" -msgstr "" - -#: ../../include/features.php:138 -msgid "Filter incoming posts from connections based on keywords/content" -msgstr "" - -#: ../../include/features.php:146 -msgid "Conversation" -msgstr "" - -#: ../../include/features.php:150 -msgid "Community Tagging" -msgstr "" - -#: ../../include/features.php:151 -msgid "Ability to tag existing posts" -msgstr "" - -#: ../../include/features.php:158 -msgid "Emoji Reactions" -msgstr "" - -#: ../../include/features.php:159 -msgid "Add emoji reaction ability to posts" -msgstr "" - -#: ../../include/features.php:166 -msgid "Dislike Posts" -msgstr "" - -#: ../../include/features.php:167 -msgid "Ability to dislike posts/comments" -msgstr "" - -#: ../../include/features.php:174 -msgid "Star Posts" -msgstr "" - -#: ../../include/features.php:175 -msgid "Ability to mark special posts with a star indicator" -msgstr "" - -#: ../../include/features.php:182 -msgid "Reply on comment" -msgstr "" - -#: ../../include/features.php:183 -msgid "Ability to reply on selected comment" -msgstr "" - -#: ../../include/features.php:196 -msgid "Advanced Directory Search" -msgstr "" - -#: ../../include/features.php:197 -msgid "Allows creation of complex directory search queries" -msgstr "" - -#: ../../include/features.php:206 -msgid "Editor" -msgstr "" - -#: ../../include/features.php:210 -msgid "Post Categories" -msgstr "" - -#: ../../include/features.php:211 -msgid "Add categories to your posts" -msgstr "" - -#: ../../include/features.php:219 -msgid "Large Photos" -msgstr "" - -#: ../../include/features.php:220 -msgid "" -"Include large (1024px) photo thumbnails in posts. If not enabled, use small " -"(640px) photo thumbnails" -msgstr "" - -#: ../../include/features.php:227 -msgid "Even More Encryption" -msgstr "" - -#: ../../include/features.php:228 -msgid "" -"Allow optional encryption of content end-to-end with a shared secret key" -msgstr "" - -#: ../../include/features.php:235 -msgid "Enable Voting Tools" -msgstr "" - -#: ../../include/features.php:236 -msgid "Provide a class of post which others can vote on" -msgstr "" - -#: ../../include/features.php:243 -msgid "Disable Comments" -msgstr "" - -#: ../../include/features.php:244 -msgid "Provide the option to disable comments for a post" -msgstr "" - -#: ../../include/features.php:251 -msgid "Delayed Posting" -msgstr "" - -#: ../../include/features.php:252 -msgid "Allow posts to be published at a later date" -msgstr "" - -#: ../../include/features.php:259 -msgid "Content Expiration" -msgstr "" - -#: ../../include/features.php:260 -msgid "Remove posts/comments and/or private messages at a future time" -msgstr "" - -#: ../../include/features.php:267 -msgid "Suppress Duplicate Posts/Comments" -msgstr "" - -#: ../../include/features.php:268 -msgid "" -"Prevent posts with identical content to be published with less than two " -"minutes in between submissions." -msgstr "" - -#: ../../include/features.php:275 -msgid "Auto-save drafts of posts and comments" -msgstr "" - -#: ../../include/features.php:276 -msgid "" -"Automatically saves post and comment drafts in local browser storage to help " -"prevent accidental loss of compositions" -msgstr "" - -#: ../../include/features.php:285 -msgid "Manage" -msgstr "" - -#: ../../include/features.php:289 -msgid "Navigation Channel Select" -msgstr "" - -#: ../../include/features.php:290 -msgid "Change channels directly from within the navigation dropdown menu" -msgstr "" - -#: ../../include/features.php:304 -msgid "Save search terms for re-use" -msgstr "" - -#: ../../include/features.php:312 -msgid "Ability to file posts under folders" -msgstr "" - -#: ../../include/features.php:319 -msgid "Alternate Stream Order" -msgstr "" - -#: ../../include/features.php:320 -msgid "" -"Ability to order the stream by last post date, last comment date or " -"unthreaded activities" -msgstr "" - -#: ../../include/features.php:327 -msgid "Contact Filter" -msgstr "" - -#: ../../include/features.php:328 -msgid "Ability to display only posts of a selected contact" -msgstr "" - -#: ../../include/features.php:335 -msgid "Forum Filter" -msgstr "" - -#: ../../include/features.php:336 -msgid "Ability to display only posts of a specific forum" -msgstr "" - -#: ../../include/features.php:343 -msgid "Personal Posts Filter" -msgstr "" - -#: ../../include/features.php:344 -msgid "Ability to display only posts that you've interacted on" -msgstr "" - -#: ../../include/features.php:365 -msgid "Photo Location" -msgstr "" - -#: ../../include/features.php:366 -msgid "If location data is available on uploaded photos, link this to a map." -msgstr "" - -#: ../../include/features.php:379 -msgid "Advanced Profiles" -msgstr "" - -#: ../../include/features.php:380 -msgid "Additional profile sections and selections" -msgstr "" - -#: ../../include/features.php:387 -msgid "Profile Import/Export" -msgstr "" - -#: ../../include/features.php:388 -msgid "Save and load profile details across sites/channels" -msgstr "" - -#: ../../include/features.php:395 -msgid "Multiple Profiles" -msgstr "" - -#: ../../include/features.php:396 -msgid "Ability to create multiple profiles" -msgstr "" - -#: ../../include/taxonomy.php:320 -msgid "Trending" -msgstr "" - -#: ../../include/taxonomy.php:550 -msgid "Keywords" -msgstr "" - -#: ../../include/taxonomy.php:571 -msgid "have" -msgstr "" - -#: ../../include/taxonomy.php:571 -msgid "has" -msgstr "" - -#: ../../include/taxonomy.php:572 -msgid "want" -msgstr "" - -#: ../../include/taxonomy.php:572 -msgid "wants" -msgstr "" - -#: ../../include/taxonomy.php:573 -msgid "likes" -msgstr "" - -#: ../../include/taxonomy.php:574 -msgid "dislikes" -msgstr "" - -#: ../../include/account.php:36 -msgid "Not a valid email address" -msgstr "" - -#: ../../include/account.php:38 -msgid "Your email domain is not among those allowed on this site" -msgstr "" - -#: ../../include/account.php:44 -msgid "Your email address is already registered at this site." -msgstr "" - -#: ../../include/account.php:76 -msgid "An invitation is required." -msgstr "" - -#: ../../include/account.php:80 -msgid "Invitation could not be verified." -msgstr "" - -#: ../../include/account.php:156 -msgid "Please enter the required information." -msgstr "" - -#: ../../include/account.php:223 -msgid "Failed to store account information." -msgstr "" - -#: ../../include/account.php:311 -#, php-format -msgid "Registration confirmation for %s" -msgstr "" - -#: ../../include/account.php:380 -#, php-format -msgid "Registration request at %s" -msgstr "" - -#: ../../include/account.php:402 -msgid "your registration password" -msgstr "" - -#: ../../include/account.php:408 ../../include/account.php:471 -#, php-format -msgid "Registration details for %s" -msgstr "" - -#: ../../include/account.php:482 -msgid "Account approved." -msgstr "" - -#: ../../include/account.php:522 -#, php-format -msgid "Registration revoked for %s" -msgstr "" - -#: ../../include/account.php:805 ../../include/account.php:807 -msgid "Click here to upgrade." -msgstr "" - -#: ../../include/account.php:813 -msgid "This action exceeds the limits set by your subscription plan." -msgstr "" - -#: ../../include/account.php:818 -msgid "This action is not available under your subscription plan." -msgstr "" - -#: ../../include/datetime.php:140 -msgid "Birthday" -msgstr "" - -#: ../../include/datetime.php:140 -msgid "Age: " -msgstr "" - -#: ../../include/datetime.php:140 -msgid "YYYY-MM-DD or MM-DD" -msgstr "" - -#: ../../include/datetime.php:244 -msgid "less than a second ago" -msgstr "" - -#: ../../include/datetime.php:262 -#, php-format -msgctxt "e.g. 22 hours ago, 1 minute ago" -msgid "%1$d %2$s ago" -msgstr "" - -#: ../../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 "" - -#: ../../include/datetime.php:521 -#, php-format -msgid "Happy Birthday %1$s" -msgstr "" - -#: ../../include/nav.php:90 -msgid "Remote authentication" -msgstr "" - -#: ../../include/nav.php:90 -msgid "Click to authenticate to your home hub" -msgstr "" - -#: ../../include/nav.php:96 -msgid "Manage your channels" -msgstr "" - -#: ../../include/nav.php:99 -msgid "Manage your privacy groups" -msgstr "" - -#: ../../include/nav.php:101 -msgid "Account/Channel Settings" -msgstr "" - -#: ../../include/nav.php:107 ../../include/nav.php:136 -msgid "End this session" -msgstr "" - -#: ../../include/nav.php:110 -msgid "Your profile page" -msgstr "" - -#: ../../include/nav.php:113 -msgid "Manage/Edit profiles" -msgstr "" - -#: ../../include/nav.php:122 ../../include/nav.php:126 -msgid "Sign in" -msgstr "" - -#: ../../include/nav.php:153 -msgid "Take me home" -msgstr "" - -#: ../../include/nav.php:155 -msgid "Log me out of this site" -msgstr "" - -#: ../../include/nav.php:160 -msgid "Create an account" -msgstr "" - -#: ../../include/nav.php:172 -msgid "Help and documentation" -msgstr "" - -#: ../../include/nav.php:186 -msgid "Search site @name, !forum, #tag, ?docs, content" -msgstr "" - -#: ../../include/nav.php:192 -msgid "Site Setup and Configuration" -msgstr "" - -#: ../../include/nav.php:332 -msgid "@name, !forum, #tag, ?doc, content" -msgstr "" - -#: ../../include/nav.php:333 -msgid "Please wait..." -msgstr "" - -#: ../../include/nav.php:339 -msgid "Add Apps" -msgstr "" - -#: ../../include/nav.php:340 -msgid "Arrange Apps" -msgstr "" - -#: ../../include/nav.php:341 -msgid "Toggle System Apps" -msgstr "" - -#: ../../include/nav.php:426 -msgid "Status Messages and Posts" -msgstr "" - -#: ../../include/nav.php:439 -msgid "Profile Details" -msgstr "" - -#: ../../include/nav.php:449 ../../include/photos.php:666 -msgid "Photo Albums" -msgstr "" - -#: ../../include/nav.php:457 -msgid "Files and Storage" -msgstr "" - -#: ../../include/nav.php:495 -msgid "Saved Bookmarks" -msgstr "" - -#: ../../include/nav.php:506 -msgid "View Cards" -msgstr "" - -#: ../../include/nav.php:517 -msgid "View Articles" -msgstr "" - -#: ../../include/nav.php:529 -msgid "View Webpages" -msgstr "" - -#: ../../include/photos.php:151 -#, php-format -msgid "Image exceeds website size limit of %lu bytes" -msgstr "" - -#: ../../include/photos.php:162 -msgid "Image file is empty." -msgstr "" - -#: ../../include/photos.php:324 -msgid "Photo storage failed." -msgstr "" - -#: ../../include/photos.php:373 -msgid "a new photo" -msgstr "" - -#: ../../include/photos.php:377 -#, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" -msgstr "" - -#: ../../include/photos.php:671 -msgid "Upload New Photos" -msgstr "" - -#: ../../include/zot.php:774 -msgid "Invalid data packet" -msgstr "" - -#: ../../include/zot.php:4329 -msgid "invalid target signature" -msgstr "" - -#: ../../include/connections.php:133 -msgid "New window" -msgstr "" - -#: ../../include/connections.php:134 -msgid "Open the selected location in a different window or browser tab" -msgstr "" - -#: ../../include/auth.php:192 -msgid "Delegation session ended." -msgstr "" - -#: ../../include/auth.php:196 -msgid "Logged out." -msgstr "" - -#: ../../include/auth.php:291 -msgid "Email validation is incomplete. Please check your email." -msgstr "" - -#: ../../include/auth.php:307 -msgid "Failed authentication" -msgstr "" - -#: ../../include/help.php:80 -msgid "Help:" -msgstr "" - -#: ../../include/help.php:129 -msgid "Not Found" -msgstr "" From 08b804cd2d365a35f26cc7e6b8fb838a0679fa97 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 11 Nov 2019 10:17:03 +0000 Subject: [PATCH 115/134] 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}); From 3a2fdec241b84bd4ae559565876c6869e1c067fe Mon Sep 17 00:00:00 2001 From: zotlabs <mike@macgirvin.com> Date: Wed, 13 Nov 2019 04:25:25 +0000 Subject: [PATCH 116/134] 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 . '@%')), From c850a61a896cfd42cb731f0e159e39e9ffee3236 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Wed, 13 Nov 2019 13:40:40 +0000 Subject: [PATCH 117/134] 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; From a974d0d52dc0f1b40316f0c30e9794b7b700e59e Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Fri, 15 Nov 2019 09:43:39 +0000 Subject: [PATCH 118/134] 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']) From fd7d497cd1ba8846770425fc4dcb07c7cf5bbb85 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Fri, 15 Nov 2019 09:55:44 +0000 Subject: [PATCH 119/134] 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}} From 05604e4bd2f6491ebd567e8583acf820e5459514 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Fri, 15 Nov 2019 10:01:21 +0000 Subject: [PATCH 120/134] 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; + } 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: [PATCH 121/134] no mention notifications from mastodon (and pleroma) (cherry picked from commit ea235c0c6751b682332b968b4c18f905e8ece451) (cherry picked from commit 0159b631fcc2041009cc273b3f5308f06cee0429) --- view/es-es/hmessages.po | 24856 +++++++++++++++++++------------------- view/es-es/hstrings.php | 5718 ++++----- 2 files changed, 15312 insertions(+), 15262 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,983 +23,8017 @@ 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" +#: ../../view/theme/redbasic/php/config.php:16 +#: ../../view/theme/redbasic/php/config.php:19 +msgid "Focus (Hubzilla default)" +msgstr "Focus (predefinido)" -#: ../../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" - -#: ../../Zotlabs/Access/PermissionRoles.php:307 -msgid "Custom/Expert Mode" -msgstr "Modo personalizado/experto" - -#: ../../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." - -#: ../../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." - -#: ../../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:154 ../../include/text.php:2560 -msgid "Blocks" -msgstr "Bloques" - -#: ../../Zotlabs/Module/Blocks.php:156 -msgid "Block Title" -msgstr "Título del bloque" - -#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:177 -#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:266 -msgid "Created" -msgstr "Creado" - -#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:178 -#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:267 -msgid "Edited" -msgstr "Editado" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Module/Invite.php:37 -msgid "Total invitation limit exceeded." -msgstr "Se ha superado el límite máximo de invitaciones." - -#: ../../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. " - -#: ../../Zotlabs/Module/Invite.php:75 -msgid "Please join us on $Projectname" -msgstr "Únase a nosotros en $Projectname" - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../Zotlabs/Module/Invite.php:110 -msgid "Invite App" -msgstr "Solicitar una app" - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Module/Invite.php:124 -msgid "You have no more invitations available" -msgstr "No tiene más invitaciones disponibles" - -#: ../../Zotlabs/Module/Invite.php:155 -msgid "Send invitations" -msgstr "Enviar invitaciones" - -#: ../../Zotlabs/Module/Invite.php:156 -msgid "Enter email addresses, one per line:" -msgstr "Introduzca las direcciones de correo electrónico, una por línea:" - -#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:289 -msgid "Your message:" -msgstr "Su mensaje:" - -#: ../../Zotlabs/Module/Invite.php:158 -msgid "Please join my community on $Projectname." -msgstr "Por favor, únase a mi comunidad en $Projectname." - -#: ../../Zotlabs/Module/Invite.php:160 -msgid "You will need to supply this invitation code:" -msgstr "Tendrá que suministrar este código de invitación:" - -#: ../../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)" - -#: ../../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." - -#: ../../Zotlabs/Module/Invite.php:164 -msgid "or visit" -msgstr "o visitar" - -#: ../../Zotlabs/Module/Invite.php:166 -msgid "3. Click [Connect]" -msgstr "3. Pulse [conectar]" - -#: ../../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/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/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/pumpio/Mod_Pumpio.php:115 #: ../../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 +#: ../../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/Articles.php:51 -msgid "Articles App" -msgstr "App Artículos" +#: ../../view/theme/redbasic/php/config.php:98 +msgid "Theme settings" +msgstr "Ajustes del tema" -#: ../../Zotlabs/Module/Articles.php:52 -msgid "Create interactive articles" -msgstr "Crear artículos interactivos" +#: ../../view/theme/redbasic/php/config.php:99 +msgid "Narrow navbar" +msgstr "Estrechar la barra de navegación" -#: ../../Zotlabs/Module/Articles.php:115 -msgid "Add Article" -msgstr "Añadir un artículo" +#: ../../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/Articles.php:222 ../../Zotlabs/Lib/Apps.php:324 -#: ../../include/nav.php:514 -msgid "Articles" -msgstr "Artículos" +#: ../../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/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" +#: ../../view/theme/redbasic/php/config.php:100 +msgid "Navigation bar background color" +msgstr "Color de fondo de la barra de navegación" -#: ../../Zotlabs/Module/Editlayout.php:128 -#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189 -msgid "Layout Name" -msgstr "Nombre de la plantilla" +#: ../../view/theme/redbasic/php/config.php:101 +msgid "Navigation bar icon color " +msgstr "Color del icono de la barra de navegación" -#: ../../Zotlabs/Module/Editlayout.php:129 -#: ../../Zotlabs/Module/Layouts.php:132 -msgid "Layout Description (Optional)" -msgstr "Descripción de la plantilla (opcional)" +#: ../../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/Editlayout.php:137 -msgid "Edit Layout" -msgstr "Modificar la plantilla" +#: ../../view/theme/redbasic/php/config.php:103 +msgid "Link color" +msgstr "Color del enlace" -#: ../../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" +#: ../../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/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 +#: ../../view/theme/redbasic/php/config.php:105 +msgid "Set the background color" +msgstr "Ajustar el color de fondo" + +#: ../../view/theme/redbasic/php/config.php:106 +msgid "Set the background image" +msgstr "Ajustar la imagen de fondo" + +#: ../../view/theme/redbasic/php/config.php:107 +msgid "Set the background color of items" +msgstr "Ajustar el color de los elementos de fondo" + +#: ../../view/theme/redbasic/php/config.php:108 +msgid "Set the background color of comments" +msgstr "Ajustar el color de fondo de los comentarios" + +#: ../../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" + +#: ../../view/theme/redbasic/php/config.php:109 +msgid "Examples: 1rem, 100%, 16px" +msgstr "Ejemplos: 1rem, 100%, 16px" + +#: ../../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" + +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Set radius of corners" +msgstr "Establecer el radio de curvatura de las esquinas" + +#: ../../view/theme/redbasic/php/config.php:111 +msgid "Example: 4px" +msgstr "Ejemplo: 4px" + +#: ../../view/theme/redbasic/php/config.php:112 +msgid "Set shadow depth of photos" +msgstr "Ajustar la profundidad de sombras de las fotos" + +#: ../../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" + +#: ../../view/theme/redbasic/php/config.php:113 +msgid "Leave empty for default width" +msgstr "Dejar en blanco para la anchura predeterminada" + +#: ../../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" + +#: ../../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" + +#: ../../view/theme/redbasic/php/config.php:116 +msgid "Show advanced settings" +msgstr "Mostrar ajustes avanzados" + +#: ../../util/nconfig.php:34 +msgid "Source channel not found." +msgstr "No se ha encontrado el canal de origen." + +#: ../../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" + +#: ../../addon/channelreputation/channelreputation.php:108 +msgid "Enable Community Moderation" +msgstr "Habilitar la moderación de la comunidad" + +#: ../../addon/channelreputation/channelreputation.php:116 +msgid "Reputation automatically given to new members" +msgstr "La reputación se otorga automáticamente a los nuevos miembros" + +#: ../../addon/channelreputation/channelreputation.php:117 +msgid "Reputation will never fall below this value" +msgstr "La reputación nunca caerá por debajo de este valor" + +#: ../../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" + +#: ../../addon/channelreputation/channelreputation.php:119 +msgid "Minimum reputation before commenting is allowed" +msgstr "Mínima reputación antes de que se permitan los comentarios" + +#: ../../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" + +#: ../../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." + +#: ../../addon/channelreputation/channelreputation.php:122 +msgid "Reputation \"cost\" to post" +msgstr "\"Coste\" de la reputación a contabilizar" + +#: ../../addon/channelreputation/channelreputation.php:123 +msgid "Reputation \"cost\" to comment" +msgstr "\"Coste\" de la reputación para comentar" + +#: ../../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" + +#: ../../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 " + +#: ../../addon/channelreputation/channelreputation.php:139 +msgid "Community Moderation Settings" +msgstr "Configuración de la moderación de la comunidad" + +#: ../../addon/channelreputation/channelreputation.php:229 +msgid "Channel Reputation" +msgstr "Reputación del canal" + +#: ../../addon/channelreputation/channelreputation.php:230 +#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1274 +#: ../../Zotlabs/Lib/ThreadItem.php:463 +msgid "Close" +msgstr "Cerrar" + +#: ../../addon/channelreputation/channelreputation.php:233 +msgid "An Error has occurred." +msgstr "Se ha producido un error." + +#: ../../addon/channelreputation/channelreputation.php:251 +msgid "Upvote" +msgstr "Votar a favor" + +#: ../../addon/channelreputation/channelreputation.php:252 +msgid "Downvote" +msgstr "Votar en contra" + +#: ../../addon/channelreputation/channelreputation.php:374 +msgid "Can moderate reputation on my channel." +msgstr "Se puede moderar la reputación en mi canal." + +#: ../../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" + +#: ../../addon/superblock/Mod_Superblock.php:21 +msgid "Block channels" +msgstr "Bloquear canales" + +#: ../../addon/superblock/Mod_Superblock.php:63 +msgid "superblock settings updated" +msgstr "se han actualizado los ajustes de superblock" + +#: ../../addon/superblock/Mod_Superblock.php:87 +msgid "Currently blocked" +msgstr "Actualmente bloqueado" + +#: ../../addon/superblock/Mod_Superblock.php:89 +msgid "No channels currently blocked" +msgstr "No hay canales bloqueados actualmente" + +#: ../../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" + +#: ../../addon/nsabait/Mod_Nsabait.php:20 +#: ../../addon/nsabait/Mod_Nsabait.php:24 +msgid "NSA Bait App" +msgstr "App NSA Bait " + +#: ../../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" + +#: ../../addon/nsabait/Mod_Nsabait.php:26 +msgid "Make yourself a political target" +msgstr "Conviértase en un objetivo político" + +#: ../../addon/visage/Mod_Visage.php:21 +msgid "Who viewed my channel/profile" +msgstr "Quién ha visto mi canal/perfi" + +#: ../../addon/visage/Mod_Visage.php:25 +msgid "Recent Channel/Profile Viewers" +msgstr "Visitantes recientes del canal o perfil" + +#: ../../addon/visage/Mod_Visage.php:36 +msgid "No entries." +msgstr "No hay entradas." + +#: ../../addon/openclipatar/openclipatar.php:50 +#: ../../addon/openclipatar/openclipatar.php:128 +msgid "System defaults:" +msgstr "Valores predeterminados del sistema: " + +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "Preferred Clipart IDs" +msgstr "IDs de las imágenes clipart preferidas" + +#: ../../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." + +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "Default Search Term" +msgstr "Términos de búsqueda predeterminados" + +#: ../../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." + +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Return After" +msgstr "Regresar después" + +#: ../../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." + +#: ../../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" + +#: ../../addon/openclipatar/openclipatar.php:58 ../../include/nav.php:115 +#: ../../include/channel.php:1430 +msgid "Edit Profile" +msgstr "Editar el perfil" + +#: ../../addon/openclipatar/openclipatar.php:59 +msgid "Profile List" +msgstr "Lista de perfiles" + +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Order of Preferred" +msgstr "Orden de preferencia" + +#: ../../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." + +#: ../../addon/openclipatar/openclipatar.php:62 +#: ../../addon/openclipatar/openclipatar.php:68 +msgid "Newest first" +msgstr "Las más nuevas en primer lugar" + +#: ../../addon/openclipatar/openclipatar.php:65 +msgid "As entered" +msgstr "Tal como se ingresaron" + +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Order of other" +msgstr "Orden de los demás" + +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Sort order of other clipart ids." +msgstr "Orden de clasificación de otros ids de imágenes clipart." + +#: ../../addon/openclipatar/openclipatar.php:69 +msgid "Most downloaded first" +msgstr "Las más descargadas en primer lugar" + +#: ../../addon/openclipatar/openclipatar.php:70 +msgid "Most liked first" +msgstr "Las más apreciadas en primer lugar" + +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Preferred IDs Message" +msgstr "Mensaje de IDs preferido" + +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Message to display above preferred results." +msgstr "Mensaje para mostrar sobre los resultados preferidos." + +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Uploaded by: " +msgstr "Subida por: " + +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Drawn by: " +msgstr "Creada por: " + +#: ../../addon/openclipatar/openclipatar.php:182 +#: ../../addon/openclipatar/openclipatar.php:194 +msgid "Use this image" +msgstr "Usar esta imagen" + +#: ../../addon/openclipatar/openclipatar.php:192 +msgid "Or select from a free OpenClipart.org image:" +msgstr "O seleccionar una imagen gratuita de OpenClipart.org: " + +#: ../../addon/openclipatar/openclipatar.php:195 +msgid "Search Term" +msgstr "Término de búsqueda" + +#: ../../addon/openclipatar/openclipatar.php:232 +msgid "Unknown error. Please try again later." +msgstr "Error desconocido. Por favor, inténtelo otra vez." + +#: ../../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." + +#: ../../addon/openclipatar/openclipatar.php:308 +msgid "Profile photo updated successfully." +msgstr "Se ha actualizado con éxito la foto de perfil." + +#: ../../addon/bookmarker/bookmarker.php:38 +#: ../../Zotlabs/Lib/ThreadItem.php:440 +msgid "Save Bookmarks" +msgstr "Guardar en Marcadores" + +#: ../../addon/queueworker/Mod_Queueworker.php:77 +msgid "Max queueworker threads" +msgstr "Máximo de hilos en la cola" + +#: ../../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" + +#: ../../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)" + +#: ../../addon/queueworker/Mod_Queueworker.php:116 +msgid "Queueworker Settings" +msgstr "Configuración del gestor de procesos de trabajo en cola" + +#: ../../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" + +#: ../../addon/tour/tour.php:76 +msgid "Edit your profile and change settings." +msgstr "Editar su perfil y cambiar los ajustes." + +#: ../../addon/tour/tour.php:77 +msgid "Click here to see activity from your connections." +msgstr "Pulsar aquí para ver la actividad de sus conexiones." + +#: ../../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." + +#: ../../addon/tour/tour.php:79 +msgid "You can access your private messages from here." +msgstr "Puede acceder a sus mensajes privados desde aquí." + +#: ../../addon/tour/tour.php:80 +msgid "Create new events here." +msgstr "Crear nuevos eventos aquí." + +#: ../../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." + +#: ../../addon/tour/tour.php:82 +msgid "System notifications will arrive here" +msgstr "Las notificaciones del sistema llegarán aquí" + +#: ../../addon/tour/tour.php:83 +msgid "Search for content and users" +msgstr "Buscar contenido y usuarios" + +#: ../../addon/tour/tour.php:84 +msgid "Browse for new contacts" +msgstr "Buscar nuevos contactos" + +#: ../../addon/tour/tour.php:85 +msgid "Launch installed apps" +msgstr "Iniciar aplicaciones instaladas" + +#: ../../addon/tour/tour.php:86 +msgid "Looking for help? Click here." +msgstr "¿Busca ayuda? Pulse aquí." + +#: ../../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!" + +#: ../../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!" + +#: ../../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!" + +#: ../../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!" + +#: ../../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!" + +#: ../../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." + +#: ../../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)." + +#: ../../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." + +#: ../../addon/tour/tour.php:97 +msgid "Share photos, links, location, etc." +msgstr "Compartir fotos, enlaces, ubicación, etc." + +#: ../../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." + +#: ../../addon/tour/tour.php:99 +msgid "You can password protect content." +msgstr "Puede proteger contenido con una contraseña." + +#: ../../addon/tour/tour.php:100 +msgid "Choose who you share with." +msgstr "Elegir con quién compartir." + +#: ../../addon/tour/tour.php:102 +msgid "Click here when you are done." +msgstr "Haga clic aquí cuando haya terminado." + +#: ../../addon/tour/tour.php:105 +msgid "Adjust from which channels posts should be displayed." +msgstr "Ajustar de qué canales se deben mostrar las publicaciones." + +#: ../../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." + +#: ../../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 \"#\")." + +#: ../../addon/tour/tour.php:111 +msgid "Easily find posts in given category." +msgstr "Encuentre fácilmente las publicaciones en una categoría dada." + +#: ../../addon/tour/tour.php:112 +msgid "Easily find posts by date." +msgstr "Encuentre fácilmente entradas por fechas." + +#: ../../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." + +#: ../../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." + +#: ../../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." + +#: ../../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." + +#: ../../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!" + +#: ../../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" + +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 +msgid "Add some colour to tag clouds" +msgstr "Añadir color a las nubes de etiquetas" + +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 +msgid "Rainbow Tag App" +msgstr "App Etiqueta Arcoiris" + +#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 +msgid "Rainbow Tag" +msgstr "Etiqueta Arcoiris" + +#: ../../addon/photocache/Mod_Photocache.php:27 +msgid "Photo Cache settings saved." +msgstr "Se ha guardado la configuración de la caché de fotos." + +#: ../../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." + +#: ../../addon/photocache/Mod_Photocache.php:42 +msgid "Photo Cache App" +msgstr "App Photo Cache" + +#: ../../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é" + +#: ../../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." + +#: ../../addon/photocache/Mod_Photocache.php:64 +msgid "Photo Cache" +msgstr "Photo Cache" + +#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 +msgid "Gallery" +msgstr "Galería" + +#: ../../addon/gallery/gallery.php:41 +msgid "Photo Gallery" +msgstr "Galería de fotos" + +#: ../../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." + +#: ../../addon/gallery/Mod_Gallery.php:58 +msgid "Gallery App" +msgstr "App Gallery" + +#: ../../addon/gallery/Mod_Gallery.php:59 +msgid "A simple gallery for your photo albums" +msgstr "Una galería sencilla para sus álbumes de fotos" + +#: ../../addon/planets/Mod_Planets.php:20 +#: ../../addon/planets/Mod_Planets.php:23 +msgid "Random Planet App" +msgstr "App Random Planet" + +#: ../../addon/planets/Mod_Planets.php:25 +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." + +#: ../../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." + +#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1610 +msgid "Male" +msgstr "Hombre" + +#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 +#: ../../include/selectors.php:77 ../../include/channel.php:1608 +msgid "Female" +msgstr "Mujer" + +#: ../../addon/openid/Mod_Openid.php:30 +msgid "OpenID protocol error. No ID returned." +msgstr "Error de protocolo OpenID. No se recuperó ninguna ID." + +#: ../../addon/openid/Mod_Openid.php:76 ../../addon/openid/Mod_Openid.php:178 +#: ../../Zotlabs/Zot/Auth.php:264 +#, php-format +msgid "Welcome %s. Remote authentication successful." +msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente." + +#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 +msgid "Login failed." +msgstr "El acceso ha fallado." + +#: ../../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." + +#: ../../addon/openid/openid.php:49 +msgid "The error message was:" +msgstr "El mensaje de error ha sido: " + +#: ../../addon/openid/MysqlProvider.php:52 +msgid "First Name" +msgstr "Nombre" + +#: ../../addon/openid/MysqlProvider.php:53 +msgid "Last Name" +msgstr "Apellido" + +#: ../../addon/openid/MysqlProvider.php:54 +#: ../../addon/redred/Mod_Redred.php:75 +msgid "Nickname" +msgstr "Alias" + +#: ../../addon/openid/MysqlProvider.php:55 +msgid "Full Name" +msgstr "Nombre completo" + +#: ../../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" + +#: ../../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" + +#: ../../addon/openid/MysqlProvider.php:61 +msgid "Profile Photo 16px" +msgstr "Foto del perfil 16px" + +#: ../../addon/openid/MysqlProvider.php:62 +msgid "Profile Photo 32px" +msgstr "Foto del perfil 32px" + +#: ../../addon/openid/MysqlProvider.php:63 +msgid "Profile Photo 48px" +msgstr "Foto del perfil 48px" + +#: ../../addon/openid/MysqlProvider.php:64 +msgid "Profile Photo 64px" +msgstr "Foto del perfil 64px" + +#: ../../addon/openid/MysqlProvider.php:65 +msgid "Profile Photo 80px" +msgstr "Foto del perfil 80px" + +#: ../../addon/openid/MysqlProvider.php:66 +msgid "Profile Photo 128px" +msgstr "Foto del perfil 128px" + +#: ../../addon/openid/MysqlProvider.php:67 +msgid "Timezone" +msgstr "Zona horaria" + +#: ../../addon/openid/MysqlProvider.php:68 +#: ../../Zotlabs/Module/Profiles.php:767 +msgid "Homepage URL" +msgstr "Dirección de la página personal" + +#: ../../addon/openid/MysqlProvider.php:69 ../../Zotlabs/Lib/Apps.php:358 +msgid "Language" +msgstr "Idioma" + +#: ../../addon/openid/MysqlProvider.php:70 +msgid "Birth Year" +msgstr "Año de nacimiento" + +#: ../../addon/openid/MysqlProvider.php:71 +msgid "Birth Month" +msgstr "Mes de nacimiento" + +#: ../../addon/openid/MysqlProvider.php:72 +msgid "Birth Day" +msgstr "Día de nacimiento" + +#: ../../addon/openid/MysqlProvider.php:73 +msgid "Birthdate" +msgstr "Fecha de nacimiento" + +#: ../../addon/openid/MysqlProvider.php:74 +#: ../../Zotlabs/Module/Profiles.php:486 +msgid "Gender" +msgstr "Género" + +#: ../../addon/moremoods/moremoods.php:19 +msgid "lonely" +msgstr "Solo/a" + +#: ../../addon/moremoods/moremoods.php:20 +msgid "drunk" +msgstr "ebrio/a" + +#: ../../addon/moremoods/moremoods.php:21 +msgid "horny" +msgstr "caliente" + +#: ../../addon/moremoods/moremoods.php:22 +msgid "stoned" +msgstr "drogado/a" + +#: ../../addon/moremoods/moremoods.php:23 +msgid "fucked up" +msgstr "jodido/a" + +#: ../../addon/moremoods/moremoods.php:24 +msgid "clusterfucked" +msgstr "hecho/a polvo" + +#: ../../addon/moremoods/moremoods.php:25 +msgid "crazy" +msgstr "loco/a" + +#: ../../addon/moremoods/moremoods.php:26 +msgid "hurt" +msgstr "ofendido/a" + +#: ../../addon/moremoods/moremoods.php:27 +msgid "sleepy" +msgstr "soñoliento/a" + +#: ../../addon/moremoods/moremoods.php:28 +msgid "grumpy" +msgstr "gruñón/ona" + +#: ../../addon/moremoods/moremoods.php:29 +msgid "high" +msgstr "superior" + +#: ../../addon/moremoods/moremoods.php:30 +msgid "semi-conscious" +msgstr "semiconsciente" + +#: ../../addon/moremoods/moremoods.php:31 +msgid "in love" +msgstr "enamorado/a" + +#: ../../addon/moremoods/moremoods.php:32 +msgid "in lust" +msgstr "lujurioso/a" + +#: ../../addon/moremoods/moremoods.php:33 +msgid "naked" +msgstr "desnudo/a" + +#: ../../addon/moremoods/moremoods.php:34 +msgid "stinky" +msgstr "apestoso/a" + +#: ../../addon/moremoods/moremoods.php:35 +msgid "sweaty" +msgstr "sudoroso/a" + +#: ../../addon/moremoods/moremoods.php:36 +msgid "bleeding out" +msgstr "exánime" + +#: ../../addon/moremoods/moremoods.php:37 +msgid "victorious" +msgstr "victorioso/a" + +#: ../../addon/moremoods/moremoods.php:38 +msgid "defeated" +msgstr "derrotado/a" + +#: ../../addon/moremoods/moremoods.php:39 +msgid "envious" +msgstr "envidioso/a" + +#: ../../addon/moremoods/moremoods.php:40 +msgid "jealous" +msgstr "celoso/a" + +#: ../../addon/dirstats/dirstats.php:94 +msgid "Hubzilla Directory Stats" +msgstr "Estadísticas de directorio de Hubzilla" + +#: ../../addon/dirstats/dirstats.php:95 +msgid "Total Hubs" +msgstr "Número total de servidores" + +#: ../../addon/dirstats/dirstats.php:97 +msgid "Hubzilla Hubs" +msgstr "Servidores (hubs) de Hubzilla" + +#: ../../addon/dirstats/dirstats.php:99 +msgid "Friendica Hubs" +msgstr "Servidores (hubs) de Friendica" + +#: ../../addon/dirstats/dirstats.php:101 +msgid "Diaspora Pods" +msgstr "Servidores (pods) de Diaspora" + +#: ../../addon/dirstats/dirstats.php:103 +msgid "Hubzilla Channels" +msgstr "Canales de Hubzilla" + +#: ../../addon/dirstats/dirstats.php:105 +msgid "Friendica Channels" +msgstr "Canales de Friendica" + +#: ../../addon/dirstats/dirstats.php:107 +msgid "Diaspora Channels" +msgstr "Canales de Diaspora" + +#: ../../addon/dirstats/dirstats.php:109 +msgid "Aged 35 and above" +msgstr "De 35 años de edad en adelante" + +#: ../../addon/dirstats/dirstats.php:111 +msgid "Aged 34 and under" +msgstr "De 34 o menos años de edad" + +#: ../../addon/dirstats/dirstats.php:113 +msgid "Average Age" +msgstr "Promedio de edad" + +#: ../../addon/dirstats/dirstats.php:115 +msgid "Known Chatrooms" +msgstr "Salas de chat conocidas" + +#: ../../addon/dirstats/dirstats.php:117 +msgid "Known Tags" +msgstr "Etiquetas conocidas" + +#: ../../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," + +#: ../../addon/redred/Mod_Redred.php:24 +msgid "Channel is required." +msgstr "Se requiere un canal." + +#: ../../addon/redred/Mod_Redred.php:29 ../../Zotlabs/Module/Network.php:325 +msgid "Invalid channel." +msgstr "El canal no es válido." + +#: ../../addon/redred/Mod_Redred.php:38 +msgid "Hubzilla Crosspost Connector Settings saved." +msgstr "Se han guardado los ajustes de Hubzilla Crosspost Connector" + +#: ../../addon/redred/Mod_Redred.php:50 +#: ../../addon/statusnet/Mod_Statusnet.php:146 +msgid "Hubzilla Crosspost Connector App" +msgstr "App Hubzilla Crosspost Connector" + +#: ../../addon/redred/Mod_Redred.php:51 +msgid "Relay public postings to another Hubzilla channel" +msgstr "Retransmisión de entradas a otro canal de Hubzilla" + +#: ../../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" + +#: ../../addon/redred/Mod_Redred.php:67 +msgid "Hubzilla API Path" +msgstr "Ruta de la API de Hubzilla" + +#: ../../addon/redred/Mod_Redred.php:67 ../../addon/rtof/Mod_Rtof.php:53 +msgid "https://{sitename}/api" +msgstr "https://{sitename}/api" + +#: ../../addon/redred/Mod_Redred.php:71 +msgid "Hubzilla login name" +msgstr "Nombre de inicio de sesión en Hubzilla" + +#: ../../addon/redred/Mod_Redred.php:75 +msgid "Hubzilla channel name" +msgstr "Nombre del canal de Hubzilla" + +#: ../../addon/redred/Mod_Redred.php:79 +#: ../../addon/jappixmini/Mod_Jappixmini.php:195 +msgid "Hubzilla password" +msgstr "Contraseña de Hubzilla" + +#: ../../addon/redred/Mod_Redred.php:87 +msgid "Hubzilla Crosspost Connector" +msgstr "Hubzilla Crosspost Connector" + +#: ../../addon/redred/redred.php:50 +msgid "Post to Hubzilla" +msgstr "Publicar en Hubzilla" + +#: ../../addon/redphotos/redphotos.php:106 +msgid "Photos imported" +msgstr "Se han importado las fotos" + +#: ../../addon/redphotos/redphotos.php:119 #: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109 -#: ../../include/items.php:416 +#: ../../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/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." -msgstr "Identificador del perfil no válido" +#: ../../addon/redphotos/redphotos.php:129 +msgid "Redmatrix Photo Album Import" +msgstr "Importar un álbum de fotos de Redmatrix" -#: ../../Zotlabs/Module/Profperm.php:111 -msgid "Profile Visibility Editor" -msgstr "Editor de visibilidad del perfil" +#: ../../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/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:361 -#: ../../include/channel.php:1766 -msgid "Profile" -msgstr "Perfil" +#: ../../addon/redphotos/redphotos.php:131 +#: ../../addon/redfiles/redfiles.php:121 +msgid "Redmatrix Server base URL" +msgstr "URL base del servidor Redmatrix" -#: ../../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/redphotos/redphotos.php:132 +#: ../../addon/redfiles/redfiles.php:122 +msgid "Redmatrix Login Username" +msgstr "Nombre de inicio de sesión en Redmatrix" -#: ../../Zotlabs/Module/Profperm.php:124 -msgid "Visible To" -msgstr "Visible para" +#: ../../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/Profperm.php:140 -#: ../../Zotlabs/Module/Connections.php:217 -msgid "All Connections" -msgstr "Todas las conexiones" +#: ../../addon/redphotos/redphotos.php:134 +msgid "Import just this album" +msgstr "Importar solo este álbum" -#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 -msgid "Calendar entries imported." -msgstr "Entradas de calendario importadas." +#: ../../addon/redphotos/redphotos.php:134 +msgid "Leave blank to import all albums" +msgstr "Dejar en blanco para importar todos los álbumes" -#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 -msgid "No calendar entries found." -msgstr "No se han encontrado entradas de calendario." +#: ../../addon/redphotos/redphotos.php:135 +msgid "Maximum count to import" +msgstr "Límite máximo de importación" -#: ../../Zotlabs/Module/Cdav.php:870 -msgid "INVALID EVENT DISMISSED!" -msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" +#: ../../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/Cdav.php:871 -msgid "Summary: " -msgstr "Resumen: " +#: ../../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/Cdav.php:871 ../../Zotlabs/Module/Cdav.php:872 -#: ../../Zotlabs/Module/Cdav.php:879 ../../Zotlabs/Module/Embedphotos.php:174 +#: ../../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." + +#: ../../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." + +#: ../../addon/statusnet/Mod_Statusnet.php:130 +msgid "GNU social settings updated." +msgstr "Se han guardado los ajustes de GNU social." + +#: ../../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)" + +#: ../../addon/statusnet/Mod_Statusnet.php:181 +msgid "Globally Available GNU social OAuthKeys" +msgstr "OAuthKeys globales de GNU social disponibles" + +#: ../../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)." + +#: ../../addon/statusnet/Mod_Statusnet.php:198 +msgid "Provide your own OAuth Credentials" +msgstr "Proporcione sus propias credenciales de OAuth" + +#: ../../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." + +#: ../../addon/statusnet/Mod_Statusnet.php:204 +msgid "OAuth Consumer Key" +msgstr "OAuth Consumer Key" + +#: ../../addon/statusnet/Mod_Statusnet.php:208 +msgid "OAuth Consumer Secret" +msgstr "OAuth Consumer Secret" + +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Base API Path" +msgstr "Ruta base de la API" + +#: ../../addon/statusnet/Mod_Statusnet.php:212 +msgid "Remember the trailing /" +msgstr "Recuerde la barra /" + +#: ../../addon/statusnet/Mod_Statusnet.php:216 +msgid "GNU social application name" +msgstr "Nombre de la aplicación de GNU social" + +#: ../../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." + +#: ../../addon/statusnet/Mod_Statusnet.php:241 +msgid "Log in with GNU social" +msgstr "Inicio de sesión en GNU social" + +#: ../../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" + +#: ../../addon/statusnet/Mod_Statusnet.php:254 +msgid "Cancel Connection Process" +msgstr "Cancelar el proceso de conexión" + +#: ../../addon/statusnet/Mod_Statusnet.php:256 +msgid "Current GNU social API is" +msgstr "La API actual de GNU social es " + +#: ../../addon/statusnet/Mod_Statusnet.php:260 +msgid "Cancel GNU social Connection" +msgstr "Cancelar la conexión de GNU social" + +#: ../../addon/statusnet/Mod_Statusnet.php:272 +#: ../../addon/twitter/Mod_Twitter.php:147 +msgid "Currently connected to: " +msgstr "Actualmente está conectado a: " + +#: ../../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." + +#: ../../addon/statusnet/Mod_Statusnet.php:282 +msgid "Post to GNU social by default" +msgstr "Publicar en GNU social por defecto" + +#: ../../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" + +#: ../../addon/statusnet/Mod_Statusnet.php:291 +#: ../../addon/twitter/Mod_Twitter.php:171 +msgid "Clear OAuth configuration" +msgstr "Limpiar la configuración de OAuth" + +#: ../../addon/statusnet/Mod_Statusnet.php:303 +msgid "GNU-Social Crosspost Connector" +msgstr "GNU-Social Crosspost Connector" + +#: ../../addon/statusnet/statusnet.php:145 +msgid "Post to GNU social" +msgstr "Publicar en GNU social" + +#: ../../addon/statusnet/statusnet.php:593 +#: ../../Zotlabs/Module/Admin/Site.php:297 +msgid "Site name" +msgstr "Nombre del sitio" + +#: ../../addon/statusnet/statusnet.php:594 +msgid "API URL" +msgstr "URL de la API" + +#: ../../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" + +#: ../../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" + +#: ../../addon/statusnet/statusnet.php:597 +msgid "Application name" +msgstr "Nombre de la aplicación" + +#: ../../addon/frphotos/frphotos.php:92 +msgid "Friendica Photo Album Import" +msgstr "Importar un álbum de fotos de Friendica" + +#: ../../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." + +#: ../../addon/frphotos/frphotos.php:94 +msgid "Friendica Server base URL" +msgstr "URL base del servidor de Friendica" + +#: ../../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" + +#: ../../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." + +#: ../../addon/rtof/Mod_Rtof.php:36 +msgid "Friendica Crosspost Connector App" +msgstr "App Friendica Crosspost Connector" + +#: ../../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" + +#: ../../addon/rtof/Mod_Rtof.php:49 +msgid "Send public postings to Friendica by default" +msgstr "Enviar entradas públicas a Friendica por defecto" + +#: ../../addon/rtof/Mod_Rtof.php:53 +msgid "Friendica API Path" +msgstr "Ruta a la API de Friendica" + +#: ../../addon/rtof/Mod_Rtof.php:57 +msgid "Friendica login name" +msgstr "Nombre de inicio de sesión en Friendica" + +#: ../../addon/rtof/Mod_Rtof.php:61 +msgid "Friendica password" +msgstr "Contraseña de Friendica" + +#: ../../addon/rtof/Mod_Rtof.php:69 +msgid "Friendica Crosspost Connector" +msgstr "Friendica Crosspost Connector" + +#: ../../addon/rtof/rtof.php:51 +msgid "Post to Friendica" +msgstr "Publicar en Friendica" + +#: ../../addon/wppost/wppost.php:46 +msgid "Post to WordPress" +msgstr "Publicar en WordPress" + +#: ../../addon/wppost/Mod_Wppost.php:28 +msgid "Wordpress Settings saved." +msgstr "Se han guardado los ajustes de WordPress." + +#: ../../addon/wppost/Mod_Wppost.php:41 +msgid "Wordpress Post App" +msgstr "App Publicar en Wordpress" + +#: ../../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" + +#: ../../addon/wppost/Mod_Wppost.php:65 +msgid "WordPress username" +msgstr "Nombre de usuario de WordPress" + +#: ../../addon/wppost/Mod_Wppost.php:69 +msgid "WordPress password" +msgstr "Contraseña de WordPress" + +#: ../../addon/wppost/Mod_Wppost.php:73 +msgid "WordPress API URL" +msgstr "URL de la API de WordPress" + +#: ../../addon/wppost/Mod_Wppost.php:74 +msgid "Typically https://your-blog.tld/xmlrpc.php" +msgstr "Habitualmente https://your-blog.tld/xmlrpc.php" + +#: ../../addon/wppost/Mod_Wppost.php:77 +msgid "WordPress blogid" +msgstr "Blog de WordPress" + +#: ../../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" + +#: ../../addon/wppost/Mod_Wppost.php:82 +msgid "Post to WordPress by default" +msgstr "Publicar en WordPress por defecto" + +#: ../../addon/wppost/Mod_Wppost.php:86 +msgid "Forward comments (requires hubzilla_wp plugin)" +msgstr "Reenviar comentarios (requerido por el plugin hubzilla_wp)" + +#: ../../addon/wppost/Mod_Wppost.php:94 +msgid "Wordpress Post" +msgstr "Publicar en Wordpress" + +#: ../../addon/content_import/Mod_content_import.php:27 +msgid "No server specified" +msgstr "No se ha especificado ningún servidor" + +#: ../../addon/content_import/Mod_content_import.php:73 +msgid "Posts imported" +msgstr "Entradas importadas" + +#: ../../addon/content_import/Mod_content_import.php:113 +msgid "Files imported" +msgstr "Ficheros importados" + +#: ../../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." + +#: ../../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 "" +"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." + +#: ../../addon/content_import/Mod_content_import.php:137 +msgid "Include posts" +msgstr "Incluir entradas" + +#: ../../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" + +#: ../../addon/content_import/Mod_content_import.php:138 +msgid "Include files" +msgstr "Incluir ficheros" + +#: ../../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" + +#: ../../addon/content_import/Mod_content_import.php:139 +msgid "Original Server base URL" +msgstr "URL base del servidor original" + +#: ../../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" + +#: ../../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" + +#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 +msgid "Set your location" +msgstr "Establecer su ubicación" + +#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 +msgid "Clear browser location" +msgstr "Eliminar los datos de localización geográfica del navegador" + +#: ../../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" + +#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 +msgid "Embed (existing) photo from your photo albums" +msgstr "Insertar una foto de sus álbumes" + +#: ../../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:" + +#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 +msgid "Tag term:" +msgstr "Término de la etiqueta:" + +#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 +msgid "Where are you right now?" +msgstr "¿Donde está ahora?" + +#: ../../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" + +#: ../../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" + +#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 +msgid "Choose a different album..." +msgstr "Elegir un álbum diferente..." + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 +msgid "Comments enabled" +msgstr "Comentarios habilitados" + +#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 +msgid "Comments disabled" +msgstr "Comentarios deshabilitados" + +#: ../../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" + +#: ../../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" + +#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 +msgid "Page link name" +msgstr "Nombre del enlace de la página" + +#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 +msgid "Post as" +msgstr "Publicar como" + +#: ../../addon/hsse/hsse.php:200 ../../include/conversation.php:1406 +#: ../../Zotlabs/Lib/ThreadItem.php:797 +msgid "Bold" +msgstr "Negrita" + +#: ../../addon/hsse/hsse.php:201 ../../include/conversation.php:1407 +#: ../../Zotlabs/Lib/ThreadItem.php:798 +msgid "Italic" +msgstr "Itálico " + +#: ../../addon/hsse/hsse.php:202 ../../include/conversation.php:1408 +#: ../../Zotlabs/Lib/ThreadItem.php:799 +msgid "Underline" +msgstr "Subrayar" + +#: ../../addon/hsse/hsse.php:203 ../../include/conversation.php:1409 +#: ../../Zotlabs/Lib/ThreadItem.php:800 +msgid "Quote" +msgstr "Citar" + +#: ../../addon/hsse/hsse.php:204 ../../include/conversation.php:1410 +#: ../../Zotlabs/Lib/ThreadItem.php:801 +msgid "Code" +msgstr "Código" + +#: ../../addon/hsse/hsse.php:205 ../../include/conversation.php:1411 +#: ../../Zotlabs/Lib/ThreadItem.php:803 +msgid "Attach/Upload file" +msgstr "Adjuntar/cargar fichero" + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 +msgid "Toggle voting" +msgstr "Cambiar votación" + +#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 +msgid "Disable comments" +msgstr "Dehabilitar los comentarios" + +#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 +msgid "Toggle comments" +msgstr "Activar o desactivar los comentarios" + +#: ../../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)" + +#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 +msgid "Categories (optional, comma-separated list)" +msgstr "Temas (opcional, lista separada por comas)" + +#: ../../addon/hsse/hsse.php:225 ../../include/conversation.php:1431 +#: ../../Zotlabs/Module/Events.php:487 +msgid "Permission settings" +msgstr "Configuración de permisos" + +#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 +msgid "Other networks and post services" +msgstr "Otras redes y servicios de publicación" + +#: ../../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" + +#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 +msgid "Set publish date" +msgstr "Establecer la fecha de publicación" + +#: ../../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" + +#: ../../addon/hsse/Mod_Hsse.php:15 +msgid "WYSIWYG status editor" +msgstr "Editor de estado de WYSIWYG" + +#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 +msgid "WYSIWYG Status App" +msgstr "App WYSIWYG Status" + +#: ../../addon/hsse/Mod_Hsse.php:34 +msgid "WYSIWYG Status" +msgstr "Estado de WYSIWYG" + +#: ../../addon/openstreetmap/openstreetmap.php:131 +msgid "View Larger" +msgstr "Ver más grande" + +#: ../../addon/openstreetmap/openstreetmap.php:154 +msgid "Tile Server URL" +msgstr "URL del servidor de mosaicos de imágenes " + +#: ../../addon/openstreetmap/openstreetmap.php:154 +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>" + +#: ../../addon/openstreetmap/openstreetmap.php:155 +msgid "Nominatim (reverse geocoding) Server URL" +msgstr "URL del servidor nominatim (geocodificación inversa)" + +#: ../../addon/openstreetmap/openstreetmap.php:155 +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>" + +#: ../../addon/openstreetmap/openstreetmap.php:156 +msgid "Default zoom" +msgstr "Zoom predeterminado" + +#: ../../addon/openstreetmap/openstreetmap.php:156 +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)" + +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include marker on map" +msgstr "Incluir un marcador en el mapa" + +#: ../../addon/openstreetmap/openstreetmap.php:157 +msgid "Include a marker on the map." +msgstr "Incluir un marcador en el mapa." + +#: ../../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." + +#: ../../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." + +#: ../../addon/ijpost/Mod_Ijpost.php:35 +msgid "Insane Journal Crosspost Connector App" +msgstr "App Ajustes del Conector de publicación cruzada de InsaneJournal" + +#: ../../addon/ijpost/Mod_Ijpost.php:36 +msgid "Relay public postings to Insane Journal" +msgstr "Retransmisión de entradas públicas a Insane Journal" + +#: ../../addon/ijpost/Mod_Ijpost.php:53 +msgid "InsaneJournal username" +msgstr "Nombre de usuario en InsaneJournal" + +#: ../../addon/ijpost/Mod_Ijpost.php:57 +msgid "InsaneJournal password" +msgstr "Contraseña en InsaneJournal" + +#: ../../addon/ijpost/Mod_Ijpost.php:61 +msgid "Post to InsaneJournal by default" +msgstr "Publicar por defecto en InsaneJournal" + +#: ../../addon/ijpost/Mod_Ijpost.php:69 +msgid "Insane Journal Crosspost Connector" +msgstr "Conector de publicación cruzada de InsaneJournal" + +#: ../../addon/ijpost/ijpost.php:44 +msgid "Post to Insane Journal" +msgstr "Publicar en Insane Journal" + +#: ../../addon/wholikesme/wholikesme.php:29 +msgid "Who likes me?" +msgstr "¿Quién me ha puesto \"Me gusta\"?" + +#: ../../addon/qrator/qrator.php:48 +msgid "QR code" +msgstr "Código QR" + +#: ../../addon/qrator/qrator.php:63 +msgid "QR Generator" +msgstr "Generador QR" + +#: ../../addon/qrator/qrator.php:64 +msgid "Enter some text" +msgstr "Escribir algún texto" + +#: ../../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:1095 ../../Zotlabs/Lib/Apps.php:1114 +#: ../../Zotlabs/Lib/Activity.php:1192 ../../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" -#: ../../Zotlabs/Module/Cdav.php:872 -msgid "Date: " -msgstr "Fecha: " +#: ../../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" -#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 -msgid "Reason: " -msgstr "Razón: " +#: ../../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 " -#: ../../Zotlabs/Module/Cdav.php:878 -msgid "INVALID CARD DISMISSED!" -msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" +#: ../../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 "A %1$s le gusta %3$s de %2$s" -#: ../../Zotlabs/Module/Cdav.php:879 -msgid "Name: " -msgstr "Nombre: " +#: ../../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 "A %1$s no le gusta %3$s de %2$s" -#: ../../Zotlabs/Module/Cdav.php:899 -msgid "CardDAV App" -msgstr "App CarDav" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:25 +msgid "ActivityPub Protocol Settings updated." +msgstr "Se han actualizado los ajustes del protocolo ActivityPub." -#: ../../Zotlabs/Module/Cdav.php:900 -msgid "CalDAV capable addressbook" -msgstr "Libreta de direcciones compatible con CalDav" +#: ../../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 "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/Cdav.php:968 ../../Zotlabs/Module/Cal.php:167 -#: ../../Zotlabs/Module/Channel_calendar.php:387 -msgid "Link to source" -msgstr "Enlace a la fuente" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 +msgid "Activitypub Protocol App" +msgstr "App Protocolo Activitypub" -#: ../../Zotlabs/Module/Cdav.php:1034 ../../Zotlabs/Module/Events.php:468 -msgid "Event title" -msgstr "Título del evento" +#: ../../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/Cdav.php:1035 ../../Zotlabs/Module/Events.php:474 -msgid "Start date and time" -msgstr "Fecha y hora de comienzo" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 +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" -#: ../../Zotlabs/Module/Cdav.php:1036 -msgid "End date and time" -msgstr "Fecha y hora de finalización" +#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 +msgid "Send multi-media HTML articles" +msgstr "Enviar artículos multimedia en HTML" -#: ../../Zotlabs/Module/Cdav.php:1037 ../../Zotlabs/Module/Events.php:497 -msgid "Timezone:" -msgstr "Zona horaria: " +#: ../../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/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/pubcrawl/Mod_Pubcrawl.php:62 +msgid "Activitypub Protocol" +msgstr "Protocolo Activitypub" -#: ../../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/ldapauth/ldapauth.php:70 +msgid "An account has been created for you." +msgstr "Se ha creado una cuenta para usted." -#: ../../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/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/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/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/Cdav.php:1062 ../../Zotlabs/Module/Events.php:708 -#: ../../Zotlabs/Module/Cal.php:207 -msgid "Today" -msgstr "Hoy" +#: ../../addon/dwpost/Mod_Dwpost.php:36 +msgid "Dreamwidth Crosspost Connector App" +msgstr "App Dreamwidth Crosspost Connector" -#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:703 -msgid "Month" -msgstr "Mes" +#: ../../addon/dwpost/Mod_Dwpost.php:37 +msgid "Relay public postings to Dreamwidth" +msgstr "Retransmisión de entradas públicas a Dreamwidth" -#: ../../Zotlabs/Module/Cdav.php:1064 ../../Zotlabs/Module/Events.php:704 -msgid "Week" -msgstr "Semana" +#: ../../addon/dwpost/Mod_Dwpost.php:52 +msgid "Dreamwidth username" +msgstr "Nombre de usuario en Dreamwidth" -#: ../../Zotlabs/Module/Cdav.php:1065 ../../Zotlabs/Module/Events.php:705 -msgid "Day" -msgstr "Día" +#: ../../addon/dwpost/Mod_Dwpost.php:56 +msgid "Dreamwidth password" +msgstr "Contraseña en Dreamwidth" -#: ../../Zotlabs/Module/Cdav.php:1066 -msgid "List month" -msgstr "Lista mensual" +#: ../../addon/dwpost/Mod_Dwpost.php:60 +msgid "Post to Dreamwidth by default" +msgstr "Publicar en Dreamwidth de forma predeterminada" -#: ../../Zotlabs/Module/Cdav.php:1067 -msgid "List week" -msgstr "Lista semanal" +#: ../../addon/dwpost/Mod_Dwpost.php:68 +msgid "Dreamwidth Crosspost Connector" +msgstr "Dreamwidth Crosspost Connector" -#: ../../Zotlabs/Module/Cdav.php:1068 -msgid "List day" -msgstr "Lista diaria" +#: ../../addon/dwpost/dwpost.php:47 +msgid "Post to Dreamwidth" +msgstr "Publicar en Dreamwidth" -#: ../../Zotlabs/Module/Cdav.php:1076 -msgid "More" -msgstr "Más" +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslap" +msgstr "una bofetada humillante" -#: ../../Zotlabs/Module/Cdav.php:1077 -msgid "Less" -msgstr "Menos" +#: ../../addon/morepokes/morepokes.php:19 +msgid "bitchslapped" +msgstr "ha abofeteado de forma humillante a" -#: ../../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/morepokes/morepokes.php:20 +msgid "shag" +msgstr "un polvo" -#: ../../Zotlabs/Module/Cdav.php:1079 -msgid "Select calendar" -msgstr "Seleccionar un calendario" +#: ../../addon/morepokes/morepokes.php:20 +msgid "shagged" +msgstr "ha dejado exhausto/a a" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:143 -msgid "Channel Calendars" -msgstr "Calendarios del canal" +#: ../../addon/morepokes/morepokes.php:21 +msgid "patent" +msgstr "una patente" -#: ../../Zotlabs/Module/Cdav.php:1080 ../../Zotlabs/Widget/Cdav.php:129 -#: ../../Zotlabs/Widget/Cdav.php:143 -msgid "CalDAV Calendars" -msgstr "Calendarios CalDAV" +#: ../../addon/morepokes/morepokes.php:21 +msgid "patented" +msgstr "ha patentado a" -#: ../../Zotlabs/Module/Cdav.php:1082 -msgid "Delete all" -msgstr "Eliminar todos" +#: ../../addon/morepokes/morepokes.php:22 +msgid "hug" +msgstr "un abrazo" -#: ../../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/morepokes/morepokes.php:22 +msgid "hugged" +msgstr "ha abrazado a" -#: ../../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/morepokes/morepokes.php:23 +msgid "murder" +msgstr "un asesinato" -#: ../../Zotlabs/Module/Cdav.php:1375 +#: ../../addon/morepokes/morepokes.php:23 +msgid "murdered" +msgstr "ha asesinado a" + +#: ../../addon/morepokes/morepokes.php:24 +msgid "worship" +msgstr "una alabanza" + +#: ../../addon/morepokes/morepokes.php:24 +msgid "worshipped" +msgstr "ha elogiado a" + +#: ../../addon/morepokes/morepokes.php:25 +msgid "kiss" +msgstr "un beso" + +#: ../../addon/morepokes/morepokes.php:25 +msgid "kissed" +msgstr "ha besado a" + +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempt" +msgstr "una tentación" + +#: ../../addon/morepokes/morepokes.php:26 +msgid "tempted" +msgstr "ha tentado a" + +#: ../../addon/morepokes/morepokes.php:27 +msgid "raise eyebrows at" +msgstr "un levantamiento de cejas" + +#: ../../addon/morepokes/morepokes.php:27 +msgid "raised their eyebrows at" +msgstr "ha levantado las cejas a" + +#: ../../addon/morepokes/morepokes.php:28 +msgid "insult" +msgstr "un insulto" + +#: ../../addon/morepokes/morepokes.php:28 +msgid "insulted" +msgstr "ha insultado a" + +#: ../../addon/morepokes/morepokes.php:29 +msgid "praise" +msgstr "un elogio" + +#: ../../addon/morepokes/morepokes.php:29 +msgid "praised" +msgstr "ha elogiado a" + +#: ../../addon/morepokes/morepokes.php:30 +msgid "be dubious of" +msgstr "una indecisión" + +#: ../../addon/morepokes/morepokes.php:30 +msgid "was dubious of" +msgstr "estaba dudoso de" + +#: ../../addon/morepokes/morepokes.php:31 +msgid "eat" +msgstr "una comida" + +#: ../../addon/morepokes/morepokes.php:31 +msgid "ate" +msgstr "ha comido" + +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggle and fawn at" +msgstr "una sonrisa aduladora" + +#: ../../addon/morepokes/morepokes.php:32 +msgid "giggled and fawned at" +msgstr "ha sonreído y adulado a" + +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubt" +msgstr "una duda" + +#: ../../addon/morepokes/morepokes.php:33 +msgid "doubted" +msgstr "ha dudado de" + +#: ../../addon/morepokes/morepokes.php:34 +msgid "glare" +msgstr "una mirada furiosa" + +#: ../../addon/morepokes/morepokes.php:34 +msgid "glared at" +msgstr "ha mirado con furia" + +#: ../../addon/morepokes/morepokes.php:35 +msgid "fuck" +msgstr "una mierda" + +#: ../../addon/morepokes/morepokes.php:35 +msgid "fucked" +msgstr "ha mandado a la mierda a" + +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonk" +msgstr "un golpe" + +#: ../../addon/morepokes/morepokes.php:36 +msgid "bonked" +msgstr "ha golpeado a" + +#: ../../addon/morepokes/morepokes.php:37 +msgid "declare undying love for" +msgstr "una declaración de amor eterno" + +#: ../../addon/morepokes/morepokes.php:37 +msgid "declared undying love for" +msgstr "ha declarado amor eterno a" + +#: ../../addon/rendezvous/rendezvous.php:57 +msgid "Errors encountered deleting database table " +msgstr "Errores encontrados al eliminar la tabla de la base de datos" + +#: ../../addon/rendezvous/rendezvous.php:95 +#: ../../addon/twitter/twitter.php:498 +msgid "Submit Settings" +msgstr "Enviar los ajustes" + +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "Drop tables when uninstalling?" +msgstr "¿Eliminar tablas al desinstalar?" + +#: ../../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." + +#: ../../addon/rendezvous/rendezvous.php:97 +msgid "Mapbox Access Token" +msgstr "Token de acceso de Mapbox" + +#: ../../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." + +#: ../../addon/rendezvous/rendezvous.php:162 +msgid "Rendezvous" +msgstr "Rendezvous" + +#: ../../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." + +#: ../../addon/rendezvous/rendezvous.php:168 +msgid "Welcome to Rendezvous!" +msgstr "¡Bienvenido/a a Rendevous!" + +#: ../../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." + +#: ../../addon/rendezvous/rendezvous.php:171 +msgid "Let's meet here" +msgstr "Reunámonos aquí" + +#: ../../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/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" -#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Connedit.php:924 -msgid "Organisation" -msgstr "Organización" +#: ../../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/Cdav.php:1377 ../../Zotlabs/Module/Connedit.php:925 +#: ../../addon/rendezvous/rendezvous.php:174 +msgid "New marker" +msgstr "Nuevo marcador" + +#: ../../addon/rendezvous/rendezvous.php:175 +msgid "Edit marker" +msgstr "Editar un marcador" + +#: ../../addon/rendezvous/rendezvous.php:176 +msgid "New identity" +msgstr "Nueva identidad" + +#: ../../addon/rendezvous/rendezvous.php:177 +msgid "Delete marker" +msgstr "Eliminar un marcador" + +#: ../../addon/rendezvous/rendezvous.php:178 +msgid "Delete member" +msgstr "Eliminar un miembro" + +#: ../../addon/rendezvous/rendezvous.php:179 +msgid "Edit proximity alert" +msgstr "Editar alerta de proximidad" + +#: ../../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):" + +#: ../../addon/rendezvous/rendezvous.php:180 +#: ../../addon/rendezvous/rendezvous.php:185 +msgid "distance" +msgstr "distancia" + +#: ../../addon/rendezvous/rendezvous.php:181 +msgid "Proximity alert distance (meters)" +msgstr "Distancia (en metros) para la alerta de proximidad" + +#: ../../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):" + +#: ../../addon/rendezvous/rendezvous.php:183 +msgid "Marker proximity alert" +msgstr "Marcador de alerta de proximidad" + +#: ../../addon/rendezvous/rendezvous.php:186 +msgid "Reminder note" +msgstr "Recordatorio" + +#: ../../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..." + +#: ../../addon/rendezvous/rendezvous.php:199 +msgid "Add new rendezvous" +msgstr "Añadir una nueva cita" + +#: ../../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." + +#: ../../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!" + +#: ../../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." + +#: ../../addon/startpage/Mod_Startpage.php:50 +msgid "Startpage App" +msgstr "App Startpage" + +#: ../../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" + +#: ../../addon/startpage/Mod_Startpage.php:62 +msgid "Page to load after login" +msgstr "Página para cargar tras el inicio de sesión" + +#: ../../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)." + +#: ../../addon/startpage/Mod_Startpage.php:70 +msgid "Startpage" +msgstr "Startpage" + +#: ../../addon/adultphotoflag/adultphotoflag.php:24 +msgid "Flag Adult Photos" +msgstr "Indicador (\"flag\") de fotos de adultos" + +#: ../../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" + +#: ../../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" + +#: ../../addon/upgrade_info/upgrade_info.php:50 +msgid "Please have a look at the" +msgstr "Por favor, eche un vistazo a la " + +#: ../../addon/upgrade_info/upgrade_info.php:52 +msgid "git history" +msgstr "historial del git" + +#: ../../addon/upgrade_info/upgrade_info.php:54 +msgid "change log" +msgstr "lista de cambios" + +#: ../../addon/upgrade_info/upgrade_info.php:55 +msgid "for further info." +msgstr "para más información." + +#: ../../addon/upgrade_info/upgrade_info.php:60 +msgid "Upgrade Info" +msgstr "Información de actualización" + +#: ../../addon/upgrade_info/upgrade_info.php:64 +msgid "Do not show this again" +msgstr "No mostrar esto de nuevo" + +#: ../../addon/twitter/Mod_Twitter.php:65 +msgid "Twitter settings updated." +msgstr "Se han actualizado los ajustes de Twitter." + +#: ../../addon/twitter/Mod_Twitter.php:78 +msgid "Twitter Crosspost Connector App" +msgstr "App Twitter Crosspost Connector" + +#: ../../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 "" +"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." + +#: ../../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." + +#: ../../addon/twitter/Mod_Twitter.php:127 +msgid "Log in with Twitter" +msgstr "Iniciar sesión en Twitter" + +#: ../../addon/twitter/Mod_Twitter.php:130 +msgid "Copy the PIN from Twitter here" +msgstr "Copiar aquí el PIN de Twitter" + +#: ../../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." + +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Twitter post length" +msgstr "Longitud del mensaje en Twitter" + +#: ../../addon/twitter/Mod_Twitter.php:157 +msgid "Maximum tweet length" +msgstr "Longitud máxima del tweet" + +#: ../../addon/twitter/Mod_Twitter.php:162 +msgid "Send public postings to Twitter by default" +msgstr "Enviar mensajes públicos a Twitter de forma predeterminada" + +#: ../../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." + +#: ../../addon/twitter/Mod_Twitter.php:181 +msgid "Twitter Crosspost Connector" +msgstr "Twitter Crosspost Connector" + +#: ../../addon/twitter/twitter.php:109 +msgid "Post to Twitter" +msgstr "Publicar en Twitter" + +#: ../../addon/pumpio/pumpio.php:152 +msgid "You are now authenticated to pumpio." +msgstr "Ahora está autenticado en pump.io." + +#: ../../addon/pumpio/pumpio.php:153 +msgid "return to the featured settings page" +msgstr "Volver a la página de configuración destacada" + +#: ../../addon/pumpio/pumpio.php:168 +msgid "Post to Pump.io" +msgstr "Publicar en Pump.io" + +#: ../../addon/pumpio/Mod_Pumpio.php:40 +msgid "Pump.io Settings saved." +msgstr "Se han guardado los ajustes de Pump.io" + +#: ../../addon/pumpio/Mod_Pumpio.php:53 +msgid "Pump.io Crosspost Connector App" +msgstr "App Pump.io Crosspost Connector" + +#: ../../addon/pumpio/Mod_Pumpio.php:54 +msgid "Relay public posts to pump.io" +msgstr "Retransmisión de entradas públicas a pump.io" + +#: ../../addon/pumpio/Mod_Pumpio.php:73 +msgid "Pump.io servername" +msgstr "Nombre del servidor de Pump.io" + +#: ../../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" + +#: ../../addon/pumpio/Mod_Pumpio.php:77 +msgid "Without the servername" +msgstr "Sin el nombre del servidor" + +#: ../../addon/pumpio/Mod_Pumpio.php:88 +msgid "You are not authenticated to pumpio" +msgstr "No está autenticado en pump.io" + +#: ../../addon/pumpio/Mod_Pumpio.php:90 +msgid "(Re-)Authenticate your pump.io connection" +msgstr "(Re-)Autenticar su conexión en pump.io" + +#: ../../addon/pumpio/Mod_Pumpio.php:94 +msgid "Post to pump.io by default" +msgstr "Publicar por defecto en pump.io" + +#: ../../addon/pumpio/Mod_Pumpio.php:98 +msgid "Should posts be public" +msgstr "¿Las entradas deben ser públicas?" + +#: ../../addon/pumpio/Mod_Pumpio.php:102 +msgid "Mirror all public posts" +msgstr "Reflejar todos los mensajes públicos" + +#: ../../addon/pumpio/Mod_Pumpio.php:112 +msgid "Pump.io Crosspost Connector" +msgstr "Pump.io Crosspost Connector" + +#: ../../addon/gravatar/gravatar.php:123 +msgid "generic profile image" +msgstr "imagen del perfil general" + +#: ../../addon/gravatar/gravatar.php:124 +msgid "random geometric pattern" +msgstr "patrón geométrico aleatorio" + +#: ../../addon/gravatar/gravatar.php:125 +msgid "monster face" +msgstr "cara de monstruo" + +#: ../../addon/gravatar/gravatar.php:126 +msgid "computer generated face" +msgstr "cara generada por ordenador" + +#: ../../addon/gravatar/gravatar.php:127 +msgid "retro arcade style face" +msgstr "cara de estilo retro arcade" + +#: ../../addon/gravatar/gravatar.php:128 +msgid "Hub default profile photo" +msgstr "Foto del perfil por defecto del hub" + +#: ../../addon/gravatar/gravatar.php:143 +msgid "Information" +msgstr "Información" + +#: ../../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." + +#: ../../addon/gravatar/gravatar.php:150 +#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:43 +msgid "Save Settings" +msgstr "Guardar ajustes" + +#: ../../addon/gravatar/gravatar.php:151 +msgid "Default avatar image" +msgstr "Imagen del avatar por defecto" + +#: ../../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" + +#: ../../addon/gravatar/gravatar.php:152 +msgid "Rating of images" +msgstr "Valoración de las imágenes" + +#: ../../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" + +#: ../../addon/gravatar/gravatar.php:165 +msgid "Gravatar settings updated." +msgstr "Se han actualizado los ajustes de Gravatar." + +#: ../../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" + +#: ../../addon/sendzid/Mod_Sendzid.php:14 +msgid "Send your identity to all websites" +msgstr "Enviar su identidad a todos los sitios web" + +#: ../../addon/sendzid/Mod_Sendzid.php:20 +msgid "Sendzid App" +msgstr "App Sendzid" + +#: ../../addon/sendzid/Mod_Sendzid.php:32 +msgid "Send ZID" +msgstr "Enviar ZID" + +#: ../../addon/cart/widgets/catalogitem.php:57 +#: ../../addon/cart/submodules/hzservices.php:657 +#: ../../addon/cart/submodules/manualcat.php:265 +msgid "Price" +msgstr "Precio" + +#: ../../addon/cart/manual_payments.php:7 +msgid "Error: order mismatch. Please try again." +msgstr "Error: desajuste de pedidos. Por favor, inténtelo de nuevo." + +#: ../../addon/cart/manual_payments.php:61 +msgid "Manual payments are not enabled." +msgstr "Los pagos manuales no están habilitados." + +#: ../../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." + +#: ../../addon/cart/manual_payments.php:77 +msgid "Finished" +msgstr "Terminado" + +#: ../../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" + +#: ../../addon/cart/submodules/subscriptions.php:151 +msgid "Enable Subscription Management Module" +msgstr "Habilitar el módulo de gestión de suscripciones" + +#: ../../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." + +#: ../../addon/cart/submodules/subscriptions.php:372 +msgid "Select Subscription to Edit" +msgstr "Seleccione suscripción a editar" + +#: ../../addon/cart/submodules/subscriptions.php:380 +msgid "Edit Subscriptions" +msgstr "Editar suscripciones" + +#: ../../addon/cart/submodules/subscriptions.php:414 +msgid "Subscription SKU" +msgstr "SKU de la suscripción" + +#: ../../addon/cart/submodules/subscriptions.php:419 +msgid "Catalog Description" +msgstr "Descripción del catálogo" + +#: ../../addon/cart/submodules/subscriptions.php:423 +msgid "Subscription available for purchase." +msgstr "Suscripción disponible para la compra." + +#: ../../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." + +#: ../../addon/cart/submodules/subscriptions.php:431 +msgid "Subscription price." +msgstr "Precio de la suscripción." + +#: ../../addon/cart/submodules/subscriptions.php:435 +msgid "Quantity" +msgstr "Cuantía" + +#: ../../addon/cart/submodules/subscriptions.php:439 +msgid "Term" +msgstr "Condición" + +#: ../../addon/cart/submodules/hzservices.php:62 +msgid "Enable Hubzilla Services Module" +msgstr "Habilitar el Módulo de Servicios de Hubzilla" + +#: ../../addon/cart/submodules/hzservices.php:161 +#: ../../addon/cart/submodules/manualcat.php:174 +msgid "New Sku" +msgstr "Nuevo SKU (número de referencia)" + +#: ../../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." + +#: ../../addon/cart/submodules/hzservices.php:245 +#: ../../addon/cart/submodules/hzservices.php:332 +msgid "SKU not found." +msgstr "No se ha encontrado el SKU" + +#: ../../addon/cart/submodules/hzservices.php:298 +#: ../../addon/cart/submodules/hzservices.php:302 +msgid "Invalid Activation Directive." +msgstr "Directiva de activación no válida." + +#: ../../addon/cart/submodules/hzservices.php:373 +#: ../../addon/cart/submodules/hzservices.php:377 +msgid "Invalid Deactivation Directive." +msgstr "Directiva de desactivación no válida" + +#: ../../addon/cart/submodules/hzservices.php:563 +msgid "Add to this privacy group" +msgstr "Añadir a este grupo de canales" + +#: ../../addon/cart/submodules/hzservices.php:579 +msgid "Set user service class" +msgstr "Configurar la clase de servicio al usuario" + +#: ../../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." + +#: ../../addon/cart/submodules/hzservices.php:646 +#: ../../addon/cart/submodules/manualcat.php:254 +msgid "Changes Locked" +msgstr "Cambios bloqueados" + +#: ../../addon/cart/submodules/hzservices.php:650 +#: ../../addon/cart/submodules/manualcat.php:258 +msgid "Item available for purchase." +msgstr "Artículo disponible para la compra." + +#: ../../addon/cart/submodules/hzservices.php:660 +#: ../../addon/cart/submodules/manualcat.php:268 +msgid "Photo URL" +msgstr "URL de la foto" + +#: ../../addon/cart/submodules/hzservices.php:664 +msgid "Add buyer to privacy group" +msgstr "Agregar comprador al grupo de canales" + +#: ../../addon/cart/submodules/hzservices.php:669 +msgid "Add buyer as connection" +msgstr "Añadir comprador como conexión" + +#: ../../addon/cart/submodules/hzservices.php:677 +#: ../../addon/cart/submodules/hzservices.php:719 +msgid "Set Service Class" +msgstr "Establecer clase de servicio" + +#: ../../addon/cart/submodules/paypalbutton.php:85 +msgid "Enable Paypal Button Module" +msgstr "Habilitar el módulo del botón de Paypal" + +#: ../../addon/cart/submodules/paypalbutton.php:93 +msgid "Use Production Key" +msgstr "Utilizar clave en entorno de producción" + +#: ../../addon/cart/submodules/paypalbutton.php:100 +msgid "Paypal Sandbox Client Key" +msgstr "Clave de cliente en el entorno de pruebas de Paypal" + +#: ../../addon/cart/submodules/paypalbutton.php:107 +msgid "Paypal Sandbox Secret Key" +msgstr "Clave secreta en el entorno de pruebas de Paypal" + +#: ../../addon/cart/submodules/paypalbutton.php:113 +msgid "Paypal Production Client Key" +msgstr "Clave de cliente en el entorno de producción de Paypal" + +#: ../../addon/cart/submodules/paypalbutton.php:120 +msgid "Paypal Production Secret Key" +msgstr "Clave secreta en el entorno de producción de Paypal" + +#: ../../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." + +#: ../../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." + +#: ../../addon/cart/submodules/manualcat.php:61 +msgid "Enable Manual Cart Module" +msgstr "Habilitar el módulo de carro manual" + +#: ../../addon/cart/myshop.php:30 +msgid "Access Denied." +msgstr "Acceso denegado" + +#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1328 +msgid "Order Not Found" +msgstr "No se ha encontrado el pedido" + +#: ../../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" + +#: ../../addon/cart/Settings/Cart.php:56 +msgid "Enable Test Catalog" +msgstr "Habilitar el catálogo de pruebas" + +#: ../../addon/cart/Settings/Cart.php:68 +msgid "Enable Manual Payments" +msgstr "Permitir pagos manuales" + +#: ../../addon/cart/Settings/Cart.php:88 +msgid "Base Merchant Currency" +msgstr "Divida base del vendedor" + +#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1257 +msgid "Cart Settings" +msgstr "Configuración del carro de la compra" + +#: ../../addon/cart/cart.php:150 +msgid "DB Cleanup Failure" +msgstr "Fallo de limpieza de la base de datos" + +#: ../../addon/cart/cart.php:556 +msgid "[cart] Item Added" +msgstr "[cesta] Artículo añadido" + +#: ../../addon/cart/cart.php:945 +msgid "Order already checked out." +msgstr "El pedido ya ha sido revisado" + +#: ../../addon/cart/cart.php:1250 +msgid "Drop database tables when uninstalling." +msgstr "Eliminar tablas de la base de datos al desinstalar." + +#: ../../addon/cart/cart.php:1269 ../../addon/cart/cart.php:1272 +msgid "Shop" +msgstr "Comprar" + +#: ../../addon/cart/cart.php:1292 ../../addon/flashcards/Mod_Flashcards.php:37 +#: ../../Zotlabs/Module/Wiki.php:35 +msgid "Profile Unavailable." +msgstr "Perfil no disponible" + +#: ../../addon/cart/cart.php:1389 +msgid "Cart utilities for orders and payments" +msgstr "Utilidades del carro para pedidos y pagos" + +#: ../../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." + +#: ../../addon/cart/cart.php:1468 +msgid "Access denied." +msgstr "Acceso denegado" + +#: ../../addon/cart/cart.php:1520 ../../addon/cart/cart.php:1663 +msgid "No Order Found" +msgstr "No se ha encontrado ningún pedido" + +#: ../../addon/cart/cart.php:1529 +msgid "An unknown error has occurred Please start again." +msgstr "Se ha producido un error desconocido Vuelva a empezar." + +#: ../../addon/cart/cart.php:1696 +msgid "Invalid Payment Type. Please start again." +msgstr "Tipo de pago no válido. Por favor, empiece de nuevo." + +#: ../../addon/cart/cart.php:1703 +msgid "Order not found" +msgstr "El pedido no se ha encontrado" + +#: ../../addon/nofed/Mod_Nofed.php:21 +msgid "nofed Settings saved." +msgstr "Se han guardado los ajustes de nofed." + +#: ../../addon/nofed/Mod_Nofed.php:33 +msgid "No Federation App" +msgstr "App No Federation" + +#: ../../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." + +#: ../../addon/nofed/Mod_Nofed.php:42 +msgid "Federate posts by default" +msgstr "Federar las publicaciones por defecto" + +#: ../../addon/nofed/Mod_Nofed.php:50 +msgid "No Federation" +msgstr "No Federation" + +#: ../../addon/nofed/nofed.php:47 +msgid "Federate" +msgstr "Federar" + +#: ../../addon/smileybutton/Mod_Smileybutton.php:35 +msgid "Smileybutton App" +msgstr "App Smileybutton" + +#: ../../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" + +#: ../../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." + +#: ../../addon/smileybutton/Mod_Smileybutton.php:52 +msgid "Smileybutton Settings" +msgstr "Ajustes de Smileybutton" + +#: ../../addon/redfiles/redfilehelper.php:64 +msgid "file" +msgstr "fichero" + +#: ../../addon/redfiles/redfiles.php:119 +msgid "Redmatrix File Storage Import" +msgstr "Importar repositorio de ficheros de Redmatrix" + +#: ../../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." + +#: ../../addon/diaspora/p.php:48 ../../addon/diaspora/util.php:336 +#: ../../addon/diaspora/util.php:349 ../../Zotlabs/Lib/Enotify.php:61 +msgid "$projectname" +msgstr "$projectname" + +#: ../../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." + +#: ../../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." + +#: ../../addon/diaspora/import_diaspora.php:141 +#: ../../Zotlabs/Module/Import.php:594 +msgid "Import completed." +msgstr "Importación completada." + +#: ../../addon/diaspora/Mod_Diaspora.php:43 +msgid "Diaspora Protocol Settings updated." +msgstr "Los ajustes del protocolo de Diaspora se han actualizado." + +#: ../../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." + +#: ../../addon/diaspora/Mod_Diaspora.php:58 +msgid "Diaspora Protocol App" +msgstr "App Protocolo Diaspora" + +#: ../../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" + +#: ../../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 " + +#: ../../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" + +#: ../../addon/diaspora/Mod_Diaspora.php:90 +msgid "Followed hashtags (comma separated, do not include the #)" +msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)" + +#: ../../addon/diaspora/Mod_Diaspora.php:99 +msgid "Diaspora Protocol" +msgstr "Protocolo Diaspora" + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../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>." + +#: ../../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)." + +#: ../../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)" + +#: ../../addon/piwik/piwik.php:97 +msgid "Site ID" +msgstr "ID del sitio" + +#: ../../addon/piwik/piwik.php:98 +msgid "Show opt-out cookie link?" +msgstr "Mostrar el enlace de la cookie opt-out?" + +#: ../../addon/piwik/piwik.php:99 +msgid "Asynchronous tracking" +msgstr "Rastreo asíncrono" + +#: ../../addon/piwik/piwik.php:100 +msgid "Enable frontend JavaScript error tracking" +msgstr "Habilitar la interfaz JavaScript de seguimiento de errores" + +#: ../../addon/piwik/piwik.php:100 +msgid "This feature requires Piwik >= 2.2.0" +msgstr "Esta funcionalidad requiere Piwik >= 2.2.0" + +#: ../../addon/workflow/workflow.php:212 +msgid "Workflow user." +msgstr "Usuario de Workflow." + +#: ../../addon/workflow/workflow.php:259 +msgid "This channel" +msgstr "Este canal" + +#: ../../addon/workflow/workflow.php:272 ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" +msgstr "Primario" + +#: ../../addon/workflow/workflow.php:480 +#: ../../addon/workflow/workflow.php:1233 +#: ../../addon/workflow/workflow.php:1251 +msgid "Workflow" +msgstr "Workflow" + +#: ../../addon/workflow/workflow.php:1250 +msgid "Add item to which workflow" +msgstr "A qué Workflow añadir un elemento" + +#: ../../addon/workflow/workflow.php:1297 +#: ../../addon/workflow/workflow.php:1394 +msgid "Create Workflow Item" +msgstr "Crear elemento de Workflow" + +#: ../../addon/workflow/workflow.php:2270 +msgid "Link" +msgstr "Enlazar" + +#: ../../addon/workflow/workflow.php:2272 +msgid "Web link." +msgstr "Enlace Web." + +#: ../../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/Cdav.php:1378 ../../Zotlabs/Module/Connedit.php:926 -#: ../../Zotlabs/Module/Profiles.php:786 -msgid "Phone" -msgstr "Teléfono" +#: ../../addon/workflow/workflow.php:2293 +#: ../../addon/workflow/workflow.php:2346 +msgid "Brief description or title" +msgstr "Breve descripción o título" -#: ../../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/workflow/workflow.php:2299 ../../Zotlabs/Widget/Notes.php:21 +#: ../../Zotlabs/Lib/Apps.php:369 +msgid "Notes" +msgstr "Notas" -#: ../../Zotlabs/Module/Cdav.php:1380 ../../Zotlabs/Module/Connedit.php:928 -#: ../../Zotlabs/Module/Profiles.php:788 -msgid "Instant messenger" -msgstr "Mensajería instantánea" +#: ../../addon/workflow/workflow.php:2301 +#: ../../addon/workflow/workflow.php:2354 +msgid "Notes and Info" +msgstr "Notas e información" -#: ../../Zotlabs/Module/Cdav.php:1381 ../../Zotlabs/Module/Connedit.php:929 -#: ../../Zotlabs/Module/Profiles.php:789 -msgid "Website" -msgstr "Sitio web" +#: ../../addon/workflow/workflow.php:2352 +msgid "Body" +msgstr "Cuerpo" -#: ../../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/workflow/Settings/Mod_WorkflowSettings.php:101 +msgid "Workflow Settings" +msgstr "Ajustes de Workflow" -#: ../../Zotlabs/Module/Cdav.php:1383 ../../Zotlabs/Module/Connedit.php:931 -#: ../../Zotlabs/Module/Profiles.php:791 -msgid "Note" -msgstr "Nota" +#: ../../addon/donate/donate.php:21 +msgid "Project Servers and Resources" +msgstr "Servidores y recursos del proyecto" -#: ../../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/donate/donate.php:22 +msgid "Project Creator and Tech Lead" +msgstr "Creador del proyecto y director técnico" -#: ../../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/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/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/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." + +#: ../../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>.)" + +#: ../../addon/donate/donate.php:54 +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." + +#: ../../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 "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." + +#: ../../addon/donate/donate.php:59 +msgid "Donate" +msgstr "Donar" + +#: ../../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" + +#: ../../addon/donate/donate.php:62 +msgid "Donate Now" +msgstr "Donar ahora" + +#: ../../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)" + +#: ../../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" + +#: ../../addon/donate/donate.php:65 +msgid "Sponsor" +msgstr "Patrocinador" + +#: ../../addon/donate/donate.php:68 +msgid "Special thanks to: " +msgstr "Agradecimiento especial a: " + +#: ../../addon/likebanner/likebanner.php:51 +msgid "Your Webbie:" +msgstr "Su webbie: " + +#: ../../addon/likebanner/likebanner.php:54 +msgid "Fontsize (px):" +msgstr "Tamaño de fuente (px): " + +#: ../../addon/likebanner/likebanner.php:68 +msgid "Link:" +msgstr "Enlace: " + +#: ../../addon/likebanner/likebanner.php:70 +msgid "Like us on Hubzilla" +msgstr "Múestrenos su agrado en Hubzilla" + +#: ../../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 "" +"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." + +#: ../../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." + +#: ../../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 ..." + +#: ../../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" + +#: ../../addon/chords/Mod_Chords.php:58 +msgid "Chord name: example: Em7" +msgstr "Nombre del acorde, por ejemplo: Em7" + +#: ../../addon/chords/Mod_Chords.php:59 +msgid "Show for left handed stringing" +msgstr "Mostrar para tocadores zurdos" + +#: ../../addon/opensearch/opensearch.php:26 +#, php-format +msgctxt "opensearch" +msgid "Search %1$s (%2$s)" +msgstr "Buscar %1$s (%2$s)" + +#: ../../addon/opensearch/opensearch.php:28 +msgctxt "opensearch" +msgid "$Projectname" +msgstr "$Projectname" + +#: ../../addon/opensearch/opensearch.php:42 ../../Zotlabs/Module/Home.php:72 +#: ../../Zotlabs/Module/Home.php:80 ../../Zotlabs/Lib/Enotify.php:66 +msgid "$Projectname" +msgstr "$Projectname" + +#: ../../addon/opensearch/opensearch.php:43 +msgid "Search $Projectname" +msgstr "Buscar $Projectname" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 +msgid "Fuzzloc Settings updated." +msgstr "Los ajustes de Fuzzloc se han actualizado." + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 +msgid "Fuzzy Location App" +msgstr "App Fuzzy Location" + +#: ../../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" + +#: ../../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" + +#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 +msgid "Fuzzy Location" +msgstr "Fuzzy Location" + +#: ../../addon/flattrwidget/flattrwidget.php:50 +msgid "Flattr this!" +msgstr "¡Apoyar esto en Flattr!" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 +msgid "Flattr widget settings updated." +msgstr "Los ajustes del widget Flattr han sido actualizados." + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 +msgid "Flattr Widget App" +msgstr "App Flattr Widget" + +#: ../../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" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 +msgid "Flattr user" +msgstr "Usuario en Flattr" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "URL of the Thing to flattr" +msgstr "URL de la Cosa para apoyar en flattr" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 +msgid "If empty channel URL is used" +msgstr "Si está vacío, se usa la URL del canal" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 +msgid "Title of the Thing to flattr" +msgstr "Título de la Cosa para apoyar en flattr" + +#: ../../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\"" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "Static or dynamic flattr button" +msgstr "Botón de flattr estático o dinámico" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "static" +msgstr "estático" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 +msgid "dynamic" +msgstr "dinámico" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "Alignment of the widget" +msgstr "Alineamiento del widget" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "left" +msgstr "izquierda" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 +msgid "right" +msgstr "derecha" + +#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 +msgid "Flattr Widget" +msgstr "Flattr Widget" + +#: ../../addon/hubwall/hubwall.php:19 +msgid "Send email to all members" +msgstr "Enviar un correo electrónico a todos los miembros" + +#: ../../addon/hubwall/hubwall.php:33 ../../Zotlabs/Lib/Enotify.php:65 +#, php-format +msgid "%s Administrator" +msgstr "%s Administrador" + +#: ../../addon/hubwall/hubwall.php:50 ../../addon/mailtest/mailtest.php:50 +msgid "No recipients found." +msgstr "No se han encontrado destinatarios." + +#: ../../addon/hubwall/hubwall.php:73 +#, php-format +msgid "%1$d of %2$d messages sent." +msgstr "%1$d de %2$d mensajes enviados." + +#: ../../addon/hubwall/hubwall.php:81 +msgid "Send email to all hub members." +msgstr "Enviar un correo electrónico a todos los miembros del hub." + +#: ../../addon/hubwall/hubwall.php:92 ../../addon/mailtest/mailtest.php:96 +msgid "Message subject" +msgstr "Asunto del mensaje" + +#: ../../addon/hubwall/hubwall.php:93 +msgid "Sender Email address" +msgstr "Dirección de correo electrónico del remitente" + +#: ../../addon/hubwall/hubwall.php:94 +msgid "Test mode (only send to hub administrator)" +msgstr "Modo de prueba (enviar sólo al administrador del hub)" + +#: ../../addon/notifyadmin/notifyadmin.php:34 +msgid "New registration" +msgstr "Nuevo registro" + +#: ../../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." + +#: ../../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" + +#: ../../addon/flashcards/Mod_Flashcards.php:169 +msgid "Not allowed." +msgstr "No permitido/a." + +#: ../../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" + +#: ../../addon/flashcards/Mod_Flashcards.php:212 +#: ../../Zotlabs/Module/Filestorage.php:197 +msgid "Set/edit permissions" +msgstr "Establecer/editar los permisos" + +#: ../../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." + +#: ../../addon/libertree/libertree.php:43 +msgid "Post to Libertree" +msgstr "Publicar en Libertree" + +#: ../../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." + +#: ../../addon/libertree/Mod_Libertree.php:35 +msgid "Libertree Crosspost Connector App" +msgstr "App Libertree Crosspost Connector" + +#: ../../addon/libertree/Mod_Libertree.php:36 +msgid "Relay public posts to Libertree" +msgstr "Retransmisión de entradas públicas a Libertree" + +#: ../../addon/libertree/Mod_Libertree.php:51 +msgid "Libertree API token" +msgstr "Token de la API de Libertree" + +#: ../../addon/libertree/Mod_Libertree.php:55 +msgid "Libertree site URL" +msgstr "URL del servidor de Libertree" + +#: ../../addon/libertree/Mod_Libertree.php:59 +msgid "Post to Libertree by default" +msgstr "Publicar en Libertree por defecto" + +#: ../../addon/libertree/Mod_Libertree.php:67 +msgid "Libertree Crosspost Connector" +msgstr "Libertree Crosspost Connector" + +#: ../../addon/randpost/randpost.php:97 +msgid "You're welcome." +msgstr "Bienvenido." + +#: ../../addon/randpost/randpost.php:98 +msgid "Ah shucks..." +msgstr "Ah, joder..." + +#: ../../addon/randpost/randpost.php:99 +msgid "Don't mention it." +msgstr "No lo menciones." + +#: ../../addon/randpost/randpost.php:100 +msgid "<blush>" +msgstr "<sonrojo>" + +#: ../../addon/buglink/buglink.php:16 ../../Zotlabs/Lib/Apps.php:327 +msgid "Report Bug" +msgstr "Informe de errores" + +#: ../../addon/totp/Mod_Totp.php:23 +msgid "TOTP Two-Step Verification" +msgstr "Verificación en dos pasos de TOTP" + +#: ../../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: " + +#: ../../addon/totp/Mod_Totp.php:25 +msgid "Success!" +msgstr "¡Éxito!" + +#: ../../addon/totp/Mod_Totp.php:26 +msgid "Invalid code, please try again." +msgstr "Código inválido, por favor inténtelo de nuevo." + +#: ../../addon/totp/Mod_Totp.php:27 +msgid "Too many invalid codes..." +msgstr "Demasiados códigos no válidos..." + +#: ../../addon/totp/Mod_Totp.php:28 +msgid "Verify" +msgstr "Verficar" + +#: ../../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." + +#: ../../addon/totp/Settings/Totp.php:93 +msgid "Your TOTP secret is" +msgstr "Su TOTP secret es " + +#: ../../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." + +#: ../../addon/totp/Settings/Totp.php:99 +msgid "Test" +msgstr "Test" + +#: ../../addon/totp/Settings/Totp.php:100 +msgid "Generate New Secret" +msgstr "Generar un nuevo Secret" + +#: ../../addon/totp/Settings/Totp.php:101 +msgid "Go" +msgstr "Ir" + +#: ../../addon/totp/Settings/Totp.php:102 +msgid "Enter your password" +msgstr "Introduzca su contraseña" + +#: ../../addon/totp/Settings/Totp.php:103 +msgid "enter TOTP code from your device" +msgstr "introduzca el código TOTP desde su dispositivo" + +#: ../../addon/totp/Settings/Totp.php:104 +msgid "Pass!" +msgstr "¡Pase!" + +#: ../../addon/totp/Settings/Totp.php:105 +msgid "Fail" +msgstr "Fallo" + +#: ../../addon/totp/Settings/Totp.php:106 +msgid "Incorrect password, try again." +msgstr "Contraseña incorrecta, inténtelo de nuevo." + +#: ../../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" + +#: ../../addon/totp/Settings/Totp.php:115 +msgid "TOTP Settings" +msgstr "Ajustes de TOTP" + +#: ../../addon/logrot/logrot.php:36 +msgid "Logfile archive directory" +msgstr "Directorio de los ficheros de informe" + +#: ../../addon/logrot/logrot.php:36 +msgid "Directory to store rotated logs" +msgstr "Directorio para almacenar los informes rotados" + +#: ../../addon/logrot/logrot.php:37 +msgid "Logfile size in bytes before rotating" +msgstr "Tamaño del fichero de informe en bytes antes de rotarlo" + +#: ../../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." + +#: ../../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." + +#: ../../addon/skeleton/Mod_Skeleton.php:32 +msgid "Skeleton App" +msgstr "App Skeleton" + +#: ../../addon/skeleton/Mod_Skeleton.php:33 +msgid "A skeleton for addons, you can copy/paste" +msgstr "Skeleton para los addons, puede copiar/pegar" + +#: ../../addon/skeleton/Mod_Skeleton.php:40 +msgid "Some setting" +msgstr "Algunos ajustes" + +#: ../../addon/skeleton/Mod_Skeleton.php:40 +msgid "A setting" +msgstr "Un ajuste" + +#: ../../addon/skeleton/Mod_Skeleton.php:48 +msgid "Skeleton Settings" +msgstr "Ajustes de Skeleton" + +#: ../../addon/nsfw/nsfw.php:152 +msgid "Possible adult content" +msgstr "Posible contenido para adultos" + +#: ../../addon/nsfw/nsfw.php:167 +#, php-format +msgid "%s - view" +msgstr "ver - %s" + +#: ../../addon/nsfw/Mod_Nsfw.php:22 +msgid "NSFW Settings saved." +msgstr "Se han guardado los ajustes de NSFW." + +#: ../../addon/nsfw/Mod_Nsfw.php:33 +msgid "NSFW App" +msgstr "App NSFW" + +#: ../../addon/nsfw/Mod_Nsfw.php:34 +msgid "Collapse content that contains predefined words" +msgstr "Ocultar el contenido que contiene palabras predefinidas" + +#: ../../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." + +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Comma separated list of keywords to hide" +msgstr "Lista separada por comas de palabras clave para ocultar" + +#: ../../addon/nsfw/Mod_Nsfw.php:49 +msgid "Word, /regular-expression/, lang=xx, lang!=xx" +msgstr "Palabra, /expresión regular/, lang=xx, lang!=xx" + +#: ../../addon/nsfw/Mod_Nsfw.php:58 +msgid "NSFW" +msgstr "NSFW" + +#: ../../addon/upload_limits/upload_limits.php:25 +msgid "Show Upload Limits" +msgstr "Mostrar los límites de subida" + +#: ../../addon/upload_limits/upload_limits.php:27 +msgid "Hubzilla configured maximum size: " +msgstr "Tamaño máximo configurado por Hubzilla: " + +#: ../../addon/upload_limits/upload_limits.php:28 +msgid "PHP upload_max_filesize: " +msgstr "PHP upload_max_filesize: " + +#: ../../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): " + +#: ../../addon/tictac/tictac.php:21 +msgid "Three Dimensional Tic-Tac-Toe" +msgstr "Juego en 3D Tic-Tac-Toe" + +#: ../../addon/tictac/tictac.php:54 +msgid "3D Tic-Tac-Toe" +msgstr "3D Tic-Tac-Toe" + +#: ../../addon/tictac/tictac.php:59 +msgid "New game" +msgstr "Nuevo juego" + +#: ../../addon/tictac/tictac.php:60 +msgid "New game with handicap" +msgstr "Nuevo juego con hándicap" + +#: ../../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." + +#: ../../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." + +#: ../../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." + +#: ../../addon/tictac/tictac.php:183 +msgid "You go first..." +msgstr "Usted va primero..." + +#: ../../addon/tictac/tictac.php:188 +msgid "I'm going first this time..." +msgstr "Yo voy primero esta vez..." + +#: ../../addon/tictac/tictac.php:194 +msgid "You won!" +msgstr "¡Usted ha ganado!" + +#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 +msgid "\"Cat\" game!" +msgstr "¡El juego del \"gato\"!" + +#: ../../addon/tictac/tictac.php:223 +msgid "I won!" +msgstr "¡He ganado yo!" + +#: ../../addon/gnusoc/gnusoc.php:451 +msgid "Follow" +msgstr "Seguir" + +#: ../../addon/gnusoc/gnusoc.php:454 +#, php-format +msgid "%1$s is now following %2$s" +msgstr "%1$s está siguiendo ahora a %2$s" + +#: ../../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." + +#: ../../addon/gnusoc/Mod_Gnusoc.php:22 +msgid "GNU-Social Protocol App" +msgstr "App Protocolo GNU-Social" + +#: ../../addon/gnusoc/Mod_Gnusoc.php:34 +msgid "GNU-Social Protocol" +msgstr "Protocolo GNU-Social" + +#: ../../addon/mailtest/mailtest.php:19 +msgid "Send test email" +msgstr "Enviar un correo electrónico de prueba" + +#: ../../addon/mailtest/mailtest.php:66 +msgid "Mail sent." +msgstr "El correo electrónico ha sido enviado." + +#: ../../addon/mailtest/mailtest.php:68 +msgid "Sending of mail failed." +msgstr "No se pudo enviar el correo." + +#: ../../addon/mailtest/mailtest.php:77 +msgid "Mail Test" +msgstr "Prueba de correo" + +#: ../../addon/ljpost/Mod_Ljpost.php:37 +msgid "Livejournal Crosspost Connector App" +msgstr "App Livejournal Crosspost Connector" + +#: ../../addon/ljpost/Mod_Ljpost.php:38 +msgid "Relay public posts to Livejournal" +msgstr "Retransmisión de entradas públicas a Livejournal" + +#: ../../addon/ljpost/Mod_Ljpost.php:54 +msgid "Livejournal username" +msgstr "Nombre de usuario en Livejournal" + +#: ../../addon/ljpost/Mod_Ljpost.php:58 +msgid "Livejournal password" +msgstr "Contraseña en Livejournal" + +#: ../../addon/ljpost/Mod_Ljpost.php:62 +msgid "Post to Livejournal by default" +msgstr "Publicar en Livejournal por defecto" + +#: ../../addon/ljpost/Mod_Ljpost.php:66 +msgid "Send wall-to-wall posts to Livejournal" +msgstr "Enviar entradas de Muro-Muro a Livejournal" + +#: ../../addon/ljpost/Mod_Ljpost.php:75 +msgid "Livejournal Crosspost Connector" +msgstr "Livejournal Crosspost Connector" + +#: ../../addon/ljpost/ljpost.php:49 +msgid "Post to Livejournal" +msgstr "Publicar en Livejournal" + +#: ../../addon/ljpost/ljpost.php:125 +msgid "Posted by" +msgstr "Publicado por " + +#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 +msgid "Invalid game." +msgstr "Juego no válido." + +#: ../../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." + +#: ../../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" + +#: ../../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." + +#: ../../addon/chess/Mod_Chess.php:271 +msgid "Random color chosen." +msgstr "Elegido un color aleatorio." + +#: ../../addon/chess/Mod_Chess.php:279 +msgid "Error creating new game." +msgstr "Error al crear un nuevo juego." + +#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 +msgid "Requested channel is not available." +msgstr "El canal solicitado no está disponible." + +#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 +msgid "Chess not installed." +msgstr "Chess no está instalado." + +#: ../../addon/chess/Mod_Chess.php:326 +msgid "You must select a local channel /chess/channelname" +msgstr "Debe seleccionar un canal local /chess/nombredelcanal" + +#: ../../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." + +#: ../../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." + +#: ../../addon/chess/chess.php:645 +msgid "Enable notifications" +msgstr "Habilitar notificaciones" + +#: ../../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" + +#: ../../addon/mdpost/mdpost.php:42 +msgid "Use markdown for editing posts" +msgstr "Usar markdown para editar las entradas" + +#: ../../addon/hzfiles/hzfiles.php:81 +msgid "Hubzilla File Storage Import" +msgstr "Importar del depósito de ficheros de Hubzilla" + +#: ../../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." + +#: ../../addon/hzfiles/hzfiles.php:83 +msgid "Hubzilla Server base URL" +msgstr "URL base del servidor Hubzilla" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:96 +msgid "Jappixmini App" +msgstr "App Jappixmini" + +#: ../../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" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:157 +#: ../../include/channel.php:1526 ../../include/channel.php:1697 +msgid "Status:" +msgstr "Estado:" + +#: ../../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" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:166 +msgid "Jabber username" +msgstr "Nombre de usuario en Jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:172 +msgid "Jabber server" +msgstr "Servidor de Jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:178 +msgid "Jabber BOSH host URL" +msgstr "URL del host BOSH de Jabber" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:185 +msgid "Jabber password" +msgstr "Contraseña en Jabber" + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../addon/jappixmini/Mod_Jappixmini.php:212 +msgid "Configuration Help" +msgstr "Ayuda para los ajustes" -#: ../../Zotlabs/Module/Cdav.php:1388 ../../Zotlabs/Module/Connedit.php:936 -#: ../../Zotlabs/Module/Profiles.php:796 #: ../../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/Cdav.php:1389 ../../Zotlabs/Module/Connedit.php:937 -#: ../../Zotlabs/Module/Profiles.php:797 -msgid "Add Field" -msgstr "Añadir un campo" +#: ../../addon/jappixmini/Mod_Jappixmini.php:258 +msgid "Jappixmini Settings" +msgstr "Ajustes de Jappixmini" -#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:942 -msgid "P.O. Box" -msgstr "Buzón de correos" - -#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:943 -msgid "Additional" -msgstr "Adicional" - -#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:944 -msgid "Street" -msgstr "Calle" - -#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:945 -msgid "Locality" -msgstr "Localidad" - -#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Connedit.php:946 -msgid "Region" -msgstr "Provincia, región o estado" - -#: ../../Zotlabs/Module/Cdav.php:1399 ../../Zotlabs/Module/Connedit.php:947 -msgid "ZIP Code" -msgstr "Código postal" - -#: ../../Zotlabs/Module/Cdav.php:1400 ../../Zotlabs/Module/Connedit.php:948 -#: ../../Zotlabs/Module/Profiles.php:757 -msgid "Country" -msgstr "País" - -#: ../../Zotlabs/Module/Cdav.php:1447 -msgid "Default Calendar" -msgstr "Calendario por defecto" - -#: ../../Zotlabs/Module/Cdav.php:1458 -msgid "Default Addressbook" -msgstr "Agenda de direcciones por defecto" - -#: ../../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" - -#: ../../Zotlabs/Module/Permcats.php:28 -msgid "Permission category name is required." -msgstr "El nombre de la categoría de permiso es obligatorio." - -#: ../../Zotlabs/Module/Permcats.php:47 -msgid "Permission category saved." -msgstr "Se ha guardado la categoría del permiso." - -#: ../../Zotlabs/Module/Permcats.php:62 -msgid "Permission Categories App" -msgstr "App Categorías de permisos" - -#: ../../Zotlabs/Module/Permcats.php:63 -msgid "Create custom connection permission limits" -msgstr "Crear límites de permisos de conexión personalizados" - -#: ../../Zotlabs/Module/Permcats.php:79 +#: ../../addon/authchoose/Mod_Authchoose.php:22 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." +"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/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 -msgid "Permission Categories" -msgstr "Tipos de permisos" +#: ../../addon/authchoose/Mod_Authchoose.php:28 +#: ../../addon/authchoose/Mod_Authchoose.php:33 +msgid "Authchoose App" +msgstr "App Authchoose" -#: ../../Zotlabs/Module/Permcats.php:120 -msgid "Permission category name" -msgstr "Nombre de categoría de permiso" +#: ../../addon/authchoose/Mod_Authchoose.php:39 +msgid "Authchoose" +msgstr "Autoseleccionar" -#: ../../Zotlabs/Module/Permcats.php:121 ../../Zotlabs/Module/Tokens.php:181 -#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:266 +#: ../../addon/pageheader/Mod_Pageheader.php:22 +msgid "pageheader Settings saved." +msgstr "Se han guardado los ajustes del encabezado de página." + +#: ../../addon/pageheader/Mod_Pageheader.php:34 +msgid "Page Header App" +msgstr "App Page Header" + +#: ../../addon/pageheader/Mod_Pageheader.php:35 +msgid "Inserts a page header" +msgstr "Inserta un encabezado de página" + +#: ../../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" + +#: ../../addon/pageheader/Mod_Pageheader.php:51 +msgid "Page Header" +msgstr "Page Header" + +#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 +msgid "Popular Channels" +msgstr "Canales populares" + +#: ../../addon/irc/irc.php:37 +msgid "Channels to auto connect" +msgstr "Canales para conexión automática" + +#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 +msgid "Comma separated list" +msgstr "Lista separada por comas" + +#: ../../addon/irc/irc.php:45 +msgid "IRC Settings" +msgstr "Ajustes de IRC" + +#: ../../addon/irc/irc.php:54 +msgid "IRC settings saved." +msgstr "Se han guardado los ajustes de IRC." + +#: ../../addon/irc/irc.php:58 +msgid "IRC Chatroom" +msgstr "Sala de chat IRC" + +#: ../../addon/xmpp/xmpp.php:44 +msgid "Jabber BOSH host" +msgstr "BOSH de Jabber" + +#: ../../addon/xmpp/xmpp.php:45 +msgid "Use central userbase" +msgstr "Usar la base de usuarios central" + +#: ../../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\"." + +#: ../../addon/xmpp/Mod_Xmpp.php:23 +msgid "XMPP settings updated." +msgstr "Se han actualizado los ajustes de XMPP." + +#: ../../addon/xmpp/Mod_Xmpp.php:35 +msgid "XMPP App" +msgstr "App XMPP" + +#: ../../addon/xmpp/Mod_Xmpp.php:36 +msgid "Embedded XMPP (Jabber) client" +msgstr "Cliente XMPP (Jabber) integrado" + +#: ../../addon/xmpp/Mod_Xmpp.php:52 +msgid "Individual credentials" +msgstr "Credenciales individuales" + +#: ../../addon/xmpp/Mod_Xmpp.php:58 +msgid "Jabber BOSH server" +msgstr "Servidor BOSH de Jabber" + +#: ../../addon/xmpp/Mod_Xmpp.php:67 +msgid "XMPP Settings" +msgstr "Ajustes de XMPP" + +#: ../../include/zot.php:774 +msgid "Invalid data packet" +msgstr "Paquete de datos no válido" + +#: ../../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" + +#: ../../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" + +#: ../../include/zot.php:4325 +msgid "invalid target signature" +msgstr "La firma recibida no es válida" + +#: ../../include/text.php:522 +msgid "prev" +msgstr "anterior" + +#: ../../include/text.php:524 +msgid "first" +msgstr "primera" + +#: ../../include/text.php:553 +msgid "last" +msgstr "última" + +#: ../../include/text.php:556 +msgid "next" +msgstr "próxima" + +#: ../../include/text.php:574 +msgid "older" +msgstr "más antiguas" + +#: ../../include/text.php:576 +msgid "newer" +msgstr "más recientes" + +#: ../../include/text.php:1000 +msgid "No connections" +msgstr "Sin conexiones" + +#: ../../include/text.php:1012 ../../include/features.php:133 +#: ../../Zotlabs/Module/Connections.php:351 ../../Zotlabs/Lib/Apps.php:332 +msgid "Connections" +msgstr "Conexiones" + +#: ../../include/text.php:1032 +#, php-format +msgid "View all %s connections" +msgstr "Ver todas las %s conexiones" + +#: ../../include/text.php:1094 +#, php-format +msgid "Network: %s" +msgstr "Red %s" + +#: ../../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" + +#: ../../include/text.php:1197 ../../include/text.php:1201 +msgid "poke" +msgstr "un toque" + +#: ../../include/text.php:1197 ../../include/text.php:1201 +#: ../../include/conversation.php:251 +msgid "poked" +msgstr "ha dado un toque a" + +#: ../../include/text.php:1202 +msgid "ping" +msgstr "un \"ping\"" + +#: ../../include/text.php:1202 +msgid "pinged" +msgstr "ha enviado un \"ping\" a" + +#: ../../include/text.php:1203 +msgid "prod" +msgstr "una incitación " + +#: ../../include/text.php:1203 +msgid "prodded" +msgstr "ha incitado a " + +#: ../../include/text.php:1204 +msgid "slap" +msgstr "una bofetada " + +#: ../../include/text.php:1204 +msgid "slapped" +msgstr "ha abofeteado a " + +#: ../../include/text.php:1205 +msgid "finger" +msgstr "un \"finger\" " + +#: ../../include/text.php:1205 +msgid "fingered" +msgstr "envió un \"finger\" a" + +#: ../../include/text.php:1206 +msgid "rebuff" +msgstr "un reproche" + +#: ../../include/text.php:1206 +msgid "rebuffed" +msgstr "ha hecho un reproche a " + +#: ../../include/text.php:1229 +msgid "happy" +msgstr "feliz " + +#: ../../include/text.php:1230 +msgid "sad" +msgstr "triste " + +#: ../../include/text.php:1231 +msgid "mellow" +msgstr "tranquilo/a" + +#: ../../include/text.php:1232 +msgid "tired" +msgstr "cansado/a " + +#: ../../include/text.php:1233 +msgid "perky" +msgstr "vivaz" + +#: ../../include/text.php:1234 +msgid "angry" +msgstr "enfadado/a" + +#: ../../include/text.php:1235 +msgid "stupefied" +msgstr "asombrado/a" + +#: ../../include/text.php:1236 +msgid "puzzled" +msgstr "perplejo/a" + +#: ../../include/text.php:1237 +msgid "interested" +msgstr "interesado/a" + +#: ../../include/text.php:1238 +msgid "bitter" +msgstr "amargado/a" + +#: ../../include/text.php:1239 +msgid "cheerful" +msgstr "alegre" + +#: ../../include/text.php:1240 +msgid "alive" +msgstr "animado/a" + +#: ../../include/text.php:1241 +msgid "annoyed" +msgstr "molesto/a" + +#: ../../include/text.php:1242 +msgid "anxious" +msgstr "ansioso/a" + +#: ../../include/text.php:1243 +msgid "cranky" +msgstr "de mal humor" + +#: ../../include/text.php:1244 +msgid "disturbed" +msgstr "perturbado/a" + +#: ../../include/text.php:1245 +msgid "frustrated" +msgstr "frustrado/a" + +#: ../../include/text.php:1246 +msgid "depressed" +msgstr "deprimido/a" + +#: ../../include/text.php:1247 +msgid "motivated" +msgstr "motivado/a" + +#: ../../include/text.php:1248 +msgid "relaxed" +msgstr "relajado/a" + +#: ../../include/text.php:1249 +msgid "surprised" +msgstr "sorprendido/a" + +#: ../../include/text.php:1437 ../../include/js_strings.php:96 +msgid "Monday" +msgstr "lunes" + +#: ../../include/text.php:1437 ../../include/js_strings.php:97 +msgid "Tuesday" +msgstr "martes" + +#: ../../include/text.php:1437 ../../include/js_strings.php:98 +msgid "Wednesday" +msgstr "miércoles" + +#: ../../include/text.php:1437 ../../include/js_strings.php:99 +msgid "Thursday" +msgstr "jueves" + +#: ../../include/text.php:1437 ../../include/js_strings.php:100 +msgid "Friday" +msgstr "viernes" + +#: ../../include/text.php:1437 ../../include/js_strings.php:101 +msgid "Saturday" +msgstr "sábado" + +#: ../../include/text.php:1437 ../../include/js_strings.php:95 +msgid "Sunday" +msgstr "domingo" + +#: ../../include/text.php:1441 ../../include/js_strings.php:71 +msgid "January" +msgstr "enero" + +#: ../../include/text.php:1441 ../../include/js_strings.php:72 +msgid "February" +msgstr "febrero" + +#: ../../include/text.php:1441 ../../include/js_strings.php:73 +msgid "March" +msgstr "marzo" + +#: ../../include/text.php:1441 ../../include/js_strings.php:74 +msgid "April" +msgstr "abril" + +#: ../../include/text.php:1441 +msgid "May" +msgstr "mayo" + +#: ../../include/text.php:1441 ../../include/js_strings.php:76 +msgid "June" +msgstr "junio" + +#: ../../include/text.php:1441 ../../include/js_strings.php:77 +msgid "July" +msgstr "julio" + +#: ../../include/text.php:1441 ../../include/js_strings.php:78 +msgid "August" +msgstr "agosto" + +#: ../../include/text.php:1441 ../../include/js_strings.php:79 +msgid "September" +msgstr "septiembre" + +#: ../../include/text.php:1441 ../../include/js_strings.php:80 +msgid "October" +msgstr "octubre" + +#: ../../include/text.php:1441 ../../include/js_strings.php:81 +msgid "November" +msgstr "noviembre" + +#: ../../include/text.php:1441 ../../include/js_strings.php:82 +msgid "December" +msgstr "diciembre" + +#: ../../include/text.php:1515 +msgid "Unknown Attachment" +msgstr "Adjunto no reconocido" + +#: ../../include/text.php:1517 ../../Zotlabs/Module/Sharedwithme.php:106 +#: ../../Zotlabs/Storage/Browser.php:293 +msgid "Size" +msgstr "Tamaño" + +#: ../../include/text.php:1517 ../../include/feedutils.php:870 +msgid "unknown" +msgstr "desconocido" + +#: ../../include/text.php:1553 +msgid "remove category" +msgstr "eliminar el tema" + +#: ../../include/text.php:1629 +msgid "remove from file" +msgstr "eliminar del fichero" + +#: ../../include/text.php:1793 ../../include/message.php:13 +msgid "Download binary/encrypted content" +msgstr "Descargar contenido binario o cifrado" + +#: ../../include/text.php:1941 ../../Zotlabs/Module/Events.php:669 +msgid "Link to Source" +msgstr "Enlazar con la entrada en su ubicación original" + +#: ../../include/text.php:1963 ../../include/language.php:423 +msgid "default" +msgstr "por defecto" + +#: ../../include/text.php:1971 +msgid "Page layout" +msgstr "Plantilla de la página" + +#: ../../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" + +#: ../../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" + +#: ../../include/text.php:1982 +msgid "HTML" +msgstr "HTML" + +#: ../../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" + +#: ../../include/text.php:1985 +msgid "Comanche Layout" +msgstr "Plantilla de Comanche" + +#: ../../include/text.php:1990 +msgid "PHP" +msgstr "PHP" + +#: ../../include/text.php:1999 +msgid "Page content type" +msgstr "Tipo de contenido de la página" + +#: ../../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" + +#: ../../include/text.php:2127 ../../include/conversation.php:146 +#: ../../Zotlabs/Module/Tagger.php:79 +msgid "comment" +msgstr "el comentario" + +#: ../../include/text.php:2132 +msgid "activity" +msgstr "la/su actividad" + +#: ../../include/text.php:2233 +msgid "a-z, 0-9, -, and _ only" +msgstr "a-z, 0-9, -, and _ only" + +#: ../../include/text.php:2559 +msgid "Design Tools" +msgstr "Herramientas de diseño web" + +#: ../../include/text.php:2562 ../../Zotlabs/Module/Blocks.php:154 +msgid "Blocks" +msgstr "Bloques" + +#: ../../include/text.php:2563 ../../Zotlabs/Module/Menu.php:171 +msgid "Menus" +msgstr "Menús" + +#: ../../include/text.php:2564 ../../Zotlabs/Module/Layouts.php:184 +msgid "Layouts" +msgstr "Plantillas" + +#: ../../include/text.php:2565 +msgid "Pages" +msgstr "Páginas" + +#: ../../include/text.php:2577 +msgid "Import" +msgstr "Importar" + +#: ../../include/text.php:2578 +msgid "Import website..." +msgstr "Importar un sitio web..." + +#: ../../include/text.php:2579 +msgid "Select folder to import" +msgstr "Seleccionar la carpeta que se va a importar" + +#: ../../include/text.php:2580 +msgid "Import from a zipped folder:" +msgstr "Importar desde una carpeta comprimida: " + +#: ../../include/text.php:2581 +msgid "Import from cloud files:" +msgstr "Importar desde los ficheros en la nube: " + +#: ../../include/text.php:2582 +msgid "/cloud/channel/path/to/folder" +msgstr "/cloud/canal/ruta/a la/carpeta" + +#: ../../include/text.php:2583 +msgid "Enter path to website files" +msgstr "Ruta a los ficheros del sitio web" + +#: ../../include/text.php:2584 +msgid "Select folder" +msgstr "Seleccionar la carpeta" + +#: ../../include/text.php:2585 +msgid "Export website..." +msgstr "Exportar un sitio web..." + +#: ../../include/text.php:2586 +msgid "Export to a zip file" +msgstr "Exportar a un fichero comprimido .zip" + +#: ../../include/text.php:2587 +msgid "website.zip" +msgstr "sitio_web.zip" + +#: ../../include/text.php:2588 +msgid "Enter a name for the zip file." +msgstr "Escriba un nombre para el fichero zip." + +#: ../../include/text.php:2589 +msgid "Export to cloud files" +msgstr "Exportar a la nube de ficheros" + +#: ../../include/text.php:2590 +msgid "/path/to/export/folder" +msgstr "/ruta/para/exportar/carpeta" + +#: ../../include/text.php:2591 +msgid "Enter a path to a cloud files destination." +msgstr "Escriba una ruta de destino a la nube de ficheros." + +#: ../../include/text.php:2592 +msgid "Specify folder" +msgstr "Especificar una carpeta" + +#: ../../include/text.php:2954 ../../Zotlabs/Storage/Browser.php:131 +msgid "Collection" +msgstr "Colección" + +#: ../../include/opengraph.php:58 +#, php-format +msgid "This is the home page of %s." +msgstr "Esta es la página personal de %s." + +#: ../../include/event.php:32 ../../include/event.php:95 +msgid "l F d, Y \\@ g:i A" +msgstr "l d de F, Y \\@ G:i" + +#: ../../include/event.php:40 +msgid "Starts:" +msgstr "Comienza:" + +#: ../../include/event.php:50 +msgid "Finishes:" +msgstr "Finaliza:" + +#: ../../include/event.php:62 ../../include/event.php:112 +#: ../../include/channel.php:1521 ../../Zotlabs/Module/Directory.php:339 +msgid "Location:" +msgstr "Ubicación:" + +#: ../../include/event.php:95 +msgid "l F d, Y" +msgstr "l F d, Y" + +#: ../../include/event.php:99 +msgid "Start:" +msgstr "Iniciar: " + +#: ../../include/event.php:103 +msgid "End:" +msgstr "Finalizar: " + +#: ../../include/event.php:1064 +msgid "This event has been added to your calendar." +msgstr "Este evento ha sido añadido a su calendario." + +#: ../../include/event.php:1290 +msgid "Not specified" +msgstr "Sin especificar" + +#: ../../include/event.php:1291 +msgid "Needs Action" +msgstr "Necesita de una intervención" + +#: ../../include/event.php:1292 +msgid "Completed" +msgstr "Completado/a" + +#: ../../include/event.php:1293 +msgid "In Process" +msgstr "En proceso" + +#: ../../include/event.php:1294 +msgid "Cancelled" +msgstr "Cancelado/a" + +#: ../../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" + +#: ../../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" + +#: ../../include/event.php:1377 ../../include/connections.php:730 +msgid "Home, Voice" +msgstr "Llamadas particulares" + +#: ../../include/event.php:1378 ../../include/connections.php:731 +msgid "Home, Fax" +msgstr "Fax particular" + +#: ../../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" + +#: ../../include/event.php:1380 ../../include/connections.php:733 +msgid "Work, Voice" +msgstr "Llamadas de trabajo" + +#: ../../include/event.php:1381 ../../include/connections.php:734 +msgid "Work, Fax" +msgstr "Fax de trabajo" + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../include/features.php:86 +msgid "Start calendar week on Monday" +msgstr "Comenzar el calendario semanal por el lunes" + +#: ../../include/features.php:87 +msgid "Default is Sunday" +msgstr "Por defecto es domingo" + +#: ../../include/features.php:94 +msgid "Event Timezone Selection" +msgstr "Selección del huso horario del evento" + +#: ../../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." + +#: ../../include/features.php:104 ../../Zotlabs/Lib/Apps.php:342 +msgid "Channel Home" +msgstr "Mi canal" + +#: ../../include/features.php:108 +msgid "Search by Date" +msgstr "Buscar por fecha" + +#: ../../include/features.php:109 +msgid "Ability to select posts by date ranges" +msgstr "Capacidad de seleccionar entradas por rango de fechas" + +#: ../../include/features.php:116 +msgid "Tag Cloud" +msgstr "Nube de etiquetas" + +#: ../../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" + +#: ../../include/features.php:124 ../../include/features.php:351 +msgid "Use blog/list mode" +msgstr "Usar el modo blog/lista" + +#: ../../include/features.php:125 ../../include/features.php:352 +msgid "Comments will be displayed separately" +msgstr "Los comentarios se mostrarán por separado" + +#: ../../include/features.php:137 +msgid "Connection Filtering" +msgstr "Filtrado de conexiones" + +#: ../../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" + +#: ../../include/features.php:146 +msgid "Conversation" +msgstr "Conversación" + +#: ../../include/features.php:150 +msgid "Community Tagging" +msgstr "Etiquetas de la comunidad" + +#: ../../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\"" + +#: ../../include/features.php:159 +msgid "Add emoji reaction ability to posts" +msgstr "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas" + +#: ../../include/features.php:166 +msgid "Dislike Posts" +msgstr "Desagrado de publicaciones" + +#: ../../include/features.php:167 +msgid "Ability to dislike posts/comments" +msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios" + +#: ../../include/features.php:174 +msgid "Star Posts" +msgstr "Entradas destacadas" + +#: ../../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" + +#: ../../include/features.php:182 +msgid "Reply on comment" +msgstr "Responder a los comentarios" + +#: ../../include/features.php:183 +msgid "Ability to reply on selected comment" +msgstr "Posibilidad de responder a los comentarios seleccionados" + +#: ../../include/features.php:192 ../../Zotlabs/Lib/Apps.php:346 +msgid "Directory" +msgstr "Directorio" + +#: ../../include/features.php:196 +msgid "Advanced Directory Search" +msgstr "Búsqueda avanzada en el directorio" + +#: ../../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" + +#: ../../include/features.php:206 +msgid "Editor" +msgstr "Editor" + +#: ../../include/features.php:210 +msgid "Post Categories" +msgstr "Temas de las entradas" + +#: ../../include/features.php:211 +msgid "Add categories to your posts" +msgstr "Añadir temas a sus publicaciones" + +#: ../../include/features.php:219 +msgid "Large Photos" +msgstr "Fotos de gran tamaño" + +#: ../../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)" + +#: ../../include/features.php:227 +msgid "Even More Encryption" +msgstr "Más cifrado todavía" + +#: ../../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." + +#: ../../include/features.php:235 +msgid "Enable Voting Tools" +msgstr "Permitir entradas con votación" + +#: ../../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" + +#: ../../include/features.php:243 +msgid "Disable Comments" +msgstr "Deshabilitar comentarios" + +#: ../../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" + +#: ../../include/features.php:251 +msgid "Delayed Posting" +msgstr "Publicación aplazada" + +#: ../../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" + +#: ../../include/features.php:259 +msgid "Content Expiration" +msgstr "Caducidad del contenido" + +#: ../../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" + +#: ../../include/features.php:267 +msgid "Suppress Duplicate Posts/Comments" +msgstr "Prevenir entradas o comentarios duplicados" + +#: ../../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." + +#: ../../include/features.php:275 +msgid "Auto-save drafts of posts and comments" +msgstr "Guardar automáticamente borradores de entradas y comentarios" + +#: ../../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." + +#: ../../include/features.php:285 +msgid "Manage" +msgstr "Gestionar" + +#: ../../include/features.php:289 +msgid "Navigation Channel Select" +msgstr "Navegación por el selector de canales" + +#: ../../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" + +#: ../../include/features.php:299 ../../Zotlabs/Module/Connections.php:310 +msgid "Network" +msgstr "Red" + +#: ../../include/features.php:303 ../../Zotlabs/Widget/Savedsearch.php:83 +msgid "Saved Searches" +msgstr "Búsquedas guardadas" + +#: ../../include/features.php:304 +msgid "Save search terms for re-use" +msgstr "Guardar términos de búsqueda para su reutilización" + +#: ../../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" + +#: ../../include/features.php:312 +msgid "Ability to file posts under folders" +msgstr "Capacidad de archivar entradas en carpetas" + +#: ../../include/features.php:319 +msgid "Alternate Stream Order" +msgstr "Orden de stream alternativo" + +#: ../../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" + +#: ../../include/features.php:327 +msgid "Contact Filter" +msgstr "Filtro de contactos" + +#: ../../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" + +#: ../../include/features.php:335 +msgid "Forum Filter" +msgstr "Filtro de foro" + +#: ../../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" + +#: ../../include/features.php:343 +msgid "Personal Posts Filter" +msgstr "Filtro de entradas personales" + +#: ../../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" + +#: ../../include/features.php:361 ../../include/nav.php:446 +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 +msgid "Photos" +msgstr "Fotos" + +#: ../../include/features.php:365 +msgid "Photo Location" +msgstr "Ubicación de las fotos" + +#: ../../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." + +#: ../../include/features.php:375 ../../Zotlabs/Lib/Apps.php:362 +msgid "Profiles" +msgstr "Perfiles" + +#: ../../include/features.php:379 +msgid "Advanced Profiles" +msgstr "Perfiles avanzados" + +#: ../../include/features.php:380 +msgid "Additional profile sections and selections" +msgstr "Secciones y selecciones de perfil adicionales" + +#: ../../include/features.php:387 +msgid "Profile Import/Export" +msgstr "Importar/Exportar perfil" + +#: ../../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" + +#: ../../include/features.php:395 +msgid "Multiple Profiles" +msgstr "Múltiples perfiles" + +#: ../../include/features.php:396 +msgid "Ability to create multiple profiles" +msgstr "Capacidad de crear múltiples perfiles" + +#: ../../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" + +#: ../../include/js_strings.php:5 +msgid "Delete this item?" +msgstr "¿Borrar este elemento?" + +#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1095 +#: ../../Zotlabs/Module/Photos.php:1214 ../../Zotlabs/Lib/ThreadItem.php:795 +msgid "Comment" +msgstr "Comentar" + +#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:502 +#, php-format +msgid "%s show all" +msgstr "%s mostrar todo" + +#: ../../include/js_strings.php:8 +#, php-format +msgid "%s show less" +msgstr "%s mostrar menos" + +#: ../../include/js_strings.php:9 +#, php-format +msgid "%s expand" +msgstr "%s expandir" + +#: ../../include/js_strings.php:10 +#, php-format +msgid "%s collapse" +msgstr "%s contraer" + +#: ../../include/js_strings.php:11 +msgid "Password too short" +msgstr "Contraseña demasiado corta" + +#: ../../include/js_strings.php:12 +msgid "Passwords do not match" +msgstr "Las contraseñas no coinciden" + +#: ../../include/js_strings.php:13 +msgid "everybody" +msgstr "cualquiera" + +#: ../../include/js_strings.php:14 +msgid "Secret Passphrase" +msgstr "Contraseña secreta" + +#: ../../include/js_strings.php:15 +msgid "Passphrase hint" +msgstr "Pista de contraseña" + +#: ../../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." + +#: ../../include/js_strings.php:17 +msgid "close all" +msgstr "cerrar todo" + +#: ../../include/js_strings.php:18 +msgid "Nothing new here" +msgstr "Nada nuevo por aquí" + +#: ../../include/js_strings.php:19 +msgid "Rate This Channel (this is public)" +msgstr "Valorar este canal (esto es público)" + +#: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155 +#: ../../Zotlabs/Module/Connedit.php:887 +msgid "Rating" +msgstr "Valoración" + +#: ../../include/js_strings.php:21 +msgid "Describe (optional)" +msgstr "Describir (opcional)" + +#: ../../include/js_strings.php:23 +msgid "Please enter a link URL" +msgstr "Por favor, introduzca una dirección de enlace" + +#: ../../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?" + +#: ../../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" + +#: ../../include/js_strings.php:26 +msgid "lovely" +msgstr "encantador" + +#: ../../include/js_strings.php:27 +msgid "wonderful" +msgstr "fabuloso" + +#: ../../include/js_strings.php:28 +msgid "fantastic" +msgstr "fantástico" + +#: ../../include/js_strings.php:29 +msgid "great" +msgstr "grandioso" + +#: ../../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 (" + +#: ../../include/js_strings.php:31 +msgid ") or enter a new one." +msgstr ") o introduzca uno nuevo." + +#: ../../include/js_strings.php:32 +msgid "Thank you, this nickname is valid." +msgstr "Gracias, este alias es válido." + +#: ../../include/js_strings.php:33 +msgid "A channel name is required." +msgstr "Se requiere un nombre de canal" + +#: ../../include/js_strings.php:34 +msgid "This is a " +msgstr "Esto es un " + +#: ../../include/js_strings.php:35 +msgid " channel name" +msgstr "nombre de canal" + +#: ../../include/js_strings.php:36 +msgid "Back to reply" +msgstr "Volver a la respuesta" + +#: ../../include/js_strings.php:42 +#, php-format +msgid "%d minutes" +msgid_plural "%d minutes" +msgstr[0] "%d minutos" +msgstr[1] "%d minutos" + +#: ../../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" + +#: ../../include/js_strings.php:44 +#, php-format +msgid "%d days" +msgid_plural "%d days" +msgstr[0] "%d días" +msgstr[1] "%d días" + +#: ../../include/js_strings.php:45 +#, php-format +msgid "%d months" +msgid_plural "%d months" +msgstr[0] "%d meses" +msgstr[1] "%d meses" + +#: ../../include/js_strings.php:46 +#, php-format +msgid "%d years" +msgid_plural "%d years" +msgstr[0] "%d años" +msgstr[1] "%d años" + +#: ../../include/js_strings.php:51 +msgid "timeago.prefixAgo" +msgstr "hace " + +#: ../../include/js_strings.php:52 +msgid "timeago.prefixFromNow" +msgstr "en " + +#: ../../include/js_strings.php:53 +msgid "timeago.suffixAgo" +msgstr "NONE" + +#: ../../include/js_strings.php:54 +msgid "timeago.suffixFromNow" +msgstr "NONE" + +#: ../../include/js_strings.php:57 +msgid "less than a minute" +msgstr "menos de un minuto" + +#: ../../include/js_strings.php:58 +msgid "about a minute" +msgstr "alrededor de un minuto" + +#: ../../include/js_strings.php:60 +msgid "about an hour" +msgstr "alrededor de una hora" + +#: ../../include/js_strings.php:62 +msgid "a day" +msgstr "un día" + +#: ../../include/js_strings.php:64 +msgid "about a month" +msgstr "alrededor de un mes" + +#: ../../include/js_strings.php:66 +msgid "about a year" +msgstr "alrededor de un año" + +#: ../../include/js_strings.php:68 +msgid " " +msgstr " " + +#: ../../include/js_strings.php:69 +msgid "timeago.numbers" +msgstr "timeago.numbers" + +#: ../../include/js_strings.php:75 +msgctxt "long" +msgid "May" +msgstr "mayo" + +#: ../../include/js_strings.php:83 +msgid "Jan" +msgstr "ene" + +#: ../../include/js_strings.php:84 +msgid "Feb" +msgstr "feb" + +#: ../../include/js_strings.php:85 +msgid "Mar" +msgstr "mar" + +#: ../../include/js_strings.php:86 +msgid "Apr" +msgstr "abr" + +#: ../../include/js_strings.php:87 +msgctxt "short" +msgid "May" +msgstr "may" + +#: ../../include/js_strings.php:88 +msgid "Jun" +msgstr "jun" + +#: ../../include/js_strings.php:89 +msgid "Jul" +msgstr "jul" + +#: ../../include/js_strings.php:90 +msgid "Aug" +msgstr "ago" + +#: ../../include/js_strings.php:91 +msgid "Sep" +msgstr "sep" + +#: ../../include/js_strings.php:92 +msgid "Oct" +msgstr "oct" + +#: ../../include/js_strings.php:93 +msgid "Nov" +msgstr "nov" + +#: ../../include/js_strings.php:94 +msgid "Dec" +msgstr "dic" + +#: ../../include/js_strings.php:102 +msgid "Sun" +msgstr "dom" + +#: ../../include/js_strings.php:103 +msgid "Mon" +msgstr "lun" + +#: ../../include/js_strings.php:104 +msgid "Tue" +msgstr "mar" + +#: ../../include/js_strings.php:105 +msgid "Wed" +msgstr "mié" + +#: ../../include/js_strings.php:106 +msgid "Thu" +msgstr "jue" + +#: ../../include/js_strings.php:107 +msgid "Fri" +msgstr "vie" + +#: ../../include/js_strings.php:108 +msgid "Sat" +msgstr "sáb" + +#: ../../include/js_strings.php:109 +msgctxt "calendar" +msgid "today" +msgstr "hoy" + +#: ../../include/js_strings.php:110 +msgctxt "calendar" +msgid "month" +msgstr "mes" + +#: ../../include/js_strings.php:111 +msgctxt "calendar" +msgid "week" +msgstr "semana" + +#: ../../include/js_strings.php:112 +msgctxt "calendar" +msgid "day" +msgstr "día" + +#: ../../include/js_strings.php:113 +msgctxt "calendar" +msgid "All day" +msgstr "Todos los días" + +#: ../../include/help.php:80 +msgid "Help:" +msgstr "Ayuda:" + +#: ../../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" + +#: ../../include/help.php:129 +msgid "Not Found" +msgstr "No encontrado" + +#: ../../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" + +#: ../../include/photos.php:162 +msgid "Image file is empty." +msgstr "El fichero de imagen está vacío. " + +#: ../../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" + +#: ../../include/photos.php:324 +msgid "Photo storage failed." +msgstr "La foto no ha podido ser guardada." + +#: ../../include/photos.php:373 +msgid "a new photo" +msgstr "una nueva foto" + +#: ../../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" + +#: ../../include/photos.php:666 ../../include/nav.php:449 +msgid "Photo Albums" +msgstr "Álbumes de fotos" + +#: ../../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" + +#: ../../include/photos.php:671 +msgid "Upload New Photos" +msgstr "Subir nuevas fotos" + +#: ../../include/network.php:1726 ../../include/network.php:1727 +msgid "Friendica" +msgstr "Friendica" + +#: ../../include/network.php:1728 +msgid "OStatus" +msgstr "OStatus" + +#: ../../include/network.php:1729 +msgid "GNU-Social" +msgstr "GNU Social" + +#: ../../include/network.php:1730 +msgid "RSS/Atom" +msgstr "RSS/Atom" + +#: ../../include/network.php:1733 +msgid "Diaspora" +msgstr "Diaspora" + +#: ../../include/network.php:1734 +msgid "Facebook" +msgstr "Facebook" + +#: ../../include/network.php:1735 +msgid "Zot" +msgstr "Zot" + +#: ../../include/network.php:1736 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: ../../include/network.php:1737 +msgid "XMPP/IM" +msgstr "XMPP/IM" + +#: ../../include/network.php:1738 +msgid "MySpace" +msgstr "MySpace" + +#: ../../include/activities.php:42 +msgid " and " +msgstr " y " + +#: ../../include/activities.php:50 +msgid "public profile" +msgstr "el perfil público" + +#: ../../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”" + +#: ../../include/activities.php:60 +#, php-format +msgid "Visit %1$s's %2$s" +msgstr "Visitar %2$s de %1$s" + +#: ../../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." + +#: ../../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" + +#: ../../include/contact_widgets.php:16 +#: ../../Zotlabs/Module/Admin/Site.php:293 +msgid "Advanced" +msgstr "Avanzado" + +#: ../../include/contact_widgets.php:19 +msgid "Find Channels" +msgstr "Encontrar canales" + +#: ../../include/contact_widgets.php:20 +msgid "Enter name or interest" +msgstr "Introducir nombre o interés" + +#: ../../include/contact_widgets.php:21 +msgid "Connect/Follow" +msgstr "Conectar/Seguir" + +#: ../../include/contact_widgets.php:22 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "Ejemplos: José Fernández, Pesca" + +#: ../../include/contact_widgets.php:23 ../../Zotlabs/Module/Directory.php:416 +#: ../../Zotlabs/Module/Directory.php:421 +#: ../../Zotlabs/Module/Connections.php:358 +msgid "Find" +msgstr "Encontrar" + +#: ../../include/contact_widgets.php:24 ../../Zotlabs/Module/Directory.php:420 +#: ../../Zotlabs/Module/Suggest.php:79 +msgid "Channel Suggestions" +msgstr "Sugerencias de canales" + +#: ../../include/contact_widgets.php:26 +msgid "Random Profile" +msgstr "Perfil aleatorio" + +#: ../../include/contact_widgets.php:27 +msgid "Invite Friends" +msgstr "Invitar a amigos" + +#: ../../include/contact_widgets.php:29 +msgid "Advanced example: name=fred and country=iceland" +msgstr "Ejemplo avanzado: nombre=juan y país=españa" + +#: ../../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" + +#: ../../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" + +#: ../../include/contact_widgets.php:218 +msgid "Common Connections" +msgstr "Conexiones comunes" + +#: ../../include/contact_widgets.php:222 +#, php-format +msgid "View all %d common connections" +msgstr "Ver todas las %d conexiones comunes" + +#: ../../include/language.php:436 +msgid "Select an alternate language" +msgstr "Seleccionar un idioma alternativo" + +#: ../../include/import.php:28 +msgid "Unable to import a removed channel." +msgstr "No se puede importar un canal eliminado." + +#: ../../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." + +#: ../../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." + +#: ../../include/nav.php:90 +msgid "Remote authentication" +msgstr "Acceder desde su servidor" + +#: ../../include/nav.php:90 +msgid "Click to authenticate to your home hub" +msgstr "Pulsar para identificarse en su servidor de inicio" + +#: ../../include/nav.php:96 ../../Zotlabs/Module/Manage.php:170 +#: ../../Zotlabs/Lib/Apps.php:336 +msgid "Channel Manager" +msgstr "Administración de canales" + +#: ../../include/nav.php:96 +msgid "Manage your channels" +msgstr "Gestionar sus canales" + +#: ../../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" + +#: ../../include/nav.php:99 +msgid "Manage your privacy groups" +msgstr "Gestionar sus grupos de canales" + +#: ../../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" + +#: ../../include/nav.php:101 +msgid "Account/Channel Settings" +msgstr "Ajustes de cuenta/canales" + +#: ../../include/nav.php:107 ../../include/nav.php:136 +#: ../../include/nav.php:155 ../../boot.php:1673 +msgid "Logout" +msgstr "Finalizar sesión" + +#: ../../include/nav.php:107 ../../include/nav.php:136 +msgid "End this session" +msgstr "Finalizar esta sesión" + +#: ../../include/nav.php:110 +msgid "Your profile page" +msgstr "Su página del perfil" + +#: ../../include/nav.php:113 ../../include/channel.php:1426 +#: ../../Zotlabs/Module/Profiles.php:830 +msgid "Edit Profiles" +msgstr "Editar perfiles" + +#: ../../include/nav.php:113 +msgid "Manage/Edit profiles" +msgstr "Administrar/editar perfiles" + +#: ../../include/nav.php:115 ../../Zotlabs/Widget/Newmember.php:35 +msgid "Edit your profile" +msgstr "Editar su perfil" + +#: ../../include/nav.php:122 ../../include/nav.php:126 +#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1674 +msgid "Login" +msgstr "Iniciar sesión" + +#: ../../include/nav.php:122 ../../include/nav.php:126 +msgid "Sign in" +msgstr "Acceder" + +#: ../../include/nav.php:153 +msgid "Take me home" +msgstr "Volver a la página principal" + +#: ../../include/nav.php:155 +msgid "Log me out of this site" +msgstr "Salir de este sitio" + +#: ../../include/nav.php:160 ../../Zotlabs/Module/Register.php:293 +#: ../../boot.php:1654 +msgid "Register" +msgstr "Registrarse" + +#: ../../include/nav.php:160 +msgid "Create an account" +msgstr "Crear una cuenta" + +#: ../../include/nav.php:172 +msgid "Help and documentation" +msgstr "Ayuda y documentación" + +#: ../../include/nav.php:186 +msgid "Search site @name, !forum, #tag, ?docs, content" +msgstr "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido" + +#: ../../include/nav.php:192 ../../Zotlabs/Widget/Admin.php:55 +msgid "Admin" +msgstr "Administrador" + +#: ../../include/nav.php:192 +msgid "Site Setup and Configuration" +msgstr "Ajustes y configuración del sitio" + +#: ../../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" + +#: ../../include/nav.php:332 +msgid "@name, !forum, #tag, ?doc, content" +msgstr "@nombre, !foro, #tag, ?docs, contenido" + +#: ../../include/nav.php:333 +msgid "Please wait..." +msgstr "Espere por favor…" + +#: ../../include/nav.php:339 +msgid "Add Apps" +msgstr "Añadir aplicaciones" + +#: ../../include/nav.php:340 +msgid "Arrange Apps" +msgstr "Organizar aplicaciones" + +#: ../../include/nav.php:341 +msgid "Toggle System Apps" +msgstr "Alternar aplicaciones de sistema" + +#: ../../include/nav.php:423 ../../Zotlabs/Module/Admin/Channels.php:154 +msgid "Channel" +msgstr "Canal" + +#: ../../include/nav.php:426 +msgid "Status Messages and Posts" +msgstr "Mensajes de estado y publicaciones" + +#: ../../include/nav.php:436 ../../Zotlabs/Module/Help.php:80 +msgid "About" +msgstr "Mi perfil" + +#: ../../include/nav.php:439 +msgid "Profile Details" +msgstr "Detalles del perfil" + +#: ../../include/nav.php:454 ../../Zotlabs/Module/Fbrowser.php:85 +#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Storage/Browser.php:278 +msgid "Files" +msgstr "Ficheros" + +#: ../../include/nav.php:457 +msgid "Files and Storage" +msgstr "Ficheros y repositorio" + +#: ../../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" + +#: ../../include/nav.php:492 ../../Zotlabs/Lib/Apps.php:328 +msgid "Bookmarks" +msgstr "Marcadores" + +#: ../../include/nav.php:495 +msgid "Saved Bookmarks" +msgstr "Marcadores guardados" + +#: ../../include/nav.php:503 ../../Zotlabs/Module/Cards.php:207 +#: ../../Zotlabs/Lib/Apps.php:325 +msgid "Cards" +msgstr "Fichas" + +#: ../../include/nav.php:506 +msgid "View Cards" +msgstr "Ver las fichas" + +#: ../../include/nav.php:514 ../../Zotlabs/Module/Articles.php:226 +#: ../../Zotlabs/Lib/Apps.php:324 +msgid "Articles" +msgstr "Artículos" + +#: ../../include/nav.php:517 +msgid "View Articles" +msgstr "Ver los artículos" + +#: ../../include/nav.php:526 ../../Zotlabs/Module/Webpages.php:252 +#: ../../Zotlabs/Lib/Apps.php:340 +msgid "Webpages" +msgstr "Páginas web" + +#: ../../include/nav.php:529 +msgid "View Webpages" +msgstr "Ver páginas web" + +#: ../../include/nav.php:538 ../../Zotlabs/Widget/Wiki_list.php:15 +#: ../../Zotlabs/Module/Wiki.php:206 +msgid "Wikis" +msgstr "Wikis" + +#: ../../include/nav.php:541 ../../Zotlabs/Lib/Apps.php:341 +msgid "Wiki" +msgstr "Wiki" + +#: ../../include/auth.php:192 +msgid "Delegation session ended." +msgstr "Finalizó la sesión de la delegación." + +#: ../../include/auth.php:196 +msgid "Logged out." +msgstr "Desconectado/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." + +#: ../../include/auth.php:307 +msgid "Failed authentication" +msgstr "Autenticación fallida." + +#: ../../include/datetime.php:58 ../../Zotlabs/Widget/Newmember.php:51 +#: ../../Zotlabs/Module/Profiles.php:736 +msgid "Miscellaneous" +msgstr "Varios" + +#: ../../include/datetime.php:140 +msgid "Birthday" +msgstr "Cumpleaños" + +#: ../../include/datetime.php:140 +msgid "Age: " +msgstr "Edad:" + +#: ../../include/datetime.php:140 +msgid "YYYY-MM-DD or MM-DD" +msgstr "AAAA-MM-DD o MM-DD" + +#: ../../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" + +#: ../../include/datetime.php:238 ../../boot.php:2605 +msgid "never" +msgstr "nunca" + +#: ../../include/datetime.php:244 +msgid "less than a second ago" +msgstr "hace un instante" + +#: ../../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" + +#: ../../include/datetime.php:273 +msgctxt "relative_date" +msgid "year" +msgid_plural "years" +msgstr[0] "año" +msgstr[1] "años" + +#: ../../include/datetime.php:276 +msgctxt "relative_date" +msgid "month" +msgid_plural "months" +msgstr[0] "mes" +msgstr[1] "meses" + +#: ../../include/datetime.php:279 +msgctxt "relative_date" +msgid "week" +msgid_plural "weeks" +msgstr[0] "semana" +msgstr[1] "semanas" + +#: ../../include/datetime.php:282 +msgctxt "relative_date" +msgid "day" +msgid_plural "days" +msgstr[0] "día" +msgstr[1] "días" + +#: ../../include/datetime.php:285 +msgctxt "relative_date" +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "horas" + +#: ../../include/datetime.php:288 +msgctxt "relative_date" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuto" +msgstr[1] "minutos" + +#: ../../include/datetime.php:291 +msgctxt "relative_date" +msgid "second" +msgid_plural "seconds" +msgstr[0] "segundo" +msgstr[1] "segundos" + +#: ../../include/datetime.php:520 +#, php-format +msgid "%1$s's birthday" +msgstr "Cumpleaños de %1$s" + +#: ../../include/datetime.php:521 +#, php-format +msgid "Happy Birthday %1$s" +msgstr "Feliz cumpleaños %1$s" + +#: ../../include/follow.php:37 +msgid "Channel is blocked on this site." +msgstr "El canal está bloqueado en este sitio." + +#: ../../include/follow.php:42 +msgid "Channel location missing." +msgstr "Falta la dirección del canal." + +#: ../../include/follow.php:84 +msgid "Response from remote channel was incomplete." +msgstr "Respuesta incompleta del canal." + +#: ../../include/follow.php:96 +msgid "Premium channel - please visit:" +msgstr "Canal Premium - por favor visite:" + +#: ../../include/follow.php:110 +msgid "Channel was deleted and no longer exists." +msgstr "El canal ha sido eliminado y ya no existe." + +#: ../../include/follow.php:166 +msgid "Remote channel or protocol unavailable." +msgstr "Canal remoto o protocolo no disponible." + +#: ../../include/follow.php:190 +msgid "Channel discovery failed." +msgstr "El intento de acceder al canal ha fallado." + +#: ../../include/follow.php:202 +msgid "Protocol disabled." +msgstr "Protocolo deshabilitado." + +#: ../../include/follow.php:213 +msgid "Cannot connect to yourself." +msgstr "No puede conectarse consigo mismo." + +#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:123 +msgid "channel" +msgstr "el canal" + +#: ../../include/conversation.php:169 +#, php-format +msgid "likes %1$s's %2$s" +msgstr "gusta de %2$s de %1$s" + +#: ../../include/conversation.php:172 +#, php-format +msgid "doesn't like %1$s's %2$s" +msgstr "no gusta de %2$s de %1$s" + +#: ../../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" + +#: ../../include/conversation.php:247 +#, php-format +msgid "%1$s poked %2$s" +msgstr "%1$s ha dado un toque a %2$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" + +#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:468 +msgid "This is an unsaved preview" +msgstr "Esta es una previsualización sin guardar" + +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Likes" +msgstr "Me gusta" + +#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1112 +msgctxt "title" +msgid "Dislikes" +msgstr "No me gusta" + +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Agree" +msgstr "De acuerdo" + +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Disagree" +msgstr "En desacuerdo" + +#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1113 +msgctxt "title" +msgid "Abstain" +msgstr "Abstención" + +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Attending" +msgstr "Participaré" + +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Not attending" +msgstr "No participaré" + +#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1114 +msgctxt "title" +msgid "Might attend" +msgstr "Quizá participe" + +#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:178 +msgid "Select" +msgstr "Seleccionar" + +#: ../../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" + +#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:267 +msgid "Toggle Star Status" +msgstr "Activar o desactivar el estado de entrada preferida" + +#: ../../include/conversation.php:700 ../../Zotlabs/Lib/ThreadItem.php:103 +msgid "Private Message" +msgstr "Mensaje Privado" + +#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:278 +msgid "Message signature validated" +msgstr "Firma de mensaje validada" + +#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:279 +msgid "Message signature incorrect" +msgstr "Firma de mensaje incorrecta" + +#: ../../include/conversation.php:735 +#: ../../Zotlabs/Module/Admin/Accounts.php:173 +#: ../../Zotlabs/Module/Connections.php:320 +msgid "Approve" +msgstr "Aprobar" + +#: ../../include/conversation.php:739 +#, php-format +msgid "View %s's profile @ %s" +msgstr "Ver el perfil @ %s de %s" + +#: ../../include/conversation.php:759 +msgid "Categories:" +msgstr "Temas:" + +#: ../../include/conversation.php:760 +msgid "Filed under:" +msgstr "Archivado bajo:" + +#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:401 +#, php-format +msgid "from %s" +msgstr "desde %s" + +#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:404 +#, php-format +msgid "last edited: %s" +msgstr "último cambio: %s" + +#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:405 +#, php-format +msgid "Expires: %s" +msgstr "Caduca: %s" + +#: ../../include/conversation.php:785 +msgid "View in context" +msgstr "Mostrar en su contexto" + +#: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1076 +#: ../../Zotlabs/Lib/ThreadItem.php:469 +msgid "Please wait" +msgstr "Espere por favor" + +#: ../../include/conversation.php:886 +msgid "remove" +msgstr "eliminar" + +#: ../../include/conversation.php:890 +msgid "Loading..." +msgstr "Cargando..." + +#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:291 +msgid "Conversation Tools" +msgstr "Herramientas de conversación" + +#: ../../include/conversation.php:892 +msgid "Delete Selected Items" +msgstr "Eliminar elementos seleccionados" + +#: ../../include/conversation.php:935 +msgid "View Source" +msgstr "Ver el código fuente de la entrada" + +#: ../../include/conversation.php:945 +msgid "Follow Thread" +msgstr "Seguir este hilo" + +#: ../../include/conversation.php:954 +msgid "Unfollow Thread" +msgstr "Dejar de seguir este hilo" + +#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:629 +msgid "Recent Activity" +msgstr "Actividad reciente" + +#: ../../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" + +#: ../../include/conversation.php:1068 +msgid "Edit Connection" +msgstr "Editar conexión" + +#: ../../include/conversation.php:1078 +msgid "Message" +msgstr "Mensaje" + +#: ../../include/conversation.php:1088 ../../Zotlabs/Module/Pubsites.php:35 +#: ../../Zotlabs/Module/Ratings.php:97 +msgid "Ratings" +msgstr "Valoraciones" + +#: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199 +#: ../../Zotlabs/Lib/Apps.php:350 +msgid "Poke" +msgstr "Toques y otras cosas" + +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s likes this." +msgstr "A %s le gusta esto." + +#: ../../include/conversation.php:1212 +#, php-format +msgid "%s doesn't like this." +msgstr "A %s no le gusta esto." + +#: ../../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." + +#: ../../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." + +#: ../../include/conversation.php:1224 +msgid "and" +msgstr "y" + +#: ../../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" + +#: ../../include/conversation.php:1228 +#, php-format +msgid "%s like this." +msgstr "A %s le gusta esto." + +#: ../../include/conversation.php:1228 +#, php-format +msgid "%s don't like this." +msgstr "A %s no le gusta esto." + +#: ../../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" + +#: ../../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" + +#: ../../include/conversation.php:1708 +msgctxt "noun" +msgid "Attending" +msgid_plural "Attending" +msgstr[0] "Participaré" +msgstr[1] "Participaré" + +#: ../../include/conversation.php:1711 +msgctxt "noun" +msgid "Not Attending" +msgid_plural "Not Attending" +msgstr[0] "No participaré" +msgstr[1] "No participaré" + +#: ../../include/conversation.php:1714 +msgctxt "noun" +msgid "Undecided" +msgid_plural "Undecided" +msgstr[0] "Indeciso/a" +msgstr[1] "Indecisos/as" + +#: ../../include/conversation.php:1717 +msgctxt "noun" +msgid "Agree" +msgid_plural "Agrees" +msgstr[0] "De acuerdo" +msgstr[1] "De acuerdo" + +#: ../../include/conversation.php:1720 +msgctxt "noun" +msgid "Disagree" +msgid_plural "Disagrees" +msgstr[0] "En desacuerdo" +msgstr[1] "En desacuerdo" + +#: ../../include/conversation.php:1723 +msgctxt "noun" +msgid "Abstain" +msgid_plural "Abstains" +msgstr[0] "se abstiene" +msgstr[1] "Se abstienen" + +#: ../../include/selectors.php:18 +msgid "Profile to assign new connections" +msgstr "Perfil para asignar a las nuevas conexiones" + +#: ../../include/selectors.php:41 +msgid "Frequently" +msgstr "Frecuentemente" + +#: ../../include/selectors.php:42 +msgid "Hourly" +msgstr "Cada hora" + +#: ../../include/selectors.php:43 +msgid "Twice daily" +msgstr "Dos veces al día" + +#: ../../include/selectors.php:44 +msgid "Daily" +msgstr "Diariamente" + +#: ../../include/selectors.php:45 +msgid "Weekly" +msgstr "Semanalmente" + +#: ../../include/selectors.php:46 +msgid "Monthly" +msgstr "Mensualmente" + +#: ../../include/selectors.php:60 +msgid "Currently Male" +msgstr "Actualmente hombre" + +#: ../../include/selectors.php:60 +msgid "Currently Female" +msgstr "Actualmente mujer" + +#: ../../include/selectors.php:60 +msgid "Mostly Male" +msgstr "Generalmente hombre" + +#: ../../include/selectors.php:60 +msgid "Mostly Female" +msgstr "Generalmente mujer" + +#: ../../include/selectors.php:60 +msgid "Transgender" +msgstr "Transgénero" + +#: ../../include/selectors.php:60 +msgid "Intersex" +msgstr "Intersexual" + +#: ../../include/selectors.php:60 +msgid "Transsexual" +msgstr "Transexual" + +#: ../../include/selectors.php:60 +msgid "Hermaphrodite" +msgstr "Hermafrodita" + +#: ../../include/selectors.php:60 ../../include/channel.php:1614 +msgid "Neuter" +msgstr "Neutral" + +#: ../../include/selectors.php:60 ../../include/channel.php:1616 +msgid "Non-specific" +msgstr "No especificado" + +#: ../../include/selectors.php:60 +msgid "Undecided" +msgstr "Indeciso/a" + +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Males" +msgstr "Hombres" + +#: ../../include/selectors.php:96 ../../include/selectors.php:115 +msgid "Females" +msgstr "Mujeres" + +#: ../../include/selectors.php:96 +msgid "Gay" +msgstr "Homosexual" + +#: ../../include/selectors.php:96 +msgid "Lesbian" +msgstr "Lesbiana" + +#: ../../include/selectors.php:96 +msgid "No Preference" +msgstr "Sin preferencias" + +#: ../../include/selectors.php:96 +msgid "Bisexual" +msgstr "Bisexual" + +#: ../../include/selectors.php:96 +msgid "Autosexual" +msgstr "Autosexual" + +#: ../../include/selectors.php:96 +msgid "Abstinent" +msgstr "Casto/a" + +#: ../../include/selectors.php:96 +msgid "Virgin" +msgstr "Virgen" + +#: ../../include/selectors.php:96 +msgid "Deviant" +msgstr "Fuera de lo común" + +#: ../../include/selectors.php:96 +msgid "Fetish" +msgstr "Fetichista" + +#: ../../include/selectors.php:96 +msgid "Oodles" +msgstr "Orgías" + +#: ../../include/selectors.php:96 +msgid "Nonsexual" +msgstr "Asexual" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Single" +msgstr "Soltero/a" + +#: ../../include/selectors.php:134 +msgid "Lonely" +msgstr "Solo/a" + +#: ../../include/selectors.php:134 +msgid "Available" +msgstr "Disponible" + +#: ../../include/selectors.php:134 +msgid "Unavailable" +msgstr "No disponible" + +#: ../../include/selectors.php:134 +msgid "Has crush" +msgstr "Enamorado/a" + +#: ../../include/selectors.php:134 +msgid "Infatuated" +msgstr "Apasionado/a" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Dating" +msgstr "Saliendo con alguien" + +#: ../../include/selectors.php:134 +msgid "Unfaithful" +msgstr "Infiel" + +#: ../../include/selectors.php:134 +msgid "Sex Addict" +msgstr "Con adicción al sexo" + +#: ../../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" + +#: ../../include/selectors.php:134 +msgid "Friends/Benefits" +msgstr "Amigos con algo extra" + +#: ../../include/selectors.php:134 +msgid "Casual" +msgstr "Casual" + +#: ../../include/selectors.php:134 +msgid "Engaged" +msgstr "Prometido/a" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Married" +msgstr "Casado/a" + +#: ../../include/selectors.php:134 +msgid "Imaginarily married" +msgstr "Casado/a en sueños" + +#: ../../include/selectors.php:134 +msgid "Partners" +msgstr "Pareja" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Cohabiting" +msgstr "Cohabitando" + +#: ../../include/selectors.php:134 +msgid "Common law" +msgstr "Matrimonio tradicional" + +#: ../../include/selectors.php:134 +msgid "Happy" +msgstr "Felíz" + +#: ../../include/selectors.php:134 +msgid "Not looking" +msgstr "No estoy buscando" + +#: ../../include/selectors.php:134 +msgid "Swinger" +msgstr "Libertino" + +#: ../../include/selectors.php:134 +msgid "Betrayed" +msgstr "Engañado/a" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Separated" +msgstr "Separado/a" + +#: ../../include/selectors.php:134 +msgid "Unstable" +msgstr "Inestable" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Divorced" +msgstr "Divorciado/a" + +#: ../../include/selectors.php:134 +msgid "Imaginarily divorced" +msgstr "Divorciado/a en sueños" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "Widowed" +msgstr "Viudo/a" + +#: ../../include/selectors.php:134 +msgid "Uncertain" +msgstr "Indeterminado" + +#: ../../include/selectors.php:134 ../../include/selectors.php:151 +msgid "It's complicated" +msgstr "Es complicado" + +#: ../../include/selectors.php:134 +msgid "Don't care" +msgstr "No me importa" + +#: ../../include/selectors.php:134 +msgid "Ask me" +msgstr "Pregúnteme" + +#: ../../include/connections.php:133 +msgid "New window" +msgstr "Nueva ventana" + +#: ../../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" + +#: ../../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." + +#: ../../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" + +#: ../../include/group.php:298 ../../Zotlabs/Lib/Group.php:302 +msgid "edit" +msgstr "editar" + +#: ../../include/group.php:321 ../../Zotlabs/Lib/Group.php:325 +msgid "Edit group" +msgstr "Editar grupo" + +#: ../../include/group.php:322 ../../Zotlabs/Lib/Group.php:326 +msgid "Add privacy group" +msgstr "Añadir un grupo de canales" + +#: ../../include/group.php:323 ../../Zotlabs/Lib/Group.php:327 +msgid "Channels not in any privacy group" +msgstr "Sin canales en ningún grupo" + +#: ../../include/group.php:325 ../../Zotlabs/Widget/Savedsearch.php:84 +#: ../../Zotlabs/Lib/Group.php:329 +msgid "add" +msgstr "añadir" + +#: ../../include/taxonomy.php:320 +msgid "Trending" +msgstr "Etiquetas populares" + +#: ../../include/taxonomy.php:320 ../../include/taxonomy.php:449 +#: ../../include/taxonomy.php:470 ../../Zotlabs/Widget/Tagcloud.php:22 +msgid "Tags" +msgstr "Etiquetas" + +#: ../../include/taxonomy.php:550 +msgid "Keywords" +msgstr "Palabras clave" + +#: ../../include/taxonomy.php:571 +msgid "have" +msgstr "tener" + +#: ../../include/taxonomy.php:571 +msgid "has" +msgstr "tiene" + +#: ../../include/taxonomy.php:572 +msgid "want" +msgstr "quiero" + +#: ../../include/taxonomy.php:572 +msgid "wants" +msgstr "quiere" + +#: ../../include/taxonomy.php:573 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "like" +msgstr "me gusta" + +#: ../../include/taxonomy.php:573 +msgid "likes" +msgstr "gusta de" + +#: ../../include/taxonomy.php:574 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "dislike" +msgstr "no me gusta" + +#: ../../include/taxonomy.php:574 +msgid "dislikes" +msgstr "no gusta de" + +#: ../../include/items.php:984 ../../include/items.php:1044 +msgid "(Unknown)" +msgstr "(Desconocido)" + +#: ../../include/items.php:1232 +msgid "Visible to anybody on the internet." +msgstr "Visible para cualquiera en internet." + +#: ../../include/items.php:1234 +msgid "Visible to you only." +msgstr "Visible sólo para usted." + +#: ../../include/items.php:1236 +msgid "Visible to anybody in this network." +msgstr "Visible para cualquiera en esta red." + +#: ../../include/items.php:1238 +msgid "Visible to anybody authenticated." +msgstr "Visible para cualquiera que esté autenticado." + +#: ../../include/items.php:1240 +#, php-format +msgid "Visible to anybody on %s." +msgstr "Visible para cualquiera en %s." + +#: ../../include/items.php:1242 +msgid "Visible to all connections." +msgstr "Visible para todas las conexiones." + +#: ../../include/items.php:1244 +msgid "Visible to approved connections." +msgstr "Visible para las conexiones permitidas." + +#: ../../include/items.php:1246 +msgid "Visible to specific connections." +msgstr "Visible para conexiones específicas." + +#: ../../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." + +#: ../../include/items.php:4312 +msgid "Privacy group is empty." +msgstr "El grupo de canales está vacío." + +#: ../../include/items.php:4319 +#, php-format +msgid "Privacy group: %s" +msgstr "Grupo de canales: %s" + +#: ../../include/items.php:4329 ../../Zotlabs/Module/Connedit.php:867 +#, php-format +msgid "Connection: %s" +msgstr "Conexión: %s" + +#: ../../include/items.php:4331 +msgid "Connection not found." +msgstr "Conexión no encontrada" + +#: ../../include/items.php:4673 ../../Zotlabs/Module/Cover_photo.php:303 +msgid "female" +msgstr "mujer" + +#: ../../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" + +#: ../../include/items.php:4675 ../../Zotlabs/Module/Cover_photo.php:305 +msgid "male" +msgstr "hombre" + +#: ../../include/items.php:4676 ../../Zotlabs/Module/Cover_photo.php:306 +#, php-format +msgid "%1$s updated his %2$s" +msgstr "%1$s ha actualizado su %2$s" + +#: ../../include/items.php:4678 ../../Zotlabs/Module/Cover_photo.php:308 +#, php-format +msgid "%1$s updated their %2$s" +msgstr "%1$s ha actualizado su %2$s" + +#: ../../include/items.php:4680 +msgid "profile photo" +msgstr "foto del perfil" + +#: ../../include/items.php:4872 +#, php-format +msgid "[Edited %s]" +msgstr "[se ha editado %s]" + +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Post" +msgstr "Publicar" + +#: ../../include/items.php:4872 +msgctxt "edit_activity" +msgid "Comment" +msgstr "Comentar" + +#: ../../include/account.php:36 +msgid "Not a valid email address" +msgstr "Dirección de correo no válida" + +#: ../../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." + +#: ../../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." + +#: ../../include/account.php:76 +msgid "An invitation is required." +msgstr "Es obligatorio que le inviten." + +#: ../../include/account.php:80 +msgid "Invitation could not be verified." +msgstr "No se ha podido verificar su invitación." + +#: ../../include/account.php:156 +msgid "Please enter the required information." +msgstr "Por favor introduzca la información requerida." + +#: ../../include/account.php:223 +msgid "Failed to store account information." +msgstr "La información de la cuenta no se ha podido guardar." + +#: ../../include/account.php:311 +#, php-format +msgid "Registration confirmation for %s" +msgstr "Confirmación de registro para %s" + +#: ../../include/account.php:380 +#, php-format +msgid "Registration request at %s" +msgstr "Solicitud de registro en %s" + +#: ../../include/account.php:402 +msgid "your registration password" +msgstr "su contraseña de registro" + +#: ../../include/account.php:408 ../../include/account.php:471 +#, php-format +msgid "Registration details for %s" +msgstr "Detalles del registro de %s" + +#: ../../include/account.php:482 +msgid "Account approved." +msgstr "Cuenta aprobada." + +#: ../../include/account.php:522 +#, php-format +msgid "Registration revoked for %s" +msgstr "Registro revocado para %s" + +#: ../../include/account.php:805 ../../include/account.php:807 +msgid "Click here to upgrade." +msgstr "Pulse aquí para actualizar" + +#: ../../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 " + +#: ../../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." + +#: ../../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" + +#: ../../include/attach.php:267 ../../include/attach.php:375 +msgid "Item was not found." +msgstr "Elemento no encontrado." + +#: ../../include/attach.php:284 +msgid "Unknown error." +msgstr "Error desconocido" + +#: ../../include/attach.php:568 +msgid "No source file." +msgstr "Ningún fichero de origen" + +#: ../../include/attach.php:590 +msgid "Cannot locate file to replace" +msgstr "No se puede localizar el fichero que va a ser sustituido." + +#: ../../include/attach.php:609 +msgid "Cannot locate file to revise/update" +msgstr "No se puede localizar el fichero para revisar/actualizar" + +#: ../../include/attach.php:751 +#, php-format +msgid "File exceeds size limit of %d" +msgstr "El fichero supera el limite de tamaño de %d" + +#: ../../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." + +#: ../../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." + +#: ../../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." + +#: ../../include/attach.php:1057 ../../include/attach.php:1073 +msgid "Path not available." +msgstr "Ruta no disponible." + +#: ../../include/attach.php:1122 ../../include/attach.php:1285 +msgid "Empty pathname" +msgstr "Ruta vacía" + +#: ../../include/attach.php:1148 +msgid "duplicate filename or path" +msgstr "Nombre duplicado de ruta o fichero" + +#: ../../include/attach.php:1173 +msgid "Path not found." +msgstr "Ruta no encontrada" + +#: ../../include/attach.php:1241 +msgid "mkdir failed." +msgstr "mkdir ha fallado." + +#: ../../include/attach.php:1245 +msgid "database storage failed." +msgstr "el almacenamiento en la base de datos ha fallado." + +#: ../../include/attach.php:1291 +msgid "Empty path" +msgstr "Ruta vacía" + +#: ../../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" + +#: ../../include/bbcode.php:260 ../../include/bbcode.php:1282 +msgid "Encrypted content" +msgstr "Contenido cifrado" + +#: ../../include/bbcode.php:292 +#, php-format +msgid "Install %1$s element %2$s" +msgstr "Instalar el elemento de%1$s%2$s" + +#: ../../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." + +#: ../../include/bbcode.php:306 ../../Zotlabs/Module/Impel.php:43 +msgid "webpage" +msgstr "página web" + +#: ../../include/bbcode.php:309 ../../Zotlabs/Module/Impel.php:53 +msgid "layout" +msgstr "plantilla" + +#: ../../include/bbcode.php:312 ../../Zotlabs/Module/Impel.php:48 +msgid "block" +msgstr "bloque" + +#: ../../include/bbcode.php:315 ../../Zotlabs/Module/Impel.php:60 +msgid "menu" +msgstr "menú" + +#: ../../include/bbcode.php:376 +msgid "card" +msgstr "ficha" + +#: ../../include/bbcode.php:378 +msgid "article" +msgstr "el artículo" + +#: ../../include/bbcode.php:380 ../../include/markdown.php:204 +#: ../../Zotlabs/Module/Tagger.php:77 +msgid "post" +msgstr "la entrada" + +#: ../../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" + +#: ../../include/bbcode.php:461 ../../include/bbcode.php:469 +msgid "Click to open/close" +msgstr "Pulsar para abrir/cerrar" + +#: ../../include/bbcode.php:469 ../../include/markdown.php:251 +msgid "spoiler" +msgstr "spoiler" + +#: ../../include/bbcode.php:482 +msgid "View article" +msgstr "Ver el artículo" + +#: ../../include/bbcode.php:482 +msgid "View summary" +msgstr "Ver sumario" + +#: ../../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" + +#: ../../include/bbcode.php:1220 +msgid "$1 wrote:" +msgstr "$1 escribió:" + +#: ../../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" + +#: ../../include/channel.php:76 +msgid "Empty name" +msgstr "Nombre vacío" + +#: ../../include/channel.php:79 +msgid "Name too long" +msgstr "Nombre demasiado largo" + +#: ../../include/channel.php:196 +msgid "No account identifier" +msgstr "Ningún identificador de la cuenta" + +#: ../../include/channel.php:208 +msgid "Nickname is required." +msgstr "Se requiere un sobrenombre (alias)." + +#: ../../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." + +#: ../../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." + +#: ../../include/channel.php:287 +msgid "Unable to retrieve created identity" +msgstr "No ha sido posible recuperar la identidad creada" + +#: ../../include/channel.php:429 +msgid "Default Profile" +msgstr "Perfil principal" + +#: ../../include/channel.php:588 ../../include/channel.php:677 +msgid "Unable to retrieve modified identity" +msgstr "No se puede recuperar la identidad modficada" + +#: ../../include/channel.php:1419 ../../Zotlabs/Module/Profiles.php:728 +msgid "Change profile photo" +msgstr "Cambiar la foto del perfil" + +#: ../../include/channel.php:1427 +msgid "Create New Profile" +msgstr "Crear un nuevo perfil" + +#: ../../include/channel.php:1445 ../../Zotlabs/Module/Profiles.php:820 +msgid "Profile Image" +msgstr "Imagen del perfil" + +#: ../../include/channel.php:1448 +msgid "Visible to everybody" +msgstr "Visible para todos" + +#: ../../include/channel.php:1449 ../../Zotlabs/Module/Profiles.php:725 +#: ../../Zotlabs/Module/Profiles.php:824 +msgid "Edit visibility" +msgstr "Editar visibilidad" + +#: ../../include/channel.php:1525 ../../include/channel.php:1653 +msgid "Gender:" +msgstr "Género:" + +#: ../../include/channel.php:1527 ../../include/channel.php:1721 +msgid "Homepage:" +msgstr "Página personal:" + +#: ../../include/channel.php:1528 +msgid "Online Now" +msgstr "Ahora en línea" + +#: ../../include/channel.php:1581 +msgid "Change your profile photo" +msgstr "Cambiar su foto del perfil" + +#: ../../include/channel.php:1612 +msgid "Trans" +msgstr "Trans" + +#: ../../include/channel.php:1651 +#: ../../Zotlabs/Module/Settings/Channel.php:499 +msgid "Full Name:" +msgstr "Nombre completo:" + +#: ../../include/channel.php:1658 +msgid "Like this channel" +msgstr "Me gusta este canal" + +#: ../../include/channel.php:1682 +msgid "j F, Y" +msgstr "j F Y" + +#: ../../include/channel.php:1683 +msgid "j F" +msgstr "j F" + +#: ../../include/channel.php:1690 +msgid "Birthday:" +msgstr "Cumpleaños:" + +#: ../../include/channel.php:1694 ../../Zotlabs/Module/Directory.php:334 +msgid "Age:" +msgstr "Edad:" + +#: ../../include/channel.php:1703 +#, php-format +msgid "for %1$d %2$s" +msgstr "por %1$d %2$s" + +#: ../../include/channel.php:1715 +msgid "Tags:" +msgstr "Etiquetas:" + +#: ../../include/channel.php:1719 +msgid "Sexual Preference:" +msgstr "Orientación sexual:" + +#: ../../include/channel.php:1723 ../../Zotlabs/Module/Directory.php:350 +msgid "Hometown:" +msgstr "Lugar de nacimiento:" + +#: ../../include/channel.php:1725 +msgid "Political Views:" +msgstr "Posición política:" + +#: ../../include/channel.php:1727 +msgid "Religion:" +msgstr "Religión:" + +#: ../../include/channel.php:1729 ../../Zotlabs/Module/Directory.php:352 +msgid "About:" +msgstr "Sobre mí:" + +#: ../../include/channel.php:1731 +msgid "Hobbies/Interests:" +msgstr "Aficciones o intereses:" + +#: ../../include/channel.php:1733 +msgid "Likes:" +msgstr "Me gusta:" + +#: ../../include/channel.php:1735 +msgid "Dislikes:" +msgstr "No me gusta:" + +#: ../../include/channel.php:1737 +msgid "Contact information and Social Networks:" +msgstr "Información de contacto y redes sociales:" + +#: ../../include/channel.php:1739 +msgid "My other channels:" +msgstr "Mis otros canales:" + +#: ../../include/channel.php:1741 +msgid "Musical interests:" +msgstr "Preferencias musicales:" + +#: ../../include/channel.php:1743 +msgid "Books, literature:" +msgstr "Libros, literatura:" + +#: ../../include/channel.php:1745 +msgid "Television:" +msgstr "Televisión:" + +#: ../../include/channel.php:1747 +msgid "Film/dance/culture/entertainment:" +msgstr "Cine, danza, cultura, entretenimiento:" + +#: ../../include/channel.php:1749 +msgid "Love/Romance:" +msgstr "Vida sentimental o amorosa:" + +#: ../../include/channel.php:1751 +msgid "Work/employment:" +msgstr "Trabajo:" + +#: ../../include/channel.php:1753 +msgid "School/education:" +msgstr "Estudios:" + +#: ../../include/channel.php:1774 ../../Zotlabs/Module/Profperm.php:113 +#: ../../Zotlabs/Lib/Apps.php:361 +msgid "Profile" +msgstr "Perfil" + +#: ../../include/channel.php:1776 +msgid "Like this thing" +msgstr "Me gusta esto" + +#: ../../include/channel.php:1777 ../../Zotlabs/Module/Events.php:699 +msgid "Export" +msgstr "Exportar" + +#: ../../include/channel.php:2215 ../../Zotlabs/Module/Cover_photo.php:310 +msgid "cover photo" +msgstr "Imagen de portada del perfil" + +#: ../../include/channel.php:2483 ../../Zotlabs/Module/Rmagic.php:93 +#: ../../boot.php:1675 +msgid "Remote Authentication" +msgstr "Acceso desde su servidor" + +#: ../../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)" + +#: ../../include/channel.php:2485 ../../Zotlabs/Module/Rmagic.php:95 +msgid "Authenticate" +msgstr "Acceder" + +#: ../../include/channel.php:2640 ../../Zotlabs/Module/Admin/Accounts.php:91 +#, php-format +msgid "Account '%s' deleted" +msgstr "La cuenta '%s' ha sido eliminada" + +#: ../../include/acl_selectors.php:33 +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +msgid "Visible to your default audience" +msgstr "Visible para su público predeterminado." + +#: ../../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" + +#: ../../include/acl_selectors.php:106 +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +msgid "Only me" +msgstr "Sólo yo" + +#: ../../include/acl_selectors.php:113 +msgid "Who can see this?" +msgstr "¿Quién puede ver esto?" + +#: ../../include/acl_selectors.php:114 +msgid "Custom selection" +msgstr "Selección personalizada" + +#: ../../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\"." + +#: ../../include/acl_selectors.php:116 +msgid "Show" +msgstr "Mostrar" + +#: ../../include/acl_selectors.php:117 +msgid "Don't show" +msgstr "No mostrar" + +#: ../../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." + +#: ../../include/oembed.php:153 +msgid "View PDF" +msgstr "Ver PDF" + +#: ../../include/oembed.php:357 +msgid " by " +msgstr "por" + +#: ../../include/oembed.php:358 +msgid " on " +msgstr "en" + +#: ../../include/oembed.php:387 +msgid "Embedded content" +msgstr "Contenido incorporado" + +#: ../../include/oembed.php:396 +msgid "Embedding disabled" +msgstr "Incrustación deshabilitada" + +#: ../../include/dir_fns.php:141 ../../Zotlabs/Lib/Libzotdir.php:160 +msgid "Directory Options" +msgstr "Opciones del directorio" + +#: ../../include/dir_fns.php:143 ../../Zotlabs/Lib/Libzotdir.php:162 +msgid "Safe Mode" +msgstr "Modo seguro" + +#: ../../include/dir_fns.php:144 ../../Zotlabs/Lib/Libzotdir.php:163 +msgid "Public Forums Only" +msgstr "Solo foros públicos" + +#: ../../include/dir_fns.php:145 ../../Zotlabs/Lib/Libzotdir.php:165 +msgid "This Website Only" +msgstr "Solo este sitio web" + +#: ../../include/zid.php:368 +#, php-format +msgid "OpenWebAuth: %1$s welcomes %2$s" +msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s" + +#: ../../include/message.php:41 +msgid "Unable to determine sender." +msgstr "No ha sido posible determinar el remitente. " + +#: ../../include/message.php:80 +msgid "No recipient provided." +msgstr "No se ha especificado ningún destinatario." + +#: ../../include/message.php:85 +msgid "[no subject]" +msgstr "[sin asunto]" + +#: ../../include/message.php:214 +msgid "Stored post could not be verified." +msgstr "No se han podido verificar las publicaciones guardadas." + +#: ../../Zotlabs/Widget/Activity_order.php:90 +msgid "Commented Date" +msgstr "Fecha de los comentarios" + +#: ../../Zotlabs/Widget/Activity_order.php:94 +msgid "Order by last commented date" +msgstr "Ordenar por la última fecha de los comentarios" + +#: ../../Zotlabs/Widget/Activity_order.php:97 +msgid "Posted Date" +msgstr "Fecha de publicación" + +#: ../../Zotlabs/Widget/Activity_order.php:101 +msgid "Order by last posted date" +msgstr "Ordenar por la ultima fecha de publicación" + +#: ../../Zotlabs/Widget/Activity_order.php:104 +msgid "Date Unthreaded" +msgstr "Sin enhebrar por fecha" + +#: ../../Zotlabs/Widget/Activity_order.php:108 +msgid "Order unthreaded by date" +msgstr "Ordenar sin enhebrar por fecha" + +#: ../../Zotlabs/Widget/Activity_order.php:123 +msgid "Stream Order" +msgstr "Orden del stream" + +#: ../../Zotlabs/Widget/Archive.php:43 +msgid "Archives" +msgstr "Hemeroteca" + +#: ../../Zotlabs/Widget/Wiki_pages.php:34 +#: ../../Zotlabs/Widget/Wiki_pages.php:91 +msgid "Add new page" +msgstr "Añadir una nueva página" + +#: ../../Zotlabs/Widget/Wiki_pages.php:41 +#: ../../Zotlabs/Widget/Wiki_pages.php:98 ../../Zotlabs/Module/Dreport.php:166 +msgid "Options" +msgstr "Opciones" + +#: ../../Zotlabs/Widget/Wiki_pages.php:85 +msgid "Wiki Pages" +msgstr "Páginas del wiki" + +#: ../../Zotlabs/Widget/Wiki_pages.php:96 +msgid "Page name" +msgstr "Nombre de la página" + +#: ../../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/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/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/Widget/Tasklist.php:23 +msgid "Tasks" +msgstr "Tareas" + +#: ../../Zotlabs/Widget/Pubsites.php:12 ../../Zotlabs/Module/Pubsites.php:24 +msgid "Public Hubs" +msgstr "Servidores públicos" + +#: ../../Zotlabs/Widget/Conversations.php:17 +msgid "Received Messages" +msgstr "Mensajes recibidos" + +#: ../../Zotlabs/Widget/Conversations.php:21 +msgid "Sent Messages" +msgstr "Enviar mensajes" + +#: ../../Zotlabs/Widget/Conversations.php:25 +msgid "Conversations" +msgstr "Conversaciones" + +#: ../../Zotlabs/Widget/Conversations.php:37 +msgid "No messages." +msgstr "Sin mensajes." + +#: ../../Zotlabs/Widget/Conversations.php:57 +msgid "Delete conversation" +msgstr "Eliminar conversación" + +#: ../../Zotlabs/Widget/Chatroom_members.php:11 +msgid "Chat Members" +msgstr "Miembros del chat" + +#: ../../Zotlabs/Widget/Activity.php:50 +msgctxt "widget" +msgid "Activity" +msgstr "Actividad" + +#: ../../Zotlabs/Widget/Cdav.php:37 +msgid "Select Channel" +msgstr "Seleccionar un canal" + +#: ../../Zotlabs/Widget/Cdav.php:42 +msgid "Read-write" +msgstr "Lectura y escritura" + +#: ../../Zotlabs/Widget/Cdav.php:43 +msgid "Read-only" +msgstr "Sólo lectura" + +#: ../../Zotlabs/Widget/Cdav.php:127 +msgid "Channel Calendar" +msgstr "Calendario del canal" + +#: ../../Zotlabs/Widget/Cdav.php:129 ../../Zotlabs/Widget/Cdav.php:143 +#: ../../Zotlabs/Module/Cdav.php:1078 +msgid "CalDAV Calendars" +msgstr "Calendarios CalDAV" + +#: ../../Zotlabs/Widget/Cdav.php:131 +msgid "Shared CalDAV Calendars" +msgstr "Calendarios CalDAV compartidos" + +#: ../../Zotlabs/Widget/Cdav.php:135 +msgid "Share this calendar" +msgstr "Compartir este calendario" + +#: ../../Zotlabs/Widget/Cdav.php:137 +msgid "Calendar name and color" +msgstr "Nombre y color del calendario" + +#: ../../Zotlabs/Widget/Cdav.php:139 +msgid "Create new CalDAV calendar" +msgstr "Crear un nuevo calendario CalDAV" + +#: ../../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/Widget/Cdav.php:141 +msgid "Calendar Name" +msgstr "Nombre del calendario" + +#: ../../Zotlabs/Widget/Cdav.php:142 +msgid "Calendar Tools" +msgstr "Gestión de calendarios" + +#: ../../Zotlabs/Widget/Cdav.php:143 ../../Zotlabs/Module/Cdav.php:1078 +msgid "Channel Calendars" +msgstr "Calendarios del canal" + +#: ../../Zotlabs/Widget/Cdav.php:144 +msgid "Import calendar" +msgstr "Importar un calendario" + +#: ../../Zotlabs/Widget/Cdav.php:145 +msgid "Select a calendar to import to" +msgstr "Seleccionar un calendario para importarlo" + +#: ../../Zotlabs/Widget/Cdav.php:172 +msgid "Addressbooks" +msgstr "Agenda de direcciones" + +#: ../../Zotlabs/Widget/Cdav.php:174 +msgid "Addressbook name" +msgstr "Nombre de la agenda" + +#: ../../Zotlabs/Widget/Cdav.php:176 +msgid "Create new addressbook" +msgstr "Crear una nueva agenda de direcciones" + +#: ../../Zotlabs/Widget/Cdav.php:177 +msgid "Addressbook Name" +msgstr "Nombre de la agenda" + +#: ../../Zotlabs/Widget/Cdav.php:179 +msgid "Addressbook Tools" +msgstr "Gestión de agendas de direcciones" + +#: ../../Zotlabs/Widget/Cdav.php:180 +msgid "Import addressbook" +msgstr "Importar una agenda de direcciones" + +#: ../../Zotlabs/Widget/Cdav.php:181 +msgid "Select an addressbook to import to" +msgstr "Seleccionar una agenda para importarla" + +#: ../../Zotlabs/Widget/Savedsearch.php:75 +msgid "Remove term" +msgstr "Eliminar término" + +#: ../../Zotlabs/Widget/Suggestedchats.php:32 +msgid "Suggested Chatrooms" +msgstr "Salas de chat sugeridas" + +#: ../../Zotlabs/Widget/Settings_menu.php:32 +msgid "Account settings" +msgstr "Configuración de la cuenta" + +#: ../../Zotlabs/Widget/Settings_menu.php:38 +msgid "Channel settings" +msgstr "Configuración del canal" + +#: ../../Zotlabs/Widget/Settings_menu.php:46 +msgid "Display settings" +msgstr "Ajustes de visualización" + +#: ../../Zotlabs/Widget/Settings_menu.php:53 +msgid "Manage locations" +msgstr "Gestión de ubicaciones (clones) del canal" + +#: ../../Zotlabs/Widget/Chatroom_list.php:20 +msgid "Overview" +msgstr "Resumen" + +#: ../../Zotlabs/Widget/Suggestions.php:48 ../../Zotlabs/Module/Suggest.php:73 +msgid "Ignore/Hide" +msgstr "Ignorar/Ocultar" + +#: ../../Zotlabs/Widget/Suggestions.php:53 +msgid "Suggestions" +msgstr "Sugerencias" + +#: ../../Zotlabs/Widget/Suggestions.php:54 +msgid "See more..." +msgstr "Ver más..." + +#: ../../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/Widget/Bookmarkedchats.php:24 +msgid "Bookmarked Chatrooms" +msgstr "Salas de chat preferidas" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:23 +#: ../../Zotlabs/Lib/NativeWikiPage.php:562 +msgctxt "wiki_history" +msgid "Message" +msgstr "Mensaje" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:24 +#: ../../Zotlabs/Lib/NativeWikiPage.php:563 +msgid "Date" +msgstr "Fecha" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:25 +#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 +msgid "Revert" +msgstr "Revertir" + +#: ../../Zotlabs/Widget/Wiki_page_history.php:26 +#: ../../Zotlabs/Lib/NativeWikiPage.php:565 +msgid "Compare" +msgstr "Comparar" + +#: ../../Zotlabs/Widget/Hq_controls.php:14 +msgid "HQ Control Panel" +msgstr "Panel de control de HQ" + +#: ../../Zotlabs/Widget/Hq_controls.php:17 +msgid "Create a new post" +msgstr "Crear una nueva entrada" + +#: ../../Zotlabs/Widget/Mailmenu.php:13 +msgid "Private Mail Menu" +msgstr "Menú de correo privado" + +#: ../../Zotlabs/Widget/Mailmenu.php:15 +msgid "Combined View" +msgstr "Vista combinada" + +#: ../../Zotlabs/Widget/Mailmenu.php:20 +msgid "Inbox" +msgstr "Bandeja de entrada" + +#: ../../Zotlabs/Widget/Mailmenu.php:25 +msgid "Outbox" +msgstr "Bandeja de salida" + +#: ../../Zotlabs/Widget/Mailmenu.php:30 +msgid "New Message" +msgstr "Nuevo mensaje" + +#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 +msgid "photo/image" +msgstr "foto/imagen" + +#: ../../Zotlabs/Widget/Admin.php:22 ../../Zotlabs/Module/Admin/Site.php:288 +msgid "Site" +msgstr "Sitio" + +#: ../../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/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/Widget/Admin.php:24 +#: ../../Zotlabs/Module/Admin/Channels.php:146 +#: ../../Zotlabs/Module/Admin.php:114 +msgid "Channels" +msgstr "Canales" + +#: ../../Zotlabs/Widget/Admin.php:25 +#: ../../Zotlabs/Module/Admin/Security.php:93 +msgid "Security" +msgstr "Seguridad" + +#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:357 +msgid "Features" +msgstr "Funcionalidades" + +#: ../../Zotlabs/Widget/Admin.php:27 ../../Zotlabs/Module/Admin/Addons.php:343 +#: ../../Zotlabs/Module/Admin/Addons.php:441 +msgid "Addons" +msgstr "Addons" + +#: ../../Zotlabs/Widget/Admin.php:28 ../../Zotlabs/Module/Admin/Themes.php:123 +#: ../../Zotlabs/Module/Admin/Themes.php:157 +msgid "Themes" +msgstr "Temas" + +#: ../../Zotlabs/Widget/Admin.php:29 +msgid "Inspect queue" +msgstr "Examinar la cola" + +#: ../../Zotlabs/Widget/Admin.php:30 ../../Zotlabs/Module/Admin/Profs.php:168 +msgid "Profile Fields" +msgstr "Campos del perfil" + +#: ../../Zotlabs/Widget/Admin.php:31 +msgid "DB updates" +msgstr "Actualizaciones de la base de datos" + +#: ../../Zotlabs/Widget/Admin.php:48 ../../Zotlabs/Widget/Admin.php:58 +#: ../../Zotlabs/Module/Admin/Logs.php:83 +msgid "Logs" +msgstr "Informes" + +#: ../../Zotlabs/Widget/Admin.php:56 +msgid "Addon Features" +msgstr "Características del addon" + +#: ../../Zotlabs/Widget/Activity_filter.php:36 +#, php-format +msgid "Show posts related to the %s privacy group" +msgstr "Mostrar entradas relacionadas con el grupo %s" + +#: ../../Zotlabs/Widget/Activity_filter.php:45 +msgid "Show my privacy groups" +msgstr "Mostrar mis grupos de canales" + +#: ../../Zotlabs/Widget/Activity_filter.php:66 +msgid "Show posts to this forum" +msgstr "Mostrar las entradas en este foro" + +#: ../../Zotlabs/Widget/Activity_filter.php:77 +msgid "Show forums" +msgstr "Mostrar los foros" + +#: ../../Zotlabs/Widget/Activity_filter.php:91 +msgid "Starred Posts" +msgstr "Entradas preferidas" + +#: ../../Zotlabs/Widget/Activity_filter.php:95 +msgid "Show posts that I have starred" +msgstr "Mostrar entradas que he señalado como preferidas" + +#: ../../Zotlabs/Widget/Activity_filter.php:106 +msgid "Personal Posts" +msgstr "Entradas personales" + +#: ../../Zotlabs/Widget/Activity_filter.php:110 +msgid "Show posts that mention or involve me" +msgstr "Mostrar entradas que me mencionen o involucren" + +#: ../../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/Widget/Activity_filter.php:141 +msgid "Show filed post categories" +msgstr "Mostrar los temas de las entradas archivadas" + +#: ../../Zotlabs/Widget/Activity_filter.php:155 +msgid "Panel search" +msgstr "Panel de búsqueda" + +#: ../../Zotlabs/Widget/Activity_filter.php:165 +msgid "Filter by name" +msgstr "Filtrar por nombre" + +#: ../../Zotlabs/Widget/Activity_filter.php:180 +msgid "Remove active filter" +msgstr "Eliminar el filtro activo" + +#: ../../Zotlabs/Widget/Activity_filter.php:196 +msgid "Stream Filters" +msgstr "Filtros del stream" + +#: ../../Zotlabs/Widget/Appstore.php:11 +msgid "App Collections" +msgstr "Colección de aplicaciones" + +#: ../../Zotlabs/Widget/Appstore.php:13 +msgid "Installed apps" +msgstr "Aplicaciones instaladas" + +#: ../../Zotlabs/Widget/Appstore.php:14 ../../Zotlabs/Module/Apps.php:50 +msgid "Available Apps" +msgstr "Aplicaciones disponibles" + +#: ../../Zotlabs/Widget/Eventstools.php:13 +msgid "Events Tools" +msgstr "Gestión de eventos" + +#: ../../Zotlabs/Widget/Eventstools.php:14 +msgid "Export Calendar" +msgstr "Exportar el calendario" + +#: ../../Zotlabs/Widget/Eventstools.php:15 +msgid "Import Calendar" +msgstr "Importar un calendario" + +#: ../../Zotlabs/Widget/Rating.php:51 +msgid "Rating Tools" +msgstr "Valoraciones" + +#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 +msgid "Rate Me" +msgstr "Valorar este canal" + +#: ../../Zotlabs/Widget/Rating.php:60 +msgid "View Ratings" +msgstr "Mostrar las valoraciones" + +#: ../../Zotlabs/Widget/Cover_photo.php:65 +msgid "Click to show more" +msgstr "Hacer clic para ver más" + +#: ../../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/Widget/Follow.php:29 +msgid "Add New Connection" +msgstr "Añadir nueva conexión" + +#: ../../Zotlabs/Widget/Follow.php:30 +msgid "Enter channel address" +msgstr "Dirección del canal" + +#: ../../Zotlabs/Widget/Follow.php:31 +msgid "Examples: bob@example.com, https://example.com/barbara" +msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen" + +#: ../../Zotlabs/Widget/Newmember.php:31 +msgid "Profile Creation" +msgstr "Creación de perfiles" + +#: ../../Zotlabs/Widget/Newmember.php:33 +msgid "Upload profile photo" +msgstr "Cargar la foto del perfil" + +#: ../../Zotlabs/Widget/Newmember.php:34 +msgid "Upload cover photo" +msgstr "Cargar la foto de portada del perfil" + +#: ../../Zotlabs/Widget/Newmember.php:38 +msgid "Find and Connect with others" +msgstr "Encontrar y conectarse con otros" + +#: ../../Zotlabs/Widget/Newmember.php:40 +msgid "View the directory" +msgstr "Ver el directorio" + +#: ../../Zotlabs/Widget/Newmember.php:41 ../../Zotlabs/Module/Go.php:38 +msgid "View friend suggestions" +msgstr "Ver sugerencias de amistad" + +#: ../../Zotlabs/Widget/Newmember.php:42 +msgid "Manage your connections" +msgstr "Gestionar sus conexiones" + +#: ../../Zotlabs/Widget/Newmember.php:45 +msgid "Communicate" +msgstr "Comunicarse" + +#: ../../Zotlabs/Widget/Newmember.php:47 +msgid "View your channel homepage" +msgstr "Ver la página principal de su canal" + +#: ../../Zotlabs/Widget/Newmember.php:48 +msgid "View your network stream" +msgstr "Ver el \"stream\" de su red" + +#: ../../Zotlabs/Widget/Newmember.php:54 +msgid "Documentation" +msgstr "Documentación" + +#: ../../Zotlabs/Widget/Newmember.php:57 +msgid "Missing Features?" +msgstr "¿Faltan Características?" + +#: ../../Zotlabs/Widget/Newmember.php:59 +msgid "Pin apps to navigation bar" +msgstr "Fijar apps a la barra de navegación" + +#: ../../Zotlabs/Widget/Newmember.php:60 +msgid "Install more apps" +msgstr "Instalar más apps" + +#: ../../Zotlabs/Widget/Newmember.php:71 +msgid "View public stream" +msgstr "Ver el \"stream\" público" + +#: ../../Zotlabs/Widget/Newmember.php:75 +#: ../../Zotlabs/Module/Settings/Display.php:205 +msgid "New Member Links" +msgstr "Enlaces para nuevos miembros" + +#: ../../Zotlabs/Widget/Affinity.php:30 ../../Zotlabs/Module/Connedit.php:723 +msgid "Me" +msgstr "Yo" + +#: ../../Zotlabs/Widget/Affinity.php:31 ../../Zotlabs/Module/Connedit.php:724 +msgid "Family" +msgstr "Familia" + +#: ../../Zotlabs/Widget/Affinity.php:33 ../../Zotlabs/Module/Connedit.php:726 +msgid "Acquaintances" +msgstr "Conocidos/as" + +#: ../../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/Widget/Affinity.php:54 +msgid "Refresh" +msgstr "Recargar" + +#: ../../Zotlabs/Widget/Notifications.php:16 +msgid "New Network Activity" +msgstr "Nueva actividad en la red" + +#: ../../Zotlabs/Widget/Notifications.php:17 +msgid "New Network Activity Notifications" +msgstr "Avisos de nueva actividad en la red" + +#: ../../Zotlabs/Widget/Notifications.php:20 +msgid "View your network activity" +msgstr "Ver la actividad de su red" + +#: ../../Zotlabs/Widget/Notifications.php:23 +msgid "Mark all notifications read" +msgstr "Marcar todas las notificaciones como leídas" + +#: ../../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/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/Widget/Notifications.php:35 +msgid "New Home Activity" +msgstr "Nueva actividad en su página principal" + +#: ../../Zotlabs/Widget/Notifications.php:36 +msgid "New Home Activity Notifications" +msgstr "Avisos de nueva actividad en su página principal" + +#: ../../Zotlabs/Widget/Notifications.php:39 +msgid "View your home activity" +msgstr "Ver la actividad de su página principal" + +#: ../../Zotlabs/Widget/Notifications.php:42 +#: ../../Zotlabs/Widget/Notifications.php:149 +msgid "Mark all notifications seen" +msgstr "Marcar todas las notificaciones como vistas" + +#: ../../Zotlabs/Widget/Notifications.php:54 +msgid "New Mails" +msgstr "Nuevos mensajes de correo" + +#: ../../Zotlabs/Widget/Notifications.php:55 +msgid "New Mails Notifications" +msgstr "Avisos de nuevos mensajes de correo" + +#: ../../Zotlabs/Widget/Notifications.php:58 +msgid "View your private mails" +msgstr "Ver sus correos privados" + +#: ../../Zotlabs/Widget/Notifications.php:61 +msgid "Mark all messages seen" +msgstr "Marcar todos los mensajes como vistos" + +#: ../../Zotlabs/Widget/Notifications.php:69 +msgid "New Events" +msgstr "Eventos nuevos" + +#: ../../Zotlabs/Widget/Notifications.php:70 +msgid "New Events Notifications" +msgstr "Avisos de nuevos eventos" + +#: ../../Zotlabs/Widget/Notifications.php:73 +msgid "View events" +msgstr "Ver los eventos" + +#: ../../Zotlabs/Widget/Notifications.php:76 +msgid "Mark all events seen" +msgstr "Marcar todos los eventos como leidos" + +#: ../../Zotlabs/Widget/Notifications.php:84 +#: ../../Zotlabs/Module/Connections.php:164 +msgid "New Connections" +msgstr "Nuevas conexiones" + +#: ../../Zotlabs/Widget/Notifications.php:85 +msgid "New Connections Notifications" +msgstr "Avisos de nuevas conexiones" + +#: ../../Zotlabs/Widget/Notifications.php:88 +msgid "View all connections" +msgstr "Ver todas las conexiones" + +#: ../../Zotlabs/Widget/Notifications.php:96 +msgid "New Files" +msgstr "Ficheros nuevos" + +#: ../../Zotlabs/Widget/Notifications.php:97 +msgid "New Files Notifications" +msgstr "Avisos de nuevos ficheros" + +#: ../../Zotlabs/Widget/Notifications.php:104 +#: ../../Zotlabs/Widget/Notifications.php:105 +msgid "Notices" +msgstr "Avisos" + +#: ../../Zotlabs/Widget/Notifications.php:108 +msgid "View all notices" +msgstr "Ver todos los avisos" + +#: ../../Zotlabs/Widget/Notifications.php:111 +msgid "Mark all notices seen" +msgstr "Marcar como leídos todos los avisos" + +#: ../../Zotlabs/Widget/Notifications.php:132 +msgid "New Registrations" +msgstr "Registros nuevos" + +#: ../../Zotlabs/Widget/Notifications.php:133 +msgid "New Registrations Notifications" +msgstr "Notificaciones de nuevos registros" + +#: ../../Zotlabs/Widget/Notifications.php:142 +#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 +msgid "Public Stream" +msgstr "\"Stream\" público" + +#: ../../Zotlabs/Widget/Notifications.php:143 +msgid "Public Stream Notifications" +msgstr "Avisos del \"stream\" público" + +#: ../../Zotlabs/Widget/Notifications.php:146 +msgid "View the public stream" +msgstr "Ver el \"stream\" público" + +#: ../../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/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/Tokens.php:45 +msgid "Name and Password are required." +msgstr "Se requiere el nombre y la contraseña." + +#: ../../Zotlabs/Module/Tokens.php:85 +msgid "Token saved." +msgstr "Token salvado." + +#: ../../Zotlabs/Module/Tokens.php:99 +msgid "Guest Access App" +msgstr "App Acceso para invitados" + +#: ../../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/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/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/Module/Tokens.php:170 +msgid "Guest Access Tokens" +msgstr "Tokens de acceso para invitados" + +#: ../../Zotlabs/Module/Tokens.php:177 +msgid "Login Name" +msgstr "Nombre de inicio de sesión" + +#: ../../Zotlabs/Module/Tokens.php:178 +msgid "Login Password" +msgstr "Contraseña de inicio de sesión" + +#: ../../Zotlabs/Module/Tokens.php:179 +msgid "Expires (yyyy-mm-dd)" +msgstr "Expira (aaaa-mm-dd)" + +#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 +msgid "Their Settings" +msgstr "Sus ajustes" + +#: ../../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/Module/Permcats.php:123 ../../Zotlabs/Module/Tokens.php:183 -#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:264 +#: ../../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/Module/Permcats.php:126 ../../Zotlabs/Module/Tokens.php:186 -#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:269 +#: ../../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/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187 +#: ../../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 " @@ -1008,741 +8042,54 @@ msgid "" " 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/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." - -#: ../../Zotlabs/Module/Channel.php:98 ../../Zotlabs/Module/Hcard.php:37 -#: ../../Zotlabs/Module/Profile.php:45 -msgid "Posts and comments" -msgstr "Publicaciones y comentarios" - -#: ../../Zotlabs/Module/Channel.php:105 ../../Zotlabs/Module/Hcard.php:44 -#: ../../Zotlabs/Module/Profile.php:52 -msgid "Only posts" -msgstr "Solo publicaciones" - -#: ../../Zotlabs/Module/Channel.php:122 -#, php-format -msgid "This is the home page of %s." -msgstr "Esta es la página personal de %s." - -#: ../../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." - -#: ../../Zotlabs/Module/Channel.php:193 ../../Zotlabs/Module/Network.php:173 -msgid "Search Results For:" -msgstr "Buscar resultados para:" - -#: ../../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" - -#: ../../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." - -#: ../../Zotlabs/Module/Lang.php:17 -msgid "Language App" -msgstr "App idioma" - -#: ../../Zotlabs/Module/Lang.php:18 -msgid "Change UI language" -msgstr "Cambiar el idioma de la interfaz de usuario" - -#: ../../Zotlabs/Module/Uexport.php:61 -msgid "Channel Export App" -msgstr "App Exportación de canales" - -#: ../../Zotlabs/Module/Uexport.php:62 -msgid "Export your channel" -msgstr "Exportar su canal" - -#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 -msgid "Export Channel" -msgstr "Exportar el canal" - -#: ../../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." - -#: ../../Zotlabs/Module/Uexport.php:75 -msgid "Export Content" -msgstr "Exportar contenidos" - -#: ../../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." - -#: ../../Zotlabs/Module/Uexport.php:78 -msgid "Export your posts from a given year." -msgstr "Exporta sus publicaciones de un año dado." - -#: ../../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." - -#: ../../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>" - -#: ../../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>" - -#: ../../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)." - -#: ../../Zotlabs/Module/Hq.php:140 -msgid "Welcome to Hubzilla!" -msgstr "¡Bienvenido a Hubzilla!" - -#: ../../Zotlabs/Module/Hq.php:140 -msgid "You have got no unseen posts..." -msgstr "No tiene ningún mensaje sin leer..." - -#: ../../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." - -#: ../../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" - -#: ../../Zotlabs/Module/Search.php:230 -#, php-format -msgid "Items tagged with: %s" -msgstr "elementos etiquetados con: %s" - -#: ../../Zotlabs/Module/Search.php:232 -#, 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" - -#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:375 -#: ../../Zotlabs/Widget/Notifications.php:142 -msgid "Public Stream" -msgstr "\"Stream\" público" - -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." -msgstr "Dirección no encontrada." - -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." -msgstr "Ha fallado la búsqueda de la dirección." - -#: ../../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." - -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" -msgstr "Sincronizando ubicaciones" - -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." -msgstr "No encontrada ninguna dirección." - -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" -msgstr "Gestionar las direcciones del canal" - -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" -msgstr "Primario" - -#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:176 -msgid "Drop" -msgstr "Eliminar" - -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" -msgstr "Sincronizar ahora" - -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." -msgstr "Por favor, espere algunos minutos entre operaciones consecutivas." - -#: ../../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." - -#: ../../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/Apporder.php:47 -msgid "Change Order of Pinned Navbar Apps" -msgstr "Cambiar el orden de las aplicaciones fijas en la barra de navegación" - -#: ../../Zotlabs/Module/Apporder.php:47 -msgid "Change Order of App Tray Apps" -msgstr "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones" - -#: ../../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." - -#: ../../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." - -#: ../../Zotlabs/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:208 -msgid "Menu not found." -msgstr "Menú no encontrado" - -#: ../../Zotlabs/Module/Mitem.php:63 -msgid "Unable to create element." -msgstr "No se puede crear el elemento." - -#: ../../Zotlabs/Module/Mitem.php:87 -msgid "Unable to update menu element." -msgstr "No es posible actualizar el elemento del menú." - -#: ../../Zotlabs/Module/Mitem.php:103 -msgid "Unable to add menu element." -msgstr "No es posible añadir el elemento al menú" - -#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Menu.php:231 -#: ../../Zotlabs/Module/Xchan.php:41 -msgid "Not found." -msgstr "No encontrado." - -#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 -msgid "Menu Item Permissions" -msgstr "Permisos del elemento del menú" - -#: ../../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/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 -msgid "Link Name" -msgstr "Nombre del enlace" - -#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 -msgid "Link or Submenu Target" -msgstr "Destino del enlace o submenú" - -#: ../../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/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/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" - -#: ../../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í" - -#: ../../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/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 -msgid "Order in list" -msgstr "Orden en la lista" - -#: ../../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/Module/Mitem.php:179 -msgid "Submit and finish" -msgstr "Enviar y terminar" - -#: ../../Zotlabs/Module/Mitem.php:180 -msgid "Submit and continue" -msgstr "Enviar y continuar" - -#: ../../Zotlabs/Module/Mitem.php:189 -msgid "Menu:" -msgstr "Menú:" - -#: ../../Zotlabs/Module/Mitem.php:192 -msgid "Link Target" -msgstr "Destino del enlace" - -#: ../../Zotlabs/Module/Mitem.php:195 -msgid "Edit menu" -msgstr "Editar menú" - -#: ../../Zotlabs/Module/Mitem.php:198 -msgid "Edit element" -msgstr "Editar el elemento" - -#: ../../Zotlabs/Module/Mitem.php:199 -msgid "Drop element" -msgstr "Eliminar el elemento" - -#: ../../Zotlabs/Module/Mitem.php:200 -msgid "New element" -msgstr "Nuevo elemento" - -#: ../../Zotlabs/Module/Mitem.php:201 -msgid "Edit this menu container" -msgstr "Modificar el contenedor del menú" - -#: ../../Zotlabs/Module/Mitem.php:202 -msgid "Add menu element" -msgstr "Añadir un elemento al menú" - -#: ../../Zotlabs/Module/Mitem.php:203 -msgid "Delete this menu item" -msgstr "Eliminar este elemento del menú" - -#: ../../Zotlabs/Module/Mitem.php:204 -msgid "Edit this menu item" -msgstr "Modificar este elemento del menú" - -#: ../../Zotlabs/Module/Mitem.php:222 -msgid "Menu item not found." -msgstr "Este elemento del menú no se ha encontrado" - -#: ../../Zotlabs/Module/Mitem.php:235 -msgid "Menu item deleted." -msgstr "Este elemento del menú ha sido borrado" - -#: ../../Zotlabs/Module/Mitem.php:237 -msgid "Menu item could not be deleted." -msgstr "Este elemento del menú no puede ser borrado." - -#: ../../Zotlabs/Module/Mitem.php:244 -msgid "Edit Menu Element" -msgstr "Editar elemento del menú" - -#: ../../Zotlabs/Module/Mitem.php:254 -msgid "Link text" -msgstr "Texto del enlace" - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../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" - -#: ../../Zotlabs/Module/Events.php:468 -msgid "Edit event title" -msgstr "Editar el título del evento" - -#: ../../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" - -#: ../../Zotlabs/Module/Events.php:470 -msgid "Categories (comma-separated list)" -msgstr "Temas (lista separada por comas)" - -#: ../../Zotlabs/Module/Events.php:471 -msgid "Edit Category" -msgstr "Modificar el tema" - -#: ../../Zotlabs/Module/Events.php:471 -msgid "Category" -msgstr "Tema" - -#: ../../Zotlabs/Module/Events.php:474 -msgid "Edit start date and time" -msgstr "Modificar la fecha y hora de comienzo" - -#: ../../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" - -#: ../../Zotlabs/Module/Events.php:477 -msgid "Edit finish date and time" -msgstr "Modificar la fecha y hora de terminación" - -#: ../../Zotlabs/Module/Events.php:477 -msgid "Finish date and time" -msgstr "Fecha y hora de terminación" - -#: ../../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" - -#: ../../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." - -#: ../../Zotlabs/Module/Events.php:481 -msgid "Edit Description" -msgstr "Editar la descripción" - -#: ../../Zotlabs/Module/Events.php:483 -msgid "Edit Location" -msgstr "Modificar la dirección" - -#: ../../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" - -#: ../../Zotlabs/Module/Events.php:487 ../../addon/hsse/hsse.php:225 -#: ../../include/conversation.php:1431 -msgid "Permission settings" -msgstr "Configuración de permisos" - -#: ../../Zotlabs/Module/Events.php:502 -msgid "Advanced Options" -msgstr "Opciones avanzadas" - -#: ../../Zotlabs/Module/Events.php:613 -msgid "l, F j" -msgstr "l j F" - -#: ../../Zotlabs/Module/Events.php:641 -#: ../../Zotlabs/Module/Channel_calendar.php:370 -msgid "Edit event" -msgstr "Editar evento" - -#: ../../Zotlabs/Module/Events.php:643 -#: ../../Zotlabs/Module/Channel_calendar.php:372 -msgid "Delete event" -msgstr "Borrar evento" - -#: ../../Zotlabs/Module/Events.php:669 ../../include/text.php:1939 -msgid "Link to Source" -msgstr "Enlazar con la entrada en su ubicación original" - -#: ../../Zotlabs/Module/Events.php:677 -#: ../../Zotlabs/Module/Channel_calendar.php:401 -msgid "calendar" -msgstr "calendario" - -#: ../../Zotlabs/Module/Events.php:696 -msgid "Edit Event" -msgstr "Editar el evento" - -#: ../../Zotlabs/Module/Events.php:696 -msgid "Create Event" -msgstr "Crear un evento" - -#: ../../Zotlabs/Module/Events.php:699 ../../include/channel.php:1769 -msgid "Export" -msgstr "Exportar" - -#: ../../Zotlabs/Module/Events.php:739 -msgid "Event removed" -msgstr "Evento borrado" - -#: ../../Zotlabs/Module/Events.php:742 -#: ../../Zotlabs/Module/Channel_calendar.php:488 -msgid "Failed to remove event" -msgstr "Error al eliminar el evento" - -#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 -msgid "App installed." -msgstr "Aplicación instalada." - -#: ../../Zotlabs/Module/Appman.php:49 -msgid "Malformed app." -msgstr "Aplicación con errores" - -#: ../../Zotlabs/Module/Appman.php:132 -msgid "Embed code" -msgstr "Código incorporado" - -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Edit App" -msgstr "Modificar la aplicación" - -#: ../../Zotlabs/Module/Appman.php:138 -msgid "Create App" -msgstr "Crear una aplicación" - -#: ../../Zotlabs/Module/Appman.php:143 -msgid "Name of app" -msgstr "Nombre de la aplicación" - -#: ../../Zotlabs/Module/Appman.php:144 -msgid "Location (URL) of app" -msgstr "Dirección (URL) de la aplicación" - -#: ../../Zotlabs/Module/Appman.php:146 -msgid "Photo icon URL" -msgstr "Dirección del icono" - -#: ../../Zotlabs/Module/Appman.php:146 -msgid "80 x 80 pixels - optional" -msgstr "80 x 80 pixels - opcional" - -#: ../../Zotlabs/Module/Appman.php:147 -msgid "Categories (optional, comma separated list)" -msgstr "Temas (opcional, lista separada por comas)" - -#: ../../Zotlabs/Module/Appman.php:148 -msgid "Version ID" -msgstr "Versión" - -#: ../../Zotlabs/Module/Appman.php:149 -msgid "Price of app" -msgstr "Precio de la aplicación" - -#: ../../Zotlabs/Module/Appman.php:150 -msgid "Location (URL) to purchase app" -msgstr "Dirección (URL) donde adquirir la aplicación" - -#: ../../Zotlabs/Module/Regmod.php:15 -msgid "Please login." -msgstr "Por favor, inicie sesión." - -#: ../../Zotlabs/Module/Magic.php:78 -msgid "Hub not found." -msgstr "Servidor no encontrado" - -#: ../../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" - -#: ../../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 " - -#: ../../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" - -#: ../../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" - -#: ../../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 +#: ../../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/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/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" - -#: ../../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)" - -#: ../../Zotlabs/Module/Article_edit.php:128 +#: ../../Zotlabs/Module/Article_edit.php:127 msgid "Edit Article" msgstr "Editar el artículo" +#: ../../Zotlabs/Module/Network.php:109 +msgid "No such group" +msgstr "No se encuentra el grupo" + +#: ../../Zotlabs/Module/Network.php:158 +msgid "No such channel" +msgstr "No se encuentra el canal" + +#: ../../Zotlabs/Module/Network.php:173 ../../Zotlabs/Module/Channel.php:183 +msgid "Search Results For:" +msgstr "Buscar resultados para:" + +#: ../../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/Module/Network.php:242 +msgid "Privacy group is empty" +msgstr "El grupo de canales está vacío" + +#: ../../Zotlabs/Module/Network.php:252 +msgid "Privacy group: " +msgstr "Grupo de canales: " + #: ../../Zotlabs/Module/Import_items.php:48 ../../Zotlabs/Module/Import.php:68 msgid "Nothing to import." msgstr "No hay nada para importar." @@ -1780,154 +8127,239 @@ msgstr "Utilice este formulario para importar entradas y contenido desde un arch msgid "File to Upload" msgstr "Fichero para subir" -#: ../../Zotlabs/Module/New_channel.php:147 -#: ../../Zotlabs/Module/Manage.php:138 +#: ../../Zotlabs/Module/Import.php:157 #, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." -msgstr "Ha creado %1$.0f de %2$.0f canales permitidos." +msgid "Your service plan only allows %d channels." +msgstr "Su paquete de servicios solo permite %d canales." -#: ../../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" +#: ../../Zotlabs/Module/Import.php:184 +msgid "No channel. Import failed." +msgstr "No hay canal. La importación ha fallado" -#: ../../Zotlabs/Module/New_channel.php:159 -msgid "Your real name is recommended." -msgstr "Se recomienda su nombre real." +#: ../../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/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\"" +#: ../../Zotlabs/Module/Import.php:627 +msgid "Import Channel" +msgstr "Importar canal" -#: ../../Zotlabs/Module/New_channel.php:165 +#: ../../Zotlabs/Module/Import.php:628 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)." +"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/Module/New_channel.php:167 -msgid "Allowed characters are a-z 0-9, - and _" -msgstr "Los caracteres permitidos son a-z 0-9, - and _" +#: ../../Zotlabs/Module/Import.php:630 +msgid "Or provide the old server/hub details" +msgstr "O proporcione los detalles de su antiguo servidor/hub" -#: ../../Zotlabs/Module/New_channel.php:175 -msgid "Channel name" -msgstr "Nombre del canal" +#: ../../Zotlabs/Module/Import.php:632 +msgid "Your old identity address (xyz@example.com)" +msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" + +#: ../../Zotlabs/Module/Import.php:633 +msgid "Your old login email address" +msgstr "Su antigua dirección de correo electrónico" + +#: ../../Zotlabs/Module/Import.php:634 +msgid "Your old login password" +msgstr "Su antigua contraseña" + +#: ../../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/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/Module/Import.php:639 +msgid "Make this hub my primary location" +msgstr "Convertir este servidor en mi ubicación primaria" + +#: ../../Zotlabs/Module/Import.php:640 +msgid "Move this channel (disable all previous locations)" +msgstr "Mover este canal (desactivar todas las ubicaciones anteriores)" + +#: ../../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/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/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/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/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/Module/Register.php:92 +msgid "Passwords do not match." +msgstr "Las contraseñas no coinciden." + +#: ../../Zotlabs/Module/Register.php:135 +msgid "Registration successful. Continue to create your first channel..." +msgstr "Registro exitoso. Continúe creando tu primer canal..." + +#: ../../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/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/Module/Register.php:148 +msgid "Your registration can not be processed." +msgstr "Su registro no puede ser procesado." + +#: ../../Zotlabs/Module/Register.php:195 +msgid "Registration on this hub is disabled." +msgstr "El registro está deshabilitado en este sitio." + +#: ../../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/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/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/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/Module/Register.php:239 ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Terms of Service" +msgstr "Términos del servicio" + +#: ../../Zotlabs/Module/Register.php:245 +#, php-format +msgid "I accept the %s for this website" +msgstr "Acepto los %s de este sitio" + +#: ../../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/Module/Register.php:257 +msgid "Your email address" +msgstr "Su dirección de correo electrónico" + +#: ../../Zotlabs/Module/Register.php:258 +msgid "Choose a password" +msgstr "Elija una contraseña" + +#: ../../Zotlabs/Module/Register.php:259 +msgid "Please re-enter your password" +msgstr "Por favor, vuelva a escribir su contraseña" + +#: ../../Zotlabs/Module/Register.php:260 +msgid "Please enter your invitation code" +msgstr "Por favor, introduzca el código de su invitación" + +#: ../../Zotlabs/Module/Register.php:261 +msgid "Your Name" +msgstr "Su nombre" + +#: ../../Zotlabs/Module/Register.php:261 +msgid "Real names are preferred." +msgstr "Se prefieren los nombres reales" -#: ../../Zotlabs/Module/New_channel.php:177 #: ../../Zotlabs/Module/Register.php:263 +#: ../../Zotlabs/Module/New_channel.php:177 msgid "Choose a short nickname" msgstr "Elija un alias corto" +#: ../../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/Module/Register.php:264 #: ../../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" -#: ../../Zotlabs/Module/New_channel.php:178 +#: ../../Zotlabs/Module/Register.php:264 msgid "" -"Select a channel permission role compatible with your usage needs and " -"privacy requirements." +"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/Module/New_channel.php:178 #: ../../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/Module/New_channel.php:181 -msgid "Create a Channel" -msgstr "Crear un canal" +#: ../../Zotlabs/Module/Register.php:265 +msgid "no" +msgstr "no" -#: ../../Zotlabs/Module/New_channel.php:182 +#: ../../Zotlabs/Module/Register.php:265 +msgid "yes" +msgstr "sí" + +#: ../../Zotlabs/Module/Register.php:277 +#: ../../Zotlabs/Module/Admin/Site.php:290 +msgid "Registration" +msgstr "Registro" + +#: ../../Zotlabs/Module/Register.php:294 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." +"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/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." +#: ../../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/Module/New_channel.php:188 -msgid "Validate" -msgstr "Validar" +#: ../../Zotlabs/Module/Search.php:230 +#, php-format +msgid "Items tagged with: %s" +msgstr "elementos etiquetados con: %s" -#: ../../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." - -#: ../../Zotlabs/Module/Removeme.php:60 -msgid "Remove This Channel" -msgstr "Eliminar este canal" - -#: ../../Zotlabs/Module/Removeme.php:61 -#: ../../Zotlabs/Module/Removeaccount.php:58 -#: ../../Zotlabs/Module/Changeaddr.php:78 -msgid "WARNING: " -msgstr "ATENCIÓ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. " - -#: ../../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!" - -#: ../../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:" - -#: ../../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 "" -"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" - -#: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:594 -msgid "Remove Channel" -msgstr "Eliminar el canal" - -#: ../../Zotlabs/Module/Sharedwithme.php:103 -msgid "Files: shared with me" -msgstr "Ficheros: compartidos conmigo" - -#: ../../Zotlabs/Module/Sharedwithme.php:105 -msgid "NEW" -msgstr "NUEVO" - -#: ../../Zotlabs/Module/Sharedwithme.php:106 -#: ../../Zotlabs/Storage/Browser.php:293 ../../include/text.php:1515 -msgid "Size" -msgstr "Tamaño" - -#: ../../Zotlabs/Module/Sharedwithme.php:107 -#: ../../Zotlabs/Storage/Browser.php:294 -msgid "Last Modified" -msgstr "Última modificación" - -#: ../../Zotlabs/Module/Sharedwithme.php:108 -msgid "Remove all files" -msgstr "Eliminar todos los ficheros" - -#: ../../Zotlabs/Module/Sharedwithme.php:109 -msgid "Remove this file" -msgstr "Eliminar este fichero" +#: ../../Zotlabs/Module/Search.php:232 +#, php-format +msgid "Search results for: %s" +msgstr "Resultados de la búsqueda para: %s" #: ../../Zotlabs/Module/Setup.php:167 msgid "$Projectname Server - Setup" @@ -1966,6 +8398,12 @@ msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." msgid "System check" msgstr "Verificación del sistema" +#: ../../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/Module/Setup.php:261 msgid "Check again" msgstr "Verificar de nuevo" @@ -2360,11 +8798,6 @@ msgid "" "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/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." - #: ../../Zotlabs/Module/Setup.php:764 msgid "<h1>What next?</h1>" msgstr "<h1>¿Qué sigue?</h1>" @@ -2375,6 +8808,1058 @@ msgid "" "poller." msgstr "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"." +#: ../../Zotlabs/Module/Viewconnections.php:65 +msgid "No connections." +msgstr "Sin conexiones." + +#: ../../Zotlabs/Module/Viewconnections.php:83 +#, php-format +msgid "Visit %s's profile [%s]" +msgstr "Visitar el perfil de %s [%s]" + +#: ../../Zotlabs/Module/Viewconnections.php:113 +msgid "View Connections" +msgstr "Ver conexiones" + +#: ../../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/Module/Pubsites.php:33 +msgid "Hub URL" +msgstr "Dirección del hub" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" +msgstr "Tipo de acceso" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" +msgstr "Normas de registro" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" +msgstr "Estadísticas" + +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" +msgstr "Software" + +#: ../../Zotlabs/Module/Pubsites.php:49 +msgid "Rate" +msgstr "Valorar" + +#: ../../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/Module/Channel.php:99 ../../Zotlabs/Module/Hcard.php:37 +#: ../../Zotlabs/Module/Profile.php:45 +msgid "Posts and comments" +msgstr "Publicaciones y comentarios" + +#: ../../Zotlabs/Module/Channel.php:106 ../../Zotlabs/Module/Hcard.php:44 +#: ../../Zotlabs/Module/Profile.php:52 +msgid "Only posts" +msgstr "Solo publicaciones" + +#: ../../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/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/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." +msgstr "Identificador del perfil no válido" + +#: ../../Zotlabs/Module/Profperm.php:111 +msgid "Profile Visibility Editor" +msgstr "Editor de visibilidad del perfil" + +#: ../../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/Module/Profperm.php:124 +msgid "Visible To" +msgstr "Visible para" + +#: ../../Zotlabs/Module/Profperm.php:140 +#: ../../Zotlabs/Module/Connections.php:217 +msgid "All Connections" +msgstr "Todas las conexiones" + +#: ../../Zotlabs/Module/Group.php:45 +msgid "Privacy group created." +msgstr "El grupo de canales ha sido creado." + +#: ../../Zotlabs/Module/Group.php:48 +msgid "Could not create privacy group." +msgstr "No se puede crear el grupo de canales" + +#: ../../Zotlabs/Module/Group.php:80 +msgid "Privacy group updated." +msgstr "Grupo de canales actualizado." + +#: ../../Zotlabs/Module/Group.php:106 +msgid "Privacy Groups App" +msgstr "App Grupos de canales" + +#: ../../Zotlabs/Module/Group.php:107 +msgid "Management of privacy groups" +msgstr "Gestión de grupos de canales" + +#: ../../Zotlabs/Module/Group.php:142 +msgid "Add Group" +msgstr "Agregar un grupo" + +#: ../../Zotlabs/Module/Group.php:146 +msgid "Privacy group name" +msgstr "Nombre del grupo" + +#: ../../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/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 +msgid "Members" +msgstr "Miembros" + +#: ../../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/Module/Group.php:251 +#, php-format +msgid "Privacy Group: %s" +msgstr "Grupo privado %s" + +#: ../../Zotlabs/Module/Group.php:253 +msgid "Privacy group name: " +msgstr "Nombre del grupo de canales:" + +#: ../../Zotlabs/Module/Group.php:258 +msgid "Delete Group" +msgstr "Eliminar grupo" + +#: ../../Zotlabs/Module/Group.php:269 +msgid "Group members" +msgstr "Miembros del grupo" + +#: ../../Zotlabs/Module/Group.php:271 +msgid "Not in this group" +msgstr "No en este grupo" + +#: ../../Zotlabs/Module/Group.php:303 +msgid "Click a channel to toggle membership" +msgstr "Haga clic en un canal para cambiar los miembros" + +#: ../../Zotlabs/Module/Card_edit.php:128 +msgid "Edit Card" +msgstr "Editar la ficha" + +#: ../../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/Module/Go.php:27 +msgid "Welcome" +msgstr "Bienvenido/a" + +#: ../../Zotlabs/Module/Go.php:29 +msgid "What would you like to do?" +msgstr "¿Qué le gustaría hacer?" + +#: ../../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/Module/Go.php:35 +msgid "Upload a profile photo" +msgstr "Subir una foto de perfil" + +#: ../../Zotlabs/Module/Go.php:36 +msgid "Upload a cover photo" +msgstr "Subir una foto de portada del perfil" + +#: ../../Zotlabs/Module/Go.php:37 +msgid "Edit your default profile" +msgstr "Editar su perfil por defecto" + +#: ../../Zotlabs/Module/Go.php:39 +msgid "View the channel directory" +msgstr "Ver el directorio de canales" + +#: ../../Zotlabs/Module/Go.php:40 +msgid "View/edit your channel settings" +msgstr "Ver o modificar los ajustes de su canal" + +#: ../../Zotlabs/Module/Go.php:41 +msgid "View the site or project documentation" +msgstr "Ver el sitio o la documentación del proyecto" + +#: ../../Zotlabs/Module/Go.php:42 +msgid "Visit your channel homepage" +msgstr "Visitar la página principal de su canal" + +#: ../../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/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/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/Module/Oauth.php:45 +msgid "Name is required" +msgstr "El nombre es obligatorio" + +#: ../../Zotlabs/Module/Oauth.php:49 +msgid "Key and Secret are required" +msgstr "\"Key\" y \"Secret\" son obligatorios" + +#: ../../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/Module/Oauth.php:100 +msgid "OAuth Apps Manager App" +msgstr "App Gestión de apps OAuth" + +#: ../../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/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/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/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/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 +#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 +msgid "Redirect" +msgstr "Redirigir" + +#: ../../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/Module/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 +msgid "Icon url" +msgstr "Dirección del icono" + +#: ../../Zotlabs/Module/Oauth.php:117 ../../Zotlabs/Module/Sources.php:123 +#: ../../Zotlabs/Module/Sources.php:158 +msgid "Optional" +msgstr "Opcional" + +#: ../../Zotlabs/Module/Oauth.php:128 +msgid "Application not found." +msgstr "Aplicación no encontrada." + +#: ../../Zotlabs/Module/Oauth.php:171 +msgid "Connected OAuth Apps" +msgstr "Apps OAuth conectadas" + +#: ../../Zotlabs/Module/Oauth.php:175 ../../Zotlabs/Module/Oauth2.php:196 +msgid "Client key starts with" +msgstr "La \"client key\" empieza por" + +#: ../../Zotlabs/Module/Oauth.php:176 ../../Zotlabs/Module/Oauth2.php:197 +msgid "No name" +msgstr "Sin nombre" + +#: ../../Zotlabs/Module/Oauth.php:177 ../../Zotlabs/Module/Oauth2.php:198 +msgid "Remove authorization" +msgstr "Eliminar autorización" + +#: ../../Zotlabs/Module/Editwebpage.php:139 +msgid "Page link" +msgstr "Enlace de la página" + +#: ../../Zotlabs/Module/Editwebpage.php:166 +msgid "Edit Webpage" +msgstr "Editar la página web" + +#: ../../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/Module/Dirsearch.php:33 +msgid "This directory server requires an access token" +msgstr "El servidor de este directorio necesita un \"token\" de acceso" + +#: ../../Zotlabs/Module/Hq.php:140 +msgid "Welcome to Hubzilla!" +msgstr "¡Bienvenido a Hubzilla!" + +#: ../../Zotlabs/Module/Hq.php:140 +msgid "You have got no unseen posts..." +msgstr "No tiene ningún mensaje sin leer..." + +#: ../../Zotlabs/Module/Chat.php:102 +msgid "Chatrooms App" +msgstr "App Salas de chat" + +#: ../../Zotlabs/Module/Chat.php:103 +msgid "Access Controlled Chatrooms" +msgstr "Salas de chat moderadas" + +#: ../../Zotlabs/Module/Chat.php:196 +msgid "Room not found" +msgstr "Sala no encontrada" + +#: ../../Zotlabs/Module/Chat.php:212 +msgid "Leave Room" +msgstr "Abandonar la sala" + +#: ../../Zotlabs/Module/Chat.php:213 +msgid "Delete Room" +msgstr "Eliminar esta sala" + +#: ../../Zotlabs/Module/Chat.php:214 +msgid "I am away right now" +msgstr "Estoy ausente momentáneamente" + +#: ../../Zotlabs/Module/Chat.php:215 +msgid "I am online" +msgstr "Estoy conectado/a" + +#: ../../Zotlabs/Module/Chat.php:217 +msgid "Bookmark this room" +msgstr "Añadir esta sala a Marcadores" + +#: ../../Zotlabs/Module/Chat.php:240 +msgid "New Chatroom" +msgstr "Nueva sala de chat" + +#: ../../Zotlabs/Module/Chat.php:241 +msgid "Chatroom name" +msgstr "Nombre de la sala de chat" + +#: ../../Zotlabs/Module/Chat.php:242 +msgid "Expiration of chats (minutes)" +msgstr "Caducidad de los mensajes en los chats (en minutos)" + +#: ../../Zotlabs/Module/Chat.php:258 +#, php-format +msgid "%1$s's Chatrooms" +msgstr "Salas de chat de %1$s" + +#: ../../Zotlabs/Module/Chat.php:263 +msgid "No chatrooms available" +msgstr "No hay salas de chat disponibles" + +#: ../../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/Module/Chat.php:267 +msgid "Expiration" +msgstr "Caducidad" + +#: ../../Zotlabs/Module/Chat.php:268 +msgid "min" +msgstr "min" + +#: ../../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/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/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/Module/Channel_calendar.php:370 +#: ../../Zotlabs/Module/Events.php:641 +msgid "Edit event" +msgstr "Editar evento" + +#: ../../Zotlabs/Module/Channel_calendar.php:372 +#: ../../Zotlabs/Module/Events.php:643 +msgid "Delete event" +msgstr "Borrar evento" + +#: ../../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/Module/Channel_calendar.php:401 +#: ../../Zotlabs/Module/Events.php:677 +msgid "calendar" +msgstr "calendario" + +#: ../../Zotlabs/Module/Channel_calendar.php:488 +#: ../../Zotlabs/Module/Events.php:742 +msgid "Failed to remove event" +msgstr "Error al eliminar el evento" + +#: ../../Zotlabs/Module/Like.php:56 +msgid "Like/Dislike" +msgstr "Me gusta/No me gusta" + +#: ../../Zotlabs/Module/Like.php:61 +msgid "This action is restricted to members." +msgstr "Esta acción está restringida solo para miembros." + +#: ../../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/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 +#: ../../Zotlabs/Module/Like.php:175 +msgid "Invalid request." +msgstr "Solicitud incorrecta." + +#: ../../Zotlabs/Module/Like.php:152 +msgid "thing" +msgstr "elemento" + +#: ../../Zotlabs/Module/Like.php:198 +msgid "Channel unavailable." +msgstr "Canal no disponible." + +#: ../../Zotlabs/Module/Like.php:246 +msgid "Previous action reversed." +msgstr "Acción anterior revocada." + +#: ../../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/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" + +#: ../../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/Module/Like.php:572 +msgid "Action completed." +msgstr "Acción completada." + +#: ../../Zotlabs/Module/Like.php:573 +msgid "Thank you." +msgstr "Gracias." + +#: ../../Zotlabs/Module/Poke.php:165 +msgid "Poke App" +msgstr "App Toques" + +#: ../../Zotlabs/Module/Poke.php:166 +msgid "Poke somebody in your addressbook" +msgstr "Dar un toque a alguien en su libreta de direcciones" + +#: ../../Zotlabs/Module/Poke.php:200 +msgid "Poke somebody" +msgstr "Dar un toque a alguien" + +#: ../../Zotlabs/Module/Poke.php:203 +msgid "Poke/Prod" +msgstr "Toque/Incitación" + +#: ../../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/Module/Poke.php:211 +msgid "Recipient" +msgstr "Destinatario" + +#: ../../Zotlabs/Module/Poke.php:212 +msgid "Choose what you wish to do to recipient" +msgstr "Elegir qué desea enviar al destinatario" + +#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 +msgid "Make this post private" +msgstr "Convertir en privado este envío" + +#: ../../Zotlabs/Module/Cdav.php:807 ../../Zotlabs/Module/Events.php:28 +msgid "Calendar entries imported." +msgstr "Entradas de calendario importadas." + +#: ../../Zotlabs/Module/Cdav.php:809 ../../Zotlabs/Module/Events.php:30 +msgid "No calendar entries found." +msgstr "No se han encontrado entradas de calendario." + +#: ../../Zotlabs/Module/Cdav.php:870 +msgid "INVALID EVENT DISMISSED!" +msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" + +#: ../../Zotlabs/Module/Cdav.php:871 +msgid "Summary: " +msgstr "Resumen: " + +#: ../../Zotlabs/Module/Cdav.php:872 +msgid "Date: " +msgstr "Fecha: " + +#: ../../Zotlabs/Module/Cdav.php:873 ../../Zotlabs/Module/Cdav.php:880 +msgid "Reason: " +msgstr "Razón: " + +#: ../../Zotlabs/Module/Cdav.php:878 +msgid "INVALID CARD DISMISSED!" +msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" + +#: ../../Zotlabs/Module/Cdav.php:879 +msgid "Name: " +msgstr "Nombre: " + +#: ../../Zotlabs/Module/Cdav.php:899 +msgid "CardDAV App" +msgstr "App CarDav" + +#: ../../Zotlabs/Module/Cdav.php:900 +msgid "CalDAV capable addressbook" +msgstr "Libreta de direcciones compatible con CalDav" + +#: ../../Zotlabs/Module/Cdav.php:1032 ../../Zotlabs/Module/Events.php:468 +msgid "Event title" +msgstr "Título del evento" + +#: ../../Zotlabs/Module/Cdav.php:1033 ../../Zotlabs/Module/Events.php:474 +msgid "Start date and time" +msgstr "Fecha y hora de comienzo" + +#: ../../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/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/Module/Cdav.php:1060 ../../Zotlabs/Module/Events.php:708 +#: ../../Zotlabs/Module/Cal.php:207 +msgid "Today" +msgstr "Hoy" + +#: ../../Zotlabs/Module/Cdav.php:1061 ../../Zotlabs/Module/Events.php:703 +msgid "Month" +msgstr "Mes" + +#: ../../Zotlabs/Module/Cdav.php:1062 ../../Zotlabs/Module/Events.php:704 +msgid "Week" +msgstr "Semana" + +#: ../../Zotlabs/Module/Cdav.php:1063 ../../Zotlabs/Module/Events.php:705 +msgid "Day" +msgstr "Día" + +#: ../../Zotlabs/Module/Cdav.php:1064 +msgid "List month" +msgstr "Lista mensual" + +#: ../../Zotlabs/Module/Cdav.php:1065 +msgid "List week" +msgstr "Lista semanal" + +#: ../../Zotlabs/Module/Cdav.php:1066 +msgid "List day" +msgstr "Lista diaria" + +#: ../../Zotlabs/Module/Cdav.php:1074 +msgid "More" +msgstr "Más" + +#: ../../Zotlabs/Module/Cdav.php:1075 +msgid "Less" +msgstr "Menos" + +#: ../../Zotlabs/Module/Cdav.php:1077 +msgid "Select calendar" +msgstr "Seleccionar un calendario" + +#: ../../Zotlabs/Module/Cdav.php:1080 +msgid "Delete all" +msgstr "Eliminar todos" + +#: ../../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/Module/Cdav.php:1374 ../../Zotlabs/Module/Connedit.php:924 +msgid "Organisation" +msgstr "Organización" + +#: ../../Zotlabs/Module/Cdav.php:1376 ../../Zotlabs/Module/Profiles.php:786 +#: ../../Zotlabs/Module/Connedit.php:926 +msgid "Phone" +msgstr "Teléfono" + +#: ../../Zotlabs/Module/Cdav.php:1378 ../../Zotlabs/Module/Profiles.php:788 +#: ../../Zotlabs/Module/Connedit.php:928 +msgid "Instant messenger" +msgstr "Mensajería instantánea" + +#: ../../Zotlabs/Module/Cdav.php:1379 ../../Zotlabs/Module/Profiles.php:789 +#: ../../Zotlabs/Module/Connedit.php:929 +msgid "Website" +msgstr "Sitio web" + +#: ../../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/Module/Cdav.php:1381 ../../Zotlabs/Module/Profiles.php:791 +#: ../../Zotlabs/Module/Connedit.php:931 +msgid "Note" +msgstr "Nota" + +#: ../../Zotlabs/Module/Cdav.php:1387 ../../Zotlabs/Module/Profiles.php:797 +#: ../../Zotlabs/Module/Connedit.php:937 +msgid "Add Field" +msgstr "Añadir un campo" + +#: ../../Zotlabs/Module/Cdav.php:1392 ../../Zotlabs/Module/Connedit.php:942 +msgid "P.O. Box" +msgstr "Buzón de correos" + +#: ../../Zotlabs/Module/Cdav.php:1393 ../../Zotlabs/Module/Connedit.php:943 +msgid "Additional" +msgstr "Adicional" + +#: ../../Zotlabs/Module/Cdav.php:1394 ../../Zotlabs/Module/Connedit.php:944 +msgid "Street" +msgstr "Calle" + +#: ../../Zotlabs/Module/Cdav.php:1395 ../../Zotlabs/Module/Connedit.php:945 +msgid "Locality" +msgstr "Localidad" + +#: ../../Zotlabs/Module/Cdav.php:1396 ../../Zotlabs/Module/Connedit.php:946 +msgid "Region" +msgstr "Provincia, región o estado" + +#: ../../Zotlabs/Module/Cdav.php:1397 ../../Zotlabs/Module/Connedit.php:947 +msgid "ZIP Code" +msgstr "Código postal" + +#: ../../Zotlabs/Module/Cdav.php:1398 ../../Zotlabs/Module/Profiles.php:757 +#: ../../Zotlabs/Module/Connedit.php:948 +msgid "Country" +msgstr "País" + +#: ../../Zotlabs/Module/Cdav.php:1445 +msgid "Default Calendar" +msgstr "Calendario por defecto" + +#: ../../Zotlabs/Module/Cdav.php:1456 +msgid "Default Addressbook" +msgstr "Agenda de direcciones por defecto" + +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." +msgstr "La información privada remota no está disponible." + +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" +msgstr "Visible para:" + +#: ../../Zotlabs/Module/Item.php:382 +msgid "Unable to locate original post." +msgstr "No ha sido posible encontrar la entrada original." + +#: ../../Zotlabs/Module/Item.php:668 +msgid "Empty post discarded." +msgstr "La entrada vacía ha sido desechada." + +#: ../../Zotlabs/Module/Item.php:1077 +msgid "Duplicate post suppressed." +msgstr "Se ha suprimido la entrada duplicada." + +#: ../../Zotlabs/Module/Item.php:1222 +msgid "System error. Post not saved." +msgstr "Error del sistema. La entrada no se ha podido salvar." + +#: ../../Zotlabs/Module/Item.php:1252 +msgid "Your comment is awaiting approval." +msgstr "Su comentario está pendiente de aprobación." + +#: ../../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/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/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/Module/Mitem.php:31 ../../Zotlabs/Module/Menu.php:209 +msgid "Menu not found." +msgstr "Menú no encontrado" + +#: ../../Zotlabs/Module/Mitem.php:63 +msgid "Unable to create element." +msgstr "No se puede crear el elemento." + +#: ../../Zotlabs/Module/Mitem.php:87 +msgid "Unable to update menu element." +msgstr "No es posible actualizar el elemento del menú." + +#: ../../Zotlabs/Module/Mitem.php:103 +msgid "Unable to add menu element." +msgstr "No es posible añadir el elemento al menú" + +#: ../../Zotlabs/Module/Mitem.php:134 ../../Zotlabs/Module/Xchan.php:41 +#: ../../Zotlabs/Module/Menu.php:232 +msgid "Not found." +msgstr "No encontrado." + +#: ../../Zotlabs/Module/Mitem.php:167 ../../Zotlabs/Module/Mitem.php:246 +msgid "Menu Item Permissions" +msgstr "Permisos del elemento del menú" + +#: ../../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/Module/Mitem.php:174 ../../Zotlabs/Module/Mitem.php:191 +msgid "Link Name" +msgstr "Nombre del enlace" + +#: ../../Zotlabs/Module/Mitem.php:175 ../../Zotlabs/Module/Mitem.php:255 +msgid "Link or Submenu Target" +msgstr "Destino del enlace o submenú" + +#: ../../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/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/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:257 +msgid "Open link in new window" +msgstr "Abrir el enlace en una nueva ventana" + +#: ../../Zotlabs/Module/Mitem.php:178 ../../Zotlabs/Module/Mitem.php:258 +msgid "Order in list" +msgstr "Orden en la lista" + +#: ../../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/Module/Mitem.php:179 +msgid "Submit and finish" +msgstr "Enviar y terminar" + +#: ../../Zotlabs/Module/Mitem.php:180 +msgid "Submit and continue" +msgstr "Enviar y continuar" + +#: ../../Zotlabs/Module/Mitem.php:189 +msgid "Menu:" +msgstr "Menú:" + +#: ../../Zotlabs/Module/Mitem.php:192 +msgid "Link Target" +msgstr "Destino del enlace" + +#: ../../Zotlabs/Module/Mitem.php:195 +msgid "Edit menu" +msgstr "Editar menú" + +#: ../../Zotlabs/Module/Mitem.php:198 +msgid "Edit element" +msgstr "Editar el elemento" + +#: ../../Zotlabs/Module/Mitem.php:199 +msgid "Drop element" +msgstr "Eliminar el elemento" + +#: ../../Zotlabs/Module/Mitem.php:200 +msgid "New element" +msgstr "Nuevo elemento" + +#: ../../Zotlabs/Module/Mitem.php:201 +msgid "Edit this menu container" +msgstr "Modificar el contenedor del menú" + +#: ../../Zotlabs/Module/Mitem.php:202 +msgid "Add menu element" +msgstr "Añadir un elemento al menú" + +#: ../../Zotlabs/Module/Mitem.php:203 +msgid "Delete this menu item" +msgstr "Eliminar este elemento del menú" + +#: ../../Zotlabs/Module/Mitem.php:204 +msgid "Edit this menu item" +msgstr "Modificar este elemento del menú" + +#: ../../Zotlabs/Module/Mitem.php:222 +msgid "Menu item not found." +msgstr "Este elemento del menú no se ha encontrado" + +#: ../../Zotlabs/Module/Mitem.php:235 +msgid "Menu item deleted." +msgstr "Este elemento del menú ha sido borrado" + +#: ../../Zotlabs/Module/Mitem.php:237 +msgid "Menu item could not be deleted." +msgstr "Este elemento del menú no puede ser borrado." + +#: ../../Zotlabs/Module/Mitem.php:244 +msgid "Edit Menu Element" +msgstr "Editar elemento del menú" + +#: ../../Zotlabs/Module/Mitem.php:254 +msgid "Link text" +msgstr "Texto del enlace" + +#: ../../Zotlabs/Module/Profile.php:93 +msgid "vcard" +msgstr "vcard" + +#: ../../Zotlabs/Module/Sharedwithme.php:103 +msgid "Files: shared with me" +msgstr "Ficheros: compartidos conmigo" + +#: ../../Zotlabs/Module/Sharedwithme.php:105 +msgid "NEW" +msgstr "NUEVO" + +#: ../../Zotlabs/Module/Sharedwithme.php:107 +#: ../../Zotlabs/Storage/Browser.php:294 +msgid "Last Modified" +msgstr "Última modificación" + +#: ../../Zotlabs/Module/Sharedwithme.php:108 +msgid "Remove all files" +msgstr "Eliminar todos los ficheros" + +#: ../../Zotlabs/Module/Sharedwithme.php:109 +msgid "Remove this file" +msgstr "Eliminar este fichero" + +#: ../../Zotlabs/Module/Help.php:23 +msgid "Documentation Search" +msgstr "Búsqueda de Documentación" + +#: ../../Zotlabs/Module/Help.php:82 +msgid "Administrators" +msgstr "Administradores" + +#: ../../Zotlabs/Module/Help.php:83 +msgid "Developers" +msgstr "Desarrolladores" + +#: ../../Zotlabs/Module/Help.php:84 +msgid "Tutorials" +msgstr "Tutoriales" + +#: ../../Zotlabs/Module/Help.php:95 +msgid "$Projectname Documentation" +msgstr "Documentación de $Projectname" + +#: ../../Zotlabs/Module/Help.php:96 +msgid "Contents" +msgstr "Contenidos" + +#: ../../Zotlabs/Module/Webpages.php:48 +msgid "Webpages App" +msgstr "App de Páginas web" + +#: ../../Zotlabs/Module/Webpages.php:49 +msgid "Provide managed web pages on your channel" +msgstr "Proveer páginas web gestionadas en su canal" + +#: ../../Zotlabs/Module/Webpages.php:69 +msgid "Import Webpage Elements" +msgstr "Importar elementos de una página web" + +#: ../../Zotlabs/Module/Webpages.php:70 +msgid "Import selected" +msgstr "Importar elementos seleccionados" + +#: ../../Zotlabs/Module/Webpages.php:93 +msgid "Export Webpage Elements" +msgstr "Exportar elementos de una página web" + +#: ../../Zotlabs/Module/Webpages.php:94 +msgid "Export selected" +msgstr "Exportar los elementos seleccionados" + +#: ../../Zotlabs/Module/Webpages.php:263 +msgid "Actions" +msgstr "Acciones" + +#: ../../Zotlabs/Module/Webpages.php:264 +msgid "Page Link" +msgstr "Vínculo de la página" + +#: ../../Zotlabs/Module/Webpages.php:265 +msgid "Page Title" +msgstr "Título de página" + +#: ../../Zotlabs/Module/Webpages.php:266 ../../Zotlabs/Module/Blocks.php:157 +#: ../../Zotlabs/Module/Menu.php:178 ../../Zotlabs/Module/Layouts.php:191 +msgid "Created" +msgstr "Creado" + +#: ../../Zotlabs/Module/Webpages.php:267 ../../Zotlabs/Module/Blocks.php:158 +#: ../../Zotlabs/Module/Menu.php:179 ../../Zotlabs/Module/Layouts.php:192 +msgid "Edited" +msgstr "Editado" + +#: ../../Zotlabs/Module/Webpages.php:295 +msgid "Invalid file type." +msgstr "Tipo de fichero no válido." + +#: ../../Zotlabs/Module/Webpages.php:307 +msgid "Error opening zip file" +msgstr "Error al abrir el fichero comprimido zip" + +#: ../../Zotlabs/Module/Webpages.php:318 +msgid "Invalid folder path." +msgstr "La ruta de la carpeta no es válida." + +#: ../../Zotlabs/Module/Webpages.php:345 +msgid "No webpage elements detected." +msgstr "No se han detectado elementos de ninguna página web." + +#: ../../Zotlabs/Module/Webpages.php:420 +msgid "Import complete." +msgstr "Importación completada." + +#: ../../Zotlabs/Module/Filestorage.php:103 +msgid "File not found." +msgstr "Fichero no encontrado." + +#: ../../Zotlabs/Module/Filestorage.php:152 +msgid "Permission Denied." +msgstr "Permiso denegado" + +#: ../../Zotlabs/Module/Filestorage.php:185 +msgid "Edit file permissions" +msgstr "Modificar los permisos del fichero" + +#: ../../Zotlabs/Module/Filestorage.php:198 +msgid "Include all files and sub folders" +msgstr "Incluir todos los ficheros y subcarpetas" + +#: ../../Zotlabs/Module/Filestorage.php:199 +msgid "Return to file list" +msgstr "Volver a la lista de ficheros" + +#: ../../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/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/Module/Filestorage.php:204 +msgid "Share this file" +msgstr "Compartir este fichero" + +#: ../../Zotlabs/Module/Filestorage.php:205 +msgid "Show URL to this file" +msgstr "Mostrar la dirección de este fichero" + +#: ../../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/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 +msgid "Tag removed" +msgstr "Etiqueta eliminada." + +#: ../../Zotlabs/Module/Tagrm.php:123 +msgid "Remove Item Tag" +msgstr "Eliminar etiqueta del elemento." + +#: ../../Zotlabs/Module/Tagrm.php:125 +msgid "Select a tag to remove: " +msgstr "Seleccionar una etiqueta para eliminar:" + #: ../../Zotlabs/Module/Connect.php:73 ../../Zotlabs/Module/Connect.php:135 msgid "Continue" msgstr "Continuar" @@ -2428,6 +9913,70 @@ msgstr "(No ha sido proporcionada ninguna instrucción específica por el propie msgid "Restricted or Premium Channel" msgstr "Canal premium o restringido" +#: ../../Zotlabs/Module/Cloud.php:116 +msgid "Not found" +msgstr "No encontrado" + +#: ../../Zotlabs/Module/Cloud.php:122 +msgid "Please refresh page" +msgstr "Por favor, recargue la página" + +#: ../../Zotlabs/Module/Cloud.php:125 +msgid "Unknown error" +msgstr "Error desconocido" + +#: ../../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" + +#: ../../Zotlabs/Module/Share.php:119 +msgid "Post repeated" +msgstr "Entrada repetida" + +#: ../../Zotlabs/Module/Acl.php:360 +msgid "network" +msgstr "red" + +#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 +msgid "Item is not editable" +msgstr "El elemento no es editable" + +#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 +msgid "Edit post" +msgstr "Editar la entrada" + +#: ../../Zotlabs/Module/Tagger.php:48 +msgid "Post not found." +msgstr "Mensaje no encontrado." + +#: ../../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" + +#: ../../Zotlabs/Module/Authorize.php:17 +msgid "Unknown App" +msgstr "Aplicación desconocida" + +#: ../../Zotlabs/Module/Authorize.php:29 +msgid "Authorize" +msgstr "Autorizar" + +#: ../../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?" + +#: ../../Zotlabs/Module/Authorize.php:32 +msgid "Allow" +msgstr "Permitir" + +#: ../../Zotlabs/Module/Authorize.php:33 +#: ../../Zotlabs/Module/Admin/Accounts.php:174 +msgid "Deny" +msgstr "Rechazar" + #: ../../Zotlabs/Module/Admin/Queue.php:35 msgid "Queue Statistics" msgstr "Estadísticas de la cola" @@ -2456,17 +10005,63 @@ msgstr "Vaciar la cola para este servidor" msgid "Last known contact" msgstr "Último contacto conocido" -#: ../../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" +#: ../../Zotlabs/Module/Admin/Themes.php:26 +msgid "Theme settings updated." +msgstr "Ajustes del tema actualizados." -#: ../../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" +#: ../../Zotlabs/Module/Admin/Themes.php:61 +msgid "No themes found." +msgstr "No se han encontrado temas." + +#: ../../Zotlabs/Module/Admin/Themes.php:95 +#: ../../Zotlabs/Module/Admin/Addons.php:311 +msgid "Disable" +msgstr "Desactivar" + +#: ../../Zotlabs/Module/Admin/Themes.php:97 +#: ../../Zotlabs/Module/Admin/Addons.php:314 +msgid "Enable" +msgstr "Activar" + +#: ../../Zotlabs/Module/Admin/Themes.php:116 +msgid "Screenshot" +msgstr "Instantánea de pantalla" + +#: ../../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" + +#: ../../Zotlabs/Module/Admin/Themes.php:124 +#: ../../Zotlabs/Module/Admin/Addons.php:344 +msgid "Toggle" +msgstr "Cambiar" + +#: ../../Zotlabs/Module/Admin/Themes.php:134 +#: ../../Zotlabs/Module/Admin/Addons.php:352 +msgid "Author: " +msgstr "Autor:" + +#: ../../Zotlabs/Module/Admin/Themes.php:135 +#: ../../Zotlabs/Module/Admin/Addons.php:353 +msgid "Maintainer: " +msgstr "Mantenedor:" + +#: ../../Zotlabs/Module/Admin/Themes.php:162 +msgid "[Experimental]" +msgstr "[Experimental]" + +#: ../../Zotlabs/Module/Admin/Themes.php:163 +msgid "[Unsupported]" +msgstr "[No soportado]" #: ../../Zotlabs/Module/Admin/Features.php:56 #, php-format @@ -2477,69 +10072,126 @@ msgstr "Bloquear la funcionalidad %s" msgid "Manage Additional Features" msgstr "Gestionar las funcionalidades" -#: ../../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" - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../Zotlabs/Module/Admin/Dbsync.php:78 -#, php-format +#: ../../Zotlabs/Module/Admin/Security.php:83 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." +"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." -#: ../../Zotlabs/Module/Admin/Dbsync.php:99 -msgid "Failed Updates" -msgstr "Han fallado las actualizaciones" +#: ../../Zotlabs/Module/Admin/Security.php:86 +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: " -#: ../../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)" +#: ../../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 />" -#: ../../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." +#: ../../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." -#: ../../Zotlabs/Module/Admin/Dbsync.php:103 -msgid "Attempt to execute this update step automatically" -msgstr "Intentar ejecutar este paso de actualización automáticamente" +#: ../../Zotlabs/Module/Admin/Security.php:95 +msgid "Block public" +msgstr "Bloquear páginas públicas" -#: ../../Zotlabs/Module/Admin/Dbsync.php:108 -msgid "No failed updates." -msgstr "No ha fallado ninguna actualización." +#: ../../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." + +#: ../../Zotlabs/Module/Admin/Security.php:96 +msgid "Provide a cloud root directory" +msgstr "Proporcionar un directorio raíz de la nube" + +#: ../../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" + +#: ../../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" + +#: ../../Zotlabs/Module/Admin/Security.php:98 +msgid "Set \"Transport Security\" HTTP header" +msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP" + +#: ../../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" + +#: ../../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. " + +#: ../../Zotlabs/Module/Admin/Security.php:101 +msgid "Not allowed email domains" +msgstr "No se permiten dominios de correo electrónico" + +#: ../../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." + +#: ../../Zotlabs/Module/Admin/Security.php:102 +msgid "Allow communications only from these sites" +msgstr "Permitir la comunicación solo desde estos sitios" + +#: ../../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" + +#: ../../Zotlabs/Module/Admin/Security.php:103 +msgid "Block communications from these sites" +msgstr "Bloquear la comunicación desde estos sitios" + +#: ../../Zotlabs/Module/Admin/Security.php:104 +msgid "Allow communications only from these channels" +msgstr "Permitir la comunicación solo desde estos canales" + +#: ../../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" + +#: ../../Zotlabs/Module/Admin/Security.php:105 +msgid "Block communications from these channels" +msgstr "Bloquear la comunicación desde estos canales" + +#: ../../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)." + +#: ../../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 " + +#: ../../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." + +#: ../../Zotlabs/Module/Admin/Security.php:108 +msgid "Block embedded HTML from these domains" +msgstr "Bloquear contenido con HTML incorporado desde estos dominios" #: ../../Zotlabs/Module/Admin/Accounts.php:37 #, php-format @@ -2559,11 +10211,6 @@ msgstr[1] "%s cuentas eliminadas" msgid "Account not found" msgstr "Cuenta no encontrada" -#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2632 -#, php-format -msgid "Account '%s' deleted" -msgstr "La cuenta '%s' ha sido eliminada" - #: ../../Zotlabs/Module/Admin/Accounts.php:99 #, php-format msgid "Account '%s' blocked" @@ -2574,25 +10221,6 @@ msgstr "La cuenta '%s' ha sido bloqueada" msgid "Account '%s' unblocked" msgstr "La cuenta '%s' ha sido desbloqueada" -#: ../../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" - -#: ../../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" - #: ../../Zotlabs/Module/Admin/Accounts.php:169 #: ../../Zotlabs/Module/Admin/Channels.php:148 msgid "select all" @@ -2610,16 +10238,6 @@ msgstr "Fecha de solicitud" msgid "No registrations." msgstr "Sin registros." -#: ../../Zotlabs/Module/Admin/Accounts.php:173 -#: ../../Zotlabs/Module/Connections.php:320 ../../include/conversation.php:735 -msgid "Approve" -msgstr "Aprobar" - -#: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Authorize.php:33 -msgid "Deny" -msgstr "Rechazar" - #: ../../Zotlabs/Module/Admin/Accounts.php:176 #: ../../Zotlabs/Module/Connedit.php:636 msgid "Block" @@ -2666,205 +10284,10 @@ msgid "" "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?" -#: ../../Zotlabs/Module/Admin/Logs.php:28 -msgid "Log settings updated." -msgstr "Actualizado el informe de configuraciones." - -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48 -#: ../../Zotlabs/Widget/Admin.php:58 -msgid "Logs" -msgstr "Informes" - -#: ../../Zotlabs/Module/Admin/Logs.php:85 -msgid "Clear" -msgstr "Vaciar" - -#: ../../Zotlabs/Module/Admin/Logs.php:91 -msgid "Debugging" -msgstr "Depuración" - -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "Log file" -msgstr "Fichero de informe" - -#: ../../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." - -#: ../../Zotlabs/Module/Admin/Logs.php:93 -msgid "Log level" -msgstr "Nivel de depuración" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Module/Admin/Channels.php:65 -msgid "Channel not found" -msgstr "Canal no encontrado" - -#: ../../Zotlabs/Module/Admin/Channels.php:75 -#, php-format -msgid "Channel '%s' deleted" -msgstr "Canal '%s' eliminado" - -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' censored" -msgstr "Canal '%s' censurado" - -#: ../../Zotlabs/Module/Admin/Channels.php:87 -#, php-format -msgid "Channel '%s' uncensored" -msgstr "Canal '%s' no censurado" - -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code allowed" -msgstr "Código permitido al canal '%s'" - -#: ../../Zotlabs/Module/Admin/Channels.php:98 -#, php-format -msgid "Channel '%s' code disallowed" -msgstr "Código no permitido al canal '%s'" - -#: ../../Zotlabs/Module/Admin/Channels.php:146 -#: ../../Zotlabs/Module/Admin.php:114 ../../Zotlabs/Widget/Admin.php:24 -msgid "Channels" -msgstr "Canales" - -#: ../../Zotlabs/Module/Admin/Channels.php:150 -msgid "Censor" -msgstr "Censurar" - -#: ../../Zotlabs/Module/Admin/Channels.php:151 -msgid "Uncensor" -msgstr "No censurar" - -#: ../../Zotlabs/Module/Admin/Channels.php:152 -msgid "Allow Code" -msgstr "Permitir código" - -#: ../../Zotlabs/Module/Admin/Channels.php:153 -msgid "Disallow Code" -msgstr "No permitir código" - -#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:423 -msgid "Channel" -msgstr "Canal" - -#: ../../Zotlabs/Module/Admin/Channels.php:158 -msgid "UID" -msgstr "UID" - -#: ../../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?" - -#: ../../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?" - -#: ../../Zotlabs/Module/Admin/Themes.php:26 -msgid "Theme settings updated." -msgstr "Ajustes del tema actualizados." - -#: ../../Zotlabs/Module/Admin/Themes.php:61 -msgid "No themes found." -msgstr "No se han encontrado temas." - -#: ../../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." - -#: ../../Zotlabs/Module/Admin/Themes.php:95 -#: ../../Zotlabs/Module/Admin/Addons.php:310 -msgid "Disable" -msgstr "Desactivar" - -#: ../../Zotlabs/Module/Admin/Themes.php:97 -#: ../../Zotlabs/Module/Admin/Addons.php:313 -msgid "Enable" -msgstr "Activar" - -#: ../../Zotlabs/Module/Admin/Themes.php:116 -msgid "Screenshot" -msgstr "Instantánea de pantalla" - -#: ../../Zotlabs/Module/Admin/Themes.php:123 -#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28 -msgid "Themes" -msgstr "Temas" - -#: ../../Zotlabs/Module/Admin/Themes.php:124 -#: ../../Zotlabs/Module/Admin/Addons.php:343 -msgid "Toggle" -msgstr "Cambiar" - -#: ../../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" - -#: ../../Zotlabs/Module/Admin/Themes.php:134 -#: ../../Zotlabs/Module/Admin/Addons.php:351 -msgid "Author: " -msgstr "Autor:" - -#: ../../Zotlabs/Module/Admin/Themes.php:135 -#: ../../Zotlabs/Module/Admin/Addons.php:352 -msgid "Maintainer: " -msgstr "Mantenedor:" - -#: ../../Zotlabs/Module/Admin/Themes.php:162 -msgid "[Experimental]" -msgstr "[Experimental]" - -#: ../../Zotlabs/Module/Admin/Themes.php:163 -msgid "[Unsupported]" -msgstr "[No soportado]" - #: ../../Zotlabs/Module/Admin/Site.php:161 msgid "Site settings updated." msgstr "Ajustes del sitio actualizados." -#: ../../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" - #: ../../Zotlabs/Module/Admin/Site.php:198 #: ../../Zotlabs/Module/Settings/Display.php:119 #, php-format @@ -2912,15 +10335,6 @@ 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." -#: ../../Zotlabs/Module/Admin/Site.php:288 ../../Zotlabs/Widget/Admin.php:22 -msgid "Site" -msgstr "Sitio" - -#: ../../Zotlabs/Module/Admin/Site.php:290 -#: ../../Zotlabs/Module/Register.php:277 -msgid "Registration" -msgstr "Registro" - #: ../../Zotlabs/Module/Admin/Site.php:291 msgid "File upload" msgstr "Subir fichero" @@ -2929,16 +10343,6 @@ msgstr "Subir fichero" msgid "Policies" msgstr "Políticas" -#: ../../Zotlabs/Module/Admin/Site.php:293 -#: ../../include/contact_widgets.php:16 -msgid "Advanced" -msgstr "Avanzado" - -#: ../../Zotlabs/Module/Admin/Site.php:297 -#: ../../addon/statusnet/statusnet.php:593 -msgid "Site name" -msgstr "Nombre del sitio" - #: ../../Zotlabs/Module/Admin/Site.php:299 msgid "Banner/Logo" msgstr "Banner/Logo" @@ -3307,97 +10711,146 @@ msgstr "Opcional: ubicación del sitio" msgid "Region or country" msgstr "Región o país" -#: ../../Zotlabs/Module/Admin/Addons.php:289 +#: ../../Zotlabs/Module/Admin/Logs.php:28 +msgid "Log settings updated." +msgstr "Actualizado el informe de configuraciones." + +#: ../../Zotlabs/Module/Admin/Logs.php:85 +msgid "Clear" +msgstr "Vaciar" + +#: ../../Zotlabs/Module/Admin/Logs.php:91 +msgid "Debugging" +msgstr "Depuración" + +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "Log file" +msgstr "Fichero de informe" + +#: ../../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." + +#: ../../Zotlabs/Module/Admin/Logs.php:93 +msgid "Log level" +msgstr "Nivel de depuración" + +#: ../../Zotlabs/Module/Admin/Channels.php:31 #, php-format -msgid "Plugin %s disabled." -msgstr "Extensión %s desactivada." +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" -#: ../../Zotlabs/Module/Admin/Addons.php:294 +#: ../../Zotlabs/Module/Admin/Channels.php:40 #, php-format -msgid "Plugin %s enabled." -msgstr "Extensión %s activada." +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" -#: ../../Zotlabs/Module/Admin/Addons.php:342 -#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Widget/Admin.php:27 -msgid "Addons" -msgstr "Addons" +#: ../../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" -#: ../../Zotlabs/Module/Admin/Addons.php:353 -msgid "Minimum project version: " -msgstr "Versión mínima del proyecto:" +#: ../../Zotlabs/Module/Admin/Channels.php:65 +msgid "Channel not found" +msgstr "Canal no encontrado" -#: ../../Zotlabs/Module/Admin/Addons.php:354 -msgid "Maximum project version: " -msgstr "Versión máxima del proyecto:" +#: ../../Zotlabs/Module/Admin/Channels.php:75 +#, php-format +msgid "Channel '%s' deleted" +msgstr "Canal '%s' eliminado" -#: ../../Zotlabs/Module/Admin/Addons.php:355 -msgid "Minimum PHP version: " -msgstr "Versión mínima de PHP:" +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' censored" +msgstr "Canal '%s' censurado" -#: ../../Zotlabs/Module/Admin/Addons.php:356 -msgid "Compatible Server Roles: " -msgstr "Configuraciones compatibles con este servidor:" +#: ../../Zotlabs/Module/Admin/Channels.php:87 +#, php-format +msgid "Channel '%s' uncensored" +msgstr "Canal '%s' no censurado" -#: ../../Zotlabs/Module/Admin/Addons.php:357 -msgid "Requires: " -msgstr "Se requiere:" +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code allowed" +msgstr "Código permitido al canal '%s'" -#: ../../Zotlabs/Module/Admin/Addons.php:358 -#: ../../Zotlabs/Module/Admin/Addons.php:445 -msgid "Disabled - version incompatibility" -msgstr "Deshabilitado - versiones incompatibles" +#: ../../Zotlabs/Module/Admin/Channels.php:98 +#, php-format +msgid "Channel '%s' code disallowed" +msgstr "Código no permitido al canal '%s'" -#: ../../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." +#: ../../Zotlabs/Module/Admin/Channels.php:150 +msgid "Censor" +msgstr "Censurar" -#: ../../Zotlabs/Module/Admin/Addons.php:415 -msgid "Addon repo git URL" -msgstr "URL del repositorio git del addon" +#: ../../Zotlabs/Module/Admin/Channels.php:151 +msgid "Uncensor" +msgstr "No censurar" -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "Custom repo name" -msgstr "Nombre personalizado del repositorio" +#: ../../Zotlabs/Module/Admin/Channels.php:152 +msgid "Allow Code" +msgstr "Permitir código" -#: ../../Zotlabs/Module/Admin/Addons.php:416 -msgid "(optional)" -msgstr "(opcional)" +#: ../../Zotlabs/Module/Admin/Channels.php:153 +msgid "Disallow Code" +msgstr "No permitir código" -#: ../../Zotlabs/Module/Admin/Addons.php:417 -msgid "Download Addon Repo" -msgstr "Descargar el repositorio" +#: ../../Zotlabs/Module/Admin/Channels.php:158 +msgid "UID" +msgstr "UID" -#: ../../Zotlabs/Module/Admin/Addons.php:424 -msgid "Install new repo" -msgstr "Instalar un nuevo repositorio" +#: ../../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?" -#: ../../Zotlabs/Module/Admin/Addons.php:425 ../../Zotlabs/Lib/Apps.php:536 -msgid "Install" -msgstr "Instalar" +#: ../../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?" -#: ../../Zotlabs/Module/Admin/Addons.php:448 -msgid "Manage Repos" -msgstr "Gestionar los repositorios" +#: ../../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." -#: ../../Zotlabs/Module/Admin/Addons.php:449 -msgid "Installed Addon Repositories" -msgstr "Repositorioe de addons instalados" +#: ../../Zotlabs/Module/Admin/Account_edit.php:46 +msgid "Account settings updated." +msgstr "Se han actualizado los ajustes de la cuenta." -#: ../../Zotlabs/Module/Admin/Addons.php:450 -msgid "Install a New Addon Repository" -msgstr "Instalar un nuevo repositorio de addons" +#: ../../Zotlabs/Module/Admin/Account_edit.php:61 +msgid "Account not found." +msgstr "No se ha encontrado la cuenta." -#: ../../Zotlabs/Module/Admin/Addons.php:457 -msgid "Switch branch" -msgstr "Cambiar la rama" +#: ../../Zotlabs/Module/Admin/Account_edit.php:68 +msgid "Account Edit" +msgstr "Editar la cuenta" -#: ../../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" +#: ../../Zotlabs/Module/Admin/Account_edit.php:69 +msgid "New Password" +msgstr "Nueva contraseña" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:70 +msgid "New Password again" +msgstr "Nueva contraseña otra vez" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:71 +msgid "Account language (for emails)" +msgstr "Idioma de la cuenta (para los correos electrónicos)" + +#: ../../Zotlabs/Module/Admin/Account_edit.php:72 +msgid "Service class" +msgstr "Clase de servicio" #: ../../Zotlabs/Module/Admin/Profs.php:89 msgid "New Profile Field" @@ -3438,15 +10891,6 @@ msgstr "Texto de ayuda" msgid "Additional info (optional)" msgstr "Información adicional (opcional)" -#: ../../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" - #: ../../Zotlabs/Module/Admin/Profs.php:103 msgid "Field definition not found" msgstr "Definición del campo no encontrada" @@ -3455,10 +10899,6 @@ msgstr "Definición del campo no encontrada" msgid "Edit Profile Field" msgstr "Modificar el campo del perfil" -#: ../../Zotlabs/Module/Admin/Profs.php:168 ../../Zotlabs/Widget/Admin.php:30 -msgid "Profile Fields" -msgstr "Campos del perfil" - #: ../../Zotlabs/Module/Admin/Profs.php:169 msgid "Basic Profile Fields" msgstr "Campos básicos del perfil" @@ -3483,178 +10923,433 @@ msgstr "Campos personalizados" msgid "Create Custom Field" msgstr "Crear un campo personalizado" -#: ../../Zotlabs/Module/Admin/Account_edit.php:29 +#: ../../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" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:32 #, php-format -msgid "Password changed for account %d." -msgstr "Ha cambiado la contraseña para la cuenta %d." +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." -#: ../../Zotlabs/Module/Admin/Account_edit.php:46 -msgid "Account settings updated." -msgstr "Se han actualizado los ajustes de la cuenta." +#: ../../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." -#: ../../Zotlabs/Module/Admin/Account_edit.php:61 -msgid "Account not found." -msgstr "No se ha encontrado la cuenta." +#: ../../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." -#: ../../Zotlabs/Module/Admin/Account_edit.php:68 -msgid "Account Edit" -msgstr "Editar la cuenta" +#: ../../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." -#: ../../Zotlabs/Module/Admin/Account_edit.php:69 -msgid "New Password" -msgstr "Nueva contraseñ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." -#: ../../Zotlabs/Module/Admin/Account_edit.php:70 -msgid "New Password again" -msgstr "Nueva contraseña otra vez" +#: ../../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." -#: ../../Zotlabs/Module/Admin/Account_edit.php:71 -msgid "Account language (for emails)" -msgstr "Idioma de la cuenta (para los correos electrónicos)" - -#: ../../Zotlabs/Module/Admin/Account_edit.php:72 -msgid "Service class" -msgstr "Clase de servicio" - -#: ../../Zotlabs/Module/Admin/Security.php:83 +#: ../../Zotlabs/Module/Admin/Dbsync.php:78 +#, php-format 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." +"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." -#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../Zotlabs/Module/Admin/Dbsync.php:99 +msgid "Failed Updates" +msgstr "Han fallado las actualizaciones" + +#: ../../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)" + +#: ../../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." + +#: ../../Zotlabs/Module/Admin/Dbsync.php:103 +msgid "Attempt to execute this update step automatically" +msgstr "Intentar ejecutar este paso de actualización automáticamente" + +#: ../../Zotlabs/Module/Admin/Dbsync.php:108 +msgid "No failed updates." +msgstr "No ha fallado ninguna actualización." + +#: ../../Zotlabs/Module/Admin/Addons.php:290 +#, php-format +msgid "Plugin %s disabled." +msgstr "Extensión %s desactivada." + +#: ../../Zotlabs/Module/Admin/Addons.php:295 +#, php-format +msgid "Plugin %s enabled." +msgstr "Extensión %s activada." + +#: ../../Zotlabs/Module/Admin/Addons.php:354 +msgid "Minimum project version: " +msgstr "Versión mínima del proyecto:" + +#: ../../Zotlabs/Module/Admin/Addons.php:355 +msgid "Maximum project version: " +msgstr "Versión máxima del proyecto:" + +#: ../../Zotlabs/Module/Admin/Addons.php:356 +msgid "Minimum PHP version: " +msgstr "Versión mínima de PHP:" + +#: ../../Zotlabs/Module/Admin/Addons.php:357 +msgid "Compatible Server Roles: " +msgstr "Configuraciones compatibles con este servidor:" + +#: ../../Zotlabs/Module/Admin/Addons.php:358 +msgid "Requires: " +msgstr "Se requiere:" + +#: ../../Zotlabs/Module/Admin/Addons.php:359 +#: ../../Zotlabs/Module/Admin/Addons.php:446 +msgid "Disabled - version incompatibility" +msgstr "Deshabilitado - versiones incompatibles" + +#: ../../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." + +#: ../../Zotlabs/Module/Admin/Addons.php:416 +msgid "Addon repo git URL" +msgstr "URL del repositorio git del addon" + +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "Custom repo name" +msgstr "Nombre personalizado del repositorio" + +#: ../../Zotlabs/Module/Admin/Addons.php:417 +msgid "(optional)" +msgstr "(opcional)" + +#: ../../Zotlabs/Module/Admin/Addons.php:418 +msgid "Download Addon Repo" +msgstr "Descargar el repositorio" + +#: ../../Zotlabs/Module/Admin/Addons.php:425 +msgid "Install new repo" +msgstr "Instalar un nuevo repositorio" + +#: ../../Zotlabs/Module/Admin/Addons.php:426 ../../Zotlabs/Lib/Apps.php:536 +msgid "Install" +msgstr "Instalar" + +#: ../../Zotlabs/Module/Admin/Addons.php:449 +msgid "Manage Repos" +msgstr "Gestionar los repositorios" + +#: ../../Zotlabs/Module/Admin/Addons.php:450 +msgid "Installed Addon Repositories" +msgstr "Repositorioe de addons instalados" + +#: ../../Zotlabs/Module/Admin/Addons.php:451 +msgid "Install a New Addon Repository" +msgstr "Instalar un nuevo repositorio de addons" + +#: ../../Zotlabs/Module/Admin/Addons.php:458 +msgid "Switch branch" +msgstr "Cambiar la rama" + +#: ../../Zotlabs/Module/Apps.php:50 +msgid "Installed Apps" +msgstr "Apps instaladas" + +#: ../../Zotlabs/Module/Apps.php:53 +msgid "Manage Apps" +msgstr "Administrar apps" + +#: ../../Zotlabs/Module/Apps.php:54 +msgid "Create Custom App" +msgstr "Crear una app personalizada" + +#: ../../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í" + +#: ../../Zotlabs/Module/Removeme.php:35 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: " +"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." -#: ../../Zotlabs/Module/Admin/Security.php:87 +#: ../../Zotlabs/Module/Removeme.php:60 +msgid "Remove This Channel" +msgstr "Eliminar este canal" + +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +#: ../../Zotlabs/Module/Changeaddr.php:78 +msgid "WARNING: " +msgstr "ATENCIÓ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. " + +#: ../../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!" + +#: ../../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:" + +#: ../../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 "" -"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 />" +"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" -#: ../../Zotlabs/Module/Admin/Security.php:88 +#: ../../Zotlabs/Module/Removeme.php:64 +#: ../../Zotlabs/Module/Settings/Channel.php:594 +msgid "Remove Channel" +msgstr "Eliminar el canal" + +#: ../../Zotlabs/Module/Events.php:468 +msgid "Edit event title" +msgstr "Editar el título del evento" + +#: ../../Zotlabs/Module/Events.php:470 +msgid "Categories (comma-separated list)" +msgstr "Temas (lista separada por comas)" + +#: ../../Zotlabs/Module/Events.php:471 +msgid "Edit Category" +msgstr "Modificar el tema" + +#: ../../Zotlabs/Module/Events.php:471 +msgid "Category" +msgstr "Tema" + +#: ../../Zotlabs/Module/Events.php:474 +msgid "Edit start date and time" +msgstr "Modificar la fecha y hora de comienzo" + +#: ../../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" + +#: ../../Zotlabs/Module/Events.php:477 +msgid "Edit finish date and time" +msgstr "Modificar la fecha y hora de terminación" + +#: ../../Zotlabs/Module/Events.php:477 +msgid "Finish date and time" +msgstr "Fecha y hora de terminación" + +#: ../../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" + +#: ../../Zotlabs/Module/Events.php:479 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." +"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." -#: ../../Zotlabs/Module/Admin/Security.php:93 -#: ../../Zotlabs/Widget/Admin.php:25 -msgid "Security" -msgstr "Seguridad" +#: ../../Zotlabs/Module/Events.php:481 +msgid "Edit Description" +msgstr "Editar la descripción" -#: ../../Zotlabs/Module/Admin/Security.php:95 -msgid "Block public" -msgstr "Bloquear páginas públicas" +#: ../../Zotlabs/Module/Events.php:483 +msgid "Edit Location" +msgstr "Modificar la dirección" -#: ../../Zotlabs/Module/Admin/Security.php:95 +#: ../../Zotlabs/Module/Events.php:502 +msgid "Advanced Options" +msgstr "Opciones avanzadas" + +#: ../../Zotlabs/Module/Events.php:613 +msgid "l, F j" +msgstr "l j F" + +#: ../../Zotlabs/Module/Events.php:696 +msgid "Edit Event" +msgstr "Editar el evento" + +#: ../../Zotlabs/Module/Events.php:696 +msgid "Create Event" +msgstr "Crear un evento" + +#: ../../Zotlabs/Module/Events.php:739 +msgid "Event removed" +msgstr "Evento borrado" + +#: ../../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." + +#: ../../Zotlabs/Module/Manage.php:145 +msgid "Create a new channel" +msgstr "Crear un nuevo canal" + +#: ../../Zotlabs/Module/Manage.php:171 +msgid "Current Channel" +msgstr "Canal actual" + +#: ../../Zotlabs/Module/Manage.php:173 +msgid "Switch to one of your channels by selecting it." +msgstr "Cambiar a uno de sus canales seleccionándolo." + +#: ../../Zotlabs/Module/Manage.php:174 +msgid "Default Channel" +msgstr "Canal principal" + +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Make Default" +msgstr "Convertir en predeterminado" + +#: ../../Zotlabs/Module/Manage.php:178 +#, php-format +msgid "%d new messages" +msgstr "%d mensajes nuevos" + +#: ../../Zotlabs/Module/Manage.php:179 +#, php-format +msgid "%d new introductions" +msgstr "%d nuevas solicitudes de conexión" + +#: ../../Zotlabs/Module/Manage.php:181 +msgid "Delegated Channel" +msgstr "Canal delegado" + +#: ../../Zotlabs/Module/Chanview.php:139 +msgid "toggle full screen mode" +msgstr "cambiar al modo de pantalla completa" + +#: ../../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" + +#: ../../Zotlabs/Module/Chatsvc.php:131 +msgid "Away" +msgstr "Ausente" + +#: ../../Zotlabs/Module/Chatsvc.php:136 +msgid "Online" +msgstr "Conectado/a" + +#: ../../Zotlabs/Module/Permcats.php:28 +msgid "Permission category name is required." +msgstr "El nombre de la categoría de permiso es obligatorio." + +#: ../../Zotlabs/Module/Permcats.php:47 +msgid "Permission category saved." +msgstr "Se ha guardado la categoría del permiso." + +#: ../../Zotlabs/Module/Permcats.php:62 +msgid "Permission Categories App" +msgstr "App Categorías de permisos" + +#: ../../Zotlabs/Module/Permcats.php:63 +msgid "Create custom connection permission limits" +msgstr "Crear límites de permisos de conexión personalizados" + +#: ../../Zotlabs/Module/Permcats.php:79 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." +"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." -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "Provide a cloud root directory" -msgstr "Proporcionar un directorio raíz de la nube" +#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:373 +msgid "Permission Categories" +msgstr "Tipos de permisos" -#: ../../Zotlabs/Module/Admin/Security.php:96 +#: ../../Zotlabs/Module/Permcats.php:120 +msgid "Permission category name" +msgstr "Nombre de categoría de permiso" + +#: ../../Zotlabs/Module/Email_resend.php:12 +#: ../../Zotlabs/Module/Email_validation.php:24 +msgid "Token verification failed." +msgstr "Ha fallado el token de verificación." + +#: ../../Zotlabs/Module/Email_resend.php:30 +msgid "Email verification resent" +msgstr "Reenvío del email de verificació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/Module/Ratings.php:70 +msgid "No ratings" +msgstr "Ninguna valoración" + +#: ../../Zotlabs/Module/Ratings.php:98 +msgid "Rating: " +msgstr "Valoración:" + +#: ../../Zotlabs/Module/Ratings.php:99 +msgid "Website: " +msgstr "Sitio web:" + +#: ../../Zotlabs/Module/Ratings.php:101 +msgid "Description: " +msgstr "Descripción:" + +#: ../../Zotlabs/Module/Cal.php:64 +msgid "Permissions denied." +msgstr "Permisos denegados." + +#: ../../Zotlabs/Module/Viewsrc.php:43 +msgid "item" +msgstr "elemento" + +#: ../../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" + +#: ../../Zotlabs/Module/Apporder.php:47 +msgid "Change Order of App Tray Apps" +msgstr "Cambiar el orden de las aplicaciones de la bandeja de aplicaciones" + +#: ../../Zotlabs/Module/Apporder.php:48 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" +"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." -#: ../../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" +#: ../../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." -#: ../../Zotlabs/Module/Admin/Security.php:98 -msgid "Set \"Transport Security\" HTTP header" -msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP" +#: ../../Zotlabs/Module/Oexchange.php:27 +msgid "Unable to find your hub." +msgstr "No se puede encontrar su servidor." -#: ../../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" - -#: ../../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. " - -#: ../../Zotlabs/Module/Admin/Security.php:101 -msgid "Not allowed email domains" -msgstr "No se permiten dominios de correo electrónico" - -#: ../../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." - -#: ../../Zotlabs/Module/Admin/Security.php:102 -msgid "Allow communications only from these sites" -msgstr "Permitir la comunicación solo desde estos sitios" - -#: ../../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" - -#: ../../Zotlabs/Module/Admin/Security.php:103 -msgid "Block communications from these sites" -msgstr "Bloquear la comunicación desde estos sitios" - -#: ../../Zotlabs/Module/Admin/Security.php:104 -msgid "Allow communications only from these channels" -msgstr "Permitir la comunicación solo desde estos canales" - -#: ../../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" - -#: ../../Zotlabs/Module/Admin/Security.php:105 -msgid "Block communications from these channels" -msgstr "Bloquear la comunicación desde estos canales" - -#: ../../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)." - -#: ../../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 " - -#: ../../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." - -#: ../../Zotlabs/Module/Admin/Security.php:108 -msgid "Block embedded HTML from these domains" -msgstr "Bloquear contenido con HTML incorporado desde estos dominios" - -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." -msgstr "La información privada remota no está disponible." - -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" -msgstr "Visible para:" - -#: ../../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" +#: ../../Zotlabs/Module/Oexchange.php:41 +msgid "Post successful." +msgstr "Enviado con éxito." #: ../../Zotlabs/Module/Moderate.php:65 msgid "Comment approved" @@ -3664,26 +11359,1664 @@ msgstr "El comentario ha sido aprobado" msgid "Comment deleted" msgstr "Se ha eliminado el comentario" -#: ../../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" +#: ../../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." -#: ../../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." +#: ../../Zotlabs/Module/Removeaccount.php:57 +msgid "Remove This Account" +msgstr "Eliminar esta cuenta" + +#: ../../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." + +#: ../../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" + +#: ../../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" + +#: ../../Zotlabs/Module/Removeaccount.php:61 +#: ../../Zotlabs/Module/Settings/Account.php:105 +msgid "Remove Account" +msgstr "Eliminar cuenta" + +#: ../../Zotlabs/Module/Lang.php:17 +msgid "Language App" +msgstr "App idioma" + +#: ../../Zotlabs/Module/Lang.php:18 +msgid "Change UI language" +msgstr "Cambiar el idioma de la interfaz de usuario" + +#: ../../Zotlabs/Module/Uexport.php:61 +msgid "Channel Export App" +msgstr "App Exportación de canales" + +#: ../../Zotlabs/Module/Uexport.php:62 +msgid "Export your channel" +msgstr "Exportar su canal" + +#: ../../Zotlabs/Module/Uexport.php:72 ../../Zotlabs/Module/Uexport.php:73 +msgid "Export Channel" +msgstr "Exportar el canal" + +#: ../../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." + +#: ../../Zotlabs/Module/Uexport.php:75 +msgid "Export Content" +msgstr "Exportar contenidos" + +#: ../../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." + +#: ../../Zotlabs/Module/Uexport.php:78 +msgid "Export your posts from a given year." +msgstr "Exporta sus publicaciones de un año dado." + +#: ../../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." + +#: ../../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>" + +#: ../../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>" + +#: ../../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)." + +#: ../../Zotlabs/Module/Display.php:396 +msgid "Article" +msgstr "Artículo" + +#: ../../Zotlabs/Module/Display.php:448 +msgid "Item has been removed." +msgstr "Se ha eliminado el elemento." + +#: ../../Zotlabs/Module/Common.php:14 +msgid "No channel." +msgstr "Ningún canal." + +#: ../../Zotlabs/Module/Common.php:45 +msgid "No connections in common." +msgstr "Ninguna conexión en común." + +#: ../../Zotlabs/Module/Common.php:65 +msgid "View Common Connections" +msgstr "Ver las conexiones comunes" + +#: ../../Zotlabs/Module/Impel.php:185 +#, php-format +msgid "%s element installed" +msgstr "%s elemento instalado" + +#: ../../Zotlabs/Module/Impel.php:188 +#, php-format +msgid "%s element installation failed" +msgstr "Elemento con instalación fallida: %s" + +#: ../../Zotlabs/Module/New_channel.php:159 +msgid "Your real name is recommended." +msgstr "Se recomienda su nombre real." + +#: ../../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\"" + +#: ../../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)." + +#: ../../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 _" + +#: ../../Zotlabs/Module/New_channel.php:175 +msgid "Channel name" +msgstr "Nombre del canal" + +#: ../../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." + +#: ../../Zotlabs/Module/New_channel.php:181 +msgid "Create a Channel" +msgstr "Crear un canal" + +#: ../../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." + +#: ../../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." + +#: ../../Zotlabs/Module/New_channel.php:188 +msgid "Validate" +msgstr "Validar" + +#: ../../Zotlabs/Module/Magic.php:78 +msgid "Hub not found." +msgstr "Servidor no encontrado" + +#: ../../Zotlabs/Module/Ping.php:337 +msgid "sent you a private message" +msgstr "le ha enviado un mensaje privado" + +#: ../../Zotlabs/Module/Ping.php:393 +msgid "added your channel" +msgstr "añadió este canal a sus conexiones" + +#: ../../Zotlabs/Module/Ping.php:418 +msgid "requires approval" +msgstr "requiere aprobación" + +#: ../../Zotlabs/Module/Ping.php:428 +msgid "g A l F d" +msgstr "g A l d F" + +#: ../../Zotlabs/Module/Ping.php:446 +msgid "[today]" +msgstr "[hoy]" + +#: ../../Zotlabs/Module/Ping.php:456 +msgid "posted an event" +msgstr "publicó un evento" + +#: ../../Zotlabs/Module/Ping.php:490 +msgid "shared a file with you" +msgstr "compartió un archivo con usted" + +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Private forum" +msgstr "Foro privado" + +#: ../../Zotlabs/Module/Ping.php:672 +msgid "Public forum" +msgstr "Foro público" + +#: ../../Zotlabs/Module/Service_limits.php:23 +msgid "No service class restrictions found." +msgstr "No se han encontrado restricciones sobre esta clase de servicio." + +#: ../../Zotlabs/Module/Mood.php:134 +msgid "Mood App" +msgstr "App Estados de ánimo" + +#: ../../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" + +#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 +msgid "Mood" +msgstr "Estado de ánimo" + +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "About this site" +msgstr "Acerca de este sitio" + +#: ../../Zotlabs/Module/Siteinfo.php:22 +msgid "Site Name" +msgstr "Nombre del sitio" + +#: ../../Zotlabs/Module/Siteinfo.php:26 +msgid "Administrator" +msgstr "Administrador" + +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "Software and Project information" +msgstr "Información sobre el software y el proyecto" + +#: ../../Zotlabs/Module/Siteinfo.php:30 +msgid "This site is powered by $Projectname" +msgstr "Este sitio funciona con $Projectname" + +#: ../../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" + +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Additional federated transport protocols:" +msgstr "Protocolos adicionales de transporte federado: " + +#: ../../Zotlabs/Module/Siteinfo.php:36 +#, php-format +msgid "Version %s" +msgstr "Versión %s" + +#: ../../Zotlabs/Module/Siteinfo.php:37 +msgid "Project homepage" +msgstr "Página principal del proyecto" + +#: ../../Zotlabs/Module/Siteinfo.php:38 +msgid "Developer homepage" +msgstr "Página principal del desarrollador" + +#: ../../Zotlabs/Module/Appman.php:39 ../../Zotlabs/Module/Appman.php:56 +msgid "App installed." +msgstr "Aplicación instalada." + +#: ../../Zotlabs/Module/Appman.php:49 +msgid "Malformed app." +msgstr "Aplicación con errores" + +#: ../../Zotlabs/Module/Appman.php:132 +msgid "Embed code" +msgstr "Código incorporado" + +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Edit App" +msgstr "Modificar la aplicación" + +#: ../../Zotlabs/Module/Appman.php:138 +msgid "Create App" +msgstr "Crear una aplicación" + +#: ../../Zotlabs/Module/Appman.php:143 +msgid "Name of app" +msgstr "Nombre de la aplicación" + +#: ../../Zotlabs/Module/Appman.php:144 +msgid "Location (URL) of app" +msgstr "Dirección (URL) de la aplicación" + +#: ../../Zotlabs/Module/Appman.php:146 +msgid "Photo icon URL" +msgstr "Dirección del icono" + +#: ../../Zotlabs/Module/Appman.php:146 +msgid "80 x 80 pixels - optional" +msgstr "80 x 80 pixels - opcional" + +#: ../../Zotlabs/Module/Appman.php:147 +msgid "Categories (optional, comma separated list)" +msgstr "Temas (opcional, lista separada por comas)" + +#: ../../Zotlabs/Module/Appman.php:148 +msgid "Version ID" +msgstr "Versión" + +#: ../../Zotlabs/Module/Appman.php:149 +msgid "Price of app" +msgstr "Precio de la aplicación" + +#: ../../Zotlabs/Module/Appman.php:150 +msgid "Location (URL) to purchase app" +msgstr "Dirección (URL) donde adquirir la aplicación" + +#: ../../Zotlabs/Module/Admin.php:97 +msgid "Blocked accounts" +msgstr "Cuentas bloqueadas" + +#: ../../Zotlabs/Module/Admin.php:98 +msgid "Expired accounts" +msgstr "Cuentas caducadas" + +#: ../../Zotlabs/Module/Admin.php:99 +msgid "Expiring accounts" +msgstr "Cuentas que caducan" + +#: ../../Zotlabs/Module/Admin.php:120 +msgid "Message queues" +msgstr "Mensajes en cola" + +#: ../../Zotlabs/Module/Admin.php:134 +msgid "Your software should be updated" +msgstr "Debe actualizar su software" + +#: ../../Zotlabs/Module/Admin.php:139 +msgid "Summary" +msgstr "Sumario" + +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Registered accounts" +msgstr "Cuentas registradas" + +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Pending registrations" +msgstr "Registros pendientes" + +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Registered channels" +msgstr "Canales registrados" + +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Active addons" +msgstr "Addons acivos" + +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Version" +msgstr "Versión" + +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (master)" +msgstr "Versión del repositorio (master)" + +#: ../../Zotlabs/Module/Admin.php:148 +msgid "Repository version (dev)" +msgstr "Versión del repositorio (dev)" + +#: ../../Zotlabs/Module/Cards.php:51 +msgid "Cards App" +msgstr "App de Fichas" + +#: ../../Zotlabs/Module/Cards.php:52 +msgid "Create personal planning cards" +msgstr "Crear fichas de planificación personal" + +#: ../../Zotlabs/Module/Cards.php:112 +msgid "Add Card" +msgstr "Añadir una ficha" + +#: ../../Zotlabs/Module/Directory.php:116 +msgid "No default suggestions were found." +msgstr "No se encontraron sugerencias por defecto." + +#: ../../Zotlabs/Module/Directory.php:270 +#, php-format +msgid "%d rating" +msgid_plural "%d ratings" +msgstr[0] "%d valoración" +msgstr[1] "%d valoraciones" + +#: ../../Zotlabs/Module/Directory.php:281 +msgid "Gender: " +msgstr "Género:" + +#: ../../Zotlabs/Module/Directory.php:283 +msgid "Status: " +msgstr "Estado:" + +#: ../../Zotlabs/Module/Directory.php:285 +msgid "Homepage: " +msgstr "Página personal:" + +#: ../../Zotlabs/Module/Directory.php:345 +msgid "Description:" +msgstr "Descripción:" + +#: ../../Zotlabs/Module/Directory.php:354 +msgid "Public Forum:" +msgstr "Foro público:" + +#: ../../Zotlabs/Module/Directory.php:357 +msgid "Keywords: " +msgstr "Palabras clave:" + +#: ../../Zotlabs/Module/Directory.php:360 +msgid "Don't suggest" +msgstr "No sugerir:" + +#: ../../Zotlabs/Module/Directory.php:362 +msgid "Common connections (estimated):" +msgstr "Conexiones comunes (estimadas): " + +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Global Directory" +msgstr "Directorio global:" + +#: ../../Zotlabs/Module/Directory.php:411 +msgid "Local Directory" +msgstr "Directorio local:" + +#: ../../Zotlabs/Module/Directory.php:417 +msgid "Finding:" +msgstr "Encontrar:" + +#: ../../Zotlabs/Module/Directory.php:422 +msgid "next page" +msgstr "siguiente página" + +#: ../../Zotlabs/Module/Directory.php:422 +msgid "previous page" +msgstr "página anterior" + +#: ../../Zotlabs/Module/Directory.php:423 +msgid "Sort options" +msgstr "Ordenar opciones" + +#: ../../Zotlabs/Module/Directory.php:424 +msgid "Alphabetic" +msgstr "Alfabético" + +#: ../../Zotlabs/Module/Directory.php:425 +msgid "Reverse Alphabetic" +msgstr "Alfabético inverso" + +#: ../../Zotlabs/Module/Directory.php:426 +msgid "Newest to Oldest" +msgstr "De más nuevo a más antiguo" + +#: ../../Zotlabs/Module/Directory.php:427 +msgid "Oldest to Newest" +msgstr "De más antiguo a más nuevo" + +#: ../../Zotlabs/Module/Directory.php:444 +msgid "No entries (some entries may be hidden)." +msgstr "Sin entradas (algunas entradas pueden estar ocultas)." + +#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 +msgid "Authorize application connection" +msgstr "Autorizar una conexión de aplicació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: " + +#: ../../Zotlabs/Module/Api.php:85 +msgid "Please login to continue." +msgstr "Por favor inicie sesión para continuar." + +#: ../../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?" + +#: ../../Zotlabs/Module/Regmod.php:15 +msgid "Please login." +msgstr "Por favor, inicie sesión." + +#: ../../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" + +#: ../../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." + +#: ../../Zotlabs/Module/Email_validation.php:38 +msgid "Resend Email" +msgstr "Reenvío de correo electrónico" + +#: ../../Zotlabs/Module/Email_validation.php:41 +msgid "Validation token" +msgstr "Token de validación" + +#: ../../Zotlabs/Module/Attach.php:13 +msgid "Item not available." +msgstr "Elemento no disponible" + +#: ../../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. " + +#: ../../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." + +#: ../../Zotlabs/Module/Profile_photo.php:294 +#: ../../Zotlabs/Module/Cover_photo.php:263 +msgid "Image upload failed." +msgstr "La carga de la imagen ha fallado." + +#: ../../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." + +#: ../../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." + +#: ../../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." + +#: ../../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." + +#: ../../Zotlabs/Module/Profile_photo.php:495 +#: ../../Zotlabs/Module/Cover_photo.php:426 +msgid "Upload File:" +msgstr "Subir fichero:" + +#: ../../Zotlabs/Module/Profile_photo.php:496 +#: ../../Zotlabs/Module/Cover_photo.php:427 +msgid "Select a profile:" +msgstr "Seleccionar un perfil:" + +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Use Photo for Profile" +msgstr "Usar la fotografía para el perfil" + +#: ../../Zotlabs/Module/Profile_photo.php:497 +msgid "Change Profile Photo" +msgstr "Cambiar la foto del perfil" + +#: ../../Zotlabs/Module/Profile_photo.php:498 +msgid "Use" +msgstr "Usar" + +#: ../../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" + +#: ../../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..." + +#: ../../Zotlabs/Module/Profile_photo.php:514 +#: ../../Zotlabs/Module/Cover_photo.php:444 +msgid "Select existing photo" +msgstr "Seleccionar una foto" + +#: ../../Zotlabs/Module/Profile_photo.php:533 +#: ../../Zotlabs/Module/Cover_photo.php:461 +msgid "Crop Image" +msgstr "Recortar imagen" + +#: ../../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." + +#: ../../Zotlabs/Module/Profile_photo.php:536 +#: ../../Zotlabs/Module/Cover_photo.php:464 +msgid "Done Editing" +msgstr "Edición completada" + +#: ../../Zotlabs/Module/Editblock.php:138 +msgid "Edit Block" +msgstr "Modificar este bloque" + +#: ../../Zotlabs/Module/Filer.php:52 +msgid "Enter a folder name" +msgstr "Escriba un nombre de carpeta" + +#: ../../Zotlabs/Module/Filer.php:52 +msgid "or select an existing folder (doubleclick)" +msgstr "o seleccione una (con un doble click)" + +#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 +msgid "Save to Folder" +msgstr "Guardar en carpeta" + +#: ../../Zotlabs/Module/Editlayout.php:128 +#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189 +msgid "Layout Name" +msgstr "Nombre de la plantilla" + +#: ../../Zotlabs/Module/Editlayout.php:129 +#: ../../Zotlabs/Module/Layouts.php:132 +msgid "Layout Description (Optional)" +msgstr "Descripción de la plantilla (opcional)" + +#: ../../Zotlabs/Module/Editlayout.php:137 +msgid "Edit Layout" +msgstr "Modificar la plantilla" + +#: ../../Zotlabs/Module/Connections.php:58 +#: ../../Zotlabs/Module/Connections.php:115 +#: ../../Zotlabs/Module/Connections.php:273 +msgid "Active" +msgstr "Activo/a" + +#: ../../Zotlabs/Module/Connections.php:63 +#: ../../Zotlabs/Module/Connections.php:181 +#: ../../Zotlabs/Module/Connections.php:278 +msgid "Blocked" +msgstr "Bloqueadas" + +#: ../../Zotlabs/Module/Connections.php:68 +#: ../../Zotlabs/Module/Connections.php:188 +#: ../../Zotlabs/Module/Connections.php:277 +msgid "Ignored" +msgstr "Ignoradas" + +#: ../../Zotlabs/Module/Connections.php:73 +#: ../../Zotlabs/Module/Connections.php:202 +#: ../../Zotlabs/Module/Connections.php:276 +msgid "Hidden" +msgstr "Ocultas" + +#: ../../Zotlabs/Module/Connections.php:78 +#: ../../Zotlabs/Module/Connections.php:195 +msgid "Archived/Unreachable" +msgstr "Archivadas o inaccesibles" + +#: ../../Zotlabs/Module/Connections.php:83 +#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:180 +#: ../../Zotlabs/Module/Notifications.php:50 +msgid "New" +msgstr "Nuevas" + +#: ../../Zotlabs/Module/Connections.php:157 +msgid "Active Connections" +msgstr "Conexiones activas" + +#: ../../Zotlabs/Module/Connections.php:160 +msgid "Show active connections" +msgstr "Mostrar las conexiones activas" + +#: ../../Zotlabs/Module/Connections.php:167 +msgid "Show pending (new) connections" +msgstr "Mostrar conexiones (nuevas) pendientes" + +#: ../../Zotlabs/Module/Connections.php:184 +msgid "Only show blocked connections" +msgstr "Mostrar solo las conexiones bloqueadas" + +#: ../../Zotlabs/Module/Connections.php:191 +msgid "Only show ignored connections" +msgstr "Mostrar solo conexiones ignoradas" + +#: ../../Zotlabs/Module/Connections.php:198 +msgid "Only show archived/unreachable connections" +msgstr "Mostrar solo las conexiones archivadas o no localizables" + +#: ../../Zotlabs/Module/Connections.php:205 +msgid "Only show hidden connections" +msgstr "Mostrar solo las conexiones ocultas" + +#: ../../Zotlabs/Module/Connections.php:220 +msgid "Show all connections" +msgstr "Mostrar todas las conexiones" + +#: ../../Zotlabs/Module/Connections.php:274 +msgid "Pending approval" +msgstr "Pendiente de aprobación" + +#: ../../Zotlabs/Module/Connections.php:275 +msgid "Archived" +msgstr "Archivadas" + +#: ../../Zotlabs/Module/Connections.php:279 +msgid "Not connected at this location" +msgstr "No está conectado/a en esta ubicación" + +#: ../../Zotlabs/Module/Connections.php:296 +#, php-format +msgid "%1$s [%2$s]" +msgstr "%1$s [%2$s]" + +#: ../../Zotlabs/Module/Connections.php:297 +msgid "Edit connection" +msgstr "Editar conexión" + +#: ../../Zotlabs/Module/Connections.php:299 +msgid "Delete connection" +msgstr "Eliminar conexión" + +#: ../../Zotlabs/Module/Connections.php:308 +msgid "Channel address" +msgstr "Dirección del canal" + +#: ../../Zotlabs/Module/Connections.php:313 +msgid "Call" +msgstr "Llamar" + +#: ../../Zotlabs/Module/Connections.php:315 +msgid "Status" +msgstr "Estado" + +#: ../../Zotlabs/Module/Connections.php:317 +msgid "Connected" +msgstr "Conectado/a" + +#: ../../Zotlabs/Module/Connections.php:319 +msgid "Approve connection" +msgstr "Aprobar esta conexión" + +#: ../../Zotlabs/Module/Connections.php:321 +msgid "Ignore connection" +msgstr "Ignorar esta conexión" + +#: ../../Zotlabs/Module/Connections.php:322 +#: ../../Zotlabs/Module/Connedit.php:644 +msgid "Ignore" +msgstr "Ignorar" + +#: ../../Zotlabs/Module/Connections.php:323 +msgid "Recent activity" +msgstr "Actividad reciente" + +#: ../../Zotlabs/Module/Connections.php:328 +msgid "Connect at this location" +msgstr "Conectar en esta ubicación " + +#: ../../Zotlabs/Module/Connections.php:356 +msgid "Search your connections" +msgstr "Buscar sus conexiones" + +#: ../../Zotlabs/Module/Connections.php:357 +msgid "Connections search" +msgstr "Buscar conexiones" + +#: ../../Zotlabs/Module/Cover_photo.php:194 +#: ../../Zotlabs/Module/Cover_photo.php:252 +msgid "Cover Photos" +msgstr "Imágenes de portada del perfil" + +#: ../../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/Module/Cover_photo.php:428 +msgid "Change Cover Photo" +msgstr "Cambiar la foto de portada del perfil" + +#: ../../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." + +#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 +msgid "Album not found." +msgstr "Álbum no encontrado." + +#: ../../Zotlabs/Module/Photos.php:103 +msgid "Delete Album" +msgstr "Borrar álbum" + +#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 +msgid "Delete Photo" +msgstr "Borrar foto" + +#: ../../Zotlabs/Module/Photos.php:527 +msgid "No photos selected" +msgstr "No hay fotos seleccionadas" + +#: ../../Zotlabs/Module/Photos.php:576 +msgid "Access to this item is restricted." +msgstr "El acceso a este elemento está restringido." + +#: ../../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." + +#: ../../Zotlabs/Module/Photos.php:622 +#, php-format +msgid "%1$.2f MB photo storage used." +msgstr "%1$.2f MB de almacenamiento de fotos utilizado." + +#: ../../Zotlabs/Module/Photos.php:664 +msgid "Upload Photos" +msgstr "Subir fotos" + +#: ../../Zotlabs/Module/Photos.php:668 +msgid "Enter an album name" +msgstr "Introducir un nombre de álbum" + +#: ../../Zotlabs/Module/Photos.php:669 +msgid "or select an existing album (doubleclick)" +msgstr "o seleccionar un álbum (con un doble click)" + +#: ../../Zotlabs/Module/Photos.php:670 +msgid "Create a status post for this upload" +msgstr "Crear un mensaje de estado para esta subida" + +#: ../../Zotlabs/Module/Photos.php:672 +msgid "Description (optional)" +msgstr "Descripción (opcional)" + +#: ../../Zotlabs/Module/Photos.php:758 +msgid "Show Newest First" +msgstr "Mostrar lo más reciente primero" + +#: ../../Zotlabs/Module/Photos.php:760 +msgid "Show Oldest First" +msgstr "Mostrar lo más antiguo primero" + +#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 +msgid "Add Photos" +msgstr "Añadir fotos" + +#: ../../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." + +#: ../../Zotlabs/Module/Photos.php:867 +msgid "Photo not available" +msgstr "Foto no disponible" + +#: ../../Zotlabs/Module/Photos.php:925 +msgid "Use as profile photo" +msgstr "Usar como foto del perfil" + +#: ../../Zotlabs/Module/Photos.php:926 +msgid "Use as cover photo" +msgstr "Usar como imagen de portada del perfil" + +#: ../../Zotlabs/Module/Photos.php:933 +msgid "Private Photo" +msgstr "Foto privada" + +#: ../../Zotlabs/Module/Photos.php:948 +msgid "View Full Size" +msgstr "Ver tamaño completo" + +#: ../../Zotlabs/Module/Photos.php:1030 +msgid "Edit photo" +msgstr "Editar foto" + +#: ../../Zotlabs/Module/Photos.php:1032 +msgid "Rotate CW (right)" +msgstr "Girar CW (a la derecha)" + +#: ../../Zotlabs/Module/Photos.php:1033 +msgid "Rotate CCW (left)" +msgstr "Girar CCW (a la izquierda)" + +#: ../../Zotlabs/Module/Photos.php:1036 +msgid "Move photo to album" +msgstr "Mover la foto a un álbum" + +#: ../../Zotlabs/Module/Photos.php:1037 +msgid "Enter a new album name" +msgstr "Introducir un nuevo nombre de álbum" + +#: ../../Zotlabs/Module/Photos.php:1038 +msgid "or select an existing one (doubleclick)" +msgstr "o seleccionar un álbum (con un doble click)" + +#: ../../Zotlabs/Module/Photos.php:1043 +msgid "Add a Tag" +msgstr "Añadir una etiqueta" + +#: ../../Zotlabs/Module/Photos.php:1051 +msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" +msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" + +#: ../../Zotlabs/Module/Photos.php:1054 +msgid "Flag as adult in album view" +msgstr "Marcar como \"solo para adultos\" en el álbum" + +#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 +msgid "I like this (toggle)" +msgstr "Me gusta (cambiar)" + +#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 +msgid "I don't like this (toggle)" +msgstr "No me gusta esto (cambiar)" + +#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 +#: ../../Zotlabs/Lib/ThreadItem.php:793 +msgid "This is you" +msgstr "Este es usted" + +#: ../../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" + +#: ../../Zotlabs/Module/Photos.php:1246 +msgid "Photo Tools" +msgstr "Gestión de las fotos" + +#: ../../Zotlabs/Module/Photos.php:1255 +msgid "In This Photo:" +msgstr "En esta foto:" + +#: ../../Zotlabs/Module/Photos.php:1260 +msgid "Map" +msgstr "Mapa" + +#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 +msgctxt "noun" +msgid "Likes" +msgstr "Me gusta" + +#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 +msgctxt "noun" +msgid "Dislikes" +msgstr "No me gusta" + +#: ../../Zotlabs/Module/Lostpass.php:19 +msgid "No valid account found." +msgstr "No se ha encontrado una cuenta válida." + +#: ../../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/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 +#, php-format +msgid "Site Member (%s)" +msgstr "Usuario del sitio (%s)" + +#: ../../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/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/Module/Lostpass.php:91 ../../boot.php:1683 +msgid "Password Reset" +msgstr "Restablecer la contraseña" + +#: ../../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" + +#: ../../Zotlabs/Module/Lostpass.php:95 +msgid "click here to login" +msgstr "pulse aquí para conectarse" + +#: ../../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/Module/Lostpass.php:117 +#, php-format +msgid "Your password has changed at %s" +msgstr "Su contraseña en %s ha sido cambiada" + +#: ../../Zotlabs/Module/Lostpass.php:130 +msgid "Forgot your Password?" +msgstr "¿Ha olvidado su contraseña?" + +#: ../../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/Module/Lostpass.php:132 +msgid "Email Address" +msgstr "Dirección de correo electrónico" + +#: ../../Zotlabs/Module/Lostpass.php:133 ../../Zotlabs/Module/Pdledit.php:77 +msgid "Reset" +msgstr "Reiniciar" + +#: ../../Zotlabs/Module/Follow.php:36 +msgid "Connection added." +msgstr "Se ha incorporado una conexión." + +#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 +msgid "Invalid item." +msgstr "Elemento no válido." + +#: ../../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." + +#: ../../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." + +#: ../../Zotlabs/Module/Profiles.php:44 +msgid "Profile deleted." +msgstr "Perfil eliminado." + +#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 +msgid "Profile-" +msgstr "Perfil-" + +#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 +msgid "New profile created." +msgstr "El nuevo perfil ha sido creado." + +#: ../../Zotlabs/Module/Profiles.php:111 +msgid "Profile unavailable to clone." +msgstr "Perfil no disponible para clonar." + +#: ../../Zotlabs/Module/Profiles.php:146 +msgid "Profile unavailable to export." +msgstr "Perfil no disponible para exportar." + +#: ../../Zotlabs/Module/Profiles.php:252 +msgid "Profile Name is required." +msgstr "Se necesita el nombre del perfil." + +#: ../../Zotlabs/Module/Profiles.php:459 +msgid "Marital Status" +msgstr "Estado civil" + +#: ../../Zotlabs/Module/Profiles.php:463 +msgid "Romantic Partner" +msgstr "Pareja sentimental" + +#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 +msgid "Likes" +msgstr "Me gusta" + +#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 +msgid "Dislikes" +msgstr "No me gusta" + +#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 +msgid "Work/Employment" +msgstr "Trabajo:" + +#: ../../Zotlabs/Module/Profiles.php:478 +msgid "Religion" +msgstr "Religión" + +#: ../../Zotlabs/Module/Profiles.php:482 +msgid "Political Views" +msgstr "Ideas políticas" + +#: ../../Zotlabs/Module/Profiles.php:490 +msgid "Sexual Preference" +msgstr "Preferencia sexual" + +#: ../../Zotlabs/Module/Profiles.php:494 +msgid "Homepage" +msgstr "Página personal" + +#: ../../Zotlabs/Module/Profiles.php:498 +msgid "Interests" +msgstr "Intereses" + +#: ../../Zotlabs/Module/Profiles.php:594 +msgid "Profile updated." +msgstr "Perfil actualizado." + +#: ../../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" + +#: ../../Zotlabs/Module/Profiles.php:722 +msgid "Edit Profile Details" +msgstr "Modificar los detalles de este perfil" + +#: ../../Zotlabs/Module/Profiles.php:724 +msgid "View this profile" +msgstr "Ver este perfil" + +#: ../../Zotlabs/Module/Profiles.php:726 +msgid "Profile Tools" +msgstr "Gestión del perfil" + +#: ../../Zotlabs/Module/Profiles.php:727 +msgid "Change cover photo" +msgstr "Cambiar la imagen de portada del perfil" + +#: ../../Zotlabs/Module/Profiles.php:729 +msgid "Create a new profile using these settings" +msgstr "Crear un nuevo perfil usando estos ajustes" + +#: ../../Zotlabs/Module/Profiles.php:730 +msgid "Clone this profile" +msgstr "Clonar este perfil" + +#: ../../Zotlabs/Module/Profiles.php:731 +msgid "Delete this profile" +msgstr "Eliminar este perfil" + +#: ../../Zotlabs/Module/Profiles.php:732 +msgid "Add profile things" +msgstr "Añadir cosas al perfil" + +#: ../../Zotlabs/Module/Profiles.php:733 +msgid "Personal" +msgstr "Personales" + +#: ../../Zotlabs/Module/Profiles.php:735 +msgid "Relationship" +msgstr "Relación" + +#: ../../Zotlabs/Module/Profiles.php:738 +msgid "Import profile from file" +msgstr "Importar perfil desde un fichero" + +#: ../../Zotlabs/Module/Profiles.php:739 +msgid "Export profile to file" +msgstr "Exportar perfil a un fichero" + +#: ../../Zotlabs/Module/Profiles.php:740 +msgid "Your gender" +msgstr "Género" + +#: ../../Zotlabs/Module/Profiles.php:741 +msgid "Marital status" +msgstr "Estado civil" + +#: ../../Zotlabs/Module/Profiles.php:742 +msgid "Sexual preference" +msgstr "Preferencia sexual" + +#: ../../Zotlabs/Module/Profiles.php:745 +msgid "Profile name" +msgstr "Nombre del perfil" + +#: ../../Zotlabs/Module/Profiles.php:747 +msgid "This is your default profile." +msgstr "Este es su perfil principal." + +#: ../../Zotlabs/Module/Profiles.php:749 +msgid "Your full name" +msgstr "Nombre completo" + +#: ../../Zotlabs/Module/Profiles.php:750 +msgid "Title/Description" +msgstr "Título o descripción" + +#: ../../Zotlabs/Module/Profiles.php:753 +msgid "Street address" +msgstr "Dirección" + +#: ../../Zotlabs/Module/Profiles.php:754 +msgid "Locality/City" +msgstr "Ciudad" + +#: ../../Zotlabs/Module/Profiles.php:755 +msgid "Region/State" +msgstr "Región o Estado" + +#: ../../Zotlabs/Module/Profiles.php:756 +msgid "Postal/Zip code" +msgstr "Código postal" + +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Who (if applicable)" +msgstr "Quién (si es pertinente)" + +#: ../../Zotlabs/Module/Profiles.php:762 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com" + +#: ../../Zotlabs/Module/Profiles.php:763 +msgid "Since (date)" +msgstr "Desde (fecha)" + +#: ../../Zotlabs/Module/Profiles.php:766 +msgid "Tell us about yourself" +msgstr "Háblenos de usted" + +#: ../../Zotlabs/Module/Profiles.php:768 +msgid "Hometown" +msgstr "Lugar de nacimiento" + +#: ../../Zotlabs/Module/Profiles.php:769 +msgid "Political views" +msgstr "Ideas políticas" + +#: ../../Zotlabs/Module/Profiles.php:770 +msgid "Religious views" +msgstr "Creencias religiosas" + +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Keywords used in directory listings" +msgstr "Palabras clave utilizadas en los listados de directorios" + +#: ../../Zotlabs/Module/Profiles.php:771 +msgid "Example: fishing photography software" +msgstr "Por ejemplo: software de fotografía submarina" + +#: ../../Zotlabs/Module/Profiles.php:774 +msgid "Musical interests" +msgstr "Preferencias musicales" + +#: ../../Zotlabs/Module/Profiles.php:775 +msgid "Books, literature" +msgstr "Libros, literatura" + +#: ../../Zotlabs/Module/Profiles.php:776 +msgid "Television" +msgstr "Televisión" + +#: ../../Zotlabs/Module/Profiles.php:777 +msgid "Film/Dance/Culture/Entertainment" +msgstr "Cine, danza, cultura, entretenimiento" + +#: ../../Zotlabs/Module/Profiles.php:778 +msgid "Hobbies/Interests" +msgstr "Aficiones o intereses" + +#: ../../Zotlabs/Module/Profiles.php:779 +msgid "Love/Romance" +msgstr "Vida sentimental o amorosa" + +#: ../../Zotlabs/Module/Profiles.php:781 +msgid "School/Education" +msgstr "Estudios" + +#: ../../Zotlabs/Module/Profiles.php:782 +msgid "Contact information and social networks" +msgstr "Información de contacto y redes sociales" + +#: ../../Zotlabs/Module/Profiles.php:783 +msgid "My other channels" +msgstr "Mis otros canales" + +#: ../../Zotlabs/Module/Profiles.php:785 +msgid "Communications" +msgstr "Comunicaciones" + +#: ../../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" + +#: ../../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" + +#: ../../Zotlabs/Module/Articles.php:52 +msgid "Articles App" +msgstr "App Artículos" + +#: ../../Zotlabs/Module/Articles.php:53 +msgid "Create interactive articles" +msgstr "Crear artículos interactivos" + +#: ../../Zotlabs/Module/Articles.php:116 +msgid "Add Article" +msgstr "Añadir un artículo" + +#: ../../Zotlabs/Module/Bookmarks.php:62 +msgid "Bookmark added" +msgstr "Marcador añadido" + +#: ../../Zotlabs/Module/Bookmarks.php:78 +msgid "Bookmarks App" +msgstr "App Marcadores" + +#: ../../Zotlabs/Module/Bookmarks.php:79 +msgid "Bookmark links from posts and manage them" +msgstr "Añadir enlaces de las entradas a Marcadores y administrarlos" + +#: ../../Zotlabs/Module/Bookmarks.php:92 +msgid "My Bookmarks" +msgstr "Mis marcadores" + +#: ../../Zotlabs/Module/Bookmarks.php:103 +msgid "My Connections Bookmarks" +msgstr "Marcadores de mis conexiones" + +#: ../../Zotlabs/Module/Probe.php:18 +msgid "Remote Diagnostics App" +msgstr "App Diagnósticos remotos" + +#: ../../Zotlabs/Module/Probe.php:19 +msgid "Perform diagnostics on remote channels" +msgstr "Realizar diagnósticos en canales remotos" + +#: ../../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." + +#: ../../Zotlabs/Module/Changeaddr.php:77 +msgid "Change channel nickname/address" +msgstr "Cambiar el alias o la dirección del canal" + +#: ../../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!" + +#: ../../Zotlabs/Module/Changeaddr.php:80 +msgid "New channel address" +msgstr "Nueva dirección del canal" + +#: ../../Zotlabs/Module/Changeaddr.php:81 +msgid "Rename Channel" +msgstr "Renombrar el canal" + +#: ../../Zotlabs/Module/Invite.php:37 +msgid "Total invitation limit exceeded." +msgstr "Se ha superado el límite máximo de invitaciones." + +#: ../../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. " + +#: ../../Zotlabs/Module/Invite.php:75 +msgid "Please join us on $Projectname" +msgstr "Únase a nosotros en $Projectname" + +#: ../../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." + +#: ../../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." + +#: ../../Zotlabs/Module/Invite.php:110 +msgid "Invite App" +msgstr "Solicitar una app" + +#: ../../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" + +#: ../../Zotlabs/Module/Invite.php:124 +msgid "You have no more invitations available" +msgstr "No tiene más invitaciones disponibles" + +#: ../../Zotlabs/Module/Invite.php:155 +msgid "Send invitations" +msgstr "Enviar invitaciones" + +#: ../../Zotlabs/Module/Invite.php:156 +msgid "Enter email addresses, one per line:" +msgstr "Introduzca las direcciones de correo electrónico, una por línea:" + +#: ../../Zotlabs/Module/Invite.php:157 ../../Zotlabs/Module/Mail.php:289 +msgid "Your message:" +msgstr "Su mensaje:" + +#: ../../Zotlabs/Module/Invite.php:158 +msgid "Please join my community on $Projectname." +msgstr "Por favor, únase a mi comunidad en $Projectname." + +#: ../../Zotlabs/Module/Invite.php:160 +msgid "You will need to supply this invitation code:" +msgstr "Tendrá que suministrar este código de invitación:" + +#: ../../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)" + +#: ../../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." + +#: ../../Zotlabs/Module/Invite.php:164 +msgid "or visit" +msgstr "o visitar" + +#: ../../Zotlabs/Module/Invite.php:166 +msgid "3. Click [Connect]" +msgstr "3. Pulse [conectar]" + +#: ../../Zotlabs/Module/Notes.php:56 +msgid "Notes App" +msgstr "App Notas" + +#: ../../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)" + +#: ../../Zotlabs/Module/Xchan.php:10 +msgid "Xchan Lookup" +msgstr "Búsqueda de canales" + +#: ../../Zotlabs/Module/Xchan.php:13 +msgid "Lookup xchan beginning with (or webbie): " +msgstr "Buscar un canal (o un \"webbie\") que comience por:" + +#: ../../Zotlabs/Module/Mail.php:77 +msgid "Unable to lookup recipient." +msgstr "No se puede asociar a un destinatario." + +#: ../../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/Module/Mail.php:91 +msgid "Cannot verify requested channel." +msgstr "No se puede verificar el canal solicitado." + +#: ../../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/Module/Mail.php:164 +msgid "Messages" +msgstr "Mensajes" + +#: ../../Zotlabs/Module/Mail.php:177 +msgid "message" +msgstr "mensaje" + +#: ../../Zotlabs/Module/Mail.php:218 +msgid "Message recalled." +msgstr "Mensaje revocado." + +#: ../../Zotlabs/Module/Mail.php:231 +msgid "Conversation removed." +msgstr "Conversación eliminada." + +#: ../../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/Module/Mail.php:274 +msgid "Requested channel is not in this network" +msgstr "El canal solicitado no existe en esta red" + +#: ../../Zotlabs/Module/Mail.php:282 +msgid "Send Private Message" +msgstr "Enviar un mensaje privado" + +#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 +msgid "To:" +msgstr "Para:" + +#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 +msgid "Subject:" +msgstr "Asunto:" + +#: ../../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" + +#: ../../Zotlabs/Module/Mail.php:398 +msgid "Delivery report" +msgstr "Informe de transmisión" + +#: ../../Zotlabs/Module/Mail.php:399 +msgid "Recall message" +msgstr "Revocar el mensaje" + +#: ../../Zotlabs/Module/Mail.php:401 +msgid "Message has been recalled." +msgstr "El mensaje ha sido revocado." + +#: ../../Zotlabs/Module/Mail.php:419 +msgid "Delete Conversation" +msgstr "Eliminar conversación" + +#: ../../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/Module/Mail.php:425 +msgid "Send Reply" +msgstr "Responder" + +#: ../../Zotlabs/Module/Mail.php:430 +#, php-format +msgid "Your message for %s (%s):" +msgstr "Su mensaje para %s (%s):" + +#: ../../Zotlabs/Module/Affinity.php:35 +msgid "Affinity Tool settings updated." +msgstr "Actualización de los ajustes de Affinity Tool." + +#: ../../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." + +#: ../../Zotlabs/Module/Affinity.php:52 +msgid "Affinity Tool App" +msgstr "App Affinity Tool " + +#: ../../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." + +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "Default maximum affinity level" +msgstr "Nivel máximo de afinidad por defecto" + +#: ../../Zotlabs/Module/Affinity.php:64 +msgid "0-99 default 99" +msgstr "0-99 por defecto 99" + +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "Default minimum affinity level" +msgstr "Nivel mínimo de afinidad por defecto" + +#: ../../Zotlabs/Module/Affinity.php:70 +msgid "0-99 - default 0" +msgstr "0-99 - por defecto 0" + +#: ../../Zotlabs/Module/Affinity.php:76 +msgid "Persistent affinity levels" +msgstr "Niveles de afinidad persistentes" + +#: ../../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." + +#: ../../Zotlabs/Module/Affinity.php:84 +msgid "Affinity Tool Settings" +msgstr "Ajustes de Affinity Tool" + +#: ../../Zotlabs/Module/Rate.php:156 +msgid "Website:" +msgstr "Sitio web:" + +#: ../../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/Module/Rate.php:160 +msgid "Rating (this information is public)" +msgstr "Valoración (esta información es pública)" + +#: ../../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/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)" + +#: ../../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" + +#: ../../Zotlabs/Module/Settings/Network.php:58 +msgid "Stream Settings" +msgstr "Ajustes del stream" + +#: ../../Zotlabs/Module/Settings/Features.php:43 +msgid "Additional Features" +msgstr "Funcionalidades" #: ../../Zotlabs/Module/Settings/Channel.php:327 msgid "Nobody except yourself" @@ -3755,11 +13088,6 @@ msgstr "Ajustes del canal" msgid "Basic Settings" msgstr "Configuración básica" -#: ../../Zotlabs/Module/Settings/Channel.php:499 -#: ../../include/channel.php:1643 -msgid "Full Name:" -msgstr "Nombre completo:" - #: ../../Zotlabs/Module/Settings/Channel.php:500 #: ../../Zotlabs/Module/Settings/Account.php:104 msgid "Email Address:" @@ -3969,14 +13297,6 @@ msgstr "Actividad no vista en el canal" msgid "Unseen private messages" msgstr "Mensajes privados no leídos" -#: ../../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" - #: ../../Zotlabs/Module/Settings/Channel.php:568 msgid "Upcoming events" msgstr "Próximos eventos" @@ -4081,38 +13401,6 @@ msgstr "Carpeta por defecto de los ficheros subidos" msgid "Remove this channel." msgstr "Eliminar este canal." -#: ../../Zotlabs/Module/Settings/Features.php:43 -msgid "Additional Features" -msgstr "Funcionalidades" - -#: ../../Zotlabs/Module/Settings/Events.php:39 -msgid "Events Settings" -msgstr "Gestión de eventos" - -#: ../../Zotlabs/Module/Settings/Calendar.php:39 -msgid "Calendar Settings" -msgstr "Ajustes del calendario" - -#: ../../Zotlabs/Module/Settings/Conversation.php:22 -msgid "Settings saved." -msgstr "Configuración guardada." - -#: ../../Zotlabs/Module/Settings/Conversation.php:24 -msgid "Settings saved. Reload page please." -msgstr "Ajustes guardados. Recargue la página, por favor." - -#: ../../Zotlabs/Module/Settings/Conversation.php:46 -msgid "Conversation Settings" -msgstr "Ajustes de conversación" - -#: ../../Zotlabs/Module/Settings/Connections.php:39 -msgid "Connections Settings" -msgstr "Gestión de las conexiones" - -#: ../../Zotlabs/Module/Settings/Photos.php:39 -msgid "Photos Settings" -msgstr "Gestión de las fotos" - #: ../../Zotlabs/Module/Settings/Account.php:19 msgid "Not valid email." msgstr "Correo electrónico no válido." @@ -4165,23 +13453,10 @@ msgstr "Confirmar la nueva contraseña" msgid "Leave password fields blank unless changing" msgstr "Dejar en blanco la contraseña a menos que desee cambiarla." -#: ../../Zotlabs/Module/Settings/Account.php:105 -#: ../../Zotlabs/Module/Removeaccount.php:61 -msgid "Remove Account" -msgstr "Eliminar cuenta" - #: ../../Zotlabs/Module/Settings/Account.php:106 msgid "Remove this account including all its channels" msgstr "Eliminar esta cuenta incluyendo todos sus canales" -#: ../../Zotlabs/Module/Settings/Profiles.php:47 -msgid "Profiles Settings" -msgstr "Gestión de los perfiles" - -#: ../../Zotlabs/Module/Settings/Manage.php:39 -msgid "Channel Manager Settings" -msgstr "Ajustes del administrador de canales" - #: ../../Zotlabs/Module/Settings/Featured.php:24 msgid "No feature settings configured" msgstr "No se ha establecido la configuración de los complementos" @@ -4194,15 +13469,13 @@ msgstr "Ajustes de los complementos" 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." -#: ../../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)" +#: ../../Zotlabs/Module/Settings/Events.php:39 +msgid "Events Settings" +msgstr "Gestión de eventos" -#: ../../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" +#: ../../Zotlabs/Module/Settings/Manage.php:39 +msgid "Channel Manager Settings" +msgstr "Ajustes del administrador de canales" #: ../../Zotlabs/Module/Settings/Channel_home.php:59 msgid "Personal menu to display in your channel pages" @@ -4212,13 +13485,9 @@ msgstr "Menú personal que debe mostrarse en las páginas de su canal" msgid "Channel Home Settings" msgstr "Ajustes del canal" -#: ../../Zotlabs/Module/Settings/Directory.php:39 -msgid "Directory Settings" -msgstr "Configuración del directorio" - -#: ../../Zotlabs/Module/Settings/Editor.php:39 -msgid "Editor Settings" -msgstr "Ajustes del editor" +#: ../../Zotlabs/Module/Settings/Calendar.php:39 +msgid "Calendar Settings" +msgstr "Ajustes del calendario" #: ../../Zotlabs/Module/Settings/Display.php:128 #, php-format @@ -4303,99 +13572,297 @@ msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar e msgid "Link post titles to source" msgstr "Enlazar título de la publicación a la fuente original" -#: ../../Zotlabs/Module/Settings/Display.php:205 -#: ../../Zotlabs/Widget/Newmember.php:75 -msgid "New Member Links" -msgstr "Enlaces para nuevos miembros" - #: ../../Zotlabs/Module/Settings/Display.php:205 msgid "Display new member quick links menu" msgstr "Mostrar el menú de enlaces rápidos para nuevos miembros" -#: ../../Zotlabs/Module/Settings/Network.php:58 -msgid "Stream Settings" -msgstr "Ajustes del stream" +#: ../../Zotlabs/Module/Settings/Directory.php:39 +msgid "Directory Settings" +msgstr "Configuración del directorio" -#: ../../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" +#: ../../Zotlabs/Module/Settings/Editor.php:39 +msgid "Editor Settings" +msgstr "Ajustes del editor" -#: ../../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" +#: ../../Zotlabs/Module/Settings/Connections.php:39 +msgid "Connections Settings" +msgstr "Gestión de las conexiones" -#: ../../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" +#: ../../Zotlabs/Module/Settings/Photos.php:39 +msgid "Photos Settings" +msgstr "Gestión de las fotos" -#: ../../Zotlabs/Module/Tokens.php:39 +#: ../../Zotlabs/Module/Settings/Profiles.php:47 +msgid "Profiles Settings" +msgstr "Gestión de los perfiles" + +#: ../../Zotlabs/Module/Settings/Conversation.php:22 +msgid "Settings saved." +msgstr "Configuración guardada." + +#: ../../Zotlabs/Module/Settings/Conversation.php:24 +msgid "Settings saved. Reload page please." +msgstr "Ajustes guardados. Recargue la página, por favor." + +#: ../../Zotlabs/Module/Settings/Conversation.php:46 +msgid "Conversation Settings" +msgstr "Ajustes de conversación" + +#: ../../Zotlabs/Module/Menu.php:68 +msgid "Unable to update menu." +msgstr "No se puede actualizar el menú." + +#: ../../Zotlabs/Module/Menu.php:79 +msgid "Unable to create menu." +msgstr "No se puede crear el menú." + +#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 +msgid "Menu Name" +msgstr "Nombre del menú" + +#: ../../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" + +#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:175 +msgid "Menu Title" +msgstr "Título del menú" + +#: ../../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" + +#: ../../Zotlabs/Module/Menu.php:163 +msgid "Allow Bookmarks" +msgstr "Permitir marcadores" + +#: ../../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" + +#: ../../Zotlabs/Module/Menu.php:164 ../../Zotlabs/Module/Menu.php:225 +msgid "Submit and proceed" +msgstr "Enviar y proceder" + +#: ../../Zotlabs/Module/Menu.php:177 ../../Zotlabs/Module/Locs.php:120 +msgid "Drop" +msgstr "Eliminar" + +#: ../../Zotlabs/Module/Menu.php:181 +msgid "Bookmarks allowed" +msgstr "Marcadores permitidos" + +#: ../../Zotlabs/Module/Menu.php:183 +msgid "Delete this menu" +msgstr "Borrar este menú" + +#: ../../Zotlabs/Module/Menu.php:184 ../../Zotlabs/Module/Menu.php:219 +msgid "Edit menu contents" +msgstr "Editar los contenidos del menú" + +#: ../../Zotlabs/Module/Menu.php:185 +msgid "Edit this menu" +msgstr "Modificar este menú" + +#: ../../Zotlabs/Module/Menu.php:201 +msgid "Menu could not be deleted." +msgstr "El menú no puede ser eliminado." + +#: ../../Zotlabs/Module/Menu.php:214 +msgid "Edit Menu" +msgstr "Modificar el menú" + +#: ../../Zotlabs/Module/Menu.php:218 +msgid "Add or remove entries to this menu" +msgstr "Añadir o quitar entradas en este menú" + +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Menu name" +msgstr "Nombre del menú" + +#: ../../Zotlabs/Module/Menu.php:220 +msgid "Must be unique, only seen by you" +msgstr "Debe ser único, solo será visible para usted" + +#: ../../Zotlabs/Module/Menu.php:221 +msgid "Menu title" +msgstr "Título del menú" + +#: ../../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" + +#: ../../Zotlabs/Module/Menu.php:222 +msgid "Allow bookmarks" +msgstr "Permitir marcadores" + +#: ../../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." + +#: ../../Zotlabs/Module/Defperms.php:189 +msgid "Default Permissions App" +msgstr "App Permisos por defecto" + +#: ../../Zotlabs/Module/Defperms.php:190 +msgid "Set custom default permissions for new connections" +msgstr "Establecer permisos predeterminados personalizados para nuevas conexiones" + +#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:867 +msgid "Connection Default Permissions" +msgstr "Permisos predeterminados de conexión" + +#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:868 +msgid "Apply these permissions automatically" +msgstr "Aplicar estos permisos automaticamente" + +#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869 +msgid "Permission role" +msgstr "Permisos de rol" + +#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870 +msgid "Add permission role" +msgstr "Añadir permisos de rol" + +#: ../../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." + +#: ../../Zotlabs/Module/Defperms.php:262 +msgid "Automatic approval settings" +msgstr "Opciones de autorización automática" + +#: ../../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." + +#: ../../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." + +#: ../../Zotlabs/Module/Pconfig.php:57 +msgid "Configuration Editor" +msgstr "Editor de configuración" + +#: ../../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." + +#: ../../Zotlabs/Module/Oauth2.php:54 +msgid "Name and Secret are required" +msgstr "\"Key\" y \"Secret\" son obligatorios" + +#: ../../Zotlabs/Module/Oauth2.php:106 +msgid "OAuth2 Apps Manager App" +msgstr "Aplicación del administrador de apps OAuth2" + +#: ../../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" + +#: ../../Zotlabs/Module/Oauth2.php:115 +msgid "Add OAuth2 application" +msgstr "Añadir aplicación OAuth2" + +#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 +msgid "Grant Types" +msgstr "Tipos de permisos" + +#: ../../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" + +#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 +msgid "Authorization scope" +msgstr "Alcance de la autorización" + +#: ../../Zotlabs/Module/Oauth2.php:134 +msgid "OAuth2 Application not found." +msgstr "No se ha encontrado la aplicación OAuth2." + +#: ../../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" + +#: ../../Zotlabs/Module/Oauth2.php:192 +msgid "Connected OAuth2 Apps" +msgstr "Aplicaciones OAuth2 conectadas" + +#: ../../Zotlabs/Module/Randprof.php:29 +msgid "Random Channel App" +msgstr "App Canal aleatorio" + +#: ../../Zotlabs/Module/Randprof.php:30 +msgid "Visit a random channel in the $Projectname network" +msgstr "Visitar un canal aleatorio en la red $Projectname" + +#: ../../Zotlabs/Module/Dreport.php:59 +msgid "Invalid message" +msgstr "Mensaje no válido" + +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "no results" +msgstr "sin resultados" + +#: ../../Zotlabs/Module/Dreport.php:107 +msgid "channel sync processed" +msgstr "se ha realizado la sincronización del canal" + +#: ../../Zotlabs/Module/Dreport.php:111 +msgid "queued" +msgstr "encolado" + +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "posted" +msgstr "enviado" + +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "accepted for delivery" +msgstr "aceptado para el envío" + +#: ../../Zotlabs/Module/Dreport.php:123 +msgid "updated" +msgstr "actualizado" + +#: ../../Zotlabs/Module/Dreport.php:126 +msgid "update ignored" +msgstr "actualización ignorada" + +#: ../../Zotlabs/Module/Dreport.php:129 +msgid "permission denied" +msgstr "permiso denegado" + +#: ../../Zotlabs/Module/Dreport.php:133 +msgid "recipient not found" +msgstr "destinatario no encontrado" + +#: ../../Zotlabs/Module/Dreport.php:136 +msgid "mail recalled" +msgstr "mensaje de correo revocado" + +#: ../../Zotlabs/Module/Dreport.php:139 +msgid "duplicate mail received" +msgstr "se ha recibido mensaje duplicado" + +#: ../../Zotlabs/Module/Dreport.php:142 +msgid "mail delivered" +msgstr "correo enviado" + +#: ../../Zotlabs/Module/Dreport.php:162 #, php-format -msgid "This channel is limited to %d tokens" -msgstr "Este canal tiene un límite de %d tokens" +msgid "Delivery report for %1$s" +msgstr "Informe de entrega para %1$s" -#: ../../Zotlabs/Module/Tokens.php:45 -msgid "Name and Password are required." -msgstr "Se requiere el nombre y la contraseña." - -#: ../../Zotlabs/Module/Tokens.php:85 -msgid "Token saved." -msgstr "Token salvado." - -#: ../../Zotlabs/Module/Tokens.php:99 -msgid "Guest Access App" -msgstr "App Acceso para invitados" - -#: ../../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/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/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/Module/Tokens.php:170 -msgid "Guest Access Tokens" -msgstr "Tokens de acceso para invitados" - -#: ../../Zotlabs/Module/Tokens.php:177 -msgid "Login Name" -msgstr "Nombre de inicio de sesión" - -#: ../../Zotlabs/Module/Tokens.php:178 -msgid "Login Password" -msgstr "Contraseña de inicio de sesión" - -#: ../../Zotlabs/Module/Tokens.php:179 -msgid "Expires (yyyy-mm-dd)" -msgstr "Expira (aaaa-mm-dd)" - -#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907 -msgid "Their Settings" -msgstr "Sus ajustes" - -#: ../../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í" +#: ../../Zotlabs/Module/Dreport.php:167 +msgid "Redeliver" +msgstr "Volver a enviar" #: ../../Zotlabs/Module/Thing.php:120 msgid "Thing updated" @@ -4450,753 +13917,53 @@ msgstr "Dirección del elemento (opcional)" msgid "URL for photo of thing (optional)" msgstr "Dirección para la foto o elemento (opcional)" -#: ../../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" - #: ../../Zotlabs/Module/Thing.php:362 msgid "Add Thing to your Profile" msgstr "Añadir alguna cosa a su perfil" -#: ../../Zotlabs/Module/Notify.php:61 -#: ../../Zotlabs/Module/Notifications.php:55 -msgid "No more system notifications." -msgstr "No hay más notificaciones del sistema" - -#: ../../Zotlabs/Module/Notify.php:65 -#: ../../Zotlabs/Module/Notifications.php:59 -msgid "System Notifications" -msgstr "Notificaciones del sistema" - -#: ../../Zotlabs/Module/Follow.php:36 -msgid "Connection added." -msgstr "Se ha incorporado una conexión." - -#: ../../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/Module/Import.php:184 -msgid "No channel. Import failed." -msgstr "No hay canal. La importación ha fallado" - -#: ../../Zotlabs/Module/Import.php:594 -#: ../../addon/diaspora/import_diaspora.php:141 -msgid "Import completed." -msgstr "Importación completada." - -#: ../../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/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/Module/Import.php:630 -msgid "Or provide the old server/hub details" -msgstr "O proporcione los detalles de su antiguo servidor/hub" - -#: ../../Zotlabs/Module/Import.php:632 -msgid "Your old identity address (xyz@example.com)" -msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" - -#: ../../Zotlabs/Module/Import.php:633 -msgid "Your old login email address" -msgstr "Su antigua dirección de correo electrónico" - -#: ../../Zotlabs/Module/Import.php:634 -msgid "Your old login password" -msgstr "Su antigua contraseña" - -#: ../../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/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/Module/Import.php:639 -msgid "Make this hub my primary location" -msgstr "Convertir este servidor en mi ubicación primaria" - -#: ../../Zotlabs/Module/Import.php:640 -msgid "Move this channel (disable all previous locations)" -msgstr "Mover este canal (desactivar todas las ubicaciones anteriores)" - -#: ../../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/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/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/Module/Rmagic.php:44 msgid "Authentication failed." msgstr "Falló la autenticación." -#: ../../Zotlabs/Module/Rmagic.php:93 ../../boot.php:1677 -#: ../../include/channel.php:2475 -msgid "Remote Authentication" -msgstr "Acceso desde su servidor" +#: ../../Zotlabs/Module/Pdledit.php:26 +msgid "Layout updated." +msgstr "Plantilla actualizada." -#: ../../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)" +#: ../../Zotlabs/Module/Pdledit.php:42 +msgid "PDL Editor App" +msgstr "App Editor PDL" -#: ../../Zotlabs/Module/Rmagic.php:95 ../../include/channel.php:2477 -msgid "Authenticate" -msgstr "Acceder" +#: ../../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" -#: ../../Zotlabs/Module/Oauth2.php:54 -msgid "Name and Secret are required" -msgstr "\"Key\" y \"Secret\" son obligatorios" +#: ../../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" -#: ../../Zotlabs/Module/Oauth2.php:106 -msgid "OAuth2 Apps Manager App" -msgstr "Aplicación del administrador de apps OAuth2" +#: ../../Zotlabs/Module/Pdledit.php:77 +msgid "(modified)" +msgstr "(modificado)" -#: ../../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" +#: ../../Zotlabs/Module/Pdledit.php:94 +msgid "Layout not found." +msgstr "Plantilla no encontrada" -#: ../../Zotlabs/Module/Oauth2.php:115 -msgid "Add OAuth2 application" -msgstr "Añadir aplicación OAuth2" +#: ../../Zotlabs/Module/Pdledit.php:100 +msgid "Module Name:" +msgstr "Nombre del módulo:" -#: ../../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" +#: ../../Zotlabs/Module/Pdledit.php:101 +msgid "Layout Help" +msgstr "Ayuda para el diseño de plantillas de página" -#: ../../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" +#: ../../Zotlabs/Module/Pdledit.php:102 +msgid "Edit another layout" +msgstr "Editar otro diseño" -#: ../../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" - -#: ../../Zotlabs/Module/Oauth2.php:120 ../../Zotlabs/Module/Oauth2.php:148 -#: ../../Zotlabs/Module/Oauth.php:116 ../../Zotlabs/Module/Oauth.php:142 -msgid "Redirect" -msgstr "Redirigir" - -#: ../../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" - -#: ../../Zotlabs/Module/Oauth2.php:121 ../../Zotlabs/Module/Oauth2.php:149 -msgid "Grant Types" -msgstr "Tipos de permisos" - -#: ../../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" - -#: ../../Zotlabs/Module/Oauth2.php:122 ../../Zotlabs/Module/Oauth2.php:150 -msgid "Authorization scope" -msgstr "Alcance de la autorización" - -#: ../../Zotlabs/Module/Oauth2.php:134 -msgid "OAuth2 Application not found." -msgstr "No se ha encontrado la aplicación OAuth2." - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Module/Oauth2.php:192 -msgid "Connected OAuth2 Apps" -msgstr "Aplicaciones OAuth2 conectadas" - -#: ../../Zotlabs/Module/Oauth2.php:196 ../../Zotlabs/Module/Oauth.php:175 -msgid "Client key starts with" -msgstr "La \"client key\" empieza por" - -#: ../../Zotlabs/Module/Oauth2.php:197 ../../Zotlabs/Module/Oauth.php:176 -msgid "No name" -msgstr "Sin nombre" - -#: ../../Zotlabs/Module/Oauth2.php:198 ../../Zotlabs/Module/Oauth.php:177 -msgid "Remove authorization" -msgstr "Eliminar autorización" - -#: ../../Zotlabs/Module/Cal.php:64 -msgid "Permissions denied." -msgstr "Permisos denegados." - -#: ../../Zotlabs/Module/Api.php:74 ../../Zotlabs/Module/Api.php:95 -msgid "Authorize application connection" -msgstr "Autorizar una conexión de aplicació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: " - -#: ../../Zotlabs/Module/Api.php:85 -msgid "Please login to continue." -msgstr "Por favor inicie sesión para continuar." - -#: ../../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?" - -#: ../../Zotlabs/Module/Attach.php:13 -msgid "Item not available." -msgstr "Elemento no disponible" - -#: ../../Zotlabs/Module/Randprof.php:29 -msgid "Random Channel App" -msgstr "App Canal aleatorio" - -#: ../../Zotlabs/Module/Randprof.php:30 -msgid "Visit a random channel in the $Projectname network" -msgstr "Visitar un canal aleatorio en la red $Projectname" - -#: ../../Zotlabs/Module/Editblock.php:138 -msgid "Edit Block" -msgstr "Modificar este bloque" - -#: ../../Zotlabs/Module/Profile.php:93 -msgid "vcard" -msgstr "vcard" - -#: ../../Zotlabs/Module/Apps.php:50 ../../Zotlabs/Widget/Appstore.php:14 -msgid "Available Apps" -msgstr "Aplicaciones disponibles" - -#: ../../Zotlabs/Module/Apps.php:50 -msgid "Installed Apps" -msgstr "Apps instaladas" - -#: ../../Zotlabs/Module/Apps.php:53 -msgid "Manage Apps" -msgstr "Administrar apps" - -#: ../../Zotlabs/Module/Apps.php:54 -msgid "Create Custom App" -msgstr "Crear una app personalizada" - -#: ../../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" - -#: ../../Zotlabs/Module/Mood.php:134 -msgid "Mood App" -msgstr "App Estados de ánimo" - -#: ../../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" - -#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:349 -msgid "Mood" -msgstr "Estado de ánimo" - -#: ../../Zotlabs/Module/Connections.php:58 -#: ../../Zotlabs/Module/Connections.php:115 -#: ../../Zotlabs/Module/Connections.php:273 -msgid "Active" -msgstr "Activo/a" - -#: ../../Zotlabs/Module/Connections.php:63 -#: ../../Zotlabs/Module/Connections.php:181 -#: ../../Zotlabs/Module/Connections.php:278 -msgid "Blocked" -msgstr "Bloqueadas" - -#: ../../Zotlabs/Module/Connections.php:68 -#: ../../Zotlabs/Module/Connections.php:188 -#: ../../Zotlabs/Module/Connections.php:277 -msgid "Ignored" -msgstr "Ignoradas" - -#: ../../Zotlabs/Module/Connections.php:73 -#: ../../Zotlabs/Module/Connections.php:202 -#: ../../Zotlabs/Module/Connections.php:276 -msgid "Hidden" -msgstr "Ocultas" - -#: ../../Zotlabs/Module/Connections.php:78 -#: ../../Zotlabs/Module/Connections.php:195 -msgid "Archived/Unreachable" -msgstr "Archivadas o inaccesibles" - -#: ../../Zotlabs/Module/Connections.php:83 -#: ../../Zotlabs/Module/Connections.php:92 ../../Zotlabs/Module/Menu.php:179 -#: ../../Zotlabs/Module/Notifications.php:50 -msgid "New" -msgstr "Nuevas" - -#: ../../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" - -#: ../../Zotlabs/Module/Connections.php:157 -msgid "Active Connections" -msgstr "Conexiones activas" - -#: ../../Zotlabs/Module/Connections.php:160 -msgid "Show active connections" -msgstr "Mostrar las conexiones activas" - -#: ../../Zotlabs/Module/Connections.php:164 -#: ../../Zotlabs/Widget/Notifications.php:84 -msgid "New Connections" -msgstr "Nuevas conexiones" - -#: ../../Zotlabs/Module/Connections.php:167 -msgid "Show pending (new) connections" -msgstr "Mostrar conexiones (nuevas) pendientes" - -#: ../../Zotlabs/Module/Connections.php:184 -msgid "Only show blocked connections" -msgstr "Mostrar solo las conexiones bloqueadas" - -#: ../../Zotlabs/Module/Connections.php:191 -msgid "Only show ignored connections" -msgstr "Mostrar solo conexiones ignoradas" - -#: ../../Zotlabs/Module/Connections.php:198 -msgid "Only show archived/unreachable connections" -msgstr "Mostrar solo las conexiones archivadas o no localizables" - -#: ../../Zotlabs/Module/Connections.php:205 -msgid "Only show hidden connections" -msgstr "Mostrar solo las conexiones ocultas" - -#: ../../Zotlabs/Module/Connections.php:220 -msgid "Show all connections" -msgstr "Mostrar todas las conexiones" - -#: ../../Zotlabs/Module/Connections.php:274 -msgid "Pending approval" -msgstr "Pendiente de aprobación" - -#: ../../Zotlabs/Module/Connections.php:275 -msgid "Archived" -msgstr "Archivadas" - -#: ../../Zotlabs/Module/Connections.php:279 -msgid "Not connected at this location" -msgstr "No está conectado/a en esta ubicación" - -#: ../../Zotlabs/Module/Connections.php:296 -#, php-format -msgid "%1$s [%2$s]" -msgstr "%1$s [%2$s]" - -#: ../../Zotlabs/Module/Connections.php:297 -msgid "Edit connection" -msgstr "Editar conexión" - -#: ../../Zotlabs/Module/Connections.php:299 -msgid "Delete connection" -msgstr "Eliminar conexión" - -#: ../../Zotlabs/Module/Connections.php:308 -msgid "Channel address" -msgstr "Dirección del canal" - -#: ../../Zotlabs/Module/Connections.php:310 ../../include/features.php:299 -msgid "Network" -msgstr "Red" - -#: ../../Zotlabs/Module/Connections.php:313 -msgid "Call" -msgstr "Llamar" - -#: ../../Zotlabs/Module/Connections.php:315 -msgid "Status" -msgstr "Estado" - -#: ../../Zotlabs/Module/Connections.php:317 -msgid "Connected" -msgstr "Conectado/a" - -#: ../../Zotlabs/Module/Connections.php:319 -msgid "Approve connection" -msgstr "Aprobar esta conexión" - -#: ../../Zotlabs/Module/Connections.php:321 -msgid "Ignore connection" -msgstr "Ignorar esta conexión" - -#: ../../Zotlabs/Module/Connections.php:322 -#: ../../Zotlabs/Module/Connedit.php:644 -msgid "Ignore" -msgstr "Ignorar" - -#: ../../Zotlabs/Module/Connections.php:323 -msgid "Recent activity" -msgstr "Actividad reciente" - -#: ../../Zotlabs/Module/Connections.php:348 ../../Zotlabs/Lib/Apps.php:332 -#: ../../include/text.php:1010 ../../include/features.php:133 -msgid "Connections" -msgstr "Conexiones" - -#: ../../Zotlabs/Module/Connections.php:353 -msgid "Search your connections" -msgstr "Buscar sus conexiones" - -#: ../../Zotlabs/Module/Connections.php:354 -msgid "Connections search" -msgstr "Buscar conexiones" - -#: ../../Zotlabs/Module/Connections.php:355 -#: ../../Zotlabs/Module/Directory.php:416 -#: ../../Zotlabs/Module/Directory.php:421 ../../include/contact_widgets.php:23 -msgid "Find" -msgstr "Encontrar" - -#: ../../Zotlabs/Module/Viewsrc.php:43 -msgid "item" -msgstr "elemento" - -#: ../../Zotlabs/Module/Bookmarks.php:62 -msgid "Bookmark added" -msgstr "Marcador añadido" - -#: ../../Zotlabs/Module/Bookmarks.php:78 -msgid "Bookmarks App" -msgstr "App Marcadores" - -#: ../../Zotlabs/Module/Bookmarks.php:79 -msgid "Bookmark links from posts and manage them" -msgstr "Añadir enlaces de las entradas a Marcadores y administrarlos" - -#: ../../Zotlabs/Module/Bookmarks.php:92 -msgid "My Bookmarks" -msgstr "Mis marcadores" - -#: ../../Zotlabs/Module/Bookmarks.php:103 -msgid "My Connections Bookmarks" -msgstr "Marcadores de mis conexiones" - -#: ../../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." - -#: ../../Zotlabs/Module/Removeaccount.php:57 -msgid "Remove This Account" -msgstr "Eliminar esta cuenta" - -#: ../../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." - -#: ../../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" - -#: ../../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" - -#: ../../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." - -#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:113 -msgid "Album not found." -msgstr "Álbum no encontrado." - -#: ../../Zotlabs/Module/Photos.php:103 -msgid "Delete Album" -msgstr "Borrar álbum" - -#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1056 -msgid "Delete Photo" -msgstr "Borrar foto" - -#: ../../Zotlabs/Module/Photos.php:527 -msgid "No photos selected" -msgstr "No hay fotos seleccionadas" - -#: ../../Zotlabs/Module/Photos.php:576 -msgid "Access to this item is restricted." -msgstr "El acceso a este elemento está restringido." - -#: ../../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." - -#: ../../Zotlabs/Module/Photos.php:622 -#, php-format -msgid "%1$.2f MB photo storage used." -msgstr "%1$.2f MB de almacenamiento de fotos utilizado." - -#: ../../Zotlabs/Module/Photos.php:664 -msgid "Upload Photos" -msgstr "Subir fotos" - -#: ../../Zotlabs/Module/Photos.php:668 -msgid "Enter an album name" -msgstr "Introducir un nombre de álbum" - -#: ../../Zotlabs/Module/Photos.php:669 -msgid "or select an existing album (doubleclick)" -msgstr "o seleccionar un álbum (con un doble click)" - -#: ../../Zotlabs/Module/Photos.php:670 -msgid "Create a status post for this upload" -msgstr "Crear un mensaje de estado para esta subida" - -#: ../../Zotlabs/Module/Photos.php:672 -msgid "Description (optional)" -msgstr "Descripción (opcional)" - -#: ../../Zotlabs/Module/Photos.php:758 -msgid "Show Newest First" -msgstr "Mostrar lo más reciente primero" - -#: ../../Zotlabs/Module/Photos.php:760 -msgid "Show Oldest First" -msgstr "Mostrar lo más antiguo primero" - -#: ../../Zotlabs/Module/Photos.php:817 ../../Zotlabs/Module/Photos.php:1363 -msgid "Add Photos" -msgstr "Añadir fotos" - -#: ../../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." - -#: ../../Zotlabs/Module/Photos.php:867 -msgid "Photo not available" -msgstr "Foto no disponible" - -#: ../../Zotlabs/Module/Photos.php:925 -msgid "Use as profile photo" -msgstr "Usar como foto del perfil" - -#: ../../Zotlabs/Module/Photos.php:926 -msgid "Use as cover photo" -msgstr "Usar como imagen de portada del perfil" - -#: ../../Zotlabs/Module/Photos.php:933 -msgid "Private Photo" -msgstr "Foto privada" - -#: ../../Zotlabs/Module/Photos.php:948 -msgid "View Full Size" -msgstr "Ver tamaño completo" - -#: ../../Zotlabs/Module/Photos.php:1030 -msgid "Edit photo" -msgstr "Editar foto" - -#: ../../Zotlabs/Module/Photos.php:1032 -msgid "Rotate CW (right)" -msgstr "Girar CW (a la derecha)" - -#: ../../Zotlabs/Module/Photos.php:1033 -msgid "Rotate CCW (left)" -msgstr "Girar CCW (a la izquierda)" - -#: ../../Zotlabs/Module/Photos.php:1036 -msgid "Move photo to album" -msgstr "Mover la foto a un álbum" - -#: ../../Zotlabs/Module/Photos.php:1037 -msgid "Enter a new album name" -msgstr "Introducir un nuevo nombre de álbum" - -#: ../../Zotlabs/Module/Photos.php:1038 -msgid "or select an existing one (doubleclick)" -msgstr "o seleccionar un álbum (con un doble click)" - -#: ../../Zotlabs/Module/Photos.php:1043 -msgid "Add a Tag" -msgstr "Añadir una etiqueta" - -#: ../../Zotlabs/Module/Photos.php:1051 -msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" -msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" - -#: ../../Zotlabs/Module/Photos.php:1054 -msgid "Flag as adult in album view" -msgstr "Marcar como \"solo para adultos\" en el álbum" - -#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:307 -msgid "I like this (toggle)" -msgstr "Me gusta (cambiar)" - -#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:308 -msgid "I don't like this (toggle)" -msgstr "No me gusta esto (cambiar)" - -#: ../../Zotlabs/Module/Photos.php:1076 ../../Zotlabs/Lib/ThreadItem.php:469 -#: ../../include/conversation.php:787 -msgid "Please wait" -msgstr "Espere por favor" - -#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1212 -#: ../../Zotlabs/Lib/ThreadItem.php:793 -msgid "This is you" -msgstr "Este es usted" - -#: ../../Zotlabs/Module/Photos.php:1095 ../../Zotlabs/Module/Photos.php:1214 -#: ../../Zotlabs/Lib/ThreadItem.php:795 ../../include/js_strings.php:6 -msgid "Comment" -msgstr "Comentar" - -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Likes" -msgstr "Me gusta" - -#: ../../Zotlabs/Module/Photos.php:1112 ../../include/conversation.php:619 -msgctxt "title" -msgid "Dislikes" -msgstr "No me gusta" - -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Agree" -msgstr "De acuerdo" - -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Disagree" -msgstr "En desacuerdo" - -#: ../../Zotlabs/Module/Photos.php:1113 ../../include/conversation.php:620 -msgctxt "title" -msgid "Abstain" -msgstr "Abstención" - -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Attending" -msgstr "Participaré" - -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Not attending" -msgstr "No participaré" - -#: ../../Zotlabs/Module/Photos.php:1114 ../../include/conversation.php:621 -msgctxt "title" -msgid "Might attend" -msgstr "Quizá participe" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Module/Photos.php:1246 -msgid "Photo Tools" -msgstr "Gestión de las fotos" - -#: ../../Zotlabs/Module/Photos.php:1255 -msgid "In This Photo:" -msgstr "En esta foto:" - -#: ../../Zotlabs/Module/Photos.php:1260 -msgid "Map" -msgstr "Mapa" - -#: ../../Zotlabs/Module/Photos.php:1268 ../../Zotlabs/Lib/ThreadItem.php:457 -msgctxt "noun" -msgid "Likes" -msgstr "Me gusta" - -#: ../../Zotlabs/Module/Photos.php:1269 ../../Zotlabs/Lib/ThreadItem.php:458 -msgctxt "noun" -msgid "Dislikes" -msgstr "No me gusta" - -#: ../../Zotlabs/Module/Photos.php:1274 ../../Zotlabs/Lib/ThreadItem.php:463 -#: ../../addon/channelreputation/channelreputation.php:230 -#: ../../include/acl_selectors.php:125 -msgid "Close" -msgstr "Cerrar" - -#: ../../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" - -#: ../../Zotlabs/Module/Wiki.php:35 -#: ../../addon/flashcards/Mod_Flashcards.php:35 ../../addon/cart/cart.php:1298 -msgid "Profile Unavailable." -msgstr "Perfil no disponible" +#: ../../Zotlabs/Module/Pdledit.php:103 +msgid "System layout" +msgstr "Diseño del sistema" #: ../../Zotlabs/Module/Wiki.php:52 msgid "Wiki App" @@ -5206,13 +13973,6 @@ msgstr "App Wiki" msgid "Provide a wiki for your channel" msgstr "Proporcionar un wiki para su canal" -#: ../../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" - #: ../../Zotlabs/Module/Wiki.php:133 msgid "Error retrieving wiki" msgstr "Error al recuperar el wiki" @@ -5225,20 +13985,10 @@ msgstr "Error al crear el fichero comprimido zip de la carpeta a exportar" msgid "Error downloading wiki: " msgstr "Error al descargar el wiki: " -#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:15 -#: ../../include/nav.php:538 -msgid "Wikis" -msgstr "Wikis" - #: ../../Zotlabs/Module/Wiki.php:212 msgid "Download" msgstr "Descargar" -#: ../../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" - #: ../../Zotlabs/Module/Wiki.php:216 msgid "Wiki name" msgstr "Nombre del wiki" @@ -5247,24 +13997,6 @@ msgstr "Nombre del wiki" msgid "Content type" msgstr "Tipo de contenido" -#: ../../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" - -#: ../../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" - -#: ../../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" - #: ../../Zotlabs/Module/Wiki.php:219 ../../Zotlabs/Storage/Browser.php:292 msgid "Type" msgstr "Tipo" @@ -5305,11 +14037,6 @@ msgstr "Nueva página" msgid "Revision Comparison" msgstr "Comparación de revisiones" -#: ../../Zotlabs/Module/Wiki.php:367 ../../Zotlabs/Lib/NativeWikiPage.php:564 -#: ../../Zotlabs/Widget/Wiki_page_history.php:25 -msgid "Revert" -msgstr "Revertir" - #: ../../Zotlabs/Module/Wiki.php:374 msgid "Short description of your changes (optional)" msgstr "Breve descripción de sus cambios (opcional)" @@ -5326,60 +14053,6 @@ msgstr "Nombre de la nueva página" msgid "Embed image from photo albums" msgstr "Incluir una imagen de los álbumes de fotos" -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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..." - -#: ../../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" - -#: ../../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" - -#: ../../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" - #: ../../Zotlabs/Module/Wiki.php:410 msgid "History" msgstr "Historial" @@ -5436,309 +14109,26 @@ msgstr "Revisión seleccionada" msgid "You must be authenticated." msgstr "Debe estar autenticado." -#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1574 +#: ../../Zotlabs/Module/Home.php:90 #, php-format -msgid "🔁 Repeated %1$s's %2$s" -msgstr "🔁 Repetidos %2$sde %1$s" +msgid "Welcome to %s" +msgstr "Bienvenido a %s" -#: ../../Zotlabs/Module/Share.php:119 -msgid "Post repeated" -msgstr "Entrada repetida" +#: ../../Zotlabs/Module/Suggest.php:40 +msgid "Suggest Channels App" +msgstr "App Sugerencia de canales" -#: ../../Zotlabs/Module/Chanview.php:139 -msgid "toggle full screen mode" -msgstr "cambiar al modo de pantalla completa" - -#: ../../Zotlabs/Module/Pdledit.php:26 -msgid "Layout updated." -msgstr "Plantilla actualizada." - -#: ../../Zotlabs/Module/Pdledit.php:42 -msgid "PDL Editor App" -msgstr "App Editor PDL" - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Module/Pdledit.php:77 -msgid "(modified)" -msgstr "(modificado)" - -#: ../../Zotlabs/Module/Pdledit.php:77 ../../Zotlabs/Module/Lostpass.php:133 -msgid "Reset" -msgstr "Reiniciar" - -#: ../../Zotlabs/Module/Pdledit.php:94 -msgid "Layout not found." -msgstr "Plantilla no encontrada" - -#: ../../Zotlabs/Module/Pdledit.php:100 -msgid "Module Name:" -msgstr "Nombre del módulo:" - -#: ../../Zotlabs/Module/Pdledit.php:101 -msgid "Layout Help" -msgstr "Ayuda para el diseño de plantillas de página" - -#: ../../Zotlabs/Module/Pdledit.php:102 -msgid "Edit another layout" -msgstr "Editar otro diseño" - -#: ../../Zotlabs/Module/Pdledit.php:103 -msgid "System layout" -msgstr "Diseño del sistema" - -#: ../../Zotlabs/Module/Poke.php:165 -msgid "Poke App" -msgstr "App Toques" - -#: ../../Zotlabs/Module/Poke.php:166 -msgid "Poke somebody in your addressbook" -msgstr "Dar un toque a alguien en su libreta de direcciones" - -#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:350 -#: ../../include/conversation.php:1098 -msgid "Poke" -msgstr "Toques y otras cosas" - -#: ../../Zotlabs/Module/Poke.php:200 -msgid "Poke somebody" -msgstr "Dar un toque a alguien" - -#: ../../Zotlabs/Module/Poke.php:203 -msgid "Poke/Prod" -msgstr "Toque/Incitación" - -#: ../../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/Module/Poke.php:211 -msgid "Recipient" -msgstr "Destinatario" - -#: ../../Zotlabs/Module/Poke.php:212 -msgid "Choose what you wish to do to recipient" -msgstr "Elegir qué desea enviar al destinatario" - -#: ../../Zotlabs/Module/Poke.php:215 ../../Zotlabs/Module/Poke.php:216 -msgid "Make this post private" -msgstr "Convertir en privado este envío" - -#: ../../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. " - -#: ../../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" - -#: ../../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." - -#: ../../Zotlabs/Module/Profile_photo.php:252 -#: ../../addon/openclipatar/openclipatar.php:298 +#: ../../Zotlabs/Module/Suggest.php:41 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." +"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/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" - -#: ../../Zotlabs/Module/Profile_photo.php:294 -#: ../../Zotlabs/Module/Cover_photo.php:263 -msgid "Image upload failed." -msgstr "La carga de la imagen ha fallado." - -#: ../../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." - -#: ../../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." - -#: ../../Zotlabs/Module/Profile_photo.php:493 +#: ../../Zotlabs/Module/Suggest.php:54 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." - -#: ../../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." - -#: ../../Zotlabs/Module/Profile_photo.php:495 -#: ../../Zotlabs/Module/Cover_photo.php:426 -msgid "Upload File:" -msgstr "Subir fichero:" - -#: ../../Zotlabs/Module/Profile_photo.php:496 -#: ../../Zotlabs/Module/Cover_photo.php:427 -msgid "Select a profile:" -msgstr "Seleccionar un perfil:" - -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Use Photo for Profile" -msgstr "Usar la fotografía para el perfil" - -#: ../../Zotlabs/Module/Profile_photo.php:497 -msgid "Change Profile Photo" -msgstr "Cambiar la foto del perfil" - -#: ../../Zotlabs/Module/Profile_photo.php:498 -msgid "Use" -msgstr "Usar" - -#: ../../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" - -#: ../../Zotlabs/Module/Profile_photo.php:514 -#: ../../Zotlabs/Module/Cover_photo.php:444 -msgid "Select existing photo" -msgstr "Seleccionar una foto" - -#: ../../Zotlabs/Module/Profile_photo.php:533 -#: ../../Zotlabs/Module/Cover_photo.php:461 -msgid "Crop Image" -msgstr "Recortar imagen" - -#: ../../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." - -#: ../../Zotlabs/Module/Profile_photo.php:536 -#: ../../Zotlabs/Module/Cover_photo.php:464 -msgid "Done Editing" -msgstr "Edición completada" - -#: ../../Zotlabs/Module/Chatsvc.php:131 -msgid "Away" -msgstr "Ausente" - -#: ../../Zotlabs/Module/Chatsvc.php:136 -msgid "Online" -msgstr "Conectado/a" - -#: ../../Zotlabs/Module/Item.php:382 -msgid "Unable to locate original post." -msgstr "No ha sido posible encontrar la entrada original." - -#: ../../Zotlabs/Module/Item.php:668 -msgid "Empty post discarded." -msgstr "La entrada vacía ha sido desechada." - -#: ../../Zotlabs/Module/Item.php:1082 -msgid "Duplicate post suppressed." -msgstr "Se ha suprimido la entrada duplicada." - -#: ../../Zotlabs/Module/Item.php:1227 -msgid "System error. Post not saved." -msgstr "Error del sistema. La entrada no se ha podido salvar." - -#: ../../Zotlabs/Module/Item.php:1263 -msgid "Your comment is awaiting approval." -msgstr "Su comentario está pendiente de aprobación." - -#: ../../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." - -#: ../../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." - -#: ../../Zotlabs/Module/Item.php:1394 -#, 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" - -#: ../../Zotlabs/Module/Ping.php:393 -msgid "added your channel" -msgstr "añadió este canal a sus conexiones" - -#: ../../Zotlabs/Module/Ping.php:418 -msgid "requires approval" -msgstr "requiere aprobación" - -#: ../../Zotlabs/Module/Ping.php:428 -msgid "g A l F d" -msgstr "g A l d F" - -#: ../../Zotlabs/Module/Ping.php:446 -msgid "[today]" -msgstr "[hoy]" - -#: ../../Zotlabs/Module/Ping.php:456 -msgid "posted an event" -msgstr "publicó un evento" - -#: ../../Zotlabs/Module/Ping.php:490 -msgid "shared a file with you" -msgstr "compartió un archivo con usted" - -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Private forum" -msgstr "Foro privado" - -#: ../../Zotlabs/Module/Ping.php:672 -msgid "Public forum" -msgstr "Foro público" - -#: ../../Zotlabs/Module/Page.php:39 ../../Zotlabs/Module/Block.php:29 -msgid "Invalid item." -msgstr "Elemento no válido." - -#: ../../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." - -#: ../../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." - -#: ../../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." +"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/Module/Connedit.php:112 msgid "Could not locate selected profile." @@ -5774,12 +14164,6 @@ msgstr "No ha sido posible establecer los parámetros de la libreta de direccion msgid "Connection has been removed." msgstr "La conexión ha sido eliminada." -#: ../../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" - #: ../../Zotlabs/Module/Connedit.php:611 #, php-format msgid "View %s's profile" @@ -5801,10 +14185,6 @@ msgstr "Actualizar la foto" msgid "Fetch updated photo" msgstr "Obtener una foto actualizada" -#: ../../Zotlabs/Module/Connedit.php:629 ../../include/conversation.php:1048 -msgid "Recent Activity" -msgstr "Actividad reciente" - #: ../../Zotlabs/Module/Connedit.php:632 msgid "View recent posts and comments" msgstr "Ver publicaciones y comentarios recientes" @@ -5886,18 +14266,6 @@ msgstr "Afinidad" msgid "Open Set Affinity section by default" msgstr "Abrir por defecto la sección para definir la afinidad" -#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:30 -msgid "Me" -msgstr "Yo" - -#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:31 -msgid "Family" -msgstr "Familia" - -#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:33 -msgid "Acquaintances" -msgstr "Conocidos/as" - #: ../../Zotlabs/Module/Connedit.php:756 msgid "Filter" msgstr "Filtrar" @@ -5944,31 +14312,10 @@ msgid "" "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." -#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:254 -msgid "Connection Default Permissions" -msgstr "Permisos predeterminados de conexión" - -#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4323 -#, php-format -msgid "Connection: %s" -msgstr "Conexión: %s" - -#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:255 -msgid "Apply these permissions automatically" -msgstr "Aplicar estos permisos automaticamente" - #: ../../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" -#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256 -msgid "Permission role" -msgstr "Permisos de rol" - -#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:257 -msgid "Add permission role" -msgstr "Añadir permisos de rol" - #: ../../Zotlabs/Module/Connedit.php:877 msgid "This connection's primary address is" msgstr "La dirección primaria de esta conexión es" @@ -5977,12 +14324,6 @@ msgstr "La dirección primaria de esta conexión es" msgid "Available locations:" msgstr "Ubicaciones disponibles:" -#: ../../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." - #: ../../Zotlabs/Module/Connedit.php:884 msgid "Connection Tools" msgstr "Gestión de las conexiones" @@ -5991,11 +14332,6 @@ msgstr "Gestión de las conexiones" msgid "Slide to adjust your degree of friendship" msgstr "Deslizar para ajustar el grado de amistad" -#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155 -#: ../../include/js_strings.php:20 -msgid "Rating" -msgstr "Valoración" - #: ../../Zotlabs/Module/Connedit.php:888 msgid "Slide to adjust your rating" msgstr "Deslizar para ajustar su valoración" @@ -6047,186 +14383,20 @@ msgstr "Última actualización:" msgid "Details" msgstr "Detalles" -#: ../../Zotlabs/Module/Chat.php:102 -msgid "Chatrooms App" -msgstr "App Salas de chat" +#: ../../Zotlabs/Module/Notifications.php:55 +#: ../../Zotlabs/Module/Notify.php:61 +msgid "No more system notifications." +msgstr "No hay más notificaciones del sistema" -#: ../../Zotlabs/Module/Chat.php:103 -msgid "Access Controlled Chatrooms" -msgstr "Salas de chat moderadas" +#: ../../Zotlabs/Module/Notifications.php:59 +#: ../../Zotlabs/Module/Notify.php:65 +msgid "System Notifications" +msgstr "Notificaciones del sistema" -#: ../../Zotlabs/Module/Chat.php:196 -msgid "Room not found" -msgstr "Sala no encontrada" - -#: ../../Zotlabs/Module/Chat.php:212 -msgid "Leave Room" -msgstr "Abandonar la sala" - -#: ../../Zotlabs/Module/Chat.php:213 -msgid "Delete Room" -msgstr "Eliminar esta sala" - -#: ../../Zotlabs/Module/Chat.php:214 -msgid "I am away right now" -msgstr "Estoy ausente momentáneamente" - -#: ../../Zotlabs/Module/Chat.php:215 -msgid "I am online" -msgstr "Estoy conectado/a" - -#: ../../Zotlabs/Module/Chat.php:217 -msgid "Bookmark this room" -msgstr "Añadir esta sala a Marcadores" - -#: ../../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:" - -#: ../../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" - -#: ../../Zotlabs/Module/Chat.php:240 -msgid "New Chatroom" -msgstr "Nueva sala de chat" - -#: ../../Zotlabs/Module/Chat.php:241 -msgid "Chatroom name" -msgstr "Nombre de la sala de chat" - -#: ../../Zotlabs/Module/Chat.php:242 -msgid "Expiration of chats (minutes)" -msgstr "Caducidad de los mensajes en los chats (en minutos)" - -#: ../../Zotlabs/Module/Chat.php:258 -#, php-format -msgid "%1$s's Chatrooms" -msgstr "Salas de chat de %1$s" - -#: ../../Zotlabs/Module/Chat.php:263 -msgid "No chatrooms available" -msgstr "No hay salas de chat disponibles" - -#: ../../Zotlabs/Module/Chat.php:267 -msgid "Expiration" -msgstr "Caducidad" - -#: ../../Zotlabs/Module/Chat.php:268 -msgid "min" -msgstr "min" - -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:344 -#: ../../include/features.php:361 ../../include/nav.php:446 -msgid "Photos" -msgstr "Fotos" - -#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:339 -#: ../../Zotlabs/Storage/Browser.php:278 ../../include/nav.php:454 -msgid "Files" -msgstr "Ficheros" - -#: ../../Zotlabs/Module/Menu.php:67 -msgid "Unable to update menu." -msgstr "No se puede actualizar el menú." - -#: ../../Zotlabs/Module/Menu.php:78 -msgid "Unable to create menu." -msgstr "No se puede crear el menú." - -#: ../../Zotlabs/Module/Menu.php:160 ../../Zotlabs/Module/Menu.php:173 -msgid "Menu Name" -msgstr "Nombre del menú" - -#: ../../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" - -#: ../../Zotlabs/Module/Menu.php:161 ../../Zotlabs/Module/Menu.php:174 -msgid "Menu Title" -msgstr "Título del menú" - -#: ../../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" - -#: ../../Zotlabs/Module/Menu.php:162 -msgid "Allow Bookmarks" -msgstr "Permitir marcadores" - -#: ../../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" - -#: ../../Zotlabs/Module/Menu.php:163 ../../Zotlabs/Module/Menu.php:224 -msgid "Submit and proceed" -msgstr "Enviar y proceder" - -#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2561 -msgid "Menus" -msgstr "Menús" - -#: ../../Zotlabs/Module/Menu.php:180 -msgid "Bookmarks allowed" -msgstr "Marcadores permitidos" - -#: ../../Zotlabs/Module/Menu.php:182 -msgid "Delete this menu" -msgstr "Borrar este menú" - -#: ../../Zotlabs/Module/Menu.php:183 ../../Zotlabs/Module/Menu.php:218 -msgid "Edit menu contents" -msgstr "Editar los contenidos del menú" - -#: ../../Zotlabs/Module/Menu.php:184 -msgid "Edit this menu" -msgstr "Modificar este menú" - -#: ../../Zotlabs/Module/Menu.php:200 -msgid "Menu could not be deleted." -msgstr "El menú no puede ser eliminado." - -#: ../../Zotlabs/Module/Menu.php:213 -msgid "Edit Menu" -msgstr "Modificar el menú" - -#: ../../Zotlabs/Module/Menu.php:217 -msgid "Add or remove entries to this menu" -msgstr "Añadir o quitar entradas en este menú" - -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Menu name" -msgstr "Nombre del menú" - -#: ../../Zotlabs/Module/Menu.php:219 -msgid "Must be unique, only seen by you" -msgstr "Debe ser único, solo será visible para usted" - -#: ../../Zotlabs/Module/Menu.php:220 -msgid "Menu title" -msgstr "Título del menú" - -#: ../../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" - -#: ../../Zotlabs/Module/Menu.php:221 -msgid "Allow bookmarks" -msgstr "Permitir marcadores" - -#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2562 -msgid "Layouts" -msgstr "Plantillas" - -#: ../../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" +#: ../../Zotlabs/Module/Notifications.php:60 +#: ../../Zotlabs/Lib/ThreadItem.php:450 +msgid "Mark all seen" +msgstr "Marcar todo como visto" #: ../../Zotlabs/Module/Layouts.php:186 msgid "Comanche page description language help" @@ -6240,896 +14410,49 @@ msgstr "Descripción de la plantilla" msgid "Download PDL file" msgstr "Descargar el fichero PDL" -#: ../../Zotlabs/Module/Notes.php:56 -msgid "Notes App" -msgstr "App Notas" +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." +msgstr "Dirección no encontrada." -#: ../../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)" +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." +msgstr "Ha fallado la búsqueda de la dirección." -#: ../../Zotlabs/Module/Cloud.php:123 -msgid "Not found" -msgstr "No encontrado" - -#: ../../Zotlabs/Module/Cloud.php:129 -msgid "Please refresh page" -msgstr "Por favor, recargue la página" - -#: ../../Zotlabs/Module/Cloud.php:132 -msgid "Unknown error" -msgstr "Error desconocido" - -#: ../../Zotlabs/Module/Email_validation.php:24 -#: ../../Zotlabs/Module/Email_resend.php:12 -msgid "Token verification failed." -msgstr "Ha fallado el token de verificación." - -#: ../../Zotlabs/Module/Email_validation.php:36 -msgid "Email Verification Required" -msgstr "Verificación obligatoria del correo electrónico" - -#: ../../Zotlabs/Module/Email_validation.php:37 -#, php-format +#: ../../Zotlabs/Module/Locs.php:66 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." +"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." -#: ../../Zotlabs/Module/Email_validation.php:38 -msgid "Resend Email" -msgstr "Reenvío de correo electrónico" +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" +msgstr "Sincronizando ubicaciones" -#: ../../Zotlabs/Module/Email_validation.php:41 -msgid "Validation token" -msgstr "Token de validación" +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." +msgstr "No encontrada ninguna dirección." -#: ../../Zotlabs/Module/Tagger.php:48 -msgid "Post not found." -msgstr "Mensaje no encontrado." +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" +msgstr "Gestionar las direcciones del canal" -#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:204 -#: ../../include/bbcode.php:362 -msgid "post" -msgstr "la entrada" +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" +msgstr "Sincronizar ahora" -#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146 -#: ../../include/text.php:2125 -msgid "comment" -msgstr "el comentario" +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." +msgstr "Por favor, espere algunos minutos entre operaciones consecutivas." -#: ../../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" - -#: ../../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." - -#: ../../Zotlabs/Module/Pconfig.php:57 -msgid "Configuration Editor" -msgstr "Editor de configuración" - -#: ../../Zotlabs/Module/Pconfig.php:58 +#: ../../Zotlabs/Module/Locs.php:124 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." +"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." -#: ../../Zotlabs/Module/Affinity.php:35 -msgid "Affinity Tool settings updated." -msgstr "Actualización de los ajustes de Affinity Tool." - -#: ../../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." - -#: ../../Zotlabs/Module/Affinity.php:52 -msgid "Affinity Tool App" -msgstr "App Affinity Tool " - -#: ../../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." - -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "Default maximum affinity level" -msgstr "Nivel máximo de afinidad por defecto" - -#: ../../Zotlabs/Module/Affinity.php:64 -msgid "0-99 default 99" -msgstr "0-99 por defecto 99" - -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "Default minimum affinity level" -msgstr "Nivel mínimo de afinidad por defecto" - -#: ../../Zotlabs/Module/Affinity.php:70 -msgid "0-99 - default 0" -msgstr "0-99 - por defecto 0" - -#: ../../Zotlabs/Module/Affinity.php:76 -msgid "Persistent affinity levels" -msgstr "Niveles de afinidad persistentes" - -#: ../../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." - -#: ../../Zotlabs/Module/Affinity.php:84 -msgid "Affinity Tool Settings" -msgstr "Ajustes de Affinity Tool" - -#: ../../Zotlabs/Module/Defperms.php:189 -msgid "Default Permissions App" -msgstr "App Permisos por defecto" - -#: ../../Zotlabs/Module/Defperms.php:190 -msgid "Set custom default permissions for new connections" -msgstr "Establecer permisos predeterminados personalizados para nuevas conexiones" - -#: ../../Zotlabs/Module/Defperms.php:262 -msgid "Automatic approval settings" -msgstr "Opciones de autorización automática" - -#: ../../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." - -#: ../../Zotlabs/Module/Authorize.php:17 -msgid "Unknown App" -msgstr "Aplicación desconocida" - -#: ../../Zotlabs/Module/Authorize.php:29 -msgid "Authorize" -msgstr "Autorizar" - -#: ../../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?" - -#: ../../Zotlabs/Module/Authorize.php:32 -msgid "Allow" -msgstr "Permitir" - -#: ../../Zotlabs/Module/Group.php:45 -msgid "Privacy group created." -msgstr "El grupo de canales ha sido creado." - -#: ../../Zotlabs/Module/Group.php:48 -msgid "Could not create privacy group." -msgstr "No se puede crear el grupo de canales" - -#: ../../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." - -#: ../../Zotlabs/Module/Group.php:80 -msgid "Privacy group updated." -msgstr "Grupo de canales actualizado." - -#: ../../Zotlabs/Module/Group.php:106 -msgid "Privacy Groups App" -msgstr "App Grupos de canales" - -#: ../../Zotlabs/Module/Group.php:107 -msgid "Management of privacy groups" -msgstr "Gestión de grupos de canales" - -#: ../../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" - -#: ../../Zotlabs/Module/Group.php:142 -msgid "Add Group" -msgstr "Agregar un grupo" - -#: ../../Zotlabs/Module/Group.php:146 -msgid "Privacy group name" -msgstr "Nombre del grupo" - -#: ../../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/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81 -msgid "Members" -msgstr "Miembros" - -#: ../../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/Module/Group.php:251 -#, php-format -msgid "Privacy Group: %s" -msgstr "Grupo privado %s" - -#: ../../Zotlabs/Module/Group.php:253 -msgid "Privacy group name: " -msgstr "Nombre del grupo de canales:" - -#: ../../Zotlabs/Module/Group.php:258 -msgid "Delete Group" -msgstr "Eliminar grupo" - -#: ../../Zotlabs/Module/Group.php:269 -msgid "Group members" -msgstr "Miembros del grupo" - -#: ../../Zotlabs/Module/Group.php:271 -msgid "Not in this group" -msgstr "No en este grupo" - -#: ../../Zotlabs/Module/Group.php:303 -msgid "Click a channel to toggle membership" -msgstr "Haga clic en un canal para cambiar los miembros" - -#: ../../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." - -#: ../../Zotlabs/Module/Profiles.php:44 -msgid "Profile deleted." -msgstr "Perfil eliminado." - -#: ../../Zotlabs/Module/Profiles.php:68 ../../Zotlabs/Module/Profiles.php:105 -msgid "Profile-" -msgstr "Perfil-" - -#: ../../Zotlabs/Module/Profiles.php:90 ../../Zotlabs/Module/Profiles.php:127 -msgid "New profile created." -msgstr "El nuevo perfil ha sido creado." - -#: ../../Zotlabs/Module/Profiles.php:111 -msgid "Profile unavailable to clone." -msgstr "Perfil no disponible para clonar." - -#: ../../Zotlabs/Module/Profiles.php:146 -msgid "Profile unavailable to export." -msgstr "Perfil no disponible para exportar." - -#: ../../Zotlabs/Module/Profiles.php:252 -msgid "Profile Name is required." -msgstr "Se necesita el nombre del perfil." - -#: ../../Zotlabs/Module/Profiles.php:459 -msgid "Marital Status" -msgstr "Estado civil" - -#: ../../Zotlabs/Module/Profiles.php:463 -msgid "Romantic Partner" -msgstr "Pareja sentimental" - -#: ../../Zotlabs/Module/Profiles.php:467 ../../Zotlabs/Module/Profiles.php:772 -msgid "Likes" -msgstr "Me gusta" - -#: ../../Zotlabs/Module/Profiles.php:471 ../../Zotlabs/Module/Profiles.php:773 -msgid "Dislikes" -msgstr "No me gusta" - -#: ../../Zotlabs/Module/Profiles.php:475 ../../Zotlabs/Module/Profiles.php:780 -msgid "Work/Employment" -msgstr "Trabajo:" - -#: ../../Zotlabs/Module/Profiles.php:478 -msgid "Religion" -msgstr "Religión" - -#: ../../Zotlabs/Module/Profiles.php:482 -msgid "Political Views" -msgstr "Ideas políticas" - -#: ../../Zotlabs/Module/Profiles.php:486 -#: ../../addon/openid/MysqlProvider.php:74 -msgid "Gender" -msgstr "Género" - -#: ../../Zotlabs/Module/Profiles.php:490 -msgid "Sexual Preference" -msgstr "Preferencia sexual" - -#: ../../Zotlabs/Module/Profiles.php:494 -msgid "Homepage" -msgstr "Página personal" - -#: ../../Zotlabs/Module/Profiles.php:498 -msgid "Interests" -msgstr "Intereses" - -#: ../../Zotlabs/Module/Profiles.php:594 -msgid "Profile updated." -msgstr "Perfil actualizado." - -#: ../../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" - -#: ../../Zotlabs/Module/Profiles.php:722 -msgid "Edit Profile Details" -msgstr "Modificar los detalles de este perfil" - -#: ../../Zotlabs/Module/Profiles.php:724 -msgid "View this profile" -msgstr "Ver este perfil" - -#: ../../Zotlabs/Module/Profiles.php:725 ../../Zotlabs/Module/Profiles.php:824 -#: ../../include/channel.php:1441 -msgid "Edit visibility" -msgstr "Editar visibilidad" - -#: ../../Zotlabs/Module/Profiles.php:726 -msgid "Profile Tools" -msgstr "Gestión del perfil" - -#: ../../Zotlabs/Module/Profiles.php:727 -msgid "Change cover photo" -msgstr "Cambiar la imagen de portada del perfil" - -#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1411 -msgid "Change profile photo" -msgstr "Cambiar la foto del perfil" - -#: ../../Zotlabs/Module/Profiles.php:729 -msgid "Create a new profile using these settings" -msgstr "Crear un nuevo perfil usando estos ajustes" - -#: ../../Zotlabs/Module/Profiles.php:730 -msgid "Clone this profile" -msgstr "Clonar este perfil" - -#: ../../Zotlabs/Module/Profiles.php:731 -msgid "Delete this profile" -msgstr "Eliminar este perfil" - -#: ../../Zotlabs/Module/Profiles.php:732 -msgid "Add profile things" -msgstr "Añadir cosas al perfil" - -#: ../../Zotlabs/Module/Profiles.php:733 -msgid "Personal" -msgstr "Personales" - -#: ../../Zotlabs/Module/Profiles.php:735 -msgid "Relationship" -msgstr "Relación" - -#: ../../Zotlabs/Module/Profiles.php:736 ../../Zotlabs/Widget/Newmember.php:51 -#: ../../include/datetime.php:58 -msgid "Miscellaneous" -msgstr "Varios" - -#: ../../Zotlabs/Module/Profiles.php:738 -msgid "Import profile from file" -msgstr "Importar perfil desde un fichero" - -#: ../../Zotlabs/Module/Profiles.php:739 -msgid "Export profile to file" -msgstr "Exportar perfil a un fichero" - -#: ../../Zotlabs/Module/Profiles.php:740 -msgid "Your gender" -msgstr "Género" - -#: ../../Zotlabs/Module/Profiles.php:741 -msgid "Marital status" -msgstr "Estado civil" - -#: ../../Zotlabs/Module/Profiles.php:742 -msgid "Sexual preference" -msgstr "Preferencia sexual" - -#: ../../Zotlabs/Module/Profiles.php:745 -msgid "Profile name" -msgstr "Nombre del perfil" - -#: ../../Zotlabs/Module/Profiles.php:747 -msgid "This is your default profile." -msgstr "Este es su perfil principal." - -#: ../../Zotlabs/Module/Profiles.php:749 -msgid "Your full name" -msgstr "Nombre completo" - -#: ../../Zotlabs/Module/Profiles.php:750 -msgid "Title/Description" -msgstr "Título o descripción" - -#: ../../Zotlabs/Module/Profiles.php:753 -msgid "Street address" -msgstr "Dirección" - -#: ../../Zotlabs/Module/Profiles.php:754 -msgid "Locality/City" -msgstr "Ciudad" - -#: ../../Zotlabs/Module/Profiles.php:755 -msgid "Region/State" -msgstr "Región o Estado" - -#: ../../Zotlabs/Module/Profiles.php:756 -msgid "Postal/Zip code" -msgstr "Código postal" - -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Who (if applicable)" -msgstr "Quién (si es pertinente)" - -#: ../../Zotlabs/Module/Profiles.php:762 -msgid "Examples: cathy123, Cathy Williams, cathy@example.com" -msgstr "Por ejemplo: ana123, María González, sara@ejemplo.com" - -#: ../../Zotlabs/Module/Profiles.php:763 -msgid "Since (date)" -msgstr "Desde (fecha)" - -#: ../../Zotlabs/Module/Profiles.php:766 -msgid "Tell us about yourself" -msgstr "Háblenos de usted" - -#: ../../Zotlabs/Module/Profiles.php:767 -#: ../../addon/openid/MysqlProvider.php:68 -msgid "Homepage URL" -msgstr "Dirección de la página personal" - -#: ../../Zotlabs/Module/Profiles.php:768 -msgid "Hometown" -msgstr "Lugar de nacimiento" - -#: ../../Zotlabs/Module/Profiles.php:769 -msgid "Political views" -msgstr "Ideas políticas" - -#: ../../Zotlabs/Module/Profiles.php:770 -msgid "Religious views" -msgstr "Creencias religiosas" - -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Keywords used in directory listings" -msgstr "Palabras clave utilizadas en los listados de directorios" - -#: ../../Zotlabs/Module/Profiles.php:771 -msgid "Example: fishing photography software" -msgstr "Por ejemplo: software de fotografía submarina" - -#: ../../Zotlabs/Module/Profiles.php:774 -msgid "Musical interests" -msgstr "Preferencias musicales" - -#: ../../Zotlabs/Module/Profiles.php:775 -msgid "Books, literature" -msgstr "Libros, literatura" - -#: ../../Zotlabs/Module/Profiles.php:776 -msgid "Television" -msgstr "Televisión" - -#: ../../Zotlabs/Module/Profiles.php:777 -msgid "Film/Dance/Culture/Entertainment" -msgstr "Cine, danza, cultura, entretenimiento" - -#: ../../Zotlabs/Module/Profiles.php:778 -msgid "Hobbies/Interests" -msgstr "Aficiones o intereses" - -#: ../../Zotlabs/Module/Profiles.php:779 -msgid "Love/Romance" -msgstr "Vida sentimental o amorosa" - -#: ../../Zotlabs/Module/Profiles.php:781 -msgid "School/Education" -msgstr "Estudios" - -#: ../../Zotlabs/Module/Profiles.php:782 -msgid "Contact information and social networks" -msgstr "Información de contacto y redes sociales" - -#: ../../Zotlabs/Module/Profiles.php:783 -msgid "My other channels" -msgstr "Mis otros canales" - -#: ../../Zotlabs/Module/Profiles.php:785 -msgid "Communications" -msgstr "Comunicaciones" - -#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1437 -msgid "Profile Image" -msgstr "Imagen del perfil" - -#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1418 -#: ../../include/nav.php:113 -msgid "Edit Profiles" -msgstr "Editar perfiles" - -#: ../../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/Module/Go.php:27 -msgid "Welcome" -msgstr "Bienvenido/a" - -#: ../../Zotlabs/Module/Go.php:29 -msgid "What would you like to do?" -msgstr "¿Qué le gustaría hacer?" - -#: ../../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/Module/Go.php:35 -msgid "Upload a profile photo" -msgstr "Subir una foto de perfil" - -#: ../../Zotlabs/Module/Go.php:36 -msgid "Upload a cover photo" -msgstr "Subir una foto de portada del perfil" - -#: ../../Zotlabs/Module/Go.php:37 -msgid "Edit your default profile" -msgstr "Editar su perfil por defecto" - -#: ../../Zotlabs/Module/Go.php:38 ../../Zotlabs/Widget/Newmember.php:41 -msgid "View friend suggestions" -msgstr "Ver sugerencias de amistad" - -#: ../../Zotlabs/Module/Go.php:39 -msgid "View the channel directory" -msgstr "Ver el directorio de canales" - -#: ../../Zotlabs/Module/Go.php:40 -msgid "View/edit your channel settings" -msgstr "Ver o modificar los ajustes de su canal" - -#: ../../Zotlabs/Module/Go.php:41 -msgid "View the site or project documentation" -msgstr "Ver el sitio o la documentación del proyecto" - -#: ../../Zotlabs/Module/Go.php:42 -msgid "Visit your channel homepage" -msgstr "Visitar la página principal de su canal" - -#: ../../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/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/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/Module/Editwebpage.php:139 -msgid "Page link" -msgstr "Enlace de la página" - -#: ../../Zotlabs/Module/Editwebpage.php:166 -msgid "Edit Webpage" -msgstr "Editar la página web" - -#: ../../Zotlabs/Module/Manage.php:145 -msgid "Create a new channel" -msgstr "Crear un nuevo canal" - -#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:336 -#: ../../include/nav.php:96 -msgid "Channel Manager" -msgstr "Administración de canales" - -#: ../../Zotlabs/Module/Manage.php:171 -msgid "Current Channel" -msgstr "Canal actual" - -#: ../../Zotlabs/Module/Manage.php:173 -msgid "Switch to one of your channels by selecting it." -msgstr "Cambiar a uno de sus canales seleccionándolo." - -#: ../../Zotlabs/Module/Manage.php:174 -msgid "Default Channel" -msgstr "Canal principal" - -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Make Default" -msgstr "Convertir en predeterminado" - -#: ../../Zotlabs/Module/Manage.php:178 -#, php-format -msgid "%d new messages" -msgstr "%d mensajes nuevos" - -#: ../../Zotlabs/Module/Manage.php:179 -#, php-format -msgid "%d new introductions" -msgstr "%d nuevas solicitudes de conexión" - -#: ../../Zotlabs/Module/Manage.php:181 -msgid "Delegated Channel" -msgstr "Canal delegado" - -#: ../../Zotlabs/Module/Cards.php:51 -msgid "Cards App" -msgstr "App de Fichas" - -#: ../../Zotlabs/Module/Cards.php:52 -msgid "Create personal planning cards" -msgstr "Crear fichas de planificación personal" - -#: ../../Zotlabs/Module/Cards.php:112 -msgid "Add Card" -msgstr "Añadir una ficha" - -#: ../../Zotlabs/Module/Cards.php:207 ../../Zotlabs/Lib/Apps.php:325 -#: ../../include/nav.php:503 -msgid "Cards" -msgstr "Fichas" - -#: ../../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/Module/Siteinfo.php:21 -msgid "About this site" -msgstr "Acerca de este sitio" - -#: ../../Zotlabs/Module/Siteinfo.php:22 -msgid "Site Name" -msgstr "Nombre del sitio" - -#: ../../Zotlabs/Module/Siteinfo.php:26 -msgid "Administrator" -msgstr "Administrador" - -#: ../../Zotlabs/Module/Siteinfo.php:28 ../../Zotlabs/Module/Register.php:239 -msgid "Terms of Service" -msgstr "Términos del servicio" - -#: ../../Zotlabs/Module/Siteinfo.php:29 -msgid "Software and Project information" -msgstr "Información sobre el software y el proyecto" - -#: ../../Zotlabs/Module/Siteinfo.php:30 -msgid "This site is powered by $Projectname" -msgstr "Este sitio funciona con $Projectname" - -#: ../../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" - -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Additional federated transport protocols:" -msgstr "Protocolos adicionales de transporte federado: " - -#: ../../Zotlabs/Module/Siteinfo.php:36 -#, php-format -msgid "Version %s" -msgstr "Versión %s" - -#: ../../Zotlabs/Module/Siteinfo.php:37 -msgid "Project homepage" -msgstr "Página principal del proyecto" - -#: ../../Zotlabs/Module/Siteinfo.php:38 -msgid "Developer homepage" -msgstr "Página principal del desarrollador" - -#: ../../Zotlabs/Module/Ratings.php:70 -msgid "No ratings" -msgstr "Ninguna valoración" - -#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35 -#: ../../include/conversation.php:1088 -msgid "Ratings" -msgstr "Valoraciones" - -#: ../../Zotlabs/Module/Ratings.php:98 -msgid "Rating: " -msgstr "Valoración:" - -#: ../../Zotlabs/Module/Ratings.php:99 -msgid "Website: " -msgstr "Sitio web:" - -#: ../../Zotlabs/Module/Ratings.php:101 -msgid "Description: " -msgstr "Descripción:" - -#: ../../Zotlabs/Module/Webpages.php:48 -msgid "Webpages App" -msgstr "App de Páginas web" - -#: ../../Zotlabs/Module/Webpages.php:49 -msgid "Provide managed web pages on your channel" -msgstr "Proveer páginas web gestionadas en su canal" - -#: ../../Zotlabs/Module/Webpages.php:69 -msgid "Import Webpage Elements" -msgstr "Importar elementos de una página web" - -#: ../../Zotlabs/Module/Webpages.php:70 -msgid "Import selected" -msgstr "Importar elementos seleccionados" - -#: ../../Zotlabs/Module/Webpages.php:93 -msgid "Export Webpage Elements" -msgstr "Exportar elementos de una página web" - -#: ../../Zotlabs/Module/Webpages.php:94 -msgid "Export selected" -msgstr "Exportar los elementos seleccionados" - -#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:340 -#: ../../include/nav.php:526 -msgid "Webpages" -msgstr "Páginas web" - -#: ../../Zotlabs/Module/Webpages.php:263 -msgid "Actions" -msgstr "Acciones" - -#: ../../Zotlabs/Module/Webpages.php:264 -msgid "Page Link" -msgstr "Vínculo de la página" - -#: ../../Zotlabs/Module/Webpages.php:265 -msgid "Page Title" -msgstr "Título de página" - -#: ../../Zotlabs/Module/Webpages.php:295 -msgid "Invalid file type." -msgstr "Tipo de fichero no válido." - -#: ../../Zotlabs/Module/Webpages.php:307 -msgid "Error opening zip file" -msgstr "Error al abrir el fichero comprimido zip" - -#: ../../Zotlabs/Module/Webpages.php:318 -msgid "Invalid folder path." -msgstr "La ruta de la carpeta no es válida." - -#: ../../Zotlabs/Module/Webpages.php:345 -msgid "No webpage elements detected." -msgstr "No se han detectado elementos de ninguna página web." - -#: ../../Zotlabs/Module/Webpages.php:420 -msgid "Import complete." -msgstr "Importación completada." - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../Zotlabs/Module/Changeaddr.php:77 -msgid "Change channel nickname/address" -msgstr "Cambiar el alias o la dirección del canal" - -#: ../../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!" - -#: ../../Zotlabs/Module/Changeaddr.php:80 -msgid "New channel address" -msgstr "Nueva dirección del canal" - -#: ../../Zotlabs/Module/Changeaddr.php:81 -msgid "Rename Channel" -msgstr "Renombrar el canal" - -#: ../../Zotlabs/Module/Editpost.php:38 ../../Zotlabs/Module/Editpost.php:43 -msgid "Item is not editable" -msgstr "El elemento no es editable" - -#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Rpost.php:144 -msgid "Edit post" -msgstr "Editar la entrada" - -#: ../../Zotlabs/Module/Dreport.php:59 -msgid "Invalid message" -msgstr "Mensaje no válido" - -#: ../../Zotlabs/Module/Dreport.php:93 -msgid "no results" -msgstr "sin resultados" - -#: ../../Zotlabs/Module/Dreport.php:107 -msgid "channel sync processed" -msgstr "se ha realizado la sincronización del canal" - -#: ../../Zotlabs/Module/Dreport.php:111 -msgid "queued" -msgstr "encolado" - -#: ../../Zotlabs/Module/Dreport.php:115 -msgid "posted" -msgstr "enviado" - -#: ../../Zotlabs/Module/Dreport.php:119 -msgid "accepted for delivery" -msgstr "aceptado para el envío" - -#: ../../Zotlabs/Module/Dreport.php:123 -msgid "updated" -msgstr "actualizado" - -#: ../../Zotlabs/Module/Dreport.php:126 -msgid "update ignored" -msgstr "actualización ignorada" - -#: ../../Zotlabs/Module/Dreport.php:129 -msgid "permission denied" -msgstr "permiso denegado" - -#: ../../Zotlabs/Module/Dreport.php:133 -msgid "recipient not found" -msgstr "destinatario no encontrado" - -#: ../../Zotlabs/Module/Dreport.php:136 -msgid "mail recalled" -msgstr "mensaje de correo revocado" - -#: ../../Zotlabs/Module/Dreport.php:139 -msgid "duplicate mail received" -msgstr "se ha recibido mensaje duplicado" - -#: ../../Zotlabs/Module/Dreport.php:142 -msgid "mail delivered" -msgstr "correo enviado" - -#: ../../Zotlabs/Module/Dreport.php:162 -#, php-format -msgid "Delivery report for %1$s" -msgstr "Informe de entrega para %1$s" - -#: ../../Zotlabs/Module/Dreport.php:166 ../../Zotlabs/Widget/Wiki_pages.php:41 -#: ../../Zotlabs/Widget/Wiki_pages.php:98 -msgid "Options" -msgstr "Opciones" - -#: ../../Zotlabs/Module/Dreport.php:167 -msgid "Redeliver" -msgstr "Volver a enviar" +#: ../../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." @@ -7191,11 +14514,6 @@ msgid "" "separated)" msgstr "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)" -#: ../../Zotlabs/Module/Sources.php:123 ../../Zotlabs/Module/Sources.php:158 -#: ../../Zotlabs/Module/Oauth.php:117 -msgid "Optional" -msgstr "Opcional" - #: ../../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" @@ -7224,407 +14542,6 @@ msgstr "Fuente eliminada" msgid "Unable to remove source." msgstr "No se puede eliminar la fuente." -#: ../../Zotlabs/Module/Like.php:56 -msgid "Like/Dislike" -msgstr "Me gusta/No me gusta" - -#: ../../Zotlabs/Module/Like.php:61 -msgid "This action is restricted to members." -msgstr "Esta acción está restringida solo para miembros." - -#: ../../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/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137 -#: ../../Zotlabs/Module/Like.php:175 -msgid "Invalid request." -msgstr "Solicitud incorrecta." - -#: ../../Zotlabs/Module/Like.php:123 ../../include/conversation.php:122 -msgid "channel" -msgstr "el canal" - -#: ../../Zotlabs/Module/Like.php:152 -msgid "thing" -msgstr "elemento" - -#: ../../Zotlabs/Module/Like.php:198 -msgid "Channel unavailable." -msgstr "Canal no disponible." - -#: ../../Zotlabs/Module/Like.php:246 -msgid "Previous action reversed." -msgstr "Acción anterior revocada." - -#: ../../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" - -#: ../../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" - -#: ../../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/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" - -#: ../../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/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" - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Module/Like.php:572 -msgid "Action completed." -msgstr "Acción completada." - -#: ../../Zotlabs/Module/Like.php:573 -msgid "Thank you." -msgstr "Gracias." - -#: ../../Zotlabs/Module/Directory.php:116 -msgid "No default suggestions were found." -msgstr "No se encontraron sugerencias por defecto." - -#: ../../Zotlabs/Module/Directory.php:270 -#, php-format -msgid "%d rating" -msgid_plural "%d ratings" -msgstr[0] "%d valoración" -msgstr[1] "%d valoraciones" - -#: ../../Zotlabs/Module/Directory.php:281 -msgid "Gender: " -msgstr "Género:" - -#: ../../Zotlabs/Module/Directory.php:283 -msgid "Status: " -msgstr "Estado:" - -#: ../../Zotlabs/Module/Directory.php:285 -msgid "Homepage: " -msgstr "Página personal:" - -#: ../../Zotlabs/Module/Directory.php:334 ../../include/channel.php:1686 -msgid "Age:" -msgstr "Edad:" - -#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1513 -#: ../../include/event.php:62 ../../include/event.php:112 -msgid "Location:" -msgstr "Ubicación:" - -#: ../../Zotlabs/Module/Directory.php:345 -msgid "Description:" -msgstr "Descripción:" - -#: ../../Zotlabs/Module/Directory.php:350 ../../include/channel.php:1715 -msgid "Hometown:" -msgstr "Lugar de nacimiento:" - -#: ../../Zotlabs/Module/Directory.php:352 ../../include/channel.php:1721 -msgid "About:" -msgstr "Sobre mí:" - -#: ../../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" - -#: ../../Zotlabs/Module/Directory.php:354 -msgid "Public Forum:" -msgstr "Foro público:" - -#: ../../Zotlabs/Module/Directory.php:357 -msgid "Keywords: " -msgstr "Palabras clave:" - -#: ../../Zotlabs/Module/Directory.php:360 -msgid "Don't suggest" -msgstr "No sugerir:" - -#: ../../Zotlabs/Module/Directory.php:362 -msgid "Common connections (estimated):" -msgstr "Conexiones comunes (estimadas): " - -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Global Directory" -msgstr "Directorio global:" - -#: ../../Zotlabs/Module/Directory.php:411 -msgid "Local Directory" -msgstr "Directorio local:" - -#: ../../Zotlabs/Module/Directory.php:417 -msgid "Finding:" -msgstr "Encontrar:" - -#: ../../Zotlabs/Module/Directory.php:420 ../../Zotlabs/Module/Suggest.php:79 -#: ../../include/contact_widgets.php:24 -msgid "Channel Suggestions" -msgstr "Sugerencias de canales" - -#: ../../Zotlabs/Module/Directory.php:422 -msgid "next page" -msgstr "siguiente página" - -#: ../../Zotlabs/Module/Directory.php:422 -msgid "previous page" -msgstr "página anterior" - -#: ../../Zotlabs/Module/Directory.php:423 -msgid "Sort options" -msgstr "Ordenar opciones" - -#: ../../Zotlabs/Module/Directory.php:424 -msgid "Alphabetic" -msgstr "Alfabético" - -#: ../../Zotlabs/Module/Directory.php:425 -msgid "Reverse Alphabetic" -msgstr "Alfabético inverso" - -#: ../../Zotlabs/Module/Directory.php:426 -msgid "Newest to Oldest" -msgstr "De más nuevo a más antiguo" - -#: ../../Zotlabs/Module/Directory.php:427 -msgid "Oldest to Newest" -msgstr "De más antiguo a más nuevo" - -#: ../../Zotlabs/Module/Directory.php:444 -msgid "No entries (some entries may be hidden)." -msgstr "Sin entradas (algunas entradas pueden estar ocultas)." - -#: ../../Zotlabs/Module/Xchan.php:10 -msgid "Xchan Lookup" -msgstr "Búsqueda de canales" - -#: ../../Zotlabs/Module/Xchan.php:13 -msgid "Lookup xchan beginning with (or webbie): " -msgstr "Buscar un canal (o un \"webbie\") que comience por:" - -#: ../../Zotlabs/Module/Suggest.php:40 -msgid "Suggest Channels App" -msgstr "App Sugerencia de canales" - -#: ../../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/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/Module/Suggest.php:73 ../../Zotlabs/Widget/Suggestions.php:48 -msgid "Ignore/Hide" -msgstr "Ignorar/Ocultar" - -#: ../../Zotlabs/Module/Oexchange.php:27 -msgid "Unable to find your hub." -msgstr "No se puede encontrar su servidor." - -#: ../../Zotlabs/Module/Oexchange.php:41 -msgid "Post successful." -msgstr "Enviado con éxito." - -#: ../../Zotlabs/Module/Mail.php:77 -msgid "Unable to lookup recipient." -msgstr "No se puede asociar a un destinatario." - -#: ../../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/Module/Mail.php:91 -msgid "Cannot verify requested channel." -msgstr "No se puede verificar el canal solicitado." - -#: ../../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/Module/Mail.php:164 -msgid "Messages" -msgstr "Mensajes" - -#: ../../Zotlabs/Module/Mail.php:177 -msgid "message" -msgstr "mensaje" - -#: ../../Zotlabs/Module/Mail.php:218 -msgid "Message recalled." -msgstr "Mensaje revocado." - -#: ../../Zotlabs/Module/Mail.php:231 -msgid "Conversation removed." -msgstr "Conversación eliminada." - -#: ../../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/Module/Mail.php:274 -msgid "Requested channel is not in this network" -msgstr "El canal solicitado no existe en esta red" - -#: ../../Zotlabs/Module/Mail.php:282 -msgid "Send Private Message" -msgstr "Enviar un mensaje privado" - -#: ../../Zotlabs/Module/Mail.php:283 ../../Zotlabs/Module/Mail.php:426 -msgid "To:" -msgstr "Para:" - -#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:428 -msgid "Subject:" -msgstr "Asunto:" - -#: ../../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: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/Module/Mail.php:397 -msgid "Delete message" -msgstr "Borrar mensaje" - -#: ../../Zotlabs/Module/Mail.php:398 -msgid "Delivery report" -msgstr "Informe de transmisión" - -#: ../../Zotlabs/Module/Mail.php:399 -msgid "Recall message" -msgstr "Revocar el mensaje" - -#: ../../Zotlabs/Module/Mail.php:401 -msgid "Message has been recalled." -msgstr "El mensaje ha sido revocado." - -#: ../../Zotlabs/Module/Mail.php:419 -msgid "Delete Conversation" -msgstr "Eliminar conversación" - -#: ../../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/Module/Mail.php:425 -msgid "Send Reply" -msgstr "Responder" - -#: ../../Zotlabs/Module/Mail.php:430 -#, php-format -msgid "Your message for %s (%s):" -msgstr "Su mensaje para %s (%s):" - -#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12 -msgid "Public Hubs" -msgstr "Servidores públicos" - -#: ../../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/Module/Pubsites.php:33 -msgid "Hub URL" -msgstr "Dirección del hub" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Access Type" -msgstr "Tipo de acceso" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Registration Policy" -msgstr "Normas de registro" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Stats" -msgstr "Estadísticas" - -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Software" -msgstr "Software" - -#: ../../Zotlabs/Module/Pubsites.php:49 -msgid "Rate" -msgstr "Valorar" - -#: ../../Zotlabs/Module/Impel.php:43 ../../include/bbcode.php:288 -msgid "webpage" -msgstr "página web" - -#: ../../Zotlabs/Module/Impel.php:48 ../../include/bbcode.php:294 -msgid "block" -msgstr "bloque" - -#: ../../Zotlabs/Module/Impel.php:53 ../../include/bbcode.php:291 -msgid "layout" -msgstr "plantilla" - -#: ../../Zotlabs/Module/Impel.php:60 ../../include/bbcode.php:297 -msgid "menu" -msgstr "menú" - -#: ../../Zotlabs/Module/Impel.php:185 -#, php-format -msgid "%s element installed" -msgstr "%s elemento instalado" - -#: ../../Zotlabs/Module/Impel.php:188 -#, php-format -msgid "%s element installation failed" -msgstr "Elemento con instalación fallida: %s" - #: ../../Zotlabs/Module/Rbmark.php:94 msgid "Select a bookmark folder" msgstr "Seleccionar una carpeta de marcadores" @@ -7641,772 +14558,11 @@ msgstr "Dirección del marcador" msgid "Or enter new bookmark folder name" msgstr "O introduzca un nuevo nombre para la carpeta de marcadores" -#: ../../Zotlabs/Module/Filer.php:52 -msgid "Enter a folder name" -msgstr "Escriba un nombre de carpeta" - -#: ../../Zotlabs/Module/Filer.php:52 -msgid "or select an existing folder (doubleclick)" -msgstr "o seleccione una (con un doble click)" - -#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:182 -msgid "Save to Folder" -msgstr "Guardar en carpeta" - -#: ../../Zotlabs/Module/Probe.php:18 -msgid "Remote Diagnostics App" -msgstr "App Diagnósticos remotos" - -#: ../../Zotlabs/Module/Probe.php:19 -msgid "Perform diagnostics on remote channels" -msgstr "Realizar diagnósticos en canales remotos" - -#: ../../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/Module/Register.php:58 +#: ../../Zotlabs/Zot/Auth.php:152 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/Module/Register.php:92 -msgid "Passwords do not match." -msgstr "Las contraseñas no coinciden." - -#: ../../Zotlabs/Module/Register.php:135 -msgid "Registration successful. Continue to create your first channel..." -msgstr "Registro exitoso. Continúe creando tu primer canal..." - -#: ../../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/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/Module/Register.php:148 -msgid "Your registration can not be processed." -msgstr "Su registro no puede ser procesado." - -#: ../../Zotlabs/Module/Register.php:195 -msgid "Registration on this hub is disabled." -msgstr "El registro está deshabilitado en este sitio." - -#: ../../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/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/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/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/Module/Register.php:245 -#, php-format -msgid "I accept the %s for this website" -msgstr "Acepto los %s de este sitio" - -#: ../../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/Module/Register.php:257 -msgid "Your email address" -msgstr "Su dirección de correo electrónico" - -#: ../../Zotlabs/Module/Register.php:258 -msgid "Choose a password" -msgstr "Elija una contraseña" - -#: ../../Zotlabs/Module/Register.php:259 -msgid "Please re-enter your password" -msgstr "Por favor, vuelva a escribir su contraseña" - -#: ../../Zotlabs/Module/Register.php:260 -msgid "Please enter your invitation code" -msgstr "Por favor, introduzca el código de su invitación" - -#: ../../Zotlabs/Module/Register.php:261 -msgid "Your Name" -msgstr "Su nombre" - -#: ../../Zotlabs/Module/Register.php:261 -msgid "Real names are preferred." -msgstr "Se prefieren los nombres reales" - -#: ../../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/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/Module/Register.php:265 -msgid "no" -msgstr "no" - -#: ../../Zotlabs/Module/Register.php:265 -msgid "yes" -msgstr "sí" - -#: ../../Zotlabs/Module/Register.php:293 ../../boot.php:1656 -#: ../../include/nav.php:160 -msgid "Register" -msgstr "Registrarse" - -#: ../../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/Module/Cover_photo.php:194 -#: ../../Zotlabs/Module/Cover_photo.php:252 -msgid "Cover Photos" -msgstr "Imágenes de portada del perfil" - -#: ../../Zotlabs/Module/Cover_photo.php:303 ../../include/items.php:4667 -msgid "female" -msgstr "mujer" - -#: ../../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/Module/Cover_photo.php:305 ../../include/items.php:4669 -msgid "male" -msgstr "hombre" - -#: ../../Zotlabs/Module/Cover_photo.php:306 ../../include/items.php:4670 -#, php-format -msgid "%1$s updated his %2$s" -msgstr "%1$s ha actualizado su %2$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/Module/Cover_photo.php:310 ../../include/channel.php:2207 -msgid "cover photo" -msgstr "Imagen de portada del perfil" - -#: ../../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/Module/Cover_photo.php:428 -msgid "Change Cover Photo" -msgstr "Cambiar la foto de portada del perfil" - -#: ../../Zotlabs/Module/Help.php:23 -msgid "Documentation Search" -msgstr "Búsqueda de Documentación" - -#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:436 -msgid "About" -msgstr "Mi perfil" - -#: ../../Zotlabs/Module/Help.php:82 -msgid "Administrators" -msgstr "Administradores" - -#: ../../Zotlabs/Module/Help.php:83 -msgid "Developers" -msgstr "Desarrolladores" - -#: ../../Zotlabs/Module/Help.php:84 -msgid "Tutorials" -msgstr "Tutoriales" - -#: ../../Zotlabs/Module/Help.php:95 -msgid "$Projectname Documentation" -msgstr "Documentación de $Projectname" - -#: ../../Zotlabs/Module/Help.php:96 -msgid "Contents" -msgstr "Contenidos" - -#: ../../Zotlabs/Module/Display.php:396 -msgid "Article" -msgstr "Artículo" - -#: ../../Zotlabs/Module/Display.php:448 -msgid "Item has been removed." -msgstr "Se ha eliminado el elemento." - -#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 -msgid "Tag removed" -msgstr "Etiqueta eliminada." - -#: ../../Zotlabs/Module/Tagrm.php:123 -msgid "Remove Item Tag" -msgstr "Eliminar etiqueta del elemento." - -#: ../../Zotlabs/Module/Tagrm.php:125 -msgid "Select a tag to remove: " -msgstr "Seleccionar una etiqueta para eliminar:" - -#: ../../Zotlabs/Module/Network.php:109 -msgid "No such group" -msgstr "No se encuentra el grupo" - -#: ../../Zotlabs/Module/Network.php:158 -msgid "No such channel" -msgstr "No se encuentra el canal" - -#: ../../Zotlabs/Module/Network.php:242 -msgid "Privacy group is empty" -msgstr "El grupo de canales está vacío" - -#: ../../Zotlabs/Module/Network.php:252 -msgid "Privacy group: " -msgstr "Grupo de canales: " - -#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29 -msgid "Invalid channel." -msgstr "El canal no es válido." - -#: ../../Zotlabs/Module/Acl.php:360 -msgid "network" -msgstr "red" - -#: ../../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/Module/Home.php:90 -#, php-format -msgid "Welcome to %s" -msgstr "Bienvenido a %s" - -#: ../../Zotlabs/Module/Filestorage.php:103 -msgid "File not found." -msgstr "Fichero no encontrado." - -#: ../../Zotlabs/Module/Filestorage.php:152 -msgid "Permission Denied." -msgstr "Permiso denegado" - -#: ../../Zotlabs/Module/Filestorage.php:185 -msgid "Edit file permissions" -msgstr "Modificar los permisos del fichero" - -#: ../../Zotlabs/Module/Filestorage.php:197 -#: ../../addon/flashcards/Mod_Flashcards.php:217 -msgid "Set/edit permissions" -msgstr "Establecer/editar los permisos" - -#: ../../Zotlabs/Module/Filestorage.php:198 -msgid "Include all files and sub folders" -msgstr "Incluir todos los ficheros y subcarpetas" - -#: ../../Zotlabs/Module/Filestorage.php:199 -msgid "Return to file list" -msgstr "Volver a la lista de ficheros" - -#: ../../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/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/Module/Filestorage.php:204 -msgid "Share this file" -msgstr "Compartir este fichero" - -#: ../../Zotlabs/Module/Filestorage.php:205 -msgid "Show URL to this file" -msgstr "Mostrar la dirección de este fichero" - -#: ../../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/Module/Common.php:14 -msgid "No channel." -msgstr "Ningún canal." - -#: ../../Zotlabs/Module/Common.php:45 -msgid "No connections in common." -msgstr "Ninguna conexión en común." - -#: ../../Zotlabs/Module/Common.php:65 -msgid "View Common Connections" -msgstr "Ver las conexiones comunes" - -#: ../../Zotlabs/Module/Email_resend.php:30 -msgid "Email verification resent" -msgstr "Reenvío del email de verificació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/Module/Viewconnections.php:65 -msgid "No connections." -msgstr "Sin conexiones." - -#: ../../Zotlabs/Module/Viewconnections.php:83 -#, php-format -msgid "Visit %s's profile [%s]" -msgstr "Visitar el perfil de %s [%s]" - -#: ../../Zotlabs/Module/Viewconnections.php:113 -msgid "View Connections" -msgstr "Ver conexiones" - -#: ../../Zotlabs/Module/Admin.php:97 -msgid "Blocked accounts" -msgstr "Cuentas bloqueadas" - -#: ../../Zotlabs/Module/Admin.php:98 -msgid "Expired accounts" -msgstr "Cuentas caducadas" - -#: ../../Zotlabs/Module/Admin.php:99 -msgid "Expiring accounts" -msgstr "Cuentas que caducan" - -#: ../../Zotlabs/Module/Admin.php:120 -msgid "Message queues" -msgstr "Mensajes en cola" - -#: ../../Zotlabs/Module/Admin.php:134 -msgid "Your software should be updated" -msgstr "Debe actualizar su software" - -#: ../../Zotlabs/Module/Admin.php:139 -msgid "Summary" -msgstr "Sumario" - -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Registered accounts" -msgstr "Cuentas registradas" - -#: ../../Zotlabs/Module/Admin.php:143 -msgid "Pending registrations" -msgstr "Registros pendientes" - -#: ../../Zotlabs/Module/Admin.php:144 -msgid "Registered channels" -msgstr "Canales registrados" - -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Active addons" -msgstr "Addons acivos" - -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Version" -msgstr "Versión" - -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Repository version (master)" -msgstr "Versión del repositorio (master)" - -#: ../../Zotlabs/Module/Admin.php:148 -msgid "Repository version (dev)" -msgstr "Versión del repositorio (dev)" - -#: ../../Zotlabs/Module/Service_limits.php:23 -msgid "No service class restrictions found." -msgstr "No se han encontrado restricciones sobre esta clase de servicio." - -#: ../../Zotlabs/Module/Rate.php:156 -msgid "Website:" -msgstr "Sitio web:" - -#: ../../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/Module/Rate.php:160 -msgid "Rating (this information is public)" -msgstr "Valoración (esta información es pública)" - -#: ../../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/Module/Card_edit.php:128 -msgid "Edit Card" -msgstr "Editar la ficha" - -#: ../../Zotlabs/Module/Lostpass.php:19 -msgid "No valid account found." -msgstr "No se ha encontrado una cuenta válida." - -#: ../../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/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 -#, php-format -msgid "Site Member (%s)" -msgstr "Usuario del sitio (%s)" - -#: ../../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/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/Module/Lostpass.php:91 ../../boot.php:1685 -msgid "Password Reset" -msgstr "Restablecer la contraseña" - -#: ../../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" - -#: ../../Zotlabs/Module/Lostpass.php:95 -msgid "click here to login" -msgstr "pulse aquí para conectarse" - -#: ../../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/Module/Lostpass.php:117 -#, php-format -msgid "Your password has changed at %s" -msgstr "Su contraseña en %s ha sido cambiada" - -#: ../../Zotlabs/Module/Lostpass.php:130 -msgid "Forgot your Password?" -msgstr "¿Ha olvidado su contraseña?" - -#: ../../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/Module/Lostpass.php:132 -msgid "Email Address" -msgstr "Dirección de correo electrónico" - -#: ../../Zotlabs/Module/Oauth.php:45 -msgid "Name is required" -msgstr "El nombre es obligatorio" - -#: ../../Zotlabs/Module/Oauth.php:49 -msgid "Key and Secret are required" -msgstr "\"Key\" y \"Secret\" son obligatorios" - -#: ../../Zotlabs/Module/Oauth.php:100 -msgid "OAuth Apps Manager App" -msgstr "App Gestión de apps OAuth" - -#: ../../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/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/Oauth.php:117 ../../Zotlabs/Module/Oauth.php:143 -msgid "Icon url" -msgstr "Dirección del icono" - -#: ../../Zotlabs/Module/Oauth.php:128 -msgid "Application not found." -msgstr "Aplicación no encontrada." - -#: ../../Zotlabs/Module/Oauth.php:171 -msgid "Connected OAuth Apps" -msgstr "Apps OAuth conectadas" - -#: ../../Zotlabs/Module/Notifications.php:60 -#: ../../Zotlabs/Lib/ThreadItem.php:450 -msgid "Mark all seen" -msgstr "Marcar todo como visto" - -#: ../../Zotlabs/Lib/Activity.php:1559 -#, php-format -msgid "Likes %1$s's %2$s" -msgstr "Gusta de %2$sde %1$s" - -#: ../../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/Lib/Activity.php:1565 -#, php-format -msgid "Will attend %1$s's %2$s" -msgstr "Asistirá %2$sde %1$s" - -#: ../../Zotlabs/Lib/Activity.php:1568 -#, php-format -msgid "Will not attend %1$s's %2$s" -msgstr "No asistirá %2$sde %1$s" - -#: ../../Zotlabs/Lib/Activity.php:1571 -#, php-format -msgid "May attend %1$s's %2$s" -msgstr "Puede asistir %2$sde %1$s" - -#: ../../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/Lib/Techlevels.php:10 -msgid "0. Beginner/Basic" -msgstr "0. Principiante/Básico" - -#: ../../Zotlabs/Lib/Techlevels.php:11 -msgid "1. Novice - not skilled but willing to learn" -msgstr "1. Novato: no cualificado, pero dispuesto a aprender" - -#: ../../Zotlabs/Lib/Techlevels.php:12 -msgid "2. Intermediate - somewhat comfortable" -msgstr "2. Intermedio - algo cómodo" - -#: ../../Zotlabs/Lib/Techlevels.php:13 -msgid "3. Advanced - very comfortable" -msgstr "3. Avanzado - muy cómodo" - -#: ../../Zotlabs/Lib/Techlevels.php:14 -msgid "4. Expert - I can write computer code" -msgstr "4. Experto - Puedo escribir código informático" - -#: ../../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/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/Lib/Apps.php:322 -msgid "Apps" -msgstr "Aplicaciones (apps)" - -#: ../../Zotlabs/Lib/Apps.php:323 -msgid "Affinity Tool" -msgstr "Herramienta de afinidad" - -#: ../../Zotlabs/Lib/Apps.php:326 -msgid "Site Admin" -msgstr "Administrador del sitio" - -#: ../../Zotlabs/Lib/Apps.php:327 ../../addon/buglink/buglink.php:16 -msgid "Report Bug" -msgstr "Informe de errores" - -#: ../../Zotlabs/Lib/Apps.php:328 ../../include/nav.php:492 -msgid "Bookmarks" -msgstr "Marcadores" - -#: ../../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/Lib/Apps.php:330 -msgid "Content Filter" -msgstr "Filtro de contenido" - -#: ../../Zotlabs/Lib/Apps.php:331 -#: ../../addon/content_import/Mod_content_import.php:135 -msgid "Content Import" -msgstr "Importación de contenidos" - -#: ../../Zotlabs/Lib/Apps.php:333 -msgid "Remote Diagnostics" -msgstr "Diagnóstico remoto" - -#: ../../Zotlabs/Lib/Apps.php:334 -msgid "Suggest Channels" -msgstr "Sugerir canales" - -#: ../../Zotlabs/Lib/Apps.php:335 ../../boot.php:1676 -#: ../../include/nav.php:122 ../../include/nav.php:126 -msgid "Login" -msgstr "Iniciar sesión" - -#: ../../Zotlabs/Lib/Apps.php:337 -msgid "Stream" -msgstr "Stream" - -#: ../../Zotlabs/Lib/Apps.php:341 ../../include/nav.php:541 -msgid "Wiki" -msgstr "Wiki" - -#: ../../Zotlabs/Lib/Apps.php:342 ../../include/features.php:104 -msgid "Channel Home" -msgstr "Mi canal" - -#: ../../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/Lib/Apps.php:346 ../../include/features.php:192 -msgid "Directory" -msgstr "Directorio" - -#: ../../Zotlabs/Lib/Apps.php:348 -msgid "Mail" -msgstr "Correo" - -#: ../../Zotlabs/Lib/Apps.php:351 -msgid "Chat" -msgstr "Chat" - -#: ../../Zotlabs/Lib/Apps.php:353 -msgid "Probe" -msgstr "Probar" - -#: ../../Zotlabs/Lib/Apps.php:354 -msgid "Suggest" -msgstr "Sugerir" - -#: ../../Zotlabs/Lib/Apps.php:355 -msgid "Random Channel" -msgstr "Canal aleatorio" - -#: ../../Zotlabs/Lib/Apps.php:356 -msgid "Invite" -msgstr "Invitar" - -#: ../../Zotlabs/Lib/Apps.php:357 ../../Zotlabs/Widget/Admin.php:26 -msgid "Features" -msgstr "Funcionalidades" - -#: ../../Zotlabs/Lib/Apps.php:358 ../../addon/openid/MysqlProvider.php:69 -msgid "Language" -msgstr "Idioma" - -#: ../../Zotlabs/Lib/Apps.php:359 -msgid "Post" -msgstr "Publicación" - -#: ../../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/Lib/Apps.php:362 ../../include/features.php:375 -msgid "Profiles" -msgstr "Perfiles" - -#: ../../Zotlabs/Lib/Apps.php:364 -msgid "Notifications" -msgstr "Notificaciones" - -#: ../../Zotlabs/Lib/Apps.php:365 -msgid "Order Apps" -msgstr "Ordenar las apps" - -#: ../../Zotlabs/Lib/Apps.php:366 -msgid "CardDAV" -msgstr "CardDAV" - -#: ../../Zotlabs/Lib/Apps.php:368 -msgid "Guest Access" -msgstr "Acceso para invitados" - -#: ../../Zotlabs/Lib/Apps.php:369 ../../Zotlabs/Widget/Notes.php:21 -msgid "Notes" -msgstr "Notas" - -#: ../../Zotlabs/Lib/Apps.php:370 -msgid "OAuth Apps Manager" -msgstr "Administrador de apps OAuth" - -#: ../../Zotlabs/Lib/Apps.php:371 -msgid "OAuth2 Apps Manager" -msgstr "Administrador de apps OAuth2" - -#: ../../Zotlabs/Lib/Apps.php:372 -msgid "PDL Editor" -msgstr "Editor PDL" - -#: ../../Zotlabs/Lib/Apps.php:374 -msgid "Premium Channel" -msgstr "Canal premium" - -#: ../../Zotlabs/Lib/Apps.php:376 -msgid "My Chatrooms" -msgstr "Mis salas de chat" - -#: ../../Zotlabs/Lib/Apps.php:377 -msgid "Channel Export" -msgstr "Exportar canal" - -#: ../../Zotlabs/Lib/Apps.php:554 -msgid "Purchase" -msgstr "Comprar" - -#: ../../Zotlabs/Lib/Apps.php:559 -msgid "Undelete" -msgstr "Recuperar" - -#: ../../Zotlabs/Lib/Apps.php:568 -msgid "Add to app-tray" -msgstr "Añadir a la bandeja de aplicaciones" - -#: ../../Zotlabs/Lib/Apps.php:569 -msgid "Remove from app-tray" -msgstr "Quitar de la bandeja de aplicaciones" - -#: ../../Zotlabs/Lib/Apps.php:570 -msgid "Pin to navbar" -msgstr "Fijar en la barra de navegación" - -#: ../../Zotlabs/Lib/Apps.php:571 -msgid "Unpin from navbar" -msgstr "Quitar de la barra de navegación" +"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/Lib/Permcat.php:82 msgctxt "permcat" @@ -8428,238 +14584,39 @@ msgctxt "permcat" msgid "publisher" msgstr "editor" -#: ../../Zotlabs/Lib/NativeWikiPage.php:42 -#: ../../Zotlabs/Lib/NativeWikiPage.php:94 -msgid "(No Title)" -msgstr "(Sin título)" - -#: ../../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/Lib/NativeWikiPage.php:122 -msgid "Wiki not found." -msgstr "No se ha encontrado el wiki." - -#: ../../Zotlabs/Lib/NativeWikiPage.php:133 -msgid "Destination name already exists" -msgstr "El nombre de destino ya existe" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:166 -#: ../../Zotlabs/Lib/NativeWikiPage.php:362 -msgid "Page not found" -msgstr "No se ha encontrado la página" - -#: ../../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/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/Lib/NativeWikiPage.php:390 -msgid "Page update failed." -msgstr "Se ha producido un error al actualizar la página." - -#: ../../Zotlabs/Lib/NativeWikiPage.php:424 -msgid "Nothing deleted" -msgstr "No se ha eliminado nada" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:490 -msgid "Compare: object not found." -msgstr "No se ha encontrado un objeto para comparar." - -#: ../../Zotlabs/Lib/NativeWikiPage.php:496 -msgid "Page updated" -msgstr "Se ha actualizado la página" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:499 -msgid "Untitled" -msgstr "Sin título" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:505 -msgid "Wiki resource_id required for git commit" -msgstr "Se necesita Wiki resource_id para el git commit" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:562 -#: ../../Zotlabs/Widget/Wiki_page_history.php:23 -msgctxt "wiki_history" -msgid "Message" -msgstr "Mensaje" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:563 -#: ../../Zotlabs/Widget/Wiki_page_history.php:24 -msgid "Date" -msgstr "Fecha" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:565 -#: ../../Zotlabs/Widget/Wiki_page_history.php:26 -msgid "Compare" -msgstr "Comparar" - -#: ../../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/Lib/PermissionDescription.php:34 -#: ../../include/acl_selectors.php:33 -msgid "Visible to your default audience" -msgstr "Visible para su público predeterminado." - -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../include/acl_selectors.php:106 -msgid "Only me" -msgstr "Sólo yo" - -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Public" -msgstr "Público" - -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -msgid "Anybody in the $Projectname network" -msgstr "Cualquiera en la red $Projectname" - -#: ../../Zotlabs/Lib/PermissionDescription.php:110 +#: ../../Zotlabs/Lib/Activity.php:1656 #, php-format -msgid "Any account on %s" -msgstr "Cualquier cuenta en %s" +msgid "Likes %1$s's %2$s" +msgstr "Gusta de %2$sde %1$s" -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Any of my connections" -msgstr "Cualquiera de mis conexiones" - -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Only connections I specifically allow" -msgstr "Sólo las conexiones que yo permita de forma explícita" - -#: ../../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/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/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." - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../include/dir_fns.php:143 -msgid "Safe Mode" -msgstr "Modo seguro" - -#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../include/dir_fns.php:144 -msgid "Public Forums Only" -msgstr "Solo foros públicos" - -#: ../../Zotlabs/Lib/Libzotdir.php:165 ../../include/dir_fns.php:145 -msgid "This Website Only" -msgstr "Solo este sitio web" - -#: ../../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/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/Lib/Group.php:302 ../../include/group.php:298 -msgid "edit" -msgstr "editar" - -#: ../../Zotlabs/Lib/Group.php:325 ../../include/group.php:321 -msgid "Edit group" -msgstr "Editar grupo" - -#: ../../Zotlabs/Lib/Group.php:326 ../../include/group.php:322 -msgid "Add privacy group" -msgstr "Añadir un grupo de canales" - -#: ../../Zotlabs/Lib/Group.php:327 ../../include/group.php:323 -msgid "Channels not in any privacy group" -msgstr "Sin canales en ningún grupo" - -#: ../../Zotlabs/Lib/Group.php:329 ../../Zotlabs/Widget/Savedsearch.php:84 -#: ../../include/group.php:325 -msgid "add" -msgstr "añadir" - -#: ../../Zotlabs/Lib/Chatroom.php:23 -msgid "Missing room name" -msgstr "Sala de chat sin nombre" - -#: ../../Zotlabs/Lib/Chatroom.php:32 -msgid "Duplicate room name" -msgstr "Nombre de sala duplicado." - -#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 -msgid "Invalid room specifier." -msgstr "Especificador de sala no válido." - -#: ../../Zotlabs/Lib/Chatroom.php:122 -msgid "Room not found." -msgstr "Sala no encontrada." - -#: ../../Zotlabs/Lib/Chatroom.php:143 -msgid "Room is full" -msgstr "La sala está llena." - -#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2632 +#: ../../Zotlabs/Lib/Activity.php:1659 #, php-format -msgid "Unable to verify site signature for %s" -msgstr "No ha sido posible de verificar la firma del sitio para %s" +msgid "Doesn't like %1$s's %2$s" +msgstr "No le gusta %2$sde %1$s" + +#: ../../Zotlabs/Lib/Activity.php:1662 +#, php-format +msgid "Will attend %1$s's %2$s" +msgstr "Asistirá %2$sde %1$s" + +#: ../../Zotlabs/Lib/Activity.php:1665 +#, php-format +msgid "Will not attend %1$s's %2$s" +msgstr "No asistirá %2$sde %1$s" + +#: ../../Zotlabs/Lib/Activity.php:1668 +#, php-format +msgid "May attend %1$s's %2$s" +msgstr "Puede asistir %2$sde %1$s" #: ../../Zotlabs/Lib/Enotify.php:60 msgid "$Projectname Notification" msgstr "Notificación de $Projectname" -#: ../../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/Lib/Enotify.php:63 msgid "Thank You," msgstr "Gracias," -#: ../../Zotlabs/Lib/Enotify.php:65 ../../addon/hubwall/hubwall.php:33 -#, php-format -msgid "%s Administrator" -msgstr "%s Administrador" - #: ../../Zotlabs/Lib/Enotify.php:66 #, php-format msgid "This email was sent by %1$s at %2$s." @@ -8908,12 +14865,32 @@ msgstr "repetida la entrada de %s" #: ../../Zotlabs/Lib/Enotify.php:821 #, php-format msgid "edited a post dated %s" -msgstr "ha editado una entrada fechada el %s" +msgstr "ha editado una entrada con fecha de %s" #: ../../Zotlabs/Lib/Enotify.php:825 #, php-format msgid "edited a comment dated %s" -msgstr "ha editado un comentario fechado el %s" +msgstr "ha editado un comentario con fecha de %s" + +#: ../../Zotlabs/Lib/Chatroom.php:23 +msgid "Missing room name" +msgstr "Sala de chat sin nombre" + +#: ../../Zotlabs/Lib/Chatroom.php:32 +msgid "Duplicate room name" +msgstr "Nombre de sala duplicado." + +#: ../../Zotlabs/Lib/Chatroom.php:82 ../../Zotlabs/Lib/Chatroom.php:90 +msgid "Invalid room specifier." +msgstr "Especificador de sala no válido." + +#: ../../Zotlabs/Lib/Chatroom.php:122 +msgid "Room not found." +msgstr "Sala no encontrada." + +#: ../../Zotlabs/Lib/Chatroom.php:143 +msgid "Room is full" +msgstr "La sala está llena." #: ../../Zotlabs/Lib/NativeWiki.php:143 msgid "Wiki updated successfully" @@ -8923,23 +14900,206 @@ msgstr "El wiki se ha actualizado con éxito" msgid "Wiki files deleted successfully" msgstr "Se han borrado con éxito los ficheros del wiki" -#: ../../Zotlabs/Lib/DB_Upgrade.php:67 -msgid "Source code of failed update: " -msgstr "Código fuente de la actualización fallida: " +#: ../../Zotlabs/Lib/Apps.php:322 +msgid "Apps" +msgstr "Aplicaciones (apps)" -#: ../../Zotlabs/Lib/DB_Upgrade.php:88 -#, php-format -msgid "Update Error at %s" -msgstr "Error de actualización en %s" +#: ../../Zotlabs/Lib/Apps.php:323 +msgid "Affinity Tool" +msgstr "Herramienta de afinidad" -#: ../../Zotlabs/Lib/DB_Upgrade.php:94 -#, php-format -msgid "Update %s failed. See error logs." -msgstr "La actualización %s ha fallado. Mire el informe de errores." +#: ../../Zotlabs/Lib/Apps.php:326 +msgid "Site Admin" +msgstr "Administrador del sitio" -#: ../../Zotlabs/Lib/ThreadItem.php:103 ../../include/conversation.php:700 -msgid "Private Message" -msgstr "Mensaje Privado" +#: ../../Zotlabs/Lib/Apps.php:330 +msgid "Content Filter" +msgstr "Filtro de contenido" + +#: ../../Zotlabs/Lib/Apps.php:333 +msgid "Remote Diagnostics" +msgstr "Diagnóstico remoto" + +#: ../../Zotlabs/Lib/Apps.php:334 +msgid "Suggest Channels" +msgstr "Sugerir canales" + +#: ../../Zotlabs/Lib/Apps.php:337 +msgid "Stream" +msgstr "Stream" + +#: ../../Zotlabs/Lib/Apps.php:348 +msgid "Mail" +msgstr "Correo" + +#: ../../Zotlabs/Lib/Apps.php:351 +msgid "Chat" +msgstr "Chat" + +#: ../../Zotlabs/Lib/Apps.php:353 +msgid "Probe" +msgstr "Probar" + +#: ../../Zotlabs/Lib/Apps.php:354 +msgid "Suggest" +msgstr "Sugerir" + +#: ../../Zotlabs/Lib/Apps.php:355 +msgid "Random Channel" +msgstr "Canal aleatorio" + +#: ../../Zotlabs/Lib/Apps.php:356 +msgid "Invite" +msgstr "Invitar" + +#: ../../Zotlabs/Lib/Apps.php:359 +msgid "Post" +msgstr "Publicación" + +#: ../../Zotlabs/Lib/Apps.php:364 +msgid "Notifications" +msgstr "Notificaciones" + +#: ../../Zotlabs/Lib/Apps.php:365 +msgid "Order Apps" +msgstr "Ordenar las apps" + +#: ../../Zotlabs/Lib/Apps.php:366 +msgid "CardDAV" +msgstr "CardDAV" + +#: ../../Zotlabs/Lib/Apps.php:368 +msgid "Guest Access" +msgstr "Acceso para invitados" + +#: ../../Zotlabs/Lib/Apps.php:370 +msgid "OAuth Apps Manager" +msgstr "Administrador de apps OAuth" + +#: ../../Zotlabs/Lib/Apps.php:371 +msgid "OAuth2 Apps Manager" +msgstr "Administrador de apps OAuth2" + +#: ../../Zotlabs/Lib/Apps.php:372 +msgid "PDL Editor" +msgstr "Editor PDL" + +#: ../../Zotlabs/Lib/Apps.php:374 +msgid "Premium Channel" +msgstr "Canal premium" + +#: ../../Zotlabs/Lib/Apps.php:376 +msgid "My Chatrooms" +msgstr "Mis salas de chat" + +#: ../../Zotlabs/Lib/Apps.php:377 +msgid "Channel Export" +msgstr "Exportar canal" + +#: ../../Zotlabs/Lib/Apps.php:554 +msgid "Purchase" +msgstr "Comprar" + +#: ../../Zotlabs/Lib/Apps.php:559 +msgid "Undelete" +msgstr "Recuperar" + +#: ../../Zotlabs/Lib/Apps.php:568 +msgid "Add to app-tray" +msgstr "Añadir a la bandeja de aplicaciones" + +#: ../../Zotlabs/Lib/Apps.php:569 +msgid "Remove from app-tray" +msgstr "Quitar de la bandeja de aplicaciones" + +#: ../../Zotlabs/Lib/Apps.php:570 +msgid "Pin to navbar" +msgstr "Fijar en la barra de navegación" + +#: ../../Zotlabs/Lib/Apps.php:571 +msgid "Unpin from navbar" +msgstr "Quitar de la barra de navegación" + +#: ../../Zotlabs/Lib/Techlevels.php:10 +msgid "0. Beginner/Basic" +msgstr "0. Principiante/Básico" + +#: ../../Zotlabs/Lib/Techlevels.php:11 +msgid "1. Novice - not skilled but willing to learn" +msgstr "1. Novato: no cualificado, pero dispuesto a aprender" + +#: ../../Zotlabs/Lib/Techlevels.php:12 +msgid "2. Intermediate - somewhat comfortable" +msgstr "2. Intermedio - algo cómodo" + +#: ../../Zotlabs/Lib/Techlevels.php:13 +msgid "3. Advanced - very comfortable" +msgstr "3. Avanzado - muy cómodo" + +#: ../../Zotlabs/Lib/Techlevels.php:14 +msgid "4. Expert - I can write computer code" +msgstr "4. Experto - Puedo escribir código informático" + +#: ../../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/Lib/NativeWikiPage.php:42 +#: ../../Zotlabs/Lib/NativeWikiPage.php:94 +msgid "(No Title)" +msgstr "(Sin título)" + +#: ../../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/Lib/NativeWikiPage.php:122 +msgid "Wiki not found." +msgstr "No se ha encontrado el wiki." + +#: ../../Zotlabs/Lib/NativeWikiPage.php:133 +msgid "Destination name already exists" +msgstr "El nombre de destino ya existe" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:166 +#: ../../Zotlabs/Lib/NativeWikiPage.php:362 +msgid "Page not found" +msgstr "No se ha encontrado la página" + +#: ../../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/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/Lib/NativeWikiPage.php:390 +msgid "Page update failed." +msgstr "Se ha producido un error al actualizar la página." + +#: ../../Zotlabs/Lib/NativeWikiPage.php:424 +msgid "Nothing deleted" +msgstr "No se ha eliminado nada" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:490 +msgid "Compare: object not found." +msgstr "No se ha encontrado un objeto para comparar." + +#: ../../Zotlabs/Lib/NativeWikiPage.php:496 +msgid "Page updated" +msgstr "Se ha actualizado la página" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:499 +msgid "Untitled" +msgstr "Sin título" + +#: ../../Zotlabs/Lib/NativeWikiPage.php:505 +msgid "Wiki resource_id required for git commit" +msgstr "Se necesita Wiki resource_id para el git commit" #: ../../Zotlabs/Lib/ThreadItem.php:130 msgid "Privacy conflict. Discretion advised." @@ -8949,10 +15109,6 @@ msgstr "Conflicto de privacidad. Se aconseja discreción." msgid "Admin Delete" msgstr "Eliminar admin" -#: ../../Zotlabs/Lib/ThreadItem.php:178 ../../include/conversation.php:690 -msgid "Select" -msgstr "Seleccionar" - #: ../../Zotlabs/Lib/ThreadItem.php:203 msgid "I will attend" msgstr "Participaré" @@ -8977,34 +15133,10 @@ msgstr "No estoy de acuerdo" msgid "I abstain" msgstr "Me abstengo" -#: ../../Zotlabs/Lib/ThreadItem.php:267 ../../include/conversation.php:695 -msgid "Toggle Star Status" -msgstr "Activar o desactivar el estado de entrada preferida" - -#: ../../Zotlabs/Lib/ThreadItem.php:278 ../../include/conversation.php:707 -msgid "Message signature validated" -msgstr "Firma de mensaje validada" - -#: ../../Zotlabs/Lib/ThreadItem.php:279 ../../include/conversation.php:708 -msgid "Message signature incorrect" -msgstr "Firma de mensaje incorrecta" - #: ../../Zotlabs/Lib/ThreadItem.php:287 msgid "Add Tag" msgstr "Añadir etiqueta" -#: ../../Zotlabs/Lib/ThreadItem.php:291 ../../include/conversation.php:891 -msgid "Conversation Tools" -msgstr "Herramientas de conversación" - -#: ../../Zotlabs/Lib/ThreadItem.php:307 ../../include/taxonomy.php:573 -msgid "like" -msgstr "me gusta" - -#: ../../Zotlabs/Lib/ThreadItem.php:308 ../../include/taxonomy.php:574 -msgid "dislike" -msgstr "no me gusta" - #: ../../Zotlabs/Lib/ThreadItem.php:309 msgid "Reply on this comment" msgstr "Responder a este comentario" @@ -9057,21 +15189,6 @@ msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")" msgid "via Wall-To-Wall:" msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:401 ../../include/conversation.php:766 -#, php-format -msgid "from %s" -msgstr "desde %s" - -#: ../../Zotlabs/Lib/ThreadItem.php:404 ../../include/conversation.php:769 -#, php-format -msgid "last edited: %s" -msgstr "último cambio: %s" - -#: ../../Zotlabs/Lib/ThreadItem.php:405 ../../include/conversation.php:770 -#, php-format -msgid "Expires: %s" -msgstr "Caduca: %s" - #: ../../Zotlabs/Lib/ThreadItem.php:413 msgid "Attend" msgstr "Participar o asistir" @@ -9092,58 +15209,14 @@ msgstr "Opciones de votación" msgid "Go to previous comment" msgstr "Ir al comentario anterior" -#: ../../Zotlabs/Lib/ThreadItem.php:440 -#: ../../addon/bookmarker/bookmarker.php:38 -msgid "Save Bookmarks" -msgstr "Guardar en Marcadores" - #: ../../Zotlabs/Lib/ThreadItem.php:441 msgid "Add to Calendar" msgstr "Añadir al calendario" -#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../include/conversation.php:483 -msgid "This is an unsaved preview" -msgstr "Esta es una previsualización sin guardar" - -#: ../../Zotlabs/Lib/ThreadItem.php:502 ../../include/js_strings.php:7 -#, php-format -msgid "%s show all" -msgstr "%s mostrar todo" - -#: ../../Zotlabs/Lib/ThreadItem.php:797 ../../addon/hsse/hsse.php:200 -#: ../../include/conversation.php:1406 -msgid "Bold" -msgstr "Negrita" - -#: ../../Zotlabs/Lib/ThreadItem.php:798 ../../addon/hsse/hsse.php:201 -#: ../../include/conversation.php:1407 -msgid "Italic" -msgstr "Itálico " - -#: ../../Zotlabs/Lib/ThreadItem.php:799 ../../addon/hsse/hsse.php:202 -#: ../../include/conversation.php:1408 -msgid "Underline" -msgstr "Subrayar" - -#: ../../Zotlabs/Lib/ThreadItem.php:800 ../../addon/hsse/hsse.php:203 -#: ../../include/conversation.php:1409 -msgid "Quote" -msgstr "Citar" - -#: ../../Zotlabs/Lib/ThreadItem.php:801 ../../addon/hsse/hsse.php:204 -#: ../../include/conversation.php:1410 -msgid "Code" -msgstr "Código" - #: ../../Zotlabs/Lib/ThreadItem.php:802 msgid "Image" msgstr "Imagen" -#: ../../Zotlabs/Lib/ThreadItem.php:803 ../../addon/hsse/hsse.php:205 -#: ../../include/conversation.php:1411 -msgid "Attach/Upload file" -msgstr "Adjuntar/cargar fichero" - #: ../../Zotlabs/Lib/ThreadItem.php:804 msgid "Insert Link" msgstr "Insertar enlace" @@ -9164,26 +15237,213 @@ msgstr "Su dirección de correo electrónico (requerido)" msgid "Your website URL (optional)" msgstr "La URL de su sitio web (opcional)" -#: ../../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/Lib/DB_Upgrade.php:67 +msgid "Source code of failed update: " +msgstr "Código fuente de la actualización fallida: " -#: ../../Zotlabs/Zot/Auth.php:264 ../../addon/openid/Mod_Openid.php:76 -#: ../../addon/openid/Mod_Openid.php:178 +#: ../../Zotlabs/Lib/DB_Upgrade.php:88 #, php-format -msgid "Welcome %s. Remote authentication successful." -msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente." +msgid "Update Error at %s" +msgstr "Error de actualización en %s" + +#: ../../Zotlabs/Lib/DB_Upgrade.php:94 +#, php-format +msgid "Update %s failed. See error logs." +msgstr "La actualización %s ha fallado. Mire el informe de errores." + +#: ../../Zotlabs/Lib/PermissionDescription.php:108 +msgid "Public" +msgstr "Público" + +#: ../../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 "Any account on %s" +msgstr "Cualquier cuenta en %s" + +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" +msgstr "Cualquiera de mis conexiones" + +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" +msgstr "Sólo las conexiones que yo permita de forma explícita" + +#: ../../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/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/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." + +#: ../../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" + +#: ../../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" + +#: ../../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" + +#: ../../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/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:307 +msgid "Custom/Expert Mode" +msgstr "Modo personalizado/experto" + +#: ../../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/Storage/Browser.php:107 ../../Zotlabs/Storage/Browser.php:295 msgid "parent" msgstr "padre" -#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2952 -msgid "Collection" -msgstr "Colección" - #: ../../Zotlabs/Storage/Browser.php:134 msgid "Principal" msgstr "Principal" @@ -9238,6262 +15498,40 @@ msgstr "Subir fichero" msgid "Drop files here to immediately upload" msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata" -#: ../../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/Widget/Cdav.php:37 -msgid "Select Channel" -msgstr "Seleccionar un canal" - -#: ../../Zotlabs/Widget/Cdav.php:42 -msgid "Read-write" -msgstr "Lectura y escritura" - -#: ../../Zotlabs/Widget/Cdav.php:43 -msgid "Read-only" -msgstr "Sólo lectura" - -#: ../../Zotlabs/Widget/Cdav.php:127 -msgid "Channel Calendar" -msgstr "Calendario del canal" - -#: ../../Zotlabs/Widget/Cdav.php:131 -msgid "Shared CalDAV Calendars" -msgstr "Calendarios CalDAV compartidos" - -#: ../../Zotlabs/Widget/Cdav.php:135 -msgid "Share this calendar" -msgstr "Compartir este calendario" - -#: ../../Zotlabs/Widget/Cdav.php:137 -msgid "Calendar name and color" -msgstr "Nombre y color del calendario" - -#: ../../Zotlabs/Widget/Cdav.php:139 -msgid "Create new CalDAV calendar" -msgstr "Crear un nuevo calendario CalDAV" - -#: ../../Zotlabs/Widget/Cdav.php:141 -msgid "Calendar Name" -msgstr "Nombre del calendario" - -#: ../../Zotlabs/Widget/Cdav.php:142 -msgid "Calendar Tools" -msgstr "Gestión de calendarios" - -#: ../../Zotlabs/Widget/Cdav.php:144 -msgid "Import calendar" -msgstr "Importar un calendario" - -#: ../../Zotlabs/Widget/Cdav.php:145 -msgid "Select a calendar to import to" -msgstr "Seleccionar un calendario para importarlo" - -#: ../../Zotlabs/Widget/Cdav.php:172 -msgid "Addressbooks" -msgstr "Agenda de direcciones" - -#: ../../Zotlabs/Widget/Cdav.php:174 -msgid "Addressbook name" -msgstr "Nombre de la agenda" - -#: ../../Zotlabs/Widget/Cdav.php:176 -msgid "Create new addressbook" -msgstr "Crear una nueva agenda de direcciones" - -#: ../../Zotlabs/Widget/Cdav.php:177 -msgid "Addressbook Name" -msgstr "Nombre de la agenda" - -#: ../../Zotlabs/Widget/Cdav.php:179 -msgid "Addressbook Tools" -msgstr "Gestión de agendas de direcciones" - -#: ../../Zotlabs/Widget/Cdav.php:180 -msgid "Import addressbook" -msgstr "Importar una agenda de direcciones" - -#: ../../Zotlabs/Widget/Cdav.php:181 -msgid "Select an addressbook to import to" -msgstr "Seleccionar una agenda para importarla" - -#: ../../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/Widget/Eventstools.php:13 -msgid "Events Tools" -msgstr "Gestión de eventos" - -#: ../../Zotlabs/Widget/Eventstools.php:14 -msgid "Export Calendar" -msgstr "Exportar el calendario" - -#: ../../Zotlabs/Widget/Eventstools.php:15 -msgid "Import Calendar" -msgstr "Importar un calendario" - -#: ../../Zotlabs/Widget/Suggestedchats.php:32 -msgid "Suggested Chatrooms" -msgstr "Salas de chat sugeridas" - -#: ../../Zotlabs/Widget/Hq_controls.php:14 -msgid "HQ Control Panel" -msgstr "Panel de control de HQ" - -#: ../../Zotlabs/Widget/Hq_controls.php:17 -msgid "Create a new post" -msgstr "Crear una nueva entrada" - -#: ../../Zotlabs/Widget/Mailmenu.php:13 -msgid "Private Mail Menu" -msgstr "Menú de correo privado" - -#: ../../Zotlabs/Widget/Mailmenu.php:15 -msgid "Combined View" -msgstr "Vista combinada" - -#: ../../Zotlabs/Widget/Mailmenu.php:20 -msgid "Inbox" -msgstr "Bandeja de entrada" - -#: ../../Zotlabs/Widget/Mailmenu.php:25 -msgid "Outbox" -msgstr "Bandeja de salida" - -#: ../../Zotlabs/Widget/Mailmenu.php:30 -msgid "New Message" -msgstr "Nuevo mensaje" - -#: ../../Zotlabs/Widget/Chatroom_list.php:20 -msgid "Overview" -msgstr "Resumen" - -#: ../../Zotlabs/Widget/Rating.php:51 -msgid "Rating Tools" -msgstr "Valoraciones" - -#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 -msgid "Rate Me" -msgstr "Valorar este canal" - -#: ../../Zotlabs/Widget/Rating.php:60 -msgid "View Ratings" -msgstr "Mostrar las valoraciones" - -#: ../../Zotlabs/Widget/Activity.php:50 -msgctxt "widget" -msgid "Activity" -msgstr "Actividad" - -#: ../../Zotlabs/Widget/Activity_filter.php:36 -#, php-format -msgid "Show posts related to the %s privacy group" -msgstr "Mostrar entradas relacionadas con el grupo %s" - -#: ../../Zotlabs/Widget/Activity_filter.php:45 -msgid "Show my privacy groups" -msgstr "Mostrar mis grupos de canales" - -#: ../../Zotlabs/Widget/Activity_filter.php:66 -msgid "Show posts to this forum" -msgstr "Mostrar las entradas en este foro" - -#: ../../Zotlabs/Widget/Activity_filter.php:77 -msgid "Show forums" -msgstr "Mostrar los foros" - -#: ../../Zotlabs/Widget/Activity_filter.php:91 -msgid "Starred Posts" -msgstr "Entradas preferidas" - -#: ../../Zotlabs/Widget/Activity_filter.php:95 -msgid "Show posts that I have starred" -msgstr "Mostrar entradas que he señalado como preferidas" - -#: ../../Zotlabs/Widget/Activity_filter.php:106 -msgid "Personal Posts" -msgstr "Entradas personales" - -#: ../../Zotlabs/Widget/Activity_filter.php:110 -msgid "Show posts that mention or involve me" -msgstr "Mostrar entradas que me mencionen o involucren" - -#: ../../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/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/Widget/Activity_filter.php:141 -msgid "Show filed post categories" -msgstr "Mostrar los temas de las entradas archivadas" - -#: ../../Zotlabs/Widget/Activity_filter.php:155 -msgid "Panel search" -msgstr "Panel de búsqueda" - -#: ../../Zotlabs/Widget/Activity_filter.php:165 -msgid "Filter by name" -msgstr "Filtrar por nombre" - -#: ../../Zotlabs/Widget/Activity_filter.php:180 -msgid "Remove active filter" -msgstr "Eliminar el filtro activo" - -#: ../../Zotlabs/Widget/Activity_filter.php:196 -msgid "Stream Filters" -msgstr "Filtros del stream" - -#: ../../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/Widget/Follow.php:29 -msgid "Add New Connection" -msgstr "Añadir nueva conexión" - -#: ../../Zotlabs/Widget/Follow.php:30 -msgid "Enter channel address" -msgstr "Dirección del canal" - -#: ../../Zotlabs/Widget/Follow.php:31 -msgid "Examples: bob@example.com, https://example.com/barbara" -msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen" - -#: ../../Zotlabs/Widget/Archive.php:43 -msgid "Archives" -msgstr "Hemeroteca" - -#: ../../Zotlabs/Widget/Conversations.php:17 -msgid "Received Messages" -msgstr "Mensajes recibidos" - -#: ../../Zotlabs/Widget/Conversations.php:21 -msgid "Sent Messages" -msgstr "Enviar mensajes" - -#: ../../Zotlabs/Widget/Conversations.php:25 -msgid "Conversations" -msgstr "Conversaciones" - -#: ../../Zotlabs/Widget/Conversations.php:37 -msgid "No messages." -msgstr "Sin mensajes." - -#: ../../Zotlabs/Widget/Conversations.php:57 -msgid "Delete conversation" -msgstr "Eliminar conversación" - -#: ../../Zotlabs/Widget/Chatroom_members.php:11 -msgid "Chat Members" -msgstr "Miembros del chat" - -#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 -msgid "photo/image" -msgstr "foto/imagen" - -#: ../../Zotlabs/Widget/Savedsearch.php:75 -msgid "Remove term" -msgstr "Eliminar término" - -#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:303 -msgid "Saved Searches" -msgstr "Búsquedas guardadas" - -#: ../../Zotlabs/Widget/Wiki_pages.php:34 -#: ../../Zotlabs/Widget/Wiki_pages.php:91 -msgid "Add new page" -msgstr "Añadir una nueva página" - -#: ../../Zotlabs/Widget/Wiki_pages.php:85 -msgid "Wiki Pages" -msgstr "Páginas del wiki" - -#: ../../Zotlabs/Widget/Wiki_pages.php:96 -msgid "Page name" -msgstr "Nombre de la página" - -#: ../../Zotlabs/Widget/Affinity.php:54 -msgid "Refresh" -msgstr "Recargar" - -#: ../../Zotlabs/Widget/Tasklist.php:23 -msgid "Tasks" -msgstr "Tareas" - -#: ../../Zotlabs/Widget/Suggestions.php:53 -msgid "Suggestions" -msgstr "Sugerencias" - -#: ../../Zotlabs/Widget/Suggestions.php:54 -msgid "See more..." -msgstr "Ver más..." - -#: ../../Zotlabs/Widget/Activity_order.php:90 -msgid "Commented Date" -msgstr "Fecha de los comentarios" - -#: ../../Zotlabs/Widget/Activity_order.php:94 -msgid "Order by last commented date" -msgstr "Ordenar por la última fecha de los comentarios" - -#: ../../Zotlabs/Widget/Activity_order.php:97 -msgid "Posted Date" -msgstr "Fecha de publicación" - -#: ../../Zotlabs/Widget/Activity_order.php:101 -msgid "Order by last posted date" -msgstr "Ordenar por la ultima fecha de publicación" - -#: ../../Zotlabs/Widget/Activity_order.php:104 -msgid "Date Unthreaded" -msgstr "Sin enhebrar por fecha" - -#: ../../Zotlabs/Widget/Activity_order.php:108 -msgid "Order unthreaded by date" -msgstr "Ordenar sin enhebrar por fecha" - -#: ../../Zotlabs/Widget/Activity_order.php:123 -msgid "Stream Order" -msgstr "Orden del stream" - -#: ../../Zotlabs/Widget/Cover_photo.php:65 -msgid "Click to show more" -msgstr "Hacer clic para ver más" - -#: ../../Zotlabs/Widget/Tagcloud.php:22 ../../include/taxonomy.php:320 -#: ../../include/taxonomy.php:449 ../../include/taxonomy.php:470 -msgid "Tags" -msgstr "Etiquetas" - -#: ../../Zotlabs/Widget/Appstore.php:11 -msgid "App Collections" -msgstr "Colección de aplicaciones" - -#: ../../Zotlabs/Widget/Appstore.php:13 -msgid "Installed apps" -msgstr "Aplicaciones instaladas" - -#: ../../Zotlabs/Widget/Newmember.php:31 -msgid "Profile Creation" -msgstr "Creación de perfiles" - -#: ../../Zotlabs/Widget/Newmember.php:33 -msgid "Upload profile photo" -msgstr "Cargar la foto del perfil" - -#: ../../Zotlabs/Widget/Newmember.php:34 -msgid "Upload cover photo" -msgstr "Cargar la foto de portada del perfil" - -#: ../../Zotlabs/Widget/Newmember.php:35 ../../include/nav.php:115 -msgid "Edit your profile" -msgstr "Editar su perfil" - -#: ../../Zotlabs/Widget/Newmember.php:38 -msgid "Find and Connect with others" -msgstr "Encontrar y conectarse con otros" - -#: ../../Zotlabs/Widget/Newmember.php:40 -msgid "View the directory" -msgstr "Ver el directorio" - -#: ../../Zotlabs/Widget/Newmember.php:42 -msgid "Manage your connections" -msgstr "Gestionar sus conexiones" - -#: ../../Zotlabs/Widget/Newmember.php:45 -msgid "Communicate" -msgstr "Comunicarse" - -#: ../../Zotlabs/Widget/Newmember.php:47 -msgid "View your channel homepage" -msgstr "Ver la página principal de su canal" - -#: ../../Zotlabs/Widget/Newmember.php:48 -msgid "View your network stream" -msgstr "Ver el \"stream\" de su red" - -#: ../../Zotlabs/Widget/Newmember.php:54 -msgid "Documentation" -msgstr "Documentación" - -#: ../../Zotlabs/Widget/Newmember.php:57 -msgid "Missing Features?" -msgstr "¿Faltan Características?" - -#: ../../Zotlabs/Widget/Newmember.php:59 -msgid "Pin apps to navigation bar" -msgstr "Fijar apps a la barra de navegación" - -#: ../../Zotlabs/Widget/Newmember.php:60 -msgid "Install more apps" -msgstr "Instalar más apps" - -#: ../../Zotlabs/Widget/Newmember.php:71 -msgid "View public stream" -msgstr "Ver el \"stream\" público" - -#: ../../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/Widget/Admin.php:29 -msgid "Inspect queue" -msgstr "Examinar la cola" - -#: ../../Zotlabs/Widget/Admin.php:31 -msgid "DB updates" -msgstr "Actualizaciones de la base de datos" - -#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:192 -msgid "Admin" -msgstr "Administrador" - -#: ../../Zotlabs/Widget/Admin.php:56 -msgid "Addon Features" -msgstr "Características del addon" - -#: ../../Zotlabs/Widget/Settings_menu.php:32 -msgid "Account settings" -msgstr "Configuración de la cuenta" - -#: ../../Zotlabs/Widget/Settings_menu.php:38 -msgid "Channel settings" -msgstr "Configuración del canal" - -#: ../../Zotlabs/Widget/Settings_menu.php:46 -msgid "Display settings" -msgstr "Ajustes de visualización" - -#: ../../Zotlabs/Widget/Settings_menu.php:53 -msgid "Manage locations" -msgstr "Gestión de ubicaciones (clones) del canal" - -#: ../../Zotlabs/Widget/Bookmarkedchats.php:24 -msgid "Bookmarked Chatrooms" -msgstr "Salas de chat preferidas" - -#: ../../Zotlabs/Widget/Notifications.php:16 -msgid "New Network Activity" -msgstr "Nueva actividad en la red" - -#: ../../Zotlabs/Widget/Notifications.php:17 -msgid "New Network Activity Notifications" -msgstr "Avisos de nueva actividad en la red" - -#: ../../Zotlabs/Widget/Notifications.php:20 -msgid "View your network activity" -msgstr "Ver su actividad en la red" - -#: ../../Zotlabs/Widget/Notifications.php:23 -msgid "Mark all notifications read" -msgstr "Marcar todas las notificaciones como leídas" - -#: ../../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/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/Widget/Notifications.php:35 -msgid "New Home Activity" -msgstr "Nueva actividad en su página principal" - -#: ../../Zotlabs/Widget/Notifications.php:36 -msgid "New Home Activity Notifications" -msgstr "Avisos de nueva actividad en su página principal" - -#: ../../Zotlabs/Widget/Notifications.php:39 -msgid "View your home activity" -msgstr "Ver su actividad en su página principal" - -#: ../../Zotlabs/Widget/Notifications.php:42 -#: ../../Zotlabs/Widget/Notifications.php:149 -msgid "Mark all notifications seen" -msgstr "Marcar todas las notificaciones como vistas" - -#: ../../Zotlabs/Widget/Notifications.php:54 -msgid "New Mails" -msgstr "Nuevos mensajes de correo" - -#: ../../Zotlabs/Widget/Notifications.php:55 -msgid "New Mails Notifications" -msgstr "Avisos de nuevos mensajes de correo" - -#: ../../Zotlabs/Widget/Notifications.php:58 -msgid "View your private mails" -msgstr "Ver sus correos privados" - -#: ../../Zotlabs/Widget/Notifications.php:61 -msgid "Mark all messages seen" -msgstr "Marcar todos los mensajes como vistos" - -#: ../../Zotlabs/Widget/Notifications.php:69 -msgid "New Events" -msgstr "Eventos nuevos" - -#: ../../Zotlabs/Widget/Notifications.php:70 -msgid "New Events Notifications" -msgstr "Avisos de nuevos eventos" - -#: ../../Zotlabs/Widget/Notifications.php:73 -msgid "View events" -msgstr "Ver los eventos" - -#: ../../Zotlabs/Widget/Notifications.php:76 -msgid "Mark all events seen" -msgstr "Marcar todos los eventos como leidos" - -#: ../../Zotlabs/Widget/Notifications.php:85 -msgid "New Connections Notifications" -msgstr "Avisos de nuevas conexiones" - -#: ../../Zotlabs/Widget/Notifications.php:88 -msgid "View all connections" -msgstr "Ver todas las conexiones" - -#: ../../Zotlabs/Widget/Notifications.php:96 -msgid "New Files" -msgstr "Ficheros nuevos" - -#: ../../Zotlabs/Widget/Notifications.php:97 -msgid "New Files Notifications" -msgstr "Avisos de nuevos ficheros" - -#: ../../Zotlabs/Widget/Notifications.php:104 -#: ../../Zotlabs/Widget/Notifications.php:105 -msgid "Notices" -msgstr "Avisos" - -#: ../../Zotlabs/Widget/Notifications.php:108 -msgid "View all notices" -msgstr "Ver todos los avisos" - -#: ../../Zotlabs/Widget/Notifications.php:111 -msgid "Mark all notices seen" -msgstr "Marcar como leídos todos los avisos" - -#: ../../Zotlabs/Widget/Notifications.php:132 -msgid "New Registrations" -msgstr "Registros nuevos" - -#: ../../Zotlabs/Widget/Notifications.php:133 -msgid "New Registrations Notifications" -msgstr "Notificaciones de nuevos registros" - -#: ../../Zotlabs/Widget/Notifications.php:143 -msgid "Public Stream Notifications" -msgstr "Avisos del \"stream\" público" - -#: ../../Zotlabs/Widget/Notifications.php:146 -msgid "View the public stream" -msgstr "Ver el \"stream\" público" - -#: ../../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" - -#: ../../util/nconfig.php:34 -msgid "Source channel not found." -msgstr "No se ha encontrado el canal de origen." - -#: ../../widget/Netselect/Netselect.php:24 -msgid "Network/Protocol" -msgstr "Red / Protocolo" - -#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1735 -msgid "Zot" -msgstr "Zot" - -#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1733 -msgid "Diaspora" -msgstr "Diaspora" - -#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1726 -#: ../../include/network.php:1727 -msgid "Friendica" -msgstr "Friendica" - -#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1728 -msgid "OStatus" -msgstr "OStatus" - -#: ../../boot.php:1655 +#: ../../boot.php:1653 msgid "Create an account to access services and applications" msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" -#: ../../boot.php:1675 ../../include/nav.php:107 ../../include/nav.php:136 -#: ../../include/nav.php:155 -msgid "Logout" -msgstr "Finalizar sesión" - -#: ../../boot.php:1679 +#: ../../boot.php:1677 msgid "Login/Email" msgstr "Inicio de sesión / Correo electrónico" -#: ../../boot.php:1680 +#: ../../boot.php:1678 msgid "Password" msgstr "Contraseña" -#: ../../boot.php:1681 +#: ../../boot.php:1679 msgid "Remember me" msgstr "Recordarme" -#: ../../boot.php:1684 +#: ../../boot.php:1682 msgid "Forgot your password?" msgstr "¿Olvidó su contraseña?" -#: ../../boot.php:2480 +#: ../../boot.php:2478 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "[$Projectname] Error SSL del sitio web en %s" -#: ../../boot.php:2485 +#: ../../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:2601 +#: ../../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:2606 +#: ../../boot.php:2604 msgid "Cron/Scheduled tasks not running." msgstr "Las tareas del Planificador/Cron no están funcionando." - -#: ../../boot.php:2607 ../../include/datetime.php:238 -msgid "never" -msgstr "nunca" - -#: ../../store/[data]/smarty3/compiled/a0a1289f91f53b2c12e4e0b45ffe8291540ba895_0.file.cover_photo.tpl.php:127 -msgid "Cover Photo" -msgstr "Imagen de portada del perfil" - -#: ../../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)" - -#: ../../view/theme/redbasic_c/php/config.php:99 -#: ../../view/theme/redbasic/php/config.php:98 -msgid "Theme settings" -msgstr "Ajustes del tema" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../view/theme/redbasic_c/php/config.php:104 -#: ../../view/theme/redbasic/php/config.php:103 -msgid "Link color" -msgstr "Color del enlace" - -#: ../../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\"" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../view/theme/redbasic_c/php/config.php:112 -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Example: 4px" -msgstr "Ejemplo: 4px" - -#: ../../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" - -#: ../../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" - -#: ../../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" - -#: ../../view/theme/redbasic_c/php/config.php:115 -msgid "Left align page content" -msgstr "Alinear a la izquierda el contenido de la página" - -#: ../../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" - -#: ../../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" - -#: ../../view/theme/redbasic/php/config.php:116 -msgid "Show advanced settings" -msgstr "Mostrar ajustes avanzados" - -#: ../../addon/rendezvous/rendezvous.php:57 -msgid "Errors encountered deleting database table " -msgstr "Errores encontrados al eliminar la tabla de la base de datos" - -#: ../../addon/rendezvous/rendezvous.php:95 -#: ../../addon/twitter/twitter.php:612 -msgid "Submit Settings" -msgstr "Enviar los ajustes" - -#: ../../addon/rendezvous/rendezvous.php:96 -msgid "Drop tables when uninstalling?" -msgstr "¿Eliminar tablas al desinstalar?" - -#: ../../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." - -#: ../../addon/rendezvous/rendezvous.php:97 -msgid "Mapbox Access Token" -msgstr "Token de acceso de Mapbox" - -#: ../../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." - -#: ../../addon/rendezvous/rendezvous.php:162 -msgid "Rendezvous" -msgstr "Rendezvous" - -#: ../../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." - -#: ../../addon/rendezvous/rendezvous.php:168 -msgid "Welcome to Rendezvous!" -msgstr "¡Bienvenido/a a Rendevous!" - -#: ../../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." - -#: ../../addon/rendezvous/rendezvous.php:171 -msgid "Let's meet here" -msgstr "Reunámonos aquí" - -#: ../../addon/rendezvous/rendezvous.php:174 -msgid "New marker" -msgstr "Nuevo marcador" - -#: ../../addon/rendezvous/rendezvous.php:175 -msgid "Edit marker" -msgstr "Editar un marcador" - -#: ../../addon/rendezvous/rendezvous.php:176 -msgid "New identity" -msgstr "Nueva identidad" - -#: ../../addon/rendezvous/rendezvous.php:177 -msgid "Delete marker" -msgstr "Eliminar un marcador" - -#: ../../addon/rendezvous/rendezvous.php:178 -msgid "Delete member" -msgstr "Eliminar un miembro" - -#: ../../addon/rendezvous/rendezvous.php:179 -msgid "Edit proximity alert" -msgstr "Editar alerta de proximidad" - -#: ../../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):" - -#: ../../addon/rendezvous/rendezvous.php:180 -#: ../../addon/rendezvous/rendezvous.php:185 -msgid "distance" -msgstr "distancia" - -#: ../../addon/rendezvous/rendezvous.php:181 -msgid "Proximity alert distance (meters)" -msgstr "Distancia (en metros) para la alerta de proximidad" - -#: ../../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):" - -#: ../../addon/rendezvous/rendezvous.php:183 -msgid "Marker proximity alert" -msgstr "Marcador de alerta de proximidad" - -#: ../../addon/rendezvous/rendezvous.php:186 -msgid "Reminder note" -msgstr "Recordatorio" - -#: ../../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..." - -#: ../../addon/rendezvous/rendezvous.php:199 -msgid "Add new rendezvous" -msgstr "Añadir una nueva cita" - -#: ../../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." - -#: ../../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!" - -#: ../../addon/skeleton/Mod_Skeleton.php:32 -msgid "Skeleton App" -msgstr "App Skeleton" - -#: ../../addon/skeleton/Mod_Skeleton.php:33 -msgid "A skeleton for addons, you can copy/paste" -msgstr "Skeleton para los addons, puede copiar/pegar" - -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "Some setting" -msgstr "Algunos ajustes" - -#: ../../addon/skeleton/Mod_Skeleton.php:40 -msgid "A setting" -msgstr "Un ajuste" - -#: ../../addon/skeleton/Mod_Skeleton.php:48 -msgid "Skeleton Settings" -msgstr "Ajustes de Skeleton" - -#: ../../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." - -#: ../../addon/gnusoc/Mod_Gnusoc.php:22 -msgid "GNU-Social Protocol App" -msgstr "App Protocolo GNU-Social" - -#: ../../addon/gnusoc/Mod_Gnusoc.php:34 -msgid "GNU-Social Protocol" -msgstr "Protocolo GNU-Social" - -#: ../../addon/gnusoc/gnusoc.php:451 -msgid "Follow" -msgstr "Seguir" - -#: ../../addon/gnusoc/gnusoc.php:454 -#, php-format -msgid "%1$s is now following %2$s" -msgstr "%1$s está siguiendo ahora a %2$s" - -#: ../../addon/planets/Mod_Planets.php:20 -#: ../../addon/planets/Mod_Planets.php:23 -msgid "Random Planet App" -msgstr "App Random Planet" - -#: ../../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" - -#: ../../addon/planets/Mod_Planets.php:25 -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." - -#: ../../addon/openclipatar/openclipatar.php:50 -#: ../../addon/openclipatar/openclipatar.php:128 -msgid "System defaults:" -msgstr "Valores predeterminados del sistema: " - -#: ../../addon/openclipatar/openclipatar.php:54 -msgid "Preferred Clipart IDs" -msgstr "IDs de las imágenes clipart preferidas" - -#: ../../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." - -#: ../../addon/openclipatar/openclipatar.php:55 -msgid "Default Search Term" -msgstr "Términos de búsqueda predeterminados" - -#: ../../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." - -#: ../../addon/openclipatar/openclipatar.php:56 -msgid "Return After" -msgstr "Regresar después" - -#: ../../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." - -#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1422 -#: ../../include/nav.php:115 -msgid "Edit Profile" -msgstr "Editar el perfil" - -#: ../../addon/openclipatar/openclipatar.php:59 -msgid "Profile List" -msgstr "Lista de perfiles" - -#: ../../addon/openclipatar/openclipatar.php:61 -msgid "Order of Preferred" -msgstr "Orden de preferencia" - -#: ../../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." - -#: ../../addon/openclipatar/openclipatar.php:62 -#: ../../addon/openclipatar/openclipatar.php:68 -msgid "Newest first" -msgstr "Las más nuevas en primer lugar" - -#: ../../addon/openclipatar/openclipatar.php:65 -msgid "As entered" -msgstr "Tal como se ingresaron" - -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Order of other" -msgstr "Orden de los demás" - -#: ../../addon/openclipatar/openclipatar.php:67 -msgid "Sort order of other clipart ids." -msgstr "Orden de clasificación de otros ids de imágenes clipart." - -#: ../../addon/openclipatar/openclipatar.php:69 -msgid "Most downloaded first" -msgstr "Las más descargadas en primer lugar" - -#: ../../addon/openclipatar/openclipatar.php:70 -msgid "Most liked first" -msgstr "Las más apreciadas en primer lugar" - -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Preferred IDs Message" -msgstr "Mensaje de IDs preferido" - -#: ../../addon/openclipatar/openclipatar.php:72 -msgid "Message to display above preferred results." -msgstr "Mensaje para mostrar sobre los resultados preferidos." - -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Uploaded by: " -msgstr "Subida por: " - -#: ../../addon/openclipatar/openclipatar.php:78 -msgid "Drawn by: " -msgstr "Creada por: " - -#: ../../addon/openclipatar/openclipatar.php:182 -#: ../../addon/openclipatar/openclipatar.php:194 -msgid "Use this image" -msgstr "Usar esta imagen" - -#: ../../addon/openclipatar/openclipatar.php:192 -msgid "Or select from a free OpenClipart.org image:" -msgstr "O seleccionar una imagen gratuita de OpenClipart.org: " - -#: ../../addon/openclipatar/openclipatar.php:195 -msgid "Search Term" -msgstr "Término de búsqueda" - -#: ../../addon/openclipatar/openclipatar.php:232 -msgid "Unknown error. Please try again later." -msgstr "Error desconocido. Por favor, inténtelo otra vez." - -#: ../../addon/openclipatar/openclipatar.php:308 -msgid "Profile photo updated successfully." -msgstr "Se ha actualizado con éxito la foto de perfil." - -#: ../../addon/adultphotoflag/adultphotoflag.php:24 -msgid "Flag Adult Photos" -msgstr "Indicador (\"flag\") de fotos de adultos" - -#: ../../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" - -#: ../../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." - -#: ../../addon/totp/Settings/Totp.php:93 -msgid "Your TOTP secret is" -msgstr "Su TOTP secret es " - -#: ../../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." - -#: ../../addon/totp/Settings/Totp.php:99 -msgid "Test" -msgstr "Test" - -#: ../../addon/totp/Settings/Totp.php:100 -msgid "Generate New Secret" -msgstr "Generar un nuevo Secret" - -#: ../../addon/totp/Settings/Totp.php:101 -msgid "Go" -msgstr "Ir" - -#: ../../addon/totp/Settings/Totp.php:102 -msgid "Enter your password" -msgstr "Introduzca su contraseña" - -#: ../../addon/totp/Settings/Totp.php:103 -msgid "enter TOTP code from your device" -msgstr "introduzca el código TOTP desde su dispositivo" - -#: ../../addon/totp/Settings/Totp.php:104 -msgid "Pass!" -msgstr "¡Pase!" - -#: ../../addon/totp/Settings/Totp.php:105 -msgid "Fail" -msgstr "Fallo" - -#: ../../addon/totp/Settings/Totp.php:106 -msgid "Incorrect password, try again." -msgstr "Contraseña incorrecta, inténtelo de nuevo." - -#: ../../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" - -#: ../../addon/totp/Settings/Totp.php:115 -msgid "TOTP Settings" -msgstr "Ajustes de TOTP" - -#: ../../addon/totp/Mod_Totp.php:23 -msgid "TOTP Two-Step Verification" -msgstr "Verificación en dos pasos de TOTP" - -#: ../../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: " - -#: ../../addon/totp/Mod_Totp.php:25 -msgid "Success!" -msgstr "¡Éxito!" - -#: ../../addon/totp/Mod_Totp.php:26 -msgid "Invalid code, please try again." -msgstr "Código inválido, por favor inténtelo de nuevo." - -#: ../../addon/totp/Mod_Totp.php:27 -msgid "Too many invalid codes..." -msgstr "Demasiados códigos no válidos..." - -#: ../../addon/totp/Mod_Totp.php:28 -msgid "Verify" -msgstr "Verficar" - -#: ../../addon/wppost/Mod_Wppost.php:28 -msgid "Wordpress Settings saved." -msgstr "Se han guardado los ajustes de WordPress." - -#: ../../addon/wppost/Mod_Wppost.php:41 -msgid "Wordpress Post App" -msgstr "App Publicar en Wordpress" - -#: ../../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" - -#: ../../addon/wppost/Mod_Wppost.php:65 -msgid "WordPress username" -msgstr "Nombre de usuario de WordPress" - -#: ../../addon/wppost/Mod_Wppost.php:69 -msgid "WordPress password" -msgstr "Contraseña de WordPress" - -#: ../../addon/wppost/Mod_Wppost.php:73 -msgid "WordPress API URL" -msgstr "URL de la API de WordPress" - -#: ../../addon/wppost/Mod_Wppost.php:74 -msgid "Typically https://your-blog.tld/xmlrpc.php" -msgstr "Habitualmente https://your-blog.tld/xmlrpc.php" - -#: ../../addon/wppost/Mod_Wppost.php:77 -msgid "WordPress blogid" -msgstr "Blog de WordPress" - -#: ../../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" - -#: ../../addon/wppost/Mod_Wppost.php:82 -msgid "Post to WordPress by default" -msgstr "Publicar en WordPress por defecto" - -#: ../../addon/wppost/Mod_Wppost.php:86 -msgid "Forward comments (requires hubzilla_wp plugin)" -msgstr "Reenviar comentarios (requerido por el plugin hubzilla_wp)" - -#: ../../addon/wppost/Mod_Wppost.php:94 -msgid "Wordpress Post" -msgstr "Publicar en Wordpress" - -#: ../../addon/wppost/wppost.php:46 -msgid "Post to WordPress" -msgstr "Publicar en WordPress" - -#: ../../addon/nsfw/nsfw.php:152 -msgid "Possible adult content" -msgstr "Posible contenido para adultos" - -#: ../../addon/nsfw/nsfw.php:167 -#, php-format -msgid "%s - view" -msgstr "ver - %s" - -#: ../../addon/nsfw/Mod_Nsfw.php:22 -msgid "NSFW Settings saved." -msgstr "Se han guardado los ajustes de NSFW." - -#: ../../addon/nsfw/Mod_Nsfw.php:33 -msgid "NSFW App" -msgstr "App NSFW" - -#: ../../addon/nsfw/Mod_Nsfw.php:34 -msgid "Collapse content that contains predefined words" -msgstr "Ocultar el contenido que contiene palabras predefinidas" - -#: ../../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." - -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Comma separated list of keywords to hide" -msgstr "Lista separada por comas de palabras clave para ocultar" - -#: ../../addon/nsfw/Mod_Nsfw.php:49 -msgid "Word, /regular-expression/, lang=xx, lang!=xx" -msgstr "Palabra, /expresión regular/, lang=xx, lang!=xx" - -#: ../../addon/nsfw/Mod_Nsfw.php:58 -msgid "NSFW" -msgstr "NSFW" - -#: ../../addon/flashcards/Mod_Flashcards.php:174 -msgid "Not allowed." -msgstr "No permitido/a." - -#: ../../addon/queueworker/Mod_Queueworker.php:77 -msgid "Max queueworker threads" -msgstr "Máximo de hilos en la cola" - -#: ../../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" - -#: ../../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)" - -#: ../../addon/queueworker/Mod_Queueworker.php:116 -msgid "Queueworker Settings" -msgstr "Configuración del gestor de procesos de trabajo en cola" - -#: ../../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." - -#: ../../addon/ijpost/Mod_Ijpost.php:35 -msgid "Insane Journal Crosspost Connector App" -msgstr "App Ajustes del Conector de publicación cruzada de InsaneJournal" - -#: ../../addon/ijpost/Mod_Ijpost.php:36 -msgid "Relay public postings to Insane Journal" -msgstr "Retransmisión de entradas públicas a Insane Journal" - -#: ../../addon/ijpost/Mod_Ijpost.php:53 -msgid "InsaneJournal username" -msgstr "Nombre de usuario en InsaneJournal" - -#: ../../addon/ijpost/Mod_Ijpost.php:57 -msgid "InsaneJournal password" -msgstr "Contraseña en InsaneJournal" - -#: ../../addon/ijpost/Mod_Ijpost.php:61 -msgid "Post to InsaneJournal by default" -msgstr "Publicar por defecto en InsaneJournal" - -#: ../../addon/ijpost/Mod_Ijpost.php:69 -msgid "Insane Journal Crosspost Connector" -msgstr "Conector de publicación cruzada de InsaneJournal" - -#: ../../addon/ijpost/ijpost.php:45 -msgid "Post to Insane Journal" -msgstr "Publicar en Insane Journal" - -#: ../../addon/dwpost/dwpost.php:48 -msgid "Post to Dreamwidth" -msgstr "Publicar en Dreamwidth" - -#: ../../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." - -#: ../../addon/dwpost/Mod_Dwpost.php:36 -msgid "Dreamwidth Crosspost Connector App" -msgstr "App Dreamwidth Crosspost Connector" - -#: ../../addon/dwpost/Mod_Dwpost.php:37 -msgid "Relay public postings to Dreamwidth" -msgstr "Retransmisión de entradas públicas a Dreamwidth" - -#: ../../addon/dwpost/Mod_Dwpost.php:52 -msgid "Dreamwidth username" -msgstr "Nombre de usuario en Dreamwidth" - -#: ../../addon/dwpost/Mod_Dwpost.php:56 -msgid "Dreamwidth password" -msgstr "Contraseña en Dreamwidth" - -#: ../../addon/dwpost/Mod_Dwpost.php:60 -msgid "Post to Dreamwidth by default" -msgstr "Publicar en Dreamwidth de forma predeterminada" - -#: ../../addon/dwpost/Mod_Dwpost.php:68 -msgid "Dreamwidth Crosspost Connector" -msgstr "Dreamwidth Crosspost Connector" - -#: ../../addon/notifyadmin/notifyadmin.php:34 -msgid "New registration" -msgstr "Nuevo registro" - -#: ../../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" - -#: ../../addon/dirstats/dirstats.php:94 -msgid "Hubzilla Directory Stats" -msgstr "Estadísticas de directorio de Hubzilla" - -#: ../../addon/dirstats/dirstats.php:95 -msgid "Total Hubs" -msgstr "Número total de servidores" - -#: ../../addon/dirstats/dirstats.php:97 -msgid "Hubzilla Hubs" -msgstr "Servidores (hubs) de Hubzilla" - -#: ../../addon/dirstats/dirstats.php:99 -msgid "Friendica Hubs" -msgstr "Servidores (hubs) de Friendica" - -#: ../../addon/dirstats/dirstats.php:101 -msgid "Diaspora Pods" -msgstr "Servidores (pods) de Diaspora" - -#: ../../addon/dirstats/dirstats.php:103 -msgid "Hubzilla Channels" -msgstr "Canales de Hubzilla" - -#: ../../addon/dirstats/dirstats.php:105 -msgid "Friendica Channels" -msgstr "Canales de Friendica" - -#: ../../addon/dirstats/dirstats.php:107 -msgid "Diaspora Channels" -msgstr "Canales de Diaspora" - -#: ../../addon/dirstats/dirstats.php:109 -msgid "Aged 35 and above" -msgstr "De 35 años de edad en adelante" - -#: ../../addon/dirstats/dirstats.php:111 -msgid "Aged 34 and under" -msgstr "De 34 o menos años de edad" - -#: ../../addon/dirstats/dirstats.php:113 -msgid "Average Age" -msgstr "Promedio de edad" - -#: ../../addon/dirstats/dirstats.php:115 -msgid "Known Chatrooms" -msgstr "Salas de chat conocidas" - -#: ../../addon/dirstats/dirstats.php:117 -msgid "Known Tags" -msgstr "Etiquetas conocidas" - -#: ../../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," - -#: ../../addon/likebanner/likebanner.php:51 -msgid "Your Webbie:" -msgstr "Su webbie: " - -#: ../../addon/likebanner/likebanner.php:54 -msgid "Fontsize (px):" -msgstr "Tamaño de fuente (px): " - -#: ../../addon/likebanner/likebanner.php:68 -msgid "Link:" -msgstr "Enlace: " - -#: ../../addon/likebanner/likebanner.php:70 -msgid "Like us on Hubzilla" -msgstr "Múestrenos su agrado en Hubzilla" - -#: ../../addon/likebanner/likebanner.php:72 -msgid "Embed:" -msgstr "Incorporado: " - -#: ../../addon/redphotos/redphotos.php:106 -msgid "Photos imported" -msgstr "Se han importado las fotos" - -#: ../../addon/redphotos/redphotos.php:129 -msgid "Redmatrix Photo Album Import" -msgstr "Importar un álbum de fotos de Redmatrix" - -#: ../../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." - -#: ../../addon/redphotos/redphotos.php:131 -#: ../../addon/redfiles/redfiles.php:121 -msgid "Redmatrix Server base URL" -msgstr "URL base del servidor Redmatrix" - -#: ../../addon/redphotos/redphotos.php:132 -#: ../../addon/redfiles/redfiles.php:122 -msgid "Redmatrix Login Username" -msgstr "Nombre de inicio de sesión en Redmatrix" - -#: ../../addon/redphotos/redphotos.php:133 -#: ../../addon/redfiles/redfiles.php:123 -msgid "Redmatrix Login Password" -msgstr "Contraseña de inicio de sesión en Redmatrix" - -#: ../../addon/redphotos/redphotos.php:134 -msgid "Import just this album" -msgstr "Importar solo este álbum" - -#: ../../addon/redphotos/redphotos.php:134 -msgid "Leave blank to import all albums" -msgstr "Dejar en blanco para importar todos los álbumes" - -#: ../../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" - -#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41 -msgid "Popular Channels" -msgstr "Canales populares" - -#: ../../addon/irc/irc.php:37 -msgid "Channels to auto connect" -msgstr "Canales para conexión automática" - -#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41 -msgid "Comma separated list" -msgstr "Lista separada por comas" - -#: ../../addon/irc/irc.php:45 -msgid "IRC Settings" -msgstr "Ajustes de IRC" - -#: ../../addon/irc/irc.php:54 -msgid "IRC settings saved." -msgstr "Se han guardado los ajustes de IRC." - -#: ../../addon/irc/irc.php:58 -msgid "IRC Chatroom" -msgstr "Sala de chat IRC" - -#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:136 -msgid "Gallery" -msgstr "Galería" - -#: ../../addon/gallery/gallery.php:41 -msgid "Photo Gallery" -msgstr "Galería de fotos" - -#: ../../addon/gallery/Mod_Gallery.php:58 -msgid "Gallery App" -msgstr "App Gallery" - -#: ../../addon/gallery/Mod_Gallery.php:59 -msgid "A simple gallery for your photo albums" -msgstr "Una galería sencilla para sus álbumes de fotos" - -#: ../../addon/ljpost/Mod_Ljpost.php:36 -msgid "Livejournal Crosspost Connector App" -msgstr "App Livejournal Crosspost Connector" - -#: ../../addon/ljpost/Mod_Ljpost.php:37 -msgid "Relay public posts to Livejournal" -msgstr "Retransmisión de entradas públicas a Livejournal" - -#: ../../addon/ljpost/Mod_Ljpost.php:54 -msgid "Livejournal username" -msgstr "Nombre de usuario en Livejournal" - -#: ../../addon/ljpost/Mod_Ljpost.php:58 -msgid "Livejournal password" -msgstr "Contraseña en Livejournal" - -#: ../../addon/ljpost/Mod_Ljpost.php:62 -msgid "Post to Livejournal by default" -msgstr "Publicar en Livejournal por defecto" - -#: ../../addon/ljpost/Mod_Ljpost.php:70 -msgid "Livejournal Crosspost Connector" -msgstr "Livejournal Crosspost Connector" - -#: ../../addon/ljpost/ljpost.php:45 -msgid "Post to Livejournal" -msgstr "Publicar en Livejournal" - -#: ../../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." - -#: ../../addon/openid/openid.php:49 -msgid "The error message was:" -msgstr "El mensaje de error ha sido: " - -#: ../../addon/openid/MysqlProvider.php:52 -msgid "First Name" -msgstr "Nombre" - -#: ../../addon/openid/MysqlProvider.php:53 -msgid "Last Name" -msgstr "Apellido" - -#: ../../addon/openid/MysqlProvider.php:54 -#: ../../addon/redred/Mod_Redred.php:75 -msgid "Nickname" -msgstr "Alias" - -#: ../../addon/openid/MysqlProvider.php:55 -msgid "Full Name" -msgstr "Nombre completo" - -#: ../../addon/openid/MysqlProvider.php:61 -msgid "Profile Photo 16px" -msgstr "Foto del perfil 16px" - -#: ../../addon/openid/MysqlProvider.php:62 -msgid "Profile Photo 32px" -msgstr "Foto del perfil 32px" - -#: ../../addon/openid/MysqlProvider.php:63 -msgid "Profile Photo 48px" -msgstr "Foto del perfil 48px" - -#: ../../addon/openid/MysqlProvider.php:64 -msgid "Profile Photo 64px" -msgstr "Foto del perfil 64px" - -#: ../../addon/openid/MysqlProvider.php:65 -msgid "Profile Photo 80px" -msgstr "Foto del perfil 80px" - -#: ../../addon/openid/MysqlProvider.php:66 -msgid "Profile Photo 128px" -msgstr "Foto del perfil 128px" - -#: ../../addon/openid/MysqlProvider.php:67 -msgid "Timezone" -msgstr "Zona horaria" - -#: ../../addon/openid/MysqlProvider.php:70 -msgid "Birth Year" -msgstr "Año de nacimiento" - -#: ../../addon/openid/MysqlProvider.php:71 -msgid "Birth Month" -msgstr "Mes de nacimiento" - -#: ../../addon/openid/MysqlProvider.php:72 -msgid "Birth Day" -msgstr "Día de nacimiento" - -#: ../../addon/openid/MysqlProvider.php:73 -msgid "Birthdate" -msgstr "Fecha de nacimiento" - -#: ../../addon/openid/Mod_Openid.php:30 -msgid "OpenID protocol error. No ID returned." -msgstr "Error de protocolo OpenID. No se recuperó ninguna ID." - -#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:317 -msgid "Login failed." -msgstr "El acceso ha fallado." - -#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1602 -msgid "Male" -msgstr "Hombre" - -#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60 -#: ../../include/selectors.php:77 ../../include/channel.php:1600 -msgid "Female" -msgstr "Mujer" - -#: ../../addon/randpost/randpost.php:97 -msgid "You're welcome." -msgstr "Bienvenido." - -#: ../../addon/randpost/randpost.php:98 -msgid "Ah shucks..." -msgstr "Ah, joder..." - -#: ../../addon/randpost/randpost.php:99 -msgid "Don't mention it." -msgstr "No lo menciones." - -#: ../../addon/randpost/randpost.php:100 -msgid "<blush>" -msgstr "<sonrojo>" - -#: ../../addon/startpage/Mod_Startpage.php:50 -msgid "Startpage App" -msgstr "App Startpage" - -#: ../../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" - -#: ../../addon/startpage/Mod_Startpage.php:62 -msgid "Page to load after login" -msgstr "Página para cargar tras el inicio de sesión" - -#: ../../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)." - -#: ../../addon/startpage/Mod_Startpage.php:70 -msgid "Startpage" -msgstr "Startpage" - -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslap" -msgstr "una bofetada humillante" - -#: ../../addon/morepokes/morepokes.php:19 -msgid "bitchslapped" -msgstr "ha abofeteado de forma humillante a" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shag" -msgstr "un polvo" - -#: ../../addon/morepokes/morepokes.php:20 -msgid "shagged" -msgstr "ha dejado exhausto/a a" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patent" -msgstr "una patente" - -#: ../../addon/morepokes/morepokes.php:21 -msgid "patented" -msgstr "ha patentado a" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hug" -msgstr "un abrazo" - -#: ../../addon/morepokes/morepokes.php:22 -msgid "hugged" -msgstr "ha abrazado a" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murder" -msgstr "un asesinato" - -#: ../../addon/morepokes/morepokes.php:23 -msgid "murdered" -msgstr "ha asesinado a" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worship" -msgstr "una alabanza" - -#: ../../addon/morepokes/morepokes.php:24 -msgid "worshipped" -msgstr "ha elogiado a" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kiss" -msgstr "un beso" - -#: ../../addon/morepokes/morepokes.php:25 -msgid "kissed" -msgstr "ha besado a" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempt" -msgstr "una tentación" - -#: ../../addon/morepokes/morepokes.php:26 -msgid "tempted" -msgstr "ha tentado a" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raise eyebrows at" -msgstr "un levantamiento de cejas" - -#: ../../addon/morepokes/morepokes.php:27 -msgid "raised their eyebrows at" -msgstr "ha levantado las cejas a" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insult" -msgstr "un insulto" - -#: ../../addon/morepokes/morepokes.php:28 -msgid "insulted" -msgstr "ha insultado a" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praise" -msgstr "un elogio" - -#: ../../addon/morepokes/morepokes.php:29 -msgid "praised" -msgstr "ha elogiado a" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "be dubious of" -msgstr "una indecisión" - -#: ../../addon/morepokes/morepokes.php:30 -msgid "was dubious of" -msgstr "estaba dudoso de" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "eat" -msgstr "una comida" - -#: ../../addon/morepokes/morepokes.php:31 -msgid "ate" -msgstr "ha comido" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggle and fawn at" -msgstr "una sonrisa aduladora" - -#: ../../addon/morepokes/morepokes.php:32 -msgid "giggled and fawned at" -msgstr "ha sonreído y adulado a" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubt" -msgstr "una duda" - -#: ../../addon/morepokes/morepokes.php:33 -msgid "doubted" -msgstr "ha dudado de" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glare" -msgstr "una mirada furiosa" - -#: ../../addon/morepokes/morepokes.php:34 -msgid "glared at" -msgstr "ha mirado con furia" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fuck" -msgstr "una mierda" - -#: ../../addon/morepokes/morepokes.php:35 -msgid "fucked" -msgstr "ha mandado a la mierda a" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonk" -msgstr "un golpe" - -#: ../../addon/morepokes/morepokes.php:36 -msgid "bonked" -msgstr "ha golpeado a" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declare undying love for" -msgstr "una declaración de amor eterno" - -#: ../../addon/morepokes/morepokes.php:37 -msgid "declared undying love for" -msgstr "ha declarado amor eterno a" - -#: ../../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" - -#: ../../addon/diaspora/Mod_Diaspora.php:43 -msgid "Diaspora Protocol Settings updated." -msgstr "Los ajustes del protocolo de Diaspora se han actualizado." - -#: ../../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." - -#: ../../addon/diaspora/Mod_Diaspora.php:58 -msgid "Diaspora Protocol App" -msgstr "App Protocolo Diaspora" - -#: ../../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" - -#: ../../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 " - -#: ../../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" - -#: ../../addon/diaspora/Mod_Diaspora.php:90 -msgid "Followed hashtags (comma separated, do not include the #)" -msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)" - -#: ../../addon/diaspora/Mod_Diaspora.php:99 -msgid "Diaspora Protocol" -msgstr "Protocolo Diaspora" - -#: ../../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." - -#: ../../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." - -#: ../../addon/photocache/Mod_Photocache.php:27 -msgid "Photo Cache settings saved." -msgstr "Se ha guardado la configuración de la caché de fotos." - -#: ../../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." - -#: ../../addon/photocache/Mod_Photocache.php:42 -msgid "Photo Cache App" -msgstr "App Photo Cache" - -#: ../../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é" - -#: ../../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." - -#: ../../addon/photocache/Mod_Photocache.php:64 -msgid "Photo Cache" -msgstr "Photo Cache" - -#: ../../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." - -#: ../../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." - -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:15 -msgid "Add some colour to tag clouds" -msgstr "Añadir color a las nubes de etiquetas" - -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21 -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26 -msgid "Rainbow Tag App" -msgstr "App Etiqueta Arcoiris" - -#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34 -msgid "Rainbow Tag" -msgstr "Etiqueta Arcoiris" - -#: ../../addon/upload_limits/upload_limits.php:25 -msgid "Show Upload Limits" -msgstr "Mostrar los límites de subida" - -#: ../../addon/upload_limits/upload_limits.php:27 -msgid "Hubzilla configured maximum size: " -msgstr "Tamaño máximo configurado por Hubzilla: " - -#: ../../addon/upload_limits/upload_limits.php:28 -msgid "PHP upload_max_filesize: " -msgstr "PHP upload_max_filesize: " - -#: ../../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): " - -#: ../../addon/gravatar/gravatar.php:123 -msgid "generic profile image" -msgstr "imagen del perfil general" - -#: ../../addon/gravatar/gravatar.php:124 -msgid "random geometric pattern" -msgstr "patrón geométrico aleatorio" - -#: ../../addon/gravatar/gravatar.php:125 -msgid "monster face" -msgstr "cara de monstruo" - -#: ../../addon/gravatar/gravatar.php:126 -msgid "computer generated face" -msgstr "cara generada por ordenador" - -#: ../../addon/gravatar/gravatar.php:127 -msgid "retro arcade style face" -msgstr "cara de estilo retro arcade" - -#: ../../addon/gravatar/gravatar.php:128 -msgid "Hub default profile photo" -msgstr "Foto del perfil por defecto del hub" - -#: ../../addon/gravatar/gravatar.php:143 -msgid "Information" -msgstr "Información" - -#: ../../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." - -#: ../../addon/gravatar/gravatar.php:150 -#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:43 -msgid "Save Settings" -msgstr "Guardar ajustes" - -#: ../../addon/gravatar/gravatar.php:151 -msgid "Default avatar image" -msgstr "Imagen del avatar por defecto" - -#: ../../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" - -#: ../../addon/gravatar/gravatar.php:152 -msgid "Rating of images" -msgstr "Valoración de las imágenes" - -#: ../../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" - -#: ../../addon/gravatar/gravatar.php:165 -msgid "Gravatar settings updated." -msgstr "Se han actualizado los ajustes de Gravatar." - -#: ../../addon/hzfiles/hzfiles.php:81 -msgid "Hubzilla File Storage Import" -msgstr "Importar del depósito de ficheros de Hubzilla" - -#: ../../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." - -#: ../../addon/hzfiles/hzfiles.php:83 -msgid "Hubzilla Server base URL" -msgstr "URL base del servidor Hubzilla" - -#: ../../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" - -#: ../../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" - -#: ../../addon/visage/Mod_Visage.php:21 -msgid "Who viewed my channel/profile" -msgstr "Quién ha visto mi canal/perfi" - -#: ../../addon/visage/Mod_Visage.php:25 -msgid "Recent Channel/Profile Viewers" -msgstr "Visitantes recientes del canal o perfil" - -#: ../../addon/visage/Mod_Visage.php:36 -msgid "No entries." -msgstr "No hay entradas." - -#: ../../addon/nsabait/Mod_Nsabait.php:20 -#: ../../addon/nsabait/Mod_Nsabait.php:24 -msgid "NSA Bait App" -msgstr "App NSA Bait " - -#: ../../addon/nsabait/Mod_Nsabait.php:26 -msgid "Make yourself a political target" -msgstr "Conviértase en un objetivo político" - -#: ../../addon/mailtest/mailtest.php:19 -msgid "Send test email" -msgstr "Enviar un correo electrónico de prueba" - -#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50 -msgid "No recipients found." -msgstr "No se han encontrado destinatarios." - -#: ../../addon/mailtest/mailtest.php:66 -msgid "Mail sent." -msgstr "El correo electrónico ha sido enviado." - -#: ../../addon/mailtest/mailtest.php:68 -msgid "Sending of mail failed." -msgstr "No se pudo enviar el correo." - -#: ../../addon/mailtest/mailtest.php:77 -msgid "Mail Test" -msgstr "Prueba de correo" - -#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92 -msgid "Message subject" -msgstr "Asunto del mensaje" - -#: ../../addon/mdpost/mdpost.php:42 -msgid "Use markdown for editing posts" -msgstr "Usar markdown para editar las entradas" - -#: ../../addon/openstreetmap/openstreetmap.php:119 -msgid "View Larger" -msgstr "Ver más grande" - -#: ../../addon/openstreetmap/openstreetmap.php:135 -msgid "Tile Server URL" -msgstr "URL del servidor de mosaicos de imágenes " - -#: ../../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>" - -#: ../../addon/openstreetmap/openstreetmap.php:136 -msgid "Nominatim (reverse geocoding) Server URL" -msgstr "URL del servidor nominatim (geocodificación inversa)" - -#: ../../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>" - -#: ../../addon/openstreetmap/openstreetmap.php:137 -msgid "Default zoom" -msgstr "Zoom predeterminado" - -#: ../../addon/openstreetmap/openstreetmap.php:137 -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)" - -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include marker on map" -msgstr "Incluir un marcador en el mapa" - -#: ../../addon/openstreetmap/openstreetmap.php:138 -msgid "Include a marker on the map." -msgstr "Incluir un marcador en el mapa." - -#: ../../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" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22 -msgid "Fuzzloc Settings updated." -msgstr "Los ajustes de Fuzzloc se han actualizado." - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 -msgid "Fuzzy Location App" -msgstr "App Fuzzy Location" - -#: ../../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" - -#: ../../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" - -#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53 -msgid "Fuzzy Location" -msgstr "Fuzzy Location" - -#: ../../addon/rtof/rtof.php:51 -msgid "Post to Friendica" -msgstr "Publicar en Friendica" - -#: ../../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." - -#: ../../addon/rtof/Mod_Rtof.php:36 -msgid "Friendica Crosspost Connector App" -msgstr "App Friendica Crosspost Connector" - -#: ../../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" - -#: ../../addon/rtof/Mod_Rtof.php:49 -msgid "Send public postings to Friendica by default" -msgstr "Enviar entradas públicas a Friendica por defecto" - -#: ../../addon/rtof/Mod_Rtof.php:53 -msgid "Friendica API Path" -msgstr "Ruta a la API de Friendica" - -#: ../../addon/rtof/Mod_Rtof.php:53 ../../addon/redred/Mod_Redred.php:67 -msgid "https://{sitename}/api" -msgstr "https://{sitename}/api" - -#: ../../addon/rtof/Mod_Rtof.php:57 -msgid "Friendica login name" -msgstr "Nombre de inicio de sesión en Friendica" - -#: ../../addon/rtof/Mod_Rtof.php:61 -msgid "Friendica password" -msgstr "Contraseña de Friendica" - -#: ../../addon/rtof/Mod_Rtof.php:69 -msgid "Friendica Crosspost Connector" -msgstr "Friendica Crosspost Connector" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:96 -msgid "Jappixmini App" -msgstr "App Jappixmini" - -#: ../../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" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:157 -#: ../../include/channel.php:1518 ../../include/channel.php:1689 -msgid "Status:" -msgstr "Estado:" - -#: ../../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" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:166 -msgid "Jabber username" -msgstr "Nombre de usuario en Jabber" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:172 -msgid "Jabber server" -msgstr "Servidor de Jabber" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:178 -msgid "Jabber BOSH host URL" -msgstr "URL del host BOSH de Jabber" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:185 -msgid "Jabber password" -msgstr "Contraseña en Jabber" - -#: ../../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" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:195 -#: ../../addon/redred/Mod_Redred.php:79 -msgid "Hubzilla password" -msgstr "Contraseña de Hubzilla" - -#: ../../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" - -#: ../../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" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:212 -msgid "Configuration Help" -msgstr "Ayuda para los ajustes" - -#: ../../addon/jappixmini/Mod_Jappixmini.php:258 -msgid "Jappixmini Settings" -msgstr "Ajustes de Jappixmini" - -#: ../../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" - -#: ../../addon/upgrade_info/upgrade_info.php:50 -msgid "Please have a look at the" -msgstr "Por favor, eche un vistazo a la " - -#: ../../addon/upgrade_info/upgrade_info.php:52 -msgid "git history" -msgstr "historial del git" - -#: ../../addon/upgrade_info/upgrade_info.php:54 -msgid "change log" -msgstr "lista de cambios" - -#: ../../addon/upgrade_info/upgrade_info.php:55 -msgid "for further info." -msgstr "para más información." - -#: ../../addon/upgrade_info/upgrade_info.php:60 -msgid "Upgrade Info" -msgstr "Información de actualización" - -#: ../../addon/upgrade_info/upgrade_info.php:64 -msgid "Do not show this again" -msgstr "No mostrar esto de nuevo" - -#: ../../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" - -#: ../../addon/channelreputation/channelreputation.php:108 -msgid "Enable Community Moderation" -msgstr "Habilitar la moderación de la comunidad" - -#: ../../addon/channelreputation/channelreputation.php:116 -msgid "Reputation automatically given to new members" -msgstr "La reputación se otorga automáticamente a los nuevos miembros" - -#: ../../addon/channelreputation/channelreputation.php:117 -msgid "Reputation will never fall below this value" -msgstr "La reputación nunca caerá por debajo de este valor" - -#: ../../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" - -#: ../../addon/channelreputation/channelreputation.php:119 -msgid "Minimum reputation before commenting is allowed" -msgstr "Mínima reputación antes de que se permitan los comentarios" - -#: ../../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" - -#: ../../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." - -#: ../../addon/channelreputation/channelreputation.php:122 -msgid "Reputation \"cost\" to post" -msgstr "\"Coste\" de la reputación a contabilizar" - -#: ../../addon/channelreputation/channelreputation.php:123 -msgid "Reputation \"cost\" to comment" -msgstr "\"Coste\" de la reputación para comentar" - -#: ../../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" - -#: ../../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 " - -#: ../../addon/channelreputation/channelreputation.php:139 -msgid "Community Moderation Settings" -msgstr "Configuración de la moderación de la comunidad" - -#: ../../addon/channelreputation/channelreputation.php:229 -msgid "Channel Reputation" -msgstr "Reputación del canal" - -#: ../../addon/channelreputation/channelreputation.php:233 -msgid "An Error has occurred." -msgstr "Se ha producido un error." - -#: ../../addon/channelreputation/channelreputation.php:251 -msgid "Upvote" -msgstr "Votar a favor" - -#: ../../addon/channelreputation/channelreputation.php:252 -msgid "Downvote" -msgstr "Votar en contra" - -#: ../../addon/channelreputation/channelreputation.php:374 -msgid "Can moderate reputation on my channel." -msgstr "Se puede moderar la reputación en mi canal." - -#: ../../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:21 -msgid "Block channels" -msgstr "Bloquear canales" - -#: ../../addon/superblock/Mod_Superblock.php:63 -msgid "superblock settings updated" -msgstr "se han actualizado los ajustes de superblock" - -#: ../../addon/superblock/Mod_Superblock.php:87 -msgid "Currently blocked" -msgstr "Actualmente bloqueado" - -#: ../../addon/superblock/Mod_Superblock.php:89 -msgid "No channels currently blocked" -msgstr "No hay canales bloqueados actualmente" - -#: ../../addon/nofed/Mod_Nofed.php:21 -msgid "nofed Settings saved." -msgstr "Se han guardado los ajustes de nofed." - -#: ../../addon/nofed/Mod_Nofed.php:33 -msgid "No Federation App" -msgstr "App No Federation" - -#: ../../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." - -#: ../../addon/nofed/Mod_Nofed.php:42 -msgid "Federate posts by default" -msgstr "Federar las publicaciones por defecto" - -#: ../../addon/nofed/Mod_Nofed.php:50 -msgid "No Federation" -msgstr "No Federation" - -#: ../../addon/nofed/nofed.php:47 -msgid "Federate" -msgstr "Federar" - -#: ../../addon/redred/Mod_Redred.php:24 -msgid "Channel is required." -msgstr "Se requiere un canal." - -#: ../../addon/redred/Mod_Redred.php:38 -msgid "Hubzilla Crosspost Connector Settings saved." -msgstr "Se han guardado los ajustes de Hubzilla Crosspost Connector" - -#: ../../addon/redred/Mod_Redred.php:50 -#: ../../addon/statusnet/Mod_Statusnet.php:146 -msgid "Hubzilla Crosspost Connector App" -msgstr "App Hubzilla Crosspost Connector" - -#: ../../addon/redred/Mod_Redred.php:51 -msgid "Relay public postings to another Hubzilla channel" -msgstr "Retransmisión de entradas a otro canal de Hubzilla" - -#: ../../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" - -#: ../../addon/redred/Mod_Redred.php:67 -msgid "Hubzilla API Path" -msgstr "Ruta de la API de Hubzilla" - -#: ../../addon/redred/Mod_Redred.php:71 -msgid "Hubzilla login name" -msgstr "Nombre de inicio de sesión en Hubzilla" - -#: ../../addon/redred/Mod_Redred.php:75 -msgid "Hubzilla channel name" -msgstr "Nombre del canal de Hubzilla" - -#: ../../addon/redred/Mod_Redred.php:87 -msgid "Hubzilla Crosspost Connector" -msgstr "Hubzilla Crosspost Connector" - -#: ../../addon/redred/redred.php:50 -msgid "Post to Hubzilla" -msgstr "Publicar en Hubzilla" - -#: ../../addon/logrot/logrot.php:36 -msgid "Logfile archive directory" -msgstr "Directorio de los ficheros de informe" - -#: ../../addon/logrot/logrot.php:36 -msgid "Directory to store rotated logs" -msgstr "Directorio para almacenar los informes rotados" - -#: ../../addon/logrot/logrot.php:37 -msgid "Logfile size in bytes before rotating" -msgstr "Tamaño del fichero de informe en bytes antes de rotarlo" - -#: ../../addon/logrot/logrot.php:38 -msgid "Number of logfiles to retain" -msgstr "Número de ficheros de informe que se deben retener" - -#: ../../addon/content_import/Mod_content_import.php:27 -msgid "No server specified" -msgstr "No se ha especificado ningún servidor" - -#: ../../addon/content_import/Mod_content_import.php:73 -msgid "Posts imported" -msgstr "Entradas importadas" - -#: ../../addon/content_import/Mod_content_import.php:113 -msgid "Files imported" -msgstr "Ficheros importados" - -#: ../../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." - -#: ../../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." - -#: ../../addon/content_import/Mod_content_import.php:137 -msgid "Include posts" -msgstr "Incluir entradas" - -#: ../../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" - -#: ../../addon/content_import/Mod_content_import.php:138 -msgid "Include files" -msgstr "Incluir ficheros" - -#: ../../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" - -#: ../../addon/content_import/Mod_content_import.php:139 -msgid "Original Server base URL" -msgstr "URL base del servidor original" - -#: ../../addon/frphotos/frphotos.php:92 -msgid "Friendica Photo Album Import" -msgstr "Importar un álbum de fotos de Friendica" - -#: ../../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." - -#: ../../addon/frphotos/frphotos.php:94 -msgid "Friendica Server base URL" -msgstr "URL base del servidor de Friendica" - -#: ../../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" - -#: ../../addon/hsse/Mod_Hsse.php:15 -msgid "WYSIWYG status editor" -msgstr "Editor de estado de WYSIWYG" - -#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26 -msgid "WYSIWYG Status App" -msgstr "App WYSIWYG Status" - -#: ../../addon/hsse/Mod_Hsse.php:34 -msgid "WYSIWYG Status" -msgstr "Estado de WYSIWYG" - -#: ../../addon/hsse/hsse.php:82 ../../include/conversation.php:1285 -msgid "Set your location" -msgstr "Establecer su ubicación" - -#: ../../addon/hsse/hsse.php:83 ../../include/conversation.php:1286 -msgid "Clear browser location" -msgstr "Eliminar los datos de localización geográfica del navegador" - -#: ../../addon/hsse/hsse.php:99 ../../include/conversation.php:1302 -msgid "Embed (existing) photo from your photo albums" -msgstr "Insertar una foto de sus álbumes" - -#: ../../addon/hsse/hsse.php:135 ../../include/conversation.php:1338 -msgid "Tag term:" -msgstr "Término de la etiqueta:" - -#: ../../addon/hsse/hsse.php:136 ../../include/conversation.php:1339 -msgid "Where are you right now?" -msgstr "¿Donde está ahora?" - -#: ../../addon/hsse/hsse.php:141 ../../include/conversation.php:1344 -msgid "Choose a different album..." -msgstr "Elegir un álbum diferente..." - -#: ../../addon/hsse/hsse.php:145 ../../include/conversation.php:1348 -msgid "Comments enabled" -msgstr "Comentarios habilitados" - -#: ../../addon/hsse/hsse.php:146 ../../include/conversation.php:1349 -msgid "Comments disabled" -msgstr "Comentarios deshabilitados" - -#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401 -msgid "Page link name" -msgstr "Nombre del enlace de la página" - -#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404 -msgid "Post as" -msgstr "Publicar como" - -#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418 -msgid "Toggle voting" -msgstr "Cambiar votación" - -#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421 -msgid "Disable comments" -msgstr "Dehabilitar los comentarios" - -#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422 -msgid "Toggle comments" -msgstr "Activar o desactivar los comentarios" - -#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430 -msgid "Categories (optional, comma-separated list)" -msgstr "Temas (opcional, lista separada por comas)" - -#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453 -msgid "Other networks and post services" -msgstr "Otras redes y servicios de publicación" - -#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459 -msgid "Set publish date" -msgstr "Establecer la fecha de publicación" - -#: ../../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 "" -"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." - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40 -msgid "Activitypub Protocol App" -msgstr "App Protocolo Activitypub" - -#: ../../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" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50 -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" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54 -msgid "Send multi-media HTML articles" -msgstr "Enviar artículos multimedia en HTML" - -#: ../../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" - -#: ../../addon/pubcrawl/Mod_Pubcrawl.php:62 -msgid "Activitypub Protocol" -msgstr "Protocolo Activitypub" - -#: ../../addon/donate/donate.php:21 -msgid "Project Servers and Resources" -msgstr "Servidores y recursos del proyecto" - -#: ../../addon/donate/donate.php:22 -msgid "Project Creator and Tech Lead" -msgstr "Creador del proyecto y director técnico" - -#: ../../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." - -#: ../../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." - -#: ../../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>.)" - -#: ../../addon/donate/donate.php:54 -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." - -#: ../../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 "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." - -#: ../../addon/donate/donate.php:59 -msgid "Donate" -msgstr "Donar" - -#: ../../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" - -#: ../../addon/donate/donate.php:62 -msgid "Donate Now" -msgstr "Donar ahora" - -#: ../../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)" - -#: ../../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" - -#: ../../addon/donate/donate.php:65 -msgid "Sponsor" -msgstr "Patrocinador" - -#: ../../addon/donate/donate.php:68 -msgid "Special thanks to: " -msgstr "Agradecimiento especial a: " - -#: ../../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." - -#: ../../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." - -#: ../../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 ..." - -#: ../../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" - -#: ../../addon/chords/Mod_Chords.php:58 -msgid "Chord name: example: Em7" -msgstr "Nombre del acorde, por ejemplo: Em7" - -#: ../../addon/chords/Mod_Chords.php:59 -msgid "Show for left handed stringing" -msgstr "Mostrar para tocadores zurdos" - -#: ../../addon/chords/chords.php:33 -msgid "Quick Reference" -msgstr "Referencia rápida" - -#: ../../addon/libertree/libertree.php:43 -msgid "Post to Libertree" -msgstr "Publicar en Libertree" - -#: ../../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." - -#: ../../addon/libertree/Mod_Libertree.php:35 -msgid "Libertree Crosspost Connector App" -msgstr "App Libertree Crosspost Connector" - -#: ../../addon/libertree/Mod_Libertree.php:36 -msgid "Relay public posts to Libertree" -msgstr "Retransmisión de entradas públicas a Libertree" - -#: ../../addon/libertree/Mod_Libertree.php:51 -msgid "Libertree API token" -msgstr "Token de la API de Libertree" - -#: ../../addon/libertree/Mod_Libertree.php:55 -msgid "Libertree site URL" -msgstr "URL del servidor de Libertree" - -#: ../../addon/libertree/Mod_Libertree.php:59 -msgid "Post to Libertree by default" -msgstr "Publicar en Libertree por defecto" - -#: ../../addon/libertree/Mod_Libertree.php:67 -msgid "Libertree Crosspost Connector" -msgstr "Libertree Crosspost Connector" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41 -msgid "Flattr widget settings updated." -msgstr "Los ajustes del widget Flattr han sido actualizados." - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53 -msgid "Flattr Widget App" -msgstr "App Flattr Widget" - -#: ../../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" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65 -msgid "Flattr user" -msgstr "Usuario en Flattr" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "URL of the Thing to flattr" -msgstr "URL de la Cosa para apoyar en flattr" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69 -msgid "If empty channel URL is used" -msgstr "Si está vacío, se usa la URL del canal" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73 -msgid "Title of the Thing to flattr" -msgstr "Título de la Cosa para apoyar en flattr" - -#: ../../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\"" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "Static or dynamic flattr button" -msgstr "Botón de flattr estático o dinámico" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "static" -msgstr "estático" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77 -msgid "dynamic" -msgstr "dinámico" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "Alignment of the widget" -msgstr "Alineamiento del widget" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "left" -msgstr "izquierda" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81 -msgid "right" -msgstr "derecha" - -#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89 -msgid "Flattr Widget" -msgstr "Flattr Widget" - -#: ../../addon/flattrwidget/flattrwidget.php:50 -msgid "Flattr this!" -msgstr "¡Apoyar esto en Flattr!" - -#: ../../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." - -#: ../../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." - -#: ../../addon/statusnet/Mod_Statusnet.php:130 -msgid "GNU social settings updated." -msgstr "Se han guardado los ajustes de GNU social." - -#: ../../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)" - -#: ../../addon/statusnet/Mod_Statusnet.php:181 -msgid "Globally Available GNU social OAuthKeys" -msgstr "OAuthKeys globales de GNU social disponibles" - -#: ../../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)." - -#: ../../addon/statusnet/Mod_Statusnet.php:198 -msgid "Provide your own OAuth Credentials" -msgstr "Proporcione sus propias credenciales de OAuth" - -#: ../../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." - -#: ../../addon/statusnet/Mod_Statusnet.php:204 -msgid "OAuth Consumer Key" -msgstr "OAuth Consumer Key" - -#: ../../addon/statusnet/Mod_Statusnet.php:208 -msgid "OAuth Consumer Secret" -msgstr "OAuth Consumer Secret" - -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Base API Path" -msgstr "Ruta base de la API" - -#: ../../addon/statusnet/Mod_Statusnet.php:212 -msgid "Remember the trailing /" -msgstr "Recuerde la barra /" - -#: ../../addon/statusnet/Mod_Statusnet.php:216 -msgid "GNU social application name" -msgstr "Nombre de la aplicación de GNU social" - -#: ../../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." - -#: ../../addon/statusnet/Mod_Statusnet.php:241 -msgid "Log in with GNU social" -msgstr "Inicio de sesión en GNU social" - -#: ../../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" - -#: ../../addon/statusnet/Mod_Statusnet.php:254 -msgid "Cancel Connection Process" -msgstr "Cancelar el proceso de conexión" - -#: ../../addon/statusnet/Mod_Statusnet.php:256 -msgid "Current GNU social API is" -msgstr "La API actual de GNU social es " - -#: ../../addon/statusnet/Mod_Statusnet.php:260 -msgid "Cancel GNU social Connection" -msgstr "Cancelar la conexión de GNU social" - -#: ../../addon/statusnet/Mod_Statusnet.php:272 -#: ../../addon/twitter/Mod_Twitter.php:147 -msgid "Currently connected to: " -msgstr "Actualmente está conectado a: " - -#: ../../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." - -#: ../../addon/statusnet/Mod_Statusnet.php:282 -msgid "Post to GNU social by default" -msgstr "Publicar en GNU social por defecto" - -#: ../../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" - -#: ../../addon/statusnet/Mod_Statusnet.php:291 -#: ../../addon/twitter/Mod_Twitter.php:171 -msgid "Clear OAuth configuration" -msgstr "Limpiar la configuración de OAuth" - -#: ../../addon/statusnet/Mod_Statusnet.php:303 -msgid "GNU-Social Crosspost Connector" -msgstr "GNU-Social Crosspost Connector" - -#: ../../addon/statusnet/statusnet.php:145 -msgid "Post to GNU social" -msgstr "Publicar en GNU social" - -#: ../../addon/statusnet/statusnet.php:594 -msgid "API URL" -msgstr "URL de la API" - -#: ../../addon/statusnet/statusnet.php:597 -msgid "Application name" -msgstr "Nombre de la aplicación" - -#: ../../addon/qrator/qrator.php:48 -msgid "QR code" -msgstr "Código QR" - -#: ../../addon/qrator/qrator.php:63 -msgid "QR Generator" -msgstr "Generador QR" - -#: ../../addon/qrator/qrator.php:64 -msgid "Enter some text" -msgstr "Escribir algún texto" - -#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377 -msgid "Invalid game." -msgstr "Juego no válido." - -#: ../../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." - -#: ../../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" - -#: ../../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." - -#: ../../addon/chess/Mod_Chess.php:271 -msgid "Random color chosen." -msgstr "Elegido un color aleatorio." - -#: ../../addon/chess/Mod_Chess.php:279 -msgid "Error creating new game." -msgstr "Error al crear un nuevo juego." - -#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1273 -msgid "Requested channel is not available." -msgstr "El canal solicitado no está disponible." - -#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333 -msgid "Chess not installed." -msgstr "Chess no está instalado." - -#: ../../addon/chess/Mod_Chess.php:326 -msgid "You must select a local channel /chess/channelname" -msgstr "Debe seleccionar un canal local /chess/nombredelcanal" - -#: ../../addon/chess/chess.php:645 -msgid "Enable notifications" -msgstr "Habilitar notificaciones" - -#: ../../addon/twitter/Mod_Twitter.php:65 -msgid "Twitter settings updated." -msgstr "Se han actualizado los ajustes de Twitter." - -#: ../../addon/twitter/Mod_Twitter.php:78 -msgid "Twitter Crosspost Connector App" -msgstr "App Twitter Crosspost Connector" - -#: ../../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 "" -"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." - -#: ../../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." - -#: ../../addon/twitter/Mod_Twitter.php:127 -msgid "Log in with Twitter" -msgstr "Iniciar sesión en Twitter" - -#: ../../addon/twitter/Mod_Twitter.php:130 -msgid "Copy the PIN from Twitter here" -msgstr "Copiar aquí el PIN de Twitter" - -#: ../../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." - -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Twitter post length" -msgstr "Longitud del mensaje en Twitter" - -#: ../../addon/twitter/Mod_Twitter.php:157 -msgid "Maximum tweet length" -msgstr "Longitud máxima del tweet" - -#: ../../addon/twitter/Mod_Twitter.php:162 -msgid "Send public postings to Twitter by default" -msgstr "Enviar mensajes públicos a Twitter de forma predeterminada" - -#: ../../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." - -#: ../../addon/twitter/Mod_Twitter.php:181 -msgid "Twitter Crosspost Connector" -msgstr "Twitter Crosspost Connector" - -#: ../../addon/twitter/twitter.php:107 -msgid "Post to Twitter" -msgstr "Publicar en Twitter" - -#: ../../addon/smileybutton/Mod_Smileybutton.php:35 -msgid "Smileybutton App" -msgstr "App Smileybutton" - -#: ../../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" - -#: ../../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." - -#: ../../addon/smileybutton/Mod_Smileybutton.php:52 -msgid "Smileybutton Settings" -msgstr "Ajustes de Smileybutton" - -#: ../../addon/cart/Settings/Cart.php:56 -msgid "Enable Test Catalog" -msgstr "Habilitar el catálogo de pruebas" - -#: ../../addon/cart/Settings/Cart.php:68 -msgid "Enable Manual Payments" -msgstr "Permitir pagos manuales" - -#: ../../addon/cart/Settings/Cart.php:88 -msgid "Base Merchant Currency" -msgstr "Divida base del vendedor" - -#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1263 -msgid "Cart Settings" -msgstr "Configuración del carro de la compra" - -#: ../../addon/cart/myshop.php:30 -msgid "Access Denied." -msgstr "Acceso denegado" - -#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1334 -msgid "Order Not Found" -msgstr "No se ha encontrado el pedido" - -#: ../../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" - -#: ../../addon/cart/cart.php:159 -msgid "DB Cleanup Failure" -msgstr "Fallo de limpieza de la base de datos" - -#: ../../addon/cart/cart.php:565 -msgid "[cart] Item Added" -msgstr "[cesta] Artículo añadido" - -#: ../../addon/cart/cart.php:953 -msgid "Order already checked out." -msgstr "El pedido ya ha sido revisado" - -#: ../../addon/cart/cart.php:1256 -msgid "Drop database tables when uninstalling." -msgstr "Eliminar tablas de la base de datos al desinstalar." - -#: ../../addon/cart/cart.php:1275 ../../addon/cart/cart.php:1278 -msgid "Shop" -msgstr "Comprar" - -#: ../../addon/cart/cart.php:1395 -msgid "Cart utilities for orders and payments" -msgstr "Utilidades del carro para pedidos y pagos" - -#: ../../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." - -#: ../../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." - -#: ../../addon/cart/cart.php:1474 -msgid "Access denied." -msgstr "Acceso denegado" - -#: ../../addon/cart/cart.php:1526 ../../addon/cart/cart.php:1669 -msgid "No Order Found" -msgstr "No se ha encontrado ningún pedido" - -#: ../../addon/cart/cart.php:1535 -msgid "An unknown error has occurred Please start again." -msgstr "Se ha producido un error desconocido Vuelva a empezar." - -#: ../../addon/cart/cart.php:1702 -msgid "Invalid Payment Type. Please start again." -msgstr "Tipo de pago no válido. Por favor, empiece de nuevo." - -#: ../../addon/cart/cart.php:1709 -msgid "Order not found" -msgstr "El pedido no se ha encontrado" - -#: ../../addon/cart/submodules/paypalbutton.php:85 -msgid "Enable Paypal Button Module" -msgstr "Habilitar el módulo del botón de Paypal" - -#: ../../addon/cart/submodules/paypalbutton.php:93 -msgid "Use Production Key" -msgstr "Utilizar clave en entorno de producción" - -#: ../../addon/cart/submodules/paypalbutton.php:100 -msgid "Paypal Sandbox Client Key" -msgstr "Clave de cliente en el entorno de pruebas de Paypal" - -#: ../../addon/cart/submodules/paypalbutton.php:107 -msgid "Paypal Sandbox Secret Key" -msgstr "Clave secreta en el entorno de pruebas de Paypal" - -#: ../../addon/cart/submodules/paypalbutton.php:113 -msgid "Paypal Production Client Key" -msgstr "Clave de cliente en el entorno de producción de Paypal" - -#: ../../addon/cart/submodules/paypalbutton.php:120 -msgid "Paypal Production Secret Key" -msgstr "Clave secreta en el entorno de producción de Paypal" - -#: ../../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." - -#: ../../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." - -#: ../../addon/cart/submodules/manualcat.php:61 -msgid "Enable Manual Cart Module" -msgstr "Habilitar el módulo de carro manual" - -#: ../../addon/cart/submodules/manualcat.php:173 -#: ../../addon/cart/submodules/hzservices.php:160 -msgid "New Sku" -msgstr "Nuevo SKU (número de referencia)" - -#: ../../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." - -#: ../../addon/cart/submodules/manualcat.php:252 -#: ../../addon/cart/submodules/hzservices.php:644 -msgid "Changes Locked" -msgstr "Cambios bloqueados" - -#: ../../addon/cart/submodules/manualcat.php:256 -#: ../../addon/cart/submodules/hzservices.php:648 -msgid "Item available for purchase." -msgstr "Artículo disponible para la compra." - -#: ../../addon/cart/submodules/manualcat.php:263 -#: ../../addon/cart/submodules/hzservices.php:655 -msgid "Price" -msgstr "Precio" - -#: ../../addon/cart/submodules/hzservices.php:62 -msgid "Enable Hubzilla Services Module" -msgstr "Habilitar el Módulo de Servicios de Hubzilla" - -#: ../../addon/cart/submodules/hzservices.php:243 -#: ../../addon/cart/submodules/hzservices.php:330 -msgid "SKU not found." -msgstr "No se ha encontrado el SKU" - -#: ../../addon/cart/submodules/hzservices.php:296 -#: ../../addon/cart/submodules/hzservices.php:300 -msgid "Invalid Activation Directive." -msgstr "Directiva de activación no válida." - -#: ../../addon/cart/submodules/hzservices.php:371 -#: ../../addon/cart/submodules/hzservices.php:375 -msgid "Invalid Deactivation Directive." -msgstr "Directiva de desactivación no válida" - -#: ../../addon/cart/submodules/hzservices.php:561 -msgid "Add to this privacy group" -msgstr "Añadir a este grupo de canales" - -#: ../../addon/cart/submodules/hzservices.php:577 -msgid "Set user service class" -msgstr "Configurar la clase de servicio al usuario" - -#: ../../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." - -#: ../../addon/cart/submodules/hzservices.php:659 -msgid "Add buyer to privacy group" -msgstr "Agregar comprador al grupo de canales" - -#: ../../addon/cart/submodules/hzservices.php:664 -msgid "Add buyer as connection" -msgstr "Añadir comprador como conexión" - -#: ../../addon/cart/submodules/hzservices.php:672 -#: ../../addon/cart/submodules/hzservices.php:714 -msgid "Set Service Class" -msgstr "Establecer clase de servicio" - -#: ../../addon/cart/submodules/subscriptions.php:151 -msgid "Enable Subscription Management Module" -msgstr "Habilitar el módulo de gestión de suscripciones" - -#: ../../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." - -#: ../../addon/cart/submodules/subscriptions.php:372 -msgid "Select Subscription to Edit" -msgstr "Seleccione suscripción a editar" - -#: ../../addon/cart/submodules/subscriptions.php:380 -msgid "Edit Subscriptions" -msgstr "Editar suscripciones" - -#: ../../addon/cart/submodules/subscriptions.php:414 -msgid "Subscription SKU" -msgstr "SKU de la suscripción" - -#: ../../addon/cart/submodules/subscriptions.php:419 -msgid "Catalog Description" -msgstr "Descripción del catálogo" - -#: ../../addon/cart/submodules/subscriptions.php:423 -msgid "Subscription available for purchase." -msgstr "Suscripción disponible para la compra." - -#: ../../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." - -#: ../../addon/cart/submodules/subscriptions.php:431 -msgid "Subscription price." -msgstr "Precio de la suscripción." - -#: ../../addon/cart/submodules/subscriptions.php:435 -msgid "Quantity" -msgstr "Cuantía" - -#: ../../addon/cart/submodules/subscriptions.php:439 -msgid "Term" -msgstr "Condición" - -#: ../../addon/cart/manual_payments.php:7 -msgid "Error: order mismatch. Please try again." -msgstr "Error: desajuste de pedidos. Por favor, inténtelo de nuevo." - -#: ../../addon/cart/manual_payments.php:61 -msgid "Manual payments are not enabled." -msgstr "Los pagos manuales no están habilitados." - -#: ../../addon/cart/manual_payments.php:77 -msgid "Finished" -msgstr "Terminado" - -#: ../../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>." - -#: ../../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)." - -#: ../../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)" - -#: ../../addon/piwik/piwik.php:97 -msgid "Site ID" -msgstr "ID del sitio" - -#: ../../addon/piwik/piwik.php:98 -msgid "Show opt-out cookie link?" -msgstr "Mostrar el enlace de la cookie opt-out?" - -#: ../../addon/piwik/piwik.php:99 -msgid "Asynchronous tracking" -msgstr "Rastreo asíncrono" - -#: ../../addon/piwik/piwik.php:100 -msgid "Enable frontend JavaScript error tracking" -msgstr "Habilitar la interfaz JavaScript de seguimiento de errores" - -#: ../../addon/piwik/piwik.php:100 -msgid "This feature requires Piwik >= 2.2.0" -msgstr "Esta funcionalidad requiere Piwik >= 2.2.0" - -#: ../../addon/tour/tour.php:76 -msgid "Edit your profile and change settings." -msgstr "Editar su perfil y cambiar los ajustes." - -#: ../../addon/tour/tour.php:77 -msgid "Click here to see activity from your connections." -msgstr "Pulsar aquí para ver la actividad de sus conexiones." - -#: ../../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." - -#: ../../addon/tour/tour.php:79 -msgid "You can access your private messages from here." -msgstr "Puede acceder a sus mensajes privados desde aquí." - -#: ../../addon/tour/tour.php:80 -msgid "Create new events here." -msgstr "Crear nuevos eventos aquí." - -#: ../../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." - -#: ../../addon/tour/tour.php:82 -msgid "System notifications will arrive here" -msgstr "Las notificaciones del sistema llegarán aquí" - -#: ../../addon/tour/tour.php:83 -msgid "Search for content and users" -msgstr "Buscar contenido y usuarios" - -#: ../../addon/tour/tour.php:84 -msgid "Browse for new contacts" -msgstr "Buscar nuevos contactos" - -#: ../../addon/tour/tour.php:85 -msgid "Launch installed apps" -msgstr "Iniciar aplicaciones instaladas" - -#: ../../addon/tour/tour.php:86 -msgid "Looking for help? Click here." -msgstr "¿Busca ayuda? Pulse aquí." - -#: ../../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!" - -#: ../../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!" - -#: ../../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!" - -#: ../../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!" - -#: ../../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!" - -#: ../../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." - -#: ../../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)." - -#: ../../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." - -#: ../../addon/tour/tour.php:97 -msgid "Share photos, links, location, etc." -msgstr "Compartir fotos, enlaces, ubicación, etc." - -#: ../../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." - -#: ../../addon/tour/tour.php:99 -msgid "You can password protect content." -msgstr "Puede proteger contenido con una contraseña." - -#: ../../addon/tour/tour.php:100 -msgid "Choose who you share with." -msgstr "Elegir con quién compartir." - -#: ../../addon/tour/tour.php:102 -msgid "Click here when you are done." -msgstr "Haga clic aquí cuando haya terminado." - -#: ../../addon/tour/tour.php:105 -msgid "Adjust from which channels posts should be displayed." -msgstr "Ajustar de qué canales se deben mostrar las publicaciones." - -#: ../../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." - -#: ../../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 \"#\")." - -#: ../../addon/tour/tour.php:111 -msgid "Easily find posts in given category." -msgstr "Encuentre fácilmente las publicaciones en una categoría dada." - -#: ../../addon/tour/tour.php:112 -msgid "Easily find posts by date." -msgstr "Encuentre fácilmente entradas por fechas." - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../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!" - -#: ../../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" - -#: ../../addon/sendzid/Mod_Sendzid.php:14 -msgid "Send your identity to all websites" -msgstr "Enviar su identidad a todos los sitios web" - -#: ../../addon/sendzid/Mod_Sendzid.php:20 -msgid "Sendzid App" -msgstr "App Sendzid" - -#: ../../addon/sendzid/Mod_Sendzid.php:32 -msgid "Send ZID" -msgstr "Enviar ZID" - -#: ../../addon/tictac/tictac.php:21 -msgid "Three Dimensional Tic-Tac-Toe" -msgstr "Juego en 3D Tic-Tac-Toe" - -#: ../../addon/tictac/tictac.php:54 -msgid "3D Tic-Tac-Toe" -msgstr "3D Tic-Tac-Toe" - -#: ../../addon/tictac/tictac.php:59 -msgid "New game" -msgstr "Nuevo juego" - -#: ../../addon/tictac/tictac.php:60 -msgid "New game with handicap" -msgstr "Nuevo juego con hándicap" - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../addon/tictac/tictac.php:183 -msgid "You go first..." -msgstr "Usted va primero..." - -#: ../../addon/tictac/tictac.php:188 -msgid "I'm going first this time..." -msgstr "Yo voy primero esta vez..." - -#: ../../addon/tictac/tictac.php:194 -msgid "You won!" -msgstr "¡Usted ha ganado!" - -#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 -msgid "\"Cat\" game!" -msgstr "¡El juego del \"gato\"!" - -#: ../../addon/tictac/tictac.php:223 -msgid "I won!" -msgstr "¡He ganado yo!" - -#: ../../addon/pageheader/Mod_Pageheader.php:22 -msgid "pageheader Settings saved." -msgstr "Se han guardado los ajustes del encabezado de página." - -#: ../../addon/pageheader/Mod_Pageheader.php:34 -msgid "Page Header App" -msgstr "App Page Header" - -#: ../../addon/pageheader/Mod_Pageheader.php:35 -msgid "Inserts a page header" -msgstr "Inserta un encabezado de página" - -#: ../../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" - -#: ../../addon/pageheader/Mod_Pageheader.php:51 -msgid "Page Header" -msgstr "Page Header" - -#: ../../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" - -#: ../../addon/authchoose/Mod_Authchoose.php:28 -#: ../../addon/authchoose/Mod_Authchoose.php:33 -msgid "Authchoose App" -msgstr "App Authchoose" - -#: ../../addon/authchoose/Mod_Authchoose.php:39 -msgid "Authchoose" -msgstr "Autoseleccionar" - -#: ../../addon/moremoods/moremoods.php:19 -msgid "lonely" -msgstr "Solo/a" - -#: ../../addon/moremoods/moremoods.php:20 -msgid "drunk" -msgstr "ebrio/a" - -#: ../../addon/moremoods/moremoods.php:21 -msgid "horny" -msgstr "caliente" - -#: ../../addon/moremoods/moremoods.php:22 -msgid "stoned" -msgstr "drogado/a" - -#: ../../addon/moremoods/moremoods.php:23 -msgid "fucked up" -msgstr "jodido/a" - -#: ../../addon/moremoods/moremoods.php:24 -msgid "clusterfucked" -msgstr "hecho/a polvo" - -#: ../../addon/moremoods/moremoods.php:25 -msgid "crazy" -msgstr "loco/a" - -#: ../../addon/moremoods/moremoods.php:26 -msgid "hurt" -msgstr "ofendido/a" - -#: ../../addon/moremoods/moremoods.php:27 -msgid "sleepy" -msgstr "soñoliento/a" - -#: ../../addon/moremoods/moremoods.php:28 -msgid "grumpy" -msgstr "gruñón/ona" - -#: ../../addon/moremoods/moremoods.php:29 -msgid "high" -msgstr "superior" - -#: ../../addon/moremoods/moremoods.php:30 -msgid "semi-conscious" -msgstr "semiconsciente" - -#: ../../addon/moremoods/moremoods.php:31 -msgid "in love" -msgstr "enamorado/a" - -#: ../../addon/moremoods/moremoods.php:32 -msgid "in lust" -msgstr "lujurioso/a" - -#: ../../addon/moremoods/moremoods.php:33 -msgid "naked" -msgstr "desnudo/a" - -#: ../../addon/moremoods/moremoods.php:34 -msgid "stinky" -msgstr "apestoso/a" - -#: ../../addon/moremoods/moremoods.php:35 -msgid "sweaty" -msgstr "sudoroso/a" - -#: ../../addon/moremoods/moremoods.php:36 -msgid "bleeding out" -msgstr "exánime" - -#: ../../addon/moremoods/moremoods.php:37 -msgid "victorious" -msgstr "victorioso/a" - -#: ../../addon/moremoods/moremoods.php:38 -msgid "defeated" -msgstr "derrotado/a" - -#: ../../addon/moremoods/moremoods.php:39 -msgid "envious" -msgstr "envidioso/a" - -#: ../../addon/moremoods/moremoods.php:40 -msgid "jealous" -msgstr "celoso/a" - -#: ../../addon/xmpp/Mod_Xmpp.php:23 -msgid "XMPP settings updated." -msgstr "Se han actualizado los ajustes de XMPP." - -#: ../../addon/xmpp/Mod_Xmpp.php:35 -msgid "XMPP App" -msgstr "App XMPP" - -#: ../../addon/xmpp/Mod_Xmpp.php:36 -msgid "Embedded XMPP (Jabber) client" -msgstr "Cliente XMPP (Jabber) integrado" - -#: ../../addon/xmpp/Mod_Xmpp.php:52 -msgid "Individual credentials" -msgstr "Credenciales individuales" - -#: ../../addon/xmpp/Mod_Xmpp.php:58 -msgid "Jabber BOSH server" -msgstr "Servidor BOSH de Jabber" - -#: ../../addon/xmpp/Mod_Xmpp.php:67 -msgid "XMPP Settings" -msgstr "Ajustes de XMPP" - -#: ../../addon/xmpp/xmpp.php:44 -msgid "Jabber BOSH host" -msgstr "BOSH de Jabber" - -#: ../../addon/xmpp/xmpp.php:45 -msgid "Use central userbase" -msgstr "Usar la base de usuarios central" - -#: ../../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\"." - -#: ../../addon/wholikesme/wholikesme.php:29 -msgid "Who likes me?" -msgstr "¿Quién me ha puesto \"Me gusta\"?" - -#: ../../addon/pumpio/Mod_Pumpio.php:40 -msgid "Pump.io Settings saved." -msgstr "Se han guardado los ajustes de Pump.io" - -#: ../../addon/pumpio/Mod_Pumpio.php:53 -msgid "Pump.io Crosspost Connector App" -msgstr "App Pump.io Crosspost Connector" - -#: ../../addon/pumpio/Mod_Pumpio.php:54 -msgid "Relay public posts to pump.io" -msgstr "Retransmisión de entradas públicas a pump.io" - -#: ../../addon/pumpio/Mod_Pumpio.php:73 -msgid "Pump.io servername" -msgstr "Nombre del servidor de Pump.io" - -#: ../../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" - -#: ../../addon/pumpio/Mod_Pumpio.php:77 -msgid "Without the servername" -msgstr "Sin el nombre del servidor" - -#: ../../addon/pumpio/Mod_Pumpio.php:88 -msgid "You are not authenticated to pumpio" -msgstr "No está autenticado en pump.io" - -#: ../../addon/pumpio/Mod_Pumpio.php:90 -msgid "(Re-)Authenticate your pump.io connection" -msgstr "(Re-)Autenticar su conexión en pump.io" - -#: ../../addon/pumpio/Mod_Pumpio.php:94 -msgid "Post to pump.io by default" -msgstr "Publicar por defecto en pump.io" - -#: ../../addon/pumpio/Mod_Pumpio.php:98 -msgid "Should posts be public" -msgstr "¿Las entradas deben ser públicas?" - -#: ../../addon/pumpio/Mod_Pumpio.php:102 -msgid "Mirror all public posts" -msgstr "Reflejar todos los mensajes públicos" - -#: ../../addon/pumpio/Mod_Pumpio.php:112 -msgid "Pump.io Crosspost Connector" -msgstr "Pump.io Crosspost Connector" - -#: ../../addon/pumpio/pumpio.php:152 -msgid "You are now authenticated to pumpio." -msgstr "Ahora está autenticado en pump.io." - -#: ../../addon/pumpio/pumpio.php:153 -msgid "return to the featured settings page" -msgstr "Volver a la página de configuración destacada" - -#: ../../addon/pumpio/pumpio.php:168 -msgid "Post to Pump.io" -msgstr "Publicar en Pump.io" - -#: ../../addon/ldapauth/ldapauth.php:70 -msgid "An account has been created for you." -msgstr "Se ha creado una cuenta para usted." - -#: ../../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." - -#: ../../addon/opensearch/opensearch.php:26 -#, php-format -msgctxt "opensearch" -msgid "Search %1$s (%2$s)" -msgstr "Buscar %1$s (%2$s)" - -#: ../../addon/opensearch/opensearch.php:28 -msgctxt "opensearch" -msgid "$Projectname" -msgstr "$Projectname" - -#: ../../addon/opensearch/opensearch.php:43 -msgid "Search $Projectname" -msgstr "Buscar $Projectname" - -#: ../../addon/redfiles/redfiles.php:119 -msgid "Redmatrix File Storage Import" -msgstr "Importar repositorio de ficheros de Redmatrix" - -#: ../../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." - -#: ../../addon/redfiles/redfilehelper.php:64 -msgid "file" -msgstr "fichero" - -#: ../../addon/hubwall/hubwall.php:19 -msgid "Send email to all members" -msgstr "Enviar un correo electrónico a todos los miembros" - -#: ../../addon/hubwall/hubwall.php:73 -#, php-format -msgid "%1$d of %2$d messages sent." -msgstr "%1$d de %2$d mensajes enviados." - -#: ../../addon/hubwall/hubwall.php:81 -msgid "Send email to all hub members." -msgstr "Enviar un correo electrónico a todos los miembros del hub." - -#: ../../addon/hubwall/hubwall.php:93 -msgid "Sender Email address" -msgstr "Dirección de correo electrónico del remitente" - -#: ../../addon/hubwall/hubwall.php:94 -msgid "Test mode (only send to hub administrator)" -msgstr "Modo de prueba (enviar sólo al administrador del hub)" - -#: ../../include/selectors.php:18 -msgid "Profile to assign new connections" -msgstr "Perfil para asignar a las nuevas conexiones" - -#: ../../include/selectors.php:41 -msgid "Frequently" -msgstr "Frecuentemente" - -#: ../../include/selectors.php:42 -msgid "Hourly" -msgstr "Cada hora" - -#: ../../include/selectors.php:43 -msgid "Twice daily" -msgstr "Dos veces al día" - -#: ../../include/selectors.php:44 -msgid "Daily" -msgstr "Diariamente" - -#: ../../include/selectors.php:45 -msgid "Weekly" -msgstr "Semanalmente" - -#: ../../include/selectors.php:46 -msgid "Monthly" -msgstr "Mensualmente" - -#: ../../include/selectors.php:60 -msgid "Currently Male" -msgstr "Actualmente hombre" - -#: ../../include/selectors.php:60 -msgid "Currently Female" -msgstr "Actualmente mujer" - -#: ../../include/selectors.php:60 -msgid "Mostly Male" -msgstr "Generalmente hombre" - -#: ../../include/selectors.php:60 -msgid "Mostly Female" -msgstr "Generalmente mujer" - -#: ../../include/selectors.php:60 -msgid "Transgender" -msgstr "Transgénero" - -#: ../../include/selectors.php:60 -msgid "Intersex" -msgstr "Intersexual" - -#: ../../include/selectors.php:60 -msgid "Transsexual" -msgstr "Transexual" - -#: ../../include/selectors.php:60 -msgid "Hermaphrodite" -msgstr "Hermafrodita" - -#: ../../include/selectors.php:60 ../../include/channel.php:1606 -msgid "Neuter" -msgstr "Neutral" - -#: ../../include/selectors.php:60 ../../include/channel.php:1608 -msgid "Non-specific" -msgstr "No especificado" - -#: ../../include/selectors.php:60 -msgid "Undecided" -msgstr "Indeciso/a" - -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Males" -msgstr "Hombres" - -#: ../../include/selectors.php:96 ../../include/selectors.php:115 -msgid "Females" -msgstr "Mujeres" - -#: ../../include/selectors.php:96 -msgid "Gay" -msgstr "Homosexual" - -#: ../../include/selectors.php:96 -msgid "Lesbian" -msgstr "Lesbiana" - -#: ../../include/selectors.php:96 -msgid "No Preference" -msgstr "Sin preferencias" - -#: ../../include/selectors.php:96 -msgid "Bisexual" -msgstr "Bisexual" - -#: ../../include/selectors.php:96 -msgid "Autosexual" -msgstr "Autosexual" - -#: ../../include/selectors.php:96 -msgid "Abstinent" -msgstr "Casto/a" - -#: ../../include/selectors.php:96 -msgid "Virgin" -msgstr "Virgen" - -#: ../../include/selectors.php:96 -msgid "Deviant" -msgstr "Fuera de lo común" - -#: ../../include/selectors.php:96 -msgid "Fetish" -msgstr "Fetichista" - -#: ../../include/selectors.php:96 -msgid "Oodles" -msgstr "Orgías" - -#: ../../include/selectors.php:96 -msgid "Nonsexual" -msgstr "Asexual" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Single" -msgstr "Soltero/a" - -#: ../../include/selectors.php:134 -msgid "Lonely" -msgstr "Solo/a" - -#: ../../include/selectors.php:134 -msgid "Available" -msgstr "Disponible" - -#: ../../include/selectors.php:134 -msgid "Unavailable" -msgstr "No disponible" - -#: ../../include/selectors.php:134 -msgid "Has crush" -msgstr "Enamorado/a" - -#: ../../include/selectors.php:134 -msgid "Infatuated" -msgstr "Apasionado/a" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Dating" -msgstr "Saliendo con alguien" - -#: ../../include/selectors.php:134 -msgid "Unfaithful" -msgstr "Infiel" - -#: ../../include/selectors.php:134 -msgid "Sex Addict" -msgstr "Con adicción al sexo" - -#: ../../include/selectors.php:134 -msgid "Friends/Benefits" -msgstr "Amigos con algo extra" - -#: ../../include/selectors.php:134 -msgid "Casual" -msgstr "Casual" - -#: ../../include/selectors.php:134 -msgid "Engaged" -msgstr "Prometido/a" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Married" -msgstr "Casado/a" - -#: ../../include/selectors.php:134 -msgid "Imaginarily married" -msgstr "Casado/a en sueños" - -#: ../../include/selectors.php:134 -msgid "Partners" -msgstr "Pareja" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Cohabiting" -msgstr "Cohabitando" - -#: ../../include/selectors.php:134 -msgid "Common law" -msgstr "Matrimonio tradicional" - -#: ../../include/selectors.php:134 -msgid "Happy" -msgstr "Felíz" - -#: ../../include/selectors.php:134 -msgid "Not looking" -msgstr "No estoy buscando" - -#: ../../include/selectors.php:134 -msgid "Swinger" -msgstr "Libertino" - -#: ../../include/selectors.php:134 -msgid "Betrayed" -msgstr "Engañado/a" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Separated" -msgstr "Separado/a" - -#: ../../include/selectors.php:134 -msgid "Unstable" -msgstr "Inestable" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Divorced" -msgstr "Divorciado/a" - -#: ../../include/selectors.php:134 -msgid "Imaginarily divorced" -msgstr "Divorciado/a en sueños" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "Widowed" -msgstr "Viudo/a" - -#: ../../include/selectors.php:134 -msgid "Uncertain" -msgstr "Indeterminado" - -#: ../../include/selectors.php:134 ../../include/selectors.php:151 -msgid "It's complicated" -msgstr "Es complicado" - -#: ../../include/selectors.php:134 -msgid "Don't care" -msgstr "No me importa" - -#: ../../include/selectors.php:134 -msgid "Ask me" -msgstr "Pregúnteme" - -#: ../../include/conversation.php:169 -#, php-format -msgid "likes %1$s's %2$s" -msgstr "gusta de %2$s de %1$s" - -#: ../../include/conversation.php:172 -#, php-format -msgid "doesn't like %1$s's %2$s" -msgstr "no gusta de %2$s de %1$s" - -#: ../../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" - -#: ../../include/conversation.php:247 -#, php-format -msgid "%1$s poked %2$s" -msgstr "%1$s ha dado un toque a %2$s" - -#: ../../include/conversation.php:251 ../../include/text.php:1195 -#: ../../include/text.php:1199 -msgid "poked" -msgstr "ha dado un toque a" - -#: ../../include/conversation.php:739 -#, php-format -msgid "View %s's profile @ %s" -msgstr "Ver el perfil @ %s de %s" - -#: ../../include/conversation.php:759 -msgid "Categories:" -msgstr "Temas:" - -#: ../../include/conversation.php:760 -msgid "Filed under:" -msgstr "Archivado bajo:" - -#: ../../include/conversation.php:785 -msgid "View in context" -msgstr "Mostrar en su contexto" - -#: ../../include/conversation.php:886 -msgid "remove" -msgstr "eliminar" - -#: ../../include/conversation.php:890 -msgid "Loading..." -msgstr "Cargando..." - -#: ../../include/conversation.php:892 -msgid "Delete Selected Items" -msgstr "Eliminar elementos seleccionados" - -#: ../../include/conversation.php:935 -msgid "View Source" -msgstr "Ver el código fuente de la entrada" - -#: ../../include/conversation.php:945 -msgid "Follow Thread" -msgstr "Seguir este hilo" - -#: ../../include/conversation.php:954 -msgid "Unfollow Thread" -msgstr "Dejar de seguir este hilo" - -#: ../../include/conversation.php:1068 -msgid "Edit Connection" -msgstr "Editar conexión" - -#: ../../include/conversation.php:1078 -msgid "Message" -msgstr "Mensaje" - -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s likes this." -msgstr "A %s le gusta esto." - -#: ../../include/conversation.php:1212 -#, php-format -msgid "%s doesn't like this." -msgstr "A %s no le gusta esto." - -#: ../../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." - -#: ../../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." - -#: ../../include/conversation.php:1224 -msgid "and" -msgstr "y" - -#: ../../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" - -#: ../../include/conversation.php:1228 -#, php-format -msgid "%s like this." -msgstr "A %s le gusta esto." - -#: ../../include/conversation.php:1228 -#, php-format -msgid "%s don't like this." -msgstr "A %s no le gusta esto." - -#: ../../include/conversation.php:1708 -msgctxt "noun" -msgid "Attending" -msgid_plural "Attending" -msgstr[0] "Participaré" -msgstr[1] "Participaré" - -#: ../../include/conversation.php:1711 -msgctxt "noun" -msgid "Not Attending" -msgid_plural "Not Attending" -msgstr[0] "No participaré" -msgstr[1] "No participaré" - -#: ../../include/conversation.php:1714 -msgctxt "noun" -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "Indeciso/a" -msgstr[1] "Indecisos/as" - -#: ../../include/conversation.php:1717 -msgctxt "noun" -msgid "Agree" -msgid_plural "Agrees" -msgstr[0] "De acuerdo" -msgstr[1] "De acuerdo" - -#: ../../include/conversation.php:1720 -msgctxt "noun" -msgid "Disagree" -msgid_plural "Disagrees" -msgstr[0] "En desacuerdo" -msgstr[1] "En desacuerdo" - -#: ../../include/conversation.php:1723 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "se abstiene" -msgstr[1] "Se abstienen" - -#: ../../include/bookmarks.php:34 -#, php-format -msgid "%1$s's bookmarks" -msgstr "Marcadores de %1$s" - -#: ../../include/import.php:28 -msgid "Unable to import a removed channel." -msgstr "No se puede importar un canal eliminado." - -#: ../../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." - -#: ../../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." - -#: ../../include/text.php:520 -msgid "prev" -msgstr "anterior" - -#: ../../include/text.php:522 -msgid "first" -msgstr "primera" - -#: ../../include/text.php:551 -msgid "last" -msgstr "última" - -#: ../../include/text.php:554 -msgid "next" -msgstr "próxima" - -#: ../../include/text.php:572 -msgid "older" -msgstr "más antiguas" - -#: ../../include/text.php:574 -msgid "newer" -msgstr "más recientes" - -#: ../../include/text.php:998 -msgid "No connections" -msgstr "Sin conexiones" - -#: ../../include/text.php:1030 -#, php-format -msgid "View all %s connections" -msgstr "Ver todas las %s conexiones" - -#: ../../include/text.php:1092 -#, php-format -msgid "Network: %s" -msgstr "Red %s" - -#: ../../include/text.php:1195 ../../include/text.php:1199 -msgid "poke" -msgstr "un toque" - -#: ../../include/text.php:1200 -msgid "ping" -msgstr "un \"ping\"" - -#: ../../include/text.php:1200 -msgid "pinged" -msgstr "ha enviado un \"ping\" a" - -#: ../../include/text.php:1201 -msgid "prod" -msgstr "una incitación " - -#: ../../include/text.php:1201 -msgid "prodded" -msgstr "ha incitado a " - -#: ../../include/text.php:1202 -msgid "slap" -msgstr "una bofetada " - -#: ../../include/text.php:1202 -msgid "slapped" -msgstr "ha abofeteado a " - -#: ../../include/text.php:1203 -msgid "finger" -msgstr "un \"finger\" " - -#: ../../include/text.php:1203 -msgid "fingered" -msgstr "envió un \"finger\" a" - -#: ../../include/text.php:1204 -msgid "rebuff" -msgstr "un reproche" - -#: ../../include/text.php:1204 -msgid "rebuffed" -msgstr "ha hecho un reproche a " - -#: ../../include/text.php:1227 -msgid "happy" -msgstr "feliz " - -#: ../../include/text.php:1228 -msgid "sad" -msgstr "triste " - -#: ../../include/text.php:1229 -msgid "mellow" -msgstr "tranquilo/a" - -#: ../../include/text.php:1230 -msgid "tired" -msgstr "cansado/a " - -#: ../../include/text.php:1231 -msgid "perky" -msgstr "vivaz" - -#: ../../include/text.php:1232 -msgid "angry" -msgstr "enfadado/a" - -#: ../../include/text.php:1233 -msgid "stupefied" -msgstr "asombrado/a" - -#: ../../include/text.php:1234 -msgid "puzzled" -msgstr "perplejo/a" - -#: ../../include/text.php:1235 -msgid "interested" -msgstr "interesado/a" - -#: ../../include/text.php:1236 -msgid "bitter" -msgstr "amargado/a" - -#: ../../include/text.php:1237 -msgid "cheerful" -msgstr "alegre" - -#: ../../include/text.php:1238 -msgid "alive" -msgstr "animado/a" - -#: ../../include/text.php:1239 -msgid "annoyed" -msgstr "molesto/a" - -#: ../../include/text.php:1240 -msgid "anxious" -msgstr "ansioso/a" - -#: ../../include/text.php:1241 -msgid "cranky" -msgstr "de mal humor" - -#: ../../include/text.php:1242 -msgid "disturbed" -msgstr "perturbado/a" - -#: ../../include/text.php:1243 -msgid "frustrated" -msgstr "frustrado/a" - -#: ../../include/text.php:1244 -msgid "depressed" -msgstr "deprimido/a" - -#: ../../include/text.php:1245 -msgid "motivated" -msgstr "motivado/a" - -#: ../../include/text.php:1246 -msgid "relaxed" -msgstr "relajado/a" - -#: ../../include/text.php:1247 -msgid "surprised" -msgstr "sorprendido/a" - -#: ../../include/text.php:1435 ../../include/js_strings.php:96 -msgid "Monday" -msgstr "lunes" - -#: ../../include/text.php:1435 ../../include/js_strings.php:97 -msgid "Tuesday" -msgstr "martes" - -#: ../../include/text.php:1435 ../../include/js_strings.php:98 -msgid "Wednesday" -msgstr "miércoles" - -#: ../../include/text.php:1435 ../../include/js_strings.php:99 -msgid "Thursday" -msgstr "jueves" - -#: ../../include/text.php:1435 ../../include/js_strings.php:100 -msgid "Friday" -msgstr "viernes" - -#: ../../include/text.php:1435 ../../include/js_strings.php:101 -msgid "Saturday" -msgstr "sábado" - -#: ../../include/text.php:1435 ../../include/js_strings.php:95 -msgid "Sunday" -msgstr "domingo" - -#: ../../include/text.php:1439 ../../include/js_strings.php:71 -msgid "January" -msgstr "enero" - -#: ../../include/text.php:1439 ../../include/js_strings.php:72 -msgid "February" -msgstr "febrero" - -#: ../../include/text.php:1439 ../../include/js_strings.php:73 -msgid "March" -msgstr "marzo" - -#: ../../include/text.php:1439 ../../include/js_strings.php:74 -msgid "April" -msgstr "abril" - -#: ../../include/text.php:1439 -msgid "May" -msgstr "mayo" - -#: ../../include/text.php:1439 ../../include/js_strings.php:76 -msgid "June" -msgstr "junio" - -#: ../../include/text.php:1439 ../../include/js_strings.php:77 -msgid "July" -msgstr "julio" - -#: ../../include/text.php:1439 ../../include/js_strings.php:78 -msgid "August" -msgstr "agosto" - -#: ../../include/text.php:1439 ../../include/js_strings.php:79 -msgid "September" -msgstr "septiembre" - -#: ../../include/text.php:1439 ../../include/js_strings.php:80 -msgid "October" -msgstr "octubre" - -#: ../../include/text.php:1439 ../../include/js_strings.php:81 -msgid "November" -msgstr "noviembre" - -#: ../../include/text.php:1439 ../../include/js_strings.php:82 -msgid "December" -msgstr "diciembre" - -#: ../../include/text.php:1513 -msgid "Unknown Attachment" -msgstr "Adjunto no reconocido" - -#: ../../include/text.php:1515 ../../include/feedutils.php:858 -msgid "unknown" -msgstr "desconocido" - -#: ../../include/text.php:1551 -msgid "remove category" -msgstr "eliminar el tema" - -#: ../../include/text.php:1627 -msgid "remove from file" -msgstr "eliminar del fichero" - -#: ../../include/text.php:1791 ../../include/message.php:13 -msgid "Download binary/encrypted content" -msgstr "Descargar contenido binario o cifrado" - -#: ../../include/text.php:1961 ../../include/language.php:423 -msgid "default" -msgstr "por defecto" - -#: ../../include/text.php:1969 -msgid "Page layout" -msgstr "Plantilla de la página" - -#: ../../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" - -#: ../../include/text.php:1980 -msgid "HTML" -msgstr "HTML" - -#: ../../include/text.php:1983 -msgid "Comanche Layout" -msgstr "Plantilla de Comanche" - -#: ../../include/text.php:1988 -msgid "PHP" -msgstr "PHP" - -#: ../../include/text.php:1997 -msgid "Page content type" -msgstr "Tipo de contenido de la página" - -#: ../../include/text.php:2130 -msgid "activity" -msgstr "la/su actividad" - -#: ../../include/text.php:2231 -msgid "a-z, 0-9, -, and _ only" -msgstr "a-z, 0-9, -, and _ only" - -#: ../../include/text.php:2557 -msgid "Design Tools" -msgstr "Herramientas de diseño web" - -#: ../../include/text.php:2563 -msgid "Pages" -msgstr "Páginas" - -#: ../../include/text.php:2575 -msgid "Import" -msgstr "Importar" - -#: ../../include/text.php:2576 -msgid "Import website..." -msgstr "Importar un sitio web..." - -#: ../../include/text.php:2577 -msgid "Select folder to import" -msgstr "Seleccionar la carpeta que se va a importar" - -#: ../../include/text.php:2578 -msgid "Import from a zipped folder:" -msgstr "Importar desde una carpeta comprimida: " - -#: ../../include/text.php:2579 -msgid "Import from cloud files:" -msgstr "Importar desde los ficheros en la nube: " - -#: ../../include/text.php:2580 -msgid "/cloud/channel/path/to/folder" -msgstr "/cloud/canal/ruta/a la/carpeta" - -#: ../../include/text.php:2581 -msgid "Enter path to website files" -msgstr "Ruta a los ficheros del sitio web" - -#: ../../include/text.php:2582 -msgid "Select folder" -msgstr "Seleccionar la carpeta" - -#: ../../include/text.php:2583 -msgid "Export website..." -msgstr "Exportar un sitio web..." - -#: ../../include/text.php:2584 -msgid "Export to a zip file" -msgstr "Exportar a un fichero comprimido .zip" - -#: ../../include/text.php:2585 -msgid "website.zip" -msgstr "sitio_web.zip" - -#: ../../include/text.php:2586 -msgid "Enter a name for the zip file." -msgstr "Escriba un nombre para el fichero zip." - -#: ../../include/text.php:2587 -msgid "Export to cloud files" -msgstr "Exportar a la nube de ficheros" - -#: ../../include/text.php:2588 -msgid "/path/to/export/folder" -msgstr "/ruta/para/exportar/carpeta" - -#: ../../include/text.php:2589 -msgid "Enter a path to a cloud files destination." -msgstr "Escriba una ruta de destino a la nube de ficheros." - -#: ../../include/text.php:2590 -msgid "Specify folder" -msgstr "Especificar una carpeta" - -#: ../../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" - -#: ../../include/contact_widgets.php:19 -msgid "Find Channels" -msgstr "Encontrar canales" - -#: ../../include/contact_widgets.php:20 -msgid "Enter name or interest" -msgstr "Introducir nombre o interés" - -#: ../../include/contact_widgets.php:21 -msgid "Connect/Follow" -msgstr "Conectar/Seguir" - -#: ../../include/contact_widgets.php:22 -msgid "Examples: Robert Morgenstein, Fishing" -msgstr "Ejemplos: José Fernández, Pesca" - -#: ../../include/contact_widgets.php:26 -msgid "Random Profile" -msgstr "Perfil aleatorio" - -#: ../../include/contact_widgets.php:27 -msgid "Invite Friends" -msgstr "Invitar a amigos" - -#: ../../include/contact_widgets.php:29 -msgid "Advanced example: name=fred and country=iceland" -msgstr "Ejemplo avanzado: nombre=juan y país=españa" - -#: ../../include/contact_widgets.php:218 -msgid "Common Connections" -msgstr "Conexiones comunes" - -#: ../../include/contact_widgets.php:222 -#, php-format -msgid "View all %d common connections" -msgstr "Ver todas las %d conexiones comunes" - -#: ../../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" - -#: ../../include/follow.php:37 -msgid "Channel is blocked on this site." -msgstr "El canal está bloqueado en este sitio." - -#: ../../include/follow.php:42 -msgid "Channel location missing." -msgstr "Falta la dirección del canal." - -#: ../../include/follow.php:84 -msgid "Response from remote channel was incomplete." -msgstr "Respuesta incompleta del canal." - -#: ../../include/follow.php:96 -msgid "Premium channel - please visit:" -msgstr "Canal Premium - por favor visite:" - -#: ../../include/follow.php:110 -msgid "Channel was deleted and no longer exists." -msgstr "El canal ha sido eliminado y ya no existe." - -#: ../../include/follow.php:166 -msgid "Remote channel or protocol unavailable." -msgstr "Canal remoto o protocolo no disponible." - -#: ../../include/follow.php:190 -msgid "Channel discovery failed." -msgstr "El intento de acceder al canal ha fallado." - -#: ../../include/follow.php:202 -msgid "Protocol disabled." -msgstr "Protocolo deshabilitado." - -#: ../../include/follow.php:213 -msgid "Cannot connect to yourself." -msgstr "No puede conectarse consigo mismo." - -#: ../../include/js_strings.php:5 -msgid "Delete this item?" -msgstr "¿Borrar este elemento?" - -#: ../../include/js_strings.php:8 -#, php-format -msgid "%s show less" -msgstr "%s mostrar menos" - -#: ../../include/js_strings.php:9 -#, php-format -msgid "%s expand" -msgstr "%s expandir" - -#: ../../include/js_strings.php:10 -#, php-format -msgid "%s collapse" -msgstr "%s contraer" - -#: ../../include/js_strings.php:11 -msgid "Password too short" -msgstr "Contraseña demasiado corta" - -#: ../../include/js_strings.php:12 -msgid "Passwords do not match" -msgstr "Las contraseñas no coinciden" - -#: ../../include/js_strings.php:13 -msgid "everybody" -msgstr "cualquiera" - -#: ../../include/js_strings.php:14 -msgid "Secret Passphrase" -msgstr "Contraseña secreta" - -#: ../../include/js_strings.php:15 -msgid "Passphrase hint" -msgstr "Pista de contraseña" - -#: ../../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." - -#: ../../include/js_strings.php:17 -msgid "close all" -msgstr "cerrar todo" - -#: ../../include/js_strings.php:18 -msgid "Nothing new here" -msgstr "Nada nuevo por aquí" - -#: ../../include/js_strings.php:19 -msgid "Rate This Channel (this is public)" -msgstr "Valorar este canal (esto es público)" - -#: ../../include/js_strings.php:21 -msgid "Describe (optional)" -msgstr "Describir (opcional)" - -#: ../../include/js_strings.php:23 -msgid "Please enter a link URL" -msgstr "Por favor, introduzca una dirección de enlace" - -#: ../../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?" - -#: ../../include/js_strings.php:26 -msgid "lovely" -msgstr "encantador" - -#: ../../include/js_strings.php:27 -msgid "wonderful" -msgstr "fabuloso" - -#: ../../include/js_strings.php:28 -msgid "fantastic" -msgstr "fantástico" - -#: ../../include/js_strings.php:29 -msgid "great" -msgstr "grandioso" - -#: ../../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 (" - -#: ../../include/js_strings.php:31 -msgid ") or enter a new one." -msgstr ") o introduzca uno nuevo." - -#: ../../include/js_strings.php:32 -msgid "Thank you, this nickname is valid." -msgstr "Gracias, este alias es válido." - -#: ../../include/js_strings.php:33 -msgid "A channel name is required." -msgstr "Se requiere un nombre de canal" - -#: ../../include/js_strings.php:34 -msgid "This is a " -msgstr "Esto es un " - -#: ../../include/js_strings.php:35 -msgid " channel name" -msgstr "nombre de canal" - -#: ../../include/js_strings.php:36 -msgid "Back to reply" -msgstr "Volver a la respuesta" - -#: ../../include/js_strings.php:42 -#, php-format -msgid "%d minutes" -msgid_plural "%d minutes" -msgstr[0] "%d minutos" -msgstr[1] "%d minutos" - -#: ../../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" - -#: ../../include/js_strings.php:44 -#, php-format -msgid "%d days" -msgid_plural "%d days" -msgstr[0] "%d días" -msgstr[1] "%d días" - -#: ../../include/js_strings.php:45 -#, php-format -msgid "%d months" -msgid_plural "%d months" -msgstr[0] "%d meses" -msgstr[1] "%d meses" - -#: ../../include/js_strings.php:46 -#, php-format -msgid "%d years" -msgid_plural "%d years" -msgstr[0] "%d años" -msgstr[1] "%d años" - -#: ../../include/js_strings.php:51 -msgid "timeago.prefixAgo" -msgstr "hace " - -#: ../../include/js_strings.php:52 -msgid "timeago.prefixFromNow" -msgstr "en " - -#: ../../include/js_strings.php:53 -msgid "timeago.suffixAgo" -msgstr "NONE" - -#: ../../include/js_strings.php:54 -msgid "timeago.suffixFromNow" -msgstr "NONE" - -#: ../../include/js_strings.php:57 -msgid "less than a minute" -msgstr "menos de un minuto" - -#: ../../include/js_strings.php:58 -msgid "about a minute" -msgstr "alrededor de un minuto" - -#: ../../include/js_strings.php:60 -msgid "about an hour" -msgstr "alrededor de una hora" - -#: ../../include/js_strings.php:62 -msgid "a day" -msgstr "un día" - -#: ../../include/js_strings.php:64 -msgid "about a month" -msgstr "alrededor de un mes" - -#: ../../include/js_strings.php:66 -msgid "about a year" -msgstr "alrededor de un año" - -#: ../../include/js_strings.php:68 -msgid " " -msgstr " " - -#: ../../include/js_strings.php:69 -msgid "timeago.numbers" -msgstr "timeago.numbers" - -#: ../../include/js_strings.php:75 -msgctxt "long" -msgid "May" -msgstr "mayo" - -#: ../../include/js_strings.php:83 -msgid "Jan" -msgstr "ene" - -#: ../../include/js_strings.php:84 -msgid "Feb" -msgstr "feb" - -#: ../../include/js_strings.php:85 -msgid "Mar" -msgstr "mar" - -#: ../../include/js_strings.php:86 -msgid "Apr" -msgstr "abr" - -#: ../../include/js_strings.php:87 -msgctxt "short" -msgid "May" -msgstr "may" - -#: ../../include/js_strings.php:88 -msgid "Jun" -msgstr "jun" - -#: ../../include/js_strings.php:89 -msgid "Jul" -msgstr "jul" - -#: ../../include/js_strings.php:90 -msgid "Aug" -msgstr "ago" - -#: ../../include/js_strings.php:91 -msgid "Sep" -msgstr "sep" - -#: ../../include/js_strings.php:92 -msgid "Oct" -msgstr "oct" - -#: ../../include/js_strings.php:93 -msgid "Nov" -msgstr "nov" - -#: ../../include/js_strings.php:94 -msgid "Dec" -msgstr "dic" - -#: ../../include/js_strings.php:102 -msgid "Sun" -msgstr "dom" - -#: ../../include/js_strings.php:103 -msgid "Mon" -msgstr "lun" - -#: ../../include/js_strings.php:104 -msgid "Tue" -msgstr "mar" - -#: ../../include/js_strings.php:105 -msgid "Wed" -msgstr "mié" - -#: ../../include/js_strings.php:106 -msgid "Thu" -msgstr "jue" - -#: ../../include/js_strings.php:107 -msgid "Fri" -msgstr "vie" - -#: ../../include/js_strings.php:108 -msgid "Sat" -msgstr "sáb" - -#: ../../include/js_strings.php:109 -msgctxt "calendar" -msgid "today" -msgstr "hoy" - -#: ../../include/js_strings.php:110 -msgctxt "calendar" -msgid "month" -msgstr "mes" - -#: ../../include/js_strings.php:111 -msgctxt "calendar" -msgid "week" -msgstr "semana" - -#: ../../include/js_strings.php:112 -msgctxt "calendar" -msgid "day" -msgstr "día" - -#: ../../include/js_strings.php:113 -msgctxt "calendar" -msgid "All day" -msgstr "Todos los días" - -#: ../../include/message.php:41 -msgid "Unable to determine sender." -msgstr "No ha sido posible determinar el remitente. " - -#: ../../include/message.php:80 -msgid "No recipient provided." -msgstr "No se ha especificado ningún destinatario." - -#: ../../include/message.php:85 -msgid "[no subject]" -msgstr "[sin asunto]" - -#: ../../include/message.php:214 -msgid "Stored post could not be verified." -msgstr "No se han podido verificar las publicaciones guardadas." - -#: ../../include/activities.php:42 -msgid " and " -msgstr " y " - -#: ../../include/activities.php:50 -msgid "public profile" -msgstr "el perfil público" - -#: ../../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”" - -#: ../../include/activities.php:60 -#, php-format -msgid "Visit %1$s's %2$s" -msgstr "Visitar %2$s de %1$s" - -#: ../../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." - -#: ../../include/attach.php:267 ../../include/attach.php:375 -msgid "Item was not found." -msgstr "Elemento no encontrado." - -#: ../../include/attach.php:284 -msgid "Unknown error." -msgstr "Error desconocido" - -#: ../../include/attach.php:568 -msgid "No source file." -msgstr "Ningún fichero de origen" - -#: ../../include/attach.php:590 -msgid "Cannot locate file to replace" -msgstr "No se puede localizar el fichero que va a ser sustituido." - -#: ../../include/attach.php:609 -msgid "Cannot locate file to revise/update" -msgstr "No se puede localizar el fichero para revisar/actualizar" - -#: ../../include/attach.php:751 -#, php-format -msgid "File exceeds size limit of %d" -msgstr "El fichero supera el limite de tamaño de %d" - -#: ../../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." - -#: ../../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." - -#: ../../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." - -#: ../../include/attach.php:1057 ../../include/attach.php:1073 -msgid "Path not available." -msgstr "Ruta no disponible." - -#: ../../include/attach.php:1122 ../../include/attach.php:1285 -msgid "Empty pathname" -msgstr "Ruta vacía" - -#: ../../include/attach.php:1148 -msgid "duplicate filename or path" -msgstr "Nombre duplicado de ruta o fichero" - -#: ../../include/attach.php:1173 -msgid "Path not found." -msgstr "Ruta no encontrada" - -#: ../../include/attach.php:1241 -msgid "mkdir failed." -msgstr "mkdir ha fallado." - -#: ../../include/attach.php:1245 -msgid "database storage failed." -msgstr "el almacenamiento en la base de datos ha fallado." - -#: ../../include/attach.php:1291 -msgid "Empty path" -msgstr "Ruta vacía" - -#: ../../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" - -#: ../../include/items.php:965 ../../include/items.php:1025 -msgid "(Unknown)" -msgstr "(Desconocido)" - -#: ../../include/items.php:1213 -msgid "Visible to anybody on the internet." -msgstr "Visible para cualquiera en internet." - -#: ../../include/items.php:1215 -msgid "Visible to you only." -msgstr "Visible sólo para usted." - -#: ../../include/items.php:1217 -msgid "Visible to anybody in this network." -msgstr "Visible para cualquiera en esta red." - -#: ../../include/items.php:1219 -msgid "Visible to anybody authenticated." -msgstr "Visible para cualquiera que esté autenticado." - -#: ../../include/items.php:1221 -#, php-format -msgid "Visible to anybody on %s." -msgstr "Visible para cualquiera en %s." - -#: ../../include/items.php:1223 -msgid "Visible to all connections." -msgstr "Visible para todas las conexiones." - -#: ../../include/items.php:1225 -msgid "Visible to approved connections." -msgstr "Visible para las conexiones permitidas." - -#: ../../include/items.php:1227 -msgid "Visible to specific connections." -msgstr "Visible para conexiones específicas." - -#: ../../include/items.php:4306 -msgid "Privacy group is empty." -msgstr "El grupo de canales está vacío." - -#: ../../include/items.php:4313 -#, php-format -msgid "Privacy group: %s" -msgstr "Grupo de canales: %s" - -#: ../../include/items.php:4325 -msgid "Connection not found." -msgstr "Conexión no encontrada" - -#: ../../include/items.php:4674 -msgid "profile photo" -msgstr "foto del perfil" - -#: ../../include/items.php:4866 -#, php-format -msgid "[Edited %s]" -msgstr "[se ha editado %s]" - -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Post" -msgstr "Publicar" - -#: ../../include/items.php:4866 -msgctxt "edit_activity" -msgid "Comment" -msgstr "Comentar" - -#: ../../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" - -#: ../../include/channel.php:76 -msgid "Empty name" -msgstr "Nombre vacío" - -#: ../../include/channel.php:79 -msgid "Name too long" -msgstr "Nombre demasiado largo" - -#: ../../include/channel.php:196 -msgid "No account identifier" -msgstr "Ningún identificador de la cuenta" - -#: ../../include/channel.php:208 -msgid "Nickname is required." -msgstr "Se requiere un sobrenombre (alias)." - -#: ../../include/channel.php:287 -msgid "Unable to retrieve created identity" -msgstr "No ha sido posible recuperar la identidad creada" - -#: ../../include/channel.php:429 -msgid "Default Profile" -msgstr "Perfil principal" - -#: ../../include/channel.php:588 ../../include/channel.php:677 -msgid "Unable to retrieve modified identity" -msgstr "No se puede recuperar la identidad modficada" - -#: ../../include/channel.php:1419 -msgid "Create New Profile" -msgstr "Crear un nuevo perfil" - -#: ../../include/channel.php:1440 -msgid "Visible to everybody" -msgstr "Visible para todos" - -#: ../../include/channel.php:1517 ../../include/channel.php:1645 -msgid "Gender:" -msgstr "Género:" - -#: ../../include/channel.php:1519 ../../include/channel.php:1713 -msgid "Homepage:" -msgstr "Página personal:" - -#: ../../include/channel.php:1520 -msgid "Online Now" -msgstr "Ahora en línea" - -#: ../../include/channel.php:1573 -msgid "Change your profile photo" -msgstr "Cambiar su foto del perfil" - -#: ../../include/channel.php:1604 -msgid "Trans" -msgstr "Trans" - -#: ../../include/channel.php:1650 -msgid "Like this channel" -msgstr "Me gusta este canal" - -#: ../../include/channel.php:1674 -msgid "j F, Y" -msgstr "j F Y" - -#: ../../include/channel.php:1675 -msgid "j F" -msgstr "j F" - -#: ../../include/channel.php:1682 -msgid "Birthday:" -msgstr "Cumpleaños:" - -#: ../../include/channel.php:1695 -#, php-format -msgid "for %1$d %2$s" -msgstr "por %1$d %2$s" - -#: ../../include/channel.php:1707 -msgid "Tags:" -msgstr "Etiquetas:" - -#: ../../include/channel.php:1711 -msgid "Sexual Preference:" -msgstr "Orientación sexual:" - -#: ../../include/channel.php:1717 -msgid "Political Views:" -msgstr "Posición política:" - -#: ../../include/channel.php:1719 -msgid "Religion:" -msgstr "Religión:" - -#: ../../include/channel.php:1723 -msgid "Hobbies/Interests:" -msgstr "Aficciones o intereses:" - -#: ../../include/channel.php:1725 -msgid "Likes:" -msgstr "Me gusta:" - -#: ../../include/channel.php:1727 -msgid "Dislikes:" -msgstr "No me gusta:" - -#: ../../include/channel.php:1729 -msgid "Contact information and Social Networks:" -msgstr "Información de contacto y redes sociales:" - -#: ../../include/channel.php:1731 -msgid "My other channels:" -msgstr "Mis otros canales:" - -#: ../../include/channel.php:1733 -msgid "Musical interests:" -msgstr "Preferencias musicales:" - -#: ../../include/channel.php:1735 -msgid "Books, literature:" -msgstr "Libros, literatura:" - -#: ../../include/channel.php:1737 -msgid "Television:" -msgstr "Televisión:" - -#: ../../include/channel.php:1739 -msgid "Film/dance/culture/entertainment:" -msgstr "Cine, danza, cultura, entretenimiento:" - -#: ../../include/channel.php:1741 -msgid "Love/Romance:" -msgstr "Vida sentimental o amorosa:" - -#: ../../include/channel.php:1743 -msgid "Work/employment:" -msgstr "Trabajo:" - -#: ../../include/channel.php:1745 -msgid "School/education:" -msgstr "Estudios:" - -#: ../../include/channel.php:1768 -msgid "Like this thing" -msgstr "Me gusta esto" - -#: ../../include/event.php:32 ../../include/event.php:95 -msgid "l F d, Y \\@ g:i A" -msgstr "l d de F, Y \\@ G:i" - -#: ../../include/event.php:40 -msgid "Starts:" -msgstr "Comienza:" - -#: ../../include/event.php:50 -msgid "Finishes:" -msgstr "Finaliza:" - -#: ../../include/event.php:95 -msgid "l F d, Y" -msgstr "l F d, Y" - -#: ../../include/event.php:99 -msgid "Start:" -msgstr "Iniciar: " - -#: ../../include/event.php:103 -msgid "End:" -msgstr "Finalizar: " - -#: ../../include/event.php:1058 -msgid "This event has been added to your calendar." -msgstr "Este evento ha sido añadido a su calendario." - -#: ../../include/event.php:1284 -msgid "Not specified" -msgstr "Sin especificar" - -#: ../../include/event.php:1285 -msgid "Needs Action" -msgstr "Necesita de una intervención" - -#: ../../include/event.php:1286 -msgid "Completed" -msgstr "Completado/a" - -#: ../../include/event.php:1287 -msgid "In Process" -msgstr "En proceso" - -#: ../../include/event.php:1288 -msgid "Cancelled" -msgstr "Cancelado/a" - -#: ../../include/event.php:1371 ../../include/connections.php:725 -msgid "Home, Voice" -msgstr "Llamadas particulares" - -#: ../../include/event.php:1372 ../../include/connections.php:726 -msgid "Home, Fax" -msgstr "Fax particular" - -#: ../../include/event.php:1374 ../../include/connections.php:728 -msgid "Work, Voice" -msgstr "Llamadas de trabajo" - -#: ../../include/event.php:1375 ../../include/connections.php:729 -msgid "Work, Fax" -msgstr "Fax de trabajo" - -#: ../../include/network.php:1729 -msgid "GNU-Social" -msgstr "GNU Social" - -#: ../../include/network.php:1730 -msgid "RSS/Atom" -msgstr "RSS/Atom" - -#: ../../include/network.php:1734 -msgid "Facebook" -msgstr "Facebook" - -#: ../../include/network.php:1736 -msgid "LinkedIn" -msgstr "LinkedIn" - -#: ../../include/network.php:1737 -msgid "XMPP/IM" -msgstr "XMPP/IM" - -#: ../../include/network.php:1738 -msgid "MySpace" -msgstr "MySpace" - -#: ../../include/language.php:436 -msgid "Select an alternate language" -msgstr "Seleccionar un idioma alternativo" - -#: ../../include/acl_selectors.php:113 -msgid "Who can see this?" -msgstr "¿Quién puede ver esto?" - -#: ../../include/acl_selectors.php:114 -msgid "Custom selection" -msgstr "Selección personalizada" - -#: ../../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\"." - -#: ../../include/acl_selectors.php:116 -msgid "Show" -msgstr "Mostrar" - -#: ../../include/acl_selectors.php:117 -msgid "Don't show" -msgstr "No mostrar" - -#: ../../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." - -#: ../../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" - -#: ../../include/bbcode.php:258 ../../include/bbcode.php:1264 -msgid "Encrypted content" -msgstr "Contenido cifrado" - -#: ../../include/bbcode.php:274 -#, php-format -msgid "Install %1$s element %2$s" -msgstr "Instalar el elemento de%1$s%2$s" - -#: ../../include/bbcode.php:278 -#, 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" - -#: ../../include/bbcode.php:360 -msgid "article" -msgstr "el artículo" - -#: ../../include/bbcode.php:443 ../../include/bbcode.php:451 -msgid "Click to open/close" -msgstr "Pulsar para abrir/cerrar" - -#: ../../include/bbcode.php:451 -msgid "spoiler" -msgstr "spoiler" - -#: ../../include/bbcode.php:464 -msgid "View article" -msgstr "Ver el artículo" - -#: ../../include/bbcode.php:464 -msgid "View summary" -msgstr "Ver sumario" - -#: ../../include/bbcode.php:1202 -msgid "$1 wrote:" -msgstr "$1 escribió:" - -#: ../../include/oembed.php:153 -msgid "View PDF" -msgstr "Ver PDF" - -#: ../../include/oembed.php:357 -msgid " by " -msgstr "por" - -#: ../../include/oembed.php:358 -msgid " on " -msgstr "en" - -#: ../../include/oembed.php:387 -msgid "Embedded content" -msgstr "Contenido incorporado" - -#: ../../include/oembed.php:396 -msgid "Embedding disabled" -msgstr "Incrustación deshabilitada" - -#: ../../include/zid.php:363 -#, php-format -msgid "OpenWebAuth: %1$s welcomes %2$s" -msgstr "OpenWebAuth: %1$s da la bienvenida a %2$s" - -#: ../../include/features.php:86 -msgid "Start calendar week on Monday" -msgstr "Comenzar el calendario semanal por el lunes" - -#: ../../include/features.php:87 -msgid "Default is Sunday" -msgstr "Por defecto es domingo" - -#: ../../include/features.php:94 -msgid "Event Timezone Selection" -msgstr "Selección del huso horario del evento" - -#: ../../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." - -#: ../../include/features.php:108 -msgid "Search by Date" -msgstr "Buscar por fecha" - -#: ../../include/features.php:109 -msgid "Ability to select posts by date ranges" -msgstr "Capacidad de seleccionar entradas por rango de fechas" - -#: ../../include/features.php:116 -msgid "Tag Cloud" -msgstr "Nube de etiquetas" - -#: ../../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" - -#: ../../include/features.php:124 ../../include/features.php:351 -msgid "Use blog/list mode" -msgstr "Usar el modo blog/lista" - -#: ../../include/features.php:125 ../../include/features.php:352 -msgid "Comments will be displayed separately" -msgstr "Los comentarios se mostrarán por separado" - -#: ../../include/features.php:137 -msgid "Connection Filtering" -msgstr "Filtrado de conexiones" - -#: ../../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" - -#: ../../include/features.php:146 -msgid "Conversation" -msgstr "Conversación" - -#: ../../include/features.php:150 -msgid "Community Tagging" -msgstr "Etiquetas de la comunidad" - -#: ../../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\"" - -#: ../../include/features.php:159 -msgid "Add emoji reaction ability to posts" -msgstr "Activar la capacidad de añadir un emoticono \"emoji\" a las entradas" - -#: ../../include/features.php:166 -msgid "Dislike Posts" -msgstr "Desagrado de publicaciones" - -#: ../../include/features.php:167 -msgid "Ability to dislike posts/comments" -msgstr "Capacidad de mostrar desacuerdo con el contenido de entradas y comentarios" - -#: ../../include/features.php:174 -msgid "Star Posts" -msgstr "Entradas destacadas" - -#: ../../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" - -#: ../../include/features.php:182 -msgid "Reply on comment" -msgstr "Responder a los comentarios" - -#: ../../include/features.php:183 -msgid "Ability to reply on selected comment" -msgstr "Posibilidad de responder a los comentarios seleccionados" - -#: ../../include/features.php:196 -msgid "Advanced Directory Search" -msgstr "Búsqueda avanzada en el directorio" - -#: ../../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" - -#: ../../include/features.php:206 -msgid "Editor" -msgstr "Editor" - -#: ../../include/features.php:210 -msgid "Post Categories" -msgstr "Temas de las entradas" - -#: ../../include/features.php:211 -msgid "Add categories to your posts" -msgstr "Añadir temas a sus publicaciones" - -#: ../../include/features.php:219 -msgid "Large Photos" -msgstr "Fotos de gran tamaño" - -#: ../../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)" - -#: ../../include/features.php:227 -msgid "Even More Encryption" -msgstr "Más cifrado todavía" - -#: ../../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." - -#: ../../include/features.php:235 -msgid "Enable Voting Tools" -msgstr "Permitir entradas con votación" - -#: ../../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" - -#: ../../include/features.php:243 -msgid "Disable Comments" -msgstr "Deshabilitar comentarios" - -#: ../../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" - -#: ../../include/features.php:251 -msgid "Delayed Posting" -msgstr "Publicación aplazada" - -#: ../../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" - -#: ../../include/features.php:259 -msgid "Content Expiration" -msgstr "Caducidad del contenido" - -#: ../../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" - -#: ../../include/features.php:267 -msgid "Suppress Duplicate Posts/Comments" -msgstr "Prevenir entradas o comentarios duplicados" - -#: ../../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." - -#: ../../include/features.php:275 -msgid "Auto-save drafts of posts and comments" -msgstr "Guardar automáticamente borradores de entradas y comentarios" - -#: ../../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." - -#: ../../include/features.php:285 -msgid "Manage" -msgstr "Gestionar" - -#: ../../include/features.php:289 -msgid "Navigation Channel Select" -msgstr "Navegación por el selector de canales" - -#: ../../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" - -#: ../../include/features.php:304 -msgid "Save search terms for re-use" -msgstr "Guardar términos de búsqueda para su reutilización" - -#: ../../include/features.php:312 -msgid "Ability to file posts under folders" -msgstr "Capacidad de archivar entradas en carpetas" - -#: ../../include/features.php:319 -msgid "Alternate Stream Order" -msgstr "Orden de stream alternativo" - -#: ../../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" - -#: ../../include/features.php:327 -msgid "Contact Filter" -msgstr "Filtro de contactos" - -#: ../../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" - -#: ../../include/features.php:335 -msgid "Forum Filter" -msgstr "Filtro de foro" - -#: ../../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" - -#: ../../include/features.php:343 -msgid "Personal Posts Filter" -msgstr "Filtro de entradas personales" - -#: ../../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" - -#: ../../include/features.php:365 -msgid "Photo Location" -msgstr "Ubicación de las fotos" - -#: ../../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." - -#: ../../include/features.php:379 -msgid "Advanced Profiles" -msgstr "Perfiles avanzados" - -#: ../../include/features.php:380 -msgid "Additional profile sections and selections" -msgstr "Secciones y selecciones de perfil adicionales" - -#: ../../include/features.php:387 -msgid "Profile Import/Export" -msgstr "Importar/Exportar perfil" - -#: ../../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" - -#: ../../include/features.php:395 -msgid "Multiple Profiles" -msgstr "Múltiples perfiles" - -#: ../../include/features.php:396 -msgid "Ability to create multiple profiles" -msgstr "Capacidad de crear múltiples perfiles" - -#: ../../include/taxonomy.php:320 -msgid "Trending" -msgstr "Etiquetas populares" - -#: ../../include/taxonomy.php:550 -msgid "Keywords" -msgstr "Palabras clave" - -#: ../../include/taxonomy.php:571 -msgid "have" -msgstr "tener" - -#: ../../include/taxonomy.php:571 -msgid "has" -msgstr "tiene" - -#: ../../include/taxonomy.php:572 -msgid "want" -msgstr "quiero" - -#: ../../include/taxonomy.php:572 -msgid "wants" -msgstr "quiere" - -#: ../../include/taxonomy.php:573 -msgid "likes" -msgstr "gusta de" - -#: ../../include/taxonomy.php:574 -msgid "dislikes" -msgstr "no gusta de" - -#: ../../include/account.php:36 -msgid "Not a valid email address" -msgstr "Dirección de correo no válida" - -#: ../../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." - -#: ../../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." - -#: ../../include/account.php:76 -msgid "An invitation is required." -msgstr "Es obligatorio que le inviten." - -#: ../../include/account.php:80 -msgid "Invitation could not be verified." -msgstr "No se ha podido verificar su invitación." - -#: ../../include/account.php:156 -msgid "Please enter the required information." -msgstr "Por favor introduzca la información requerida." - -#: ../../include/account.php:223 -msgid "Failed to store account information." -msgstr "La información de la cuenta no se ha podido guardar." - -#: ../../include/account.php:311 -#, php-format -msgid "Registration confirmation for %s" -msgstr "Confirmación de registro para %s" - -#: ../../include/account.php:380 -#, php-format -msgid "Registration request at %s" -msgstr "Solicitud de registro en %s" - -#: ../../include/account.php:402 -msgid "your registration password" -msgstr "su contraseña de registro" - -#: ../../include/account.php:408 ../../include/account.php:471 -#, php-format -msgid "Registration details for %s" -msgstr "Detalles del registro de %s" - -#: ../../include/account.php:482 -msgid "Account approved." -msgstr "Cuenta aprobada." - -#: ../../include/account.php:522 -#, php-format -msgid "Registration revoked for %s" -msgstr "Registro revocado para %s" - -#: ../../include/account.php:805 ../../include/account.php:807 -msgid "Click here to upgrade." -msgstr "Pulse aquí para actualizar" - -#: ../../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 " - -#: ../../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." - -#: ../../include/datetime.php:140 -msgid "Birthday" -msgstr "Cumpleaños" - -#: ../../include/datetime.php:140 -msgid "Age: " -msgstr "Edad:" - -#: ../../include/datetime.php:140 -msgid "YYYY-MM-DD or MM-DD" -msgstr "AAAA-MM-DD o MM-DD" - -#: ../../include/datetime.php:244 -msgid "less than a second ago" -msgstr "hace un instante" - -#: ../../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" - -#: ../../include/datetime.php:273 -msgctxt "relative_date" -msgid "year" -msgid_plural "years" -msgstr[0] "año" -msgstr[1] "años" - -#: ../../include/datetime.php:276 -msgctxt "relative_date" -msgid "month" -msgid_plural "months" -msgstr[0] "mes" -msgstr[1] "meses" - -#: ../../include/datetime.php:279 -msgctxt "relative_date" -msgid "week" -msgid_plural "weeks" -msgstr[0] "semana" -msgstr[1] "semanas" - -#: ../../include/datetime.php:282 -msgctxt "relative_date" -msgid "day" -msgid_plural "days" -msgstr[0] "día" -msgstr[1] "días" - -#: ../../include/datetime.php:285 -msgctxt "relative_date" -msgid "hour" -msgid_plural "hours" -msgstr[0] "hora" -msgstr[1] "horas" - -#: ../../include/datetime.php:288 -msgctxt "relative_date" -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minuto" -msgstr[1] "minutos" - -#: ../../include/datetime.php:291 -msgctxt "relative_date" -msgid "second" -msgid_plural "seconds" -msgstr[0] "segundo" -msgstr[1] "segundos" - -#: ../../include/datetime.php:520 -#, php-format -msgid "%1$s's birthday" -msgstr "Cumpleaños de %1$s" - -#: ../../include/datetime.php:521 -#, php-format -msgid "Happy Birthday %1$s" -msgstr "Feliz cumpleaños %1$s" - -#: ../../include/nav.php:90 -msgid "Remote authentication" -msgstr "Acceder desde su servidor" - -#: ../../include/nav.php:90 -msgid "Click to authenticate to your home hub" -msgstr "Pulsar para identificarse en su servidor de inicio" - -#: ../../include/nav.php:96 -msgid "Manage your channels" -msgstr "Gestionar sus canales" - -#: ../../include/nav.php:99 -msgid "Manage your privacy groups" -msgstr "Gestionar sus grupos de canales" - -#: ../../include/nav.php:101 -msgid "Account/Channel Settings" -msgstr "Ajustes de cuenta/canales" - -#: ../../include/nav.php:107 ../../include/nav.php:136 -msgid "End this session" -msgstr "Finalizar esta sesión" - -#: ../../include/nav.php:110 -msgid "Your profile page" -msgstr "Su página del perfil" - -#: ../../include/nav.php:113 -msgid "Manage/Edit profiles" -msgstr "Administrar/editar perfiles" - -#: ../../include/nav.php:122 ../../include/nav.php:126 -msgid "Sign in" -msgstr "Acceder" - -#: ../../include/nav.php:153 -msgid "Take me home" -msgstr "Volver a la página principal" - -#: ../../include/nav.php:155 -msgid "Log me out of this site" -msgstr "Salir de este sitio" - -#: ../../include/nav.php:160 -msgid "Create an account" -msgstr "Crear una cuenta" - -#: ../../include/nav.php:172 -msgid "Help and documentation" -msgstr "Ayuda y documentación" - -#: ../../include/nav.php:186 -msgid "Search site @name, !forum, #tag, ?docs, content" -msgstr "Buscar en el sitio @nombre, !foro, #tag, ?docs, contenido" - -#: ../../include/nav.php:192 -msgid "Site Setup and Configuration" -msgstr "Ajustes y configuración del sitio" - -#: ../../include/nav.php:332 -msgid "@name, !forum, #tag, ?doc, content" -msgstr "@nombre, !foro, #tag, ?docs, contenido" - -#: ../../include/nav.php:333 -msgid "Please wait..." -msgstr "Espere por favor…" - -#: ../../include/nav.php:339 -msgid "Add Apps" -msgstr "Añadir aplicaciones" - -#: ../../include/nav.php:340 -msgid "Arrange Apps" -msgstr "Organizar aplicaciones" - -#: ../../include/nav.php:341 -msgid "Toggle System Apps" -msgstr "Alternar aplicaciones de sistema" - -#: ../../include/nav.php:426 -msgid "Status Messages and Posts" -msgstr "Mensajes de estado y publicaciones" - -#: ../../include/nav.php:439 -msgid "Profile Details" -msgstr "Detalles del perfil" - -#: ../../include/nav.php:449 ../../include/photos.php:666 -msgid "Photo Albums" -msgstr "Álbumes de fotos" - -#: ../../include/nav.php:457 -msgid "Files and Storage" -msgstr "Ficheros y repositorio" - -#: ../../include/nav.php:495 -msgid "Saved Bookmarks" -msgstr "Marcadores guardados" - -#: ../../include/nav.php:506 -msgid "View Cards" -msgstr "Ver las fichas" - -#: ../../include/nav.php:517 -msgid "View Articles" -msgstr "Ver los artículos" - -#: ../../include/nav.php:529 -msgid "View Webpages" -msgstr "Ver páginas web" - -#: ../../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" - -#: ../../include/photos.php:162 -msgid "Image file is empty." -msgstr "El fichero de imagen está vacío. " - -#: ../../include/photos.php:324 -msgid "Photo storage failed." -msgstr "La foto no ha podido ser guardada." - -#: ../../include/photos.php:373 -msgid "a new photo" -msgstr "una nueva foto" - -#: ../../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" - -#: ../../include/photos.php:671 -msgid "Upload New Photos" -msgstr "Subir nuevas fotos" - -#: ../../include/zot.php:774 -msgid "Invalid data packet" -msgstr "Paquete de datos no válido" - -#: ../../include/zot.php:4329 -msgid "invalid target signature" -msgstr "La firma recibida no es válida" - -#: ../../include/connections.php:133 -msgid "New window" -msgstr "Nueva ventana" - -#: ../../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" - -#: ../../include/auth.php:192 -msgid "Delegation session ended." -msgstr "Finalizó la sesión de la delegación." - -#: ../../include/auth.php:196 -msgid "Logged out." -msgstr "Desconectado/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." - -#: ../../include/auth.php:307 -msgid "Failed authentication" -msgstr "Autenticación fallida." - -#: ../../include/help.php:80 -msgid "Help:" -msgstr "Ayuda:" - -#: ../../include/help.php:129 -msgid "Not Found" -msgstr "No encontrado" 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,296 +6,1808 @@ 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["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["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["Instant messenger"] = "Mensajería instantánea"; -App::$strings["Website"] = "Sitio web"; -App::$strings["Address"] = "Dirección"; -App::$strings["Note"] = "Nota"; +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["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["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"; +App::$strings["Deliver to ActivityPub recipients in privacy groups"] = "Entregar a los destinatarios de ActivityPub en grupos de canales"; +App::$strings["May result in a large number of mentions and expose all the members of your privacy group"] = "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales"; +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["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"; +App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio."; +App::$strings["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."] = "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."; +App::$strings["Log in with Twitter"] = "Iniciar sesión en Twitter"; +App::$strings["Copy the PIN from Twitter here"] = "Copiar aquí el PIN de Twitter"; +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 Twitter 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 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."; +App::$strings["Twitter post length"] = "Longitud del mensaje en Twitter"; +App::$strings["Maximum tweet length"] = "Longitud máxima del tweet"; +App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes públicos a Twitter de forma predeterminada"; +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["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["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["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["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"; +App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)"; +App::$strings["Site ID"] = "ID del sitio"; +App::$strings["Show opt-out cookie link?"] = "Mostrar el enlace de la cookie opt-out?"; +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["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"; +App::$strings["New game with handicap"] = "Nuevo juego con hándicap"; +App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente."; +App::$strings["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."] = "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."; +App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "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."; +App::$strings["You go first..."] = "Usted va primero..."; +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["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["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["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["__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( + 0 => "a <span %1\$s>%2\$d personas</span> le gusta esto.", + 1 => "A <span %1\$s>%2\$d personas</span> les gusta esto.", +); +App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array( + 0 => "a <span %1\$s>%2\$d personas</span> no les gusta esto.", + 1 => "A <span %1\$s>%2\$d personas</span> no les gusta esto.", +); +App::$strings["and"] = "y"; +App::$strings[", and %d other people"] = array( + 0 => ", y %d persona más", + 1 => ", y %d personas más", +); +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é", +); +App::$strings["__ctx:noun__ Not Attending"] = array( + 0 => "No participaré", + 1 => "No participaré", +); +App::$strings["__ctx:noun__ Undecided"] = array( + 0 => "Indeciso/a", + 1 => "Indecisos/as", +); +App::$strings["__ctx:noun__ Agree"] = array( + 0 => "De acuerdo", + 1 => "De acuerdo", +); +App::$strings["__ctx:noun__ Disagree"] = array( + 0 => "En desacuerdo", + 1 => "En desacuerdo", +); +App::$strings["__ctx:noun__ Abstain"] = array( + 0 => "se abstiene", + 1 => "Se abstienen", +); +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."; +App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red."; +App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que esté autenticado."; +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["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."; +App::$strings["An invitation is required."] = "Es obligatorio que le inviten."; +App::$strings["Invitation could not be verified."] = "No se ha podido verificar su invitación."; +App::$strings["Please enter the required information."] = "Por favor introduzca la información requerida."; +App::$strings["Failed to store account information."] = "La información de la cuenta no se ha podido guardar."; +App::$strings["Registration confirmation for %s"] = "Confirmación de registro para %s"; +App::$strings["Registration request at %s"] = "Solicitud de registro en %s"; +App::$strings["your registration password"] = "su contraseña de registro"; +App::$strings["Registration details for %s"] = "Detalles del registro de %s"; +App::$strings["Account approved."] = "Cuenta aprobada."; +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["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["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["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["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["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["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["Insert web link"] = "Insertar enlace web"; -App::$strings["Title (optional)"] = "Título (opcional)"; -App::$strings["Edit Article"] = "Editar el artículo"; +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."; @@ -304,36 +1816,55 @@ 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["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 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["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["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["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."; @@ -342,6 +1873,7 @@ App::$strings["Your site database has been installed."] = "La base de datos del 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."; @@ -422,9 +1954,253 @@ 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["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"; @@ -436,6 +2212,21 @@ App::$strings["Potential connections will then see the following text before pro 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"; @@ -443,23 +2234,44 @@ 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["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["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["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", @@ -469,17 +2281,12 @@ App::$strings["%s account deleted"] = array( 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"; @@ -490,55 +2297,7 @@ 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"; @@ -550,12 +2309,8 @@ App::$strings["My site has free access only"] = "Mi sitio es un servicio gratuit 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"; @@ -635,9 +2390,76 @@ App::$strings["Page to display after creating a new channel"] = "Página a mostr 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["%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["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["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:"; @@ -655,66 +2477,461 @@ 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["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["Friends"] = "Amigos/as"; -App::$strings["Settings updated."] = "Ajustes actualizados."; +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["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["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"; @@ -732,7 +2949,6 @@ App::$strings["Automatic membership approval"] = "Aprobación automática de nue 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:"; @@ -783,7 +2999,6 @@ App::$strings["Show visual notifications including:"] = "Mostrar notificaciones 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"; @@ -809,14 +3024,6 @@ App::$strings["Default photo upload folder"] = "Carpeta por defecto de las fotos 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."; @@ -830,19 +3037,15 @@ 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["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["Directory Settings"] = "Configuración del directorio"; -App::$strings["Editor Settings"] = "Ajustes del editor"; +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"; @@ -863,25 +3066,77 @@ App::$strings["Default: channel menu located in app menu"] = "Predeterminado: me 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["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"; @@ -895,190 +3150,26 @@ App::$strings["Only sends to viewers of the applicable profile"] = "Sólo enviar 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["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["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"; @@ -1089,19 +3180,10 @@ 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."; @@ -1116,72 +3198,10 @@ 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["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."; @@ -1190,13 +3210,11 @@ App::$strings["Could not access address book record."] = "No se pudo acceder al 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!"; @@ -1217,9 +3235,6 @@ App::$strings["Fetch electronic calling card for this connection"] = "Obtener un 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"; @@ -1231,18 +3246,11 @@ App::$strings["This connection is unreachable from this location."] = "No se pue 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"; @@ -1254,262 +3262,22 @@ App::$strings["Please choose the profile you would like to display to %s when vi 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["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["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["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."; @@ -1524,7 +3292,6 @@ App::$strings["Only import content with these words (one per line)"] = "Importar 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"; @@ -1532,339 +3299,22 @@ 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["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["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"; @@ -1915,30 +3365,73 @@ 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["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["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["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["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 "; @@ -1954,34 +3447,68 @@ 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["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["Collection"] = "Colección"; App::$strings["Principal"] = "Principal"; App::$strings["Addressbook"] = "Libreta de direcciones"; App::$strings["Schedule Inbox"] = "Programar bandeja de entrada"; @@ -1995,153 +3522,7 @@ 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"; @@ -2150,1372 +3531,3 @@ App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Err 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["Other networks and post services"] = "Otras redes y servicios de publicación"; -App::$strings["Set publish date"] = "Establecer la fecha de publicación"; -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"; -App::$strings["Deliver to ActivityPub recipients in privacy groups"] = "Entregar a los destinatarios de ActivityPub en grupos de canales"; -App::$strings["May result in a large number of mentions and expose all the members of your privacy group"] = "Puede resultar en un gran número de menciones y exponer a todos los miembros de su grupo de canales"; -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["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"; -App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio."; -App::$strings["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."] = "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."; -App::$strings["Log in with Twitter"] = "Iniciar sesión en Twitter"; -App::$strings["Copy the PIN from Twitter here"] = "Copiar aquí el PIN de Twitter"; -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 Twitter 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 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."; -App::$strings["Twitter post length"] = "Longitud del mensaje en Twitter"; -App::$strings["Maximum tweet length"] = "Longitud máxima del tweet"; -App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes públicos a Twitter de forma predeterminada"; -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["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["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["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"; -App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)"; -App::$strings["Site ID"] = "ID del sitio"; -App::$strings["Show opt-out cookie link?"] = "Mostrar el enlace de la cookie opt-out?"; -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["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"; -App::$strings["New game with handicap"] = "Nuevo juego con hándicap"; -App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente."; -App::$strings["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."] = "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."; -App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "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."; -App::$strings["You go first..."] = "Usted va primero..."; -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["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["View %s's profile @ %s"] = "Ver el perfil @ %s de %s"; -App::$strings["Categories:"] = "Temas:"; -App::$strings["Filed under:"] = "Archivado bajo:"; -App::$strings["View in context"] = "Mostrar en su contexto"; -App::$strings["remove"] = "eliminar"; -App::$strings["Loading..."] = "Cargando..."; -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["Edit Connection"] = "Editar conexión"; -App::$strings["Message"] = "Mensaje"; -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( - 0 => "a <span %1\$s>%2\$d personas</span> le gusta esto.", - 1 => "A <span %1\$s>%2\$d personas</span> les gusta esto.", -); -App::$strings["<span %1\$s>%2\$d people</span> don't like this."] = array( - 0 => "a <span %1\$s>%2\$d personas</span> no les gusta esto.", - 1 => "A <span %1\$s>%2\$d personas</span> no les gusta esto.", -); -App::$strings["and"] = "y"; -App::$strings[", and %d other people"] = array( - 0 => ", y %d persona más", - 1 => ", y %d personas más", -); -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__ Attending"] = array( - 0 => "Participaré", - 1 => "Participaré", -); -App::$strings["__ctx:noun__ Not Attending"] = array( - 0 => "No participaré", - 1 => "No participaré", -); -App::$strings["__ctx:noun__ Undecided"] = array( - 0 => "Indeciso/a", - 1 => "Indecisos/as", -); -App::$strings["__ctx:noun__ Agree"] = array( - 0 => "De acuerdo", - 1 => "De acuerdo", -); -App::$strings["__ctx:noun__ Disagree"] = array( - 0 => "En desacuerdo", - 1 => "En desacuerdo", -); -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["(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."; -App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red."; -App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que esté autenticado."; -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 is empty."] = "El grupo de canales está vacío."; -App::$strings["Privacy group: %s"] = "Grupo de canales: %s"; -App::$strings["Connection not found."] = "Conexión no encontrada"; -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."; -App::$strings["An invitation is required."] = "Es obligatorio que le inviten."; -App::$strings["Invitation could not be verified."] = "No se ha podido verificar su invitación."; -App::$strings["Please enter the required information."] = "Por favor introduzca la información requerida."; -App::$strings["Failed to store account information."] = "La información de la cuenta no se ha podido guardar."; -App::$strings["Registration confirmation for %s"] = "Confirmación de registro para %s"; -App::$strings["Registration request at %s"] = "Solicitud de registro en %s"; -App::$strings["your registration password"] = "su contraseña de registro"; -App::$strings["Registration details for %s"] = "Detalles del registro de %s"; -App::$strings["Account approved."] = "Cuenta aprobada."; -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["__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["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"; From 004861fbb726353ff804921332af7cf371db14e3 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 25 Nov 2019 08:41:34 +0000 Subject: [PATCH 122/134] merge opengraph fixes from dev --- Zotlabs/Module/Articles.php | 2 +- Zotlabs/Module/Channel.php | 17 ++++-- include/opengraph.php | 107 ++++++++++++++++++------------------ 3 files changed, 66 insertions(+), 60 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)) { + function opengraph_add_meta($item, $channel) { - if(! empty($item['title'])) - $ogtitle = $item['title']; + if(! empty($item)) { - // 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); - } + if(! empty($item['title'])) + $ogtitle = $item['title']; - // 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"; - } + // 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); + } - $channel = channelx_by_n($profile['profile_uid']); + // use summary as description if exist + $ogdesc = (empty($item['summary']) ? $item['body'] : $item['summary'] ); - 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']; - } + $ogdesc = str_replace("#^[", "[", $ogdesc); - 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"; + $ogdesc = bbcode($ogdesc, [ 'tryoembed' => false ]); + $ogdesc = trim(html2plain($ogdesc, 0, true)); + $ogdesc = html_entity_decode($ogdesc, ENT_QUOTES, 'UTF-8'); - return true; + // 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 From 17cd452fff337166b1ec3b974379c2dd62151d87 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 25 Nov 2019 11:32:22 +0000 Subject: [PATCH 123/134] 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 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: [PATCH 124/134] 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'))); 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: [PATCH 125/134] 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'))); 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: [PATCH 126/134] 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. From f992feb71c424c115e81431326db7bd1e344e866 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Mon, 25 Nov 2019 21:06:12 +0000 Subject: [PATCH 127/134] 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 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: [PATCH 128/134] 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 "Текст" 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: [PATCH 129/134] 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"] = "Ссылка"; 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: [PATCH 130/134] 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 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: [PATCH 131/134] 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> From fac7826efa486fb711a442fc3fdca27d12ca21aa Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Wed, 4 Dec 2019 10:14:28 +0000 Subject: [PATCH 132/134] 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 From 4c8d33d1eb2a804aa70a7bc677d6c73d0d94816b Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Wed, 4 Dec 2019 10:24:03 +0000 Subject: [PATCH 133/134] 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 ); From 6f93d9848c43019d43ea76c27d42d657ba031cd7 Mon Sep 17 00:00:00 2001 From: Mario <mario@mariovavti.com> Date: Tue, 17 Dec 2019 10:53:40 +0100 Subject: [PATCH 134/134] Disable oembed in directory profile about --- Zotlabs/Module/Directory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php index dee22721d..b043cea40 100644 --- a/Zotlabs/Module/Directory.php +++ b/Zotlabs/Module/Directory.php @@ -287,7 +287,7 @@ class Directory extends \Zotlabs\Web\Controller { $hometown = ((x($profile,'hometown') == 1) ? $profile['hometown'] : False); - $about = ((x($profile,'about') == 1) ? zidify_links(bbcode($profile['about'])) : False); + $about = ((x($profile,'about') == 1) ? zidify_links(bbcode($profile['about'], ['tryoembed' => false])) : False); $keywords = ((x($profile,'keywords')) ? $profile['keywords'] : '');